General Questions and Answers

General questions are the questions that you possibly have when configuring and deploying the adapter, such as how to find the version number of an adapter instance and how does the exceptions table work, are listed, and their answers are provided.

The general questions and their answers are listed as follows:
Q1: How to find the version number of an adapter configuration?
A1: A banner is displayed when an adapter configuration starts. The banner lists component versions for the adapter and for the TIBCO Adapter SDK software. You can use this information to diagnose compatibility issues or to report any problem details to Customer Support.
Q2: Why is a database trigger error not logged in the exception table?
A2: When you use an adapter configuration as a publisher, if an error occurs in the database trigger that is used to copy data from the source table to the publishing table, the database trigger error will not be logged in the exception table for the subscriber adapter.
Q3: How does the adapter react if a database connection is lost and the database is then restarted, and does it automatically try to reconnect?
A3: If TIBCO ActiveMatrix Adapter for Database (TIBCO Business Studio) detects that it has lost its database connection, it tries to connect to the database in three times by default. If the connection is not restored after three times, the adapter exits. You can configure the adapter for automatic reconnection times and intervals (see Reconnection Configuration). Alternatively, TIBCO Hawk rules can be written to detect a disconnection and restart the adapter whenever a disconnection occurs.
Q4: Does an incoming message have to contain all the columns that are defined in the destination table?
A4: The incoming message does not have to contain all the columns defined in the destination table. You can configure the adapter to expect only a subset of the columns, defined in the repository. The adapter is driven from the subscribing class description and will iterate through the attributes in the class definition for the subscribing table and specifically look for those attributes in the incoming messages. It inserts NULLs for the attributes that the adapter is expecting but does not find in the message. If there are more columns in the subscribing table than are listed in the subscribing class (set when adding a subscription), those extra columns will get whatever default values were specified during the table creation.
Q5: Can an existing table be used as the publishing table?
A5: No. TIBCO ActiveMatrix Adapter for Database (TIBCO Business Studio) requires additional columns in the publishing table. Even when every field in a table is published, a separate publishing table is required.
Q6: Does a published TIBCO Rendezvous message have to contain every field in the publishing table?
A6: Yes. You can control which fields are copied to the publishing table by configuring the adapter and by changing the publication trigger to publish a subset of rows. You can also append additional fields to a message or drop a message based on some criteria using the user callout library. For more information on the user callout library, see Using the User Callout Java Library.
Q7: If multiple updates occur between polling intervals, are updates published in multiple TIBCO Rendezvous messages or in a single large message?
A7: If you are using publish by value, a TIBCO Rendezvous message is created for each individual update. If you are using publish by reference, that operation will get the last update.
Q8: Can earlier entries be deleted in the publishing table?

A8: Yes. When a row is published, the value of the ADB_L_DELIVERY_STATUS field in the publishing table changes to either C (complete) or F (failed). You can write a trigger in your publishing table that deletes the row when the delivery status changes to C or F.

You can also publish data directly from the source table by configuring the adapter configuration to publish by reference. A publishing table is created, but the publishing table contains only required fields and key fields of the source table.

Q9: How does the exception table work?
A9: Before starting an adapter configuration, you must set the adb.useExceptTable property in the adapter’s properties file to on and specify an exception table when configuring the adapter Subscription Service. If an error occurs when you insert data into the destination table, the error will be inserted into the exception table. The transaction will be committed and a confirmation will be sent back for the message (RVCM delivery). If the insertion into the exception table also fails, an error message will be displayed and the adapter instance will terminate.
Q10: Can an adapter configuration be used to replicate binary types, such as BLOB?
A10: There is only limited support for binary large object (BLOB) data types. Oracle LONG and LONG RAW types are supported in top-level tables when the adapter is configured to publish by reference. Oracle BLOB and CLOB data types are supported.
Q11: Can an adapter configuration write to tables that belong to a database account different from that used by the adapter?
A11: Yes. A source table or destination table can belong to a different database user than the default account created in the create_user.sql script. For more information on referencing external schemas, see Referencing an External Schema.
Q12: Can a publisher adapter and a subscriber adapter use different projects?
A13: Yes, unless the publisher adapter is configured to use parent-child relationships.
Q13: Can TIBCO ActiveMatrix Adapter for Database (TIBCO Business Studio) guarantee exactly once delivery of messages over RVCM?
A13: Exactly once delivery of messages over RVCM is not currently guaranteed. The same quality of service that RVCM provides is supported, which is at least once. To ensure exactly once delivery requires combining the messaging operations and the database operations in a single atomic transaction, which is not supported in RVCM.
Q14: What guarantees does the adbagent make with regards to the order of database operations? For instance, is it guaranteed that for a given table, modifications are made in the same order that they were made to the source database? What guarantees are made for operations across different tables?
A14: TIBCO ActiveMatrix Adapter for Database (TIBCO Business Studio) guarantees that for database operations that are published on the same subject, the order of the operations is preserved. Usually, this applies to database operations made to one table. It does not usually apply to database operations across different tables.
Q15: When you use RVCM for delivery, at what point does the subscribing adapter acknowledge an incoming message?
A15: A subscriber adapter confirms the message only after the database operation is committed. If an error occurs and no exception table is used, the database operation is rolled back and no confirmation is sent. If there is an error and an exception table is used, the insert to the exception table is committed and the message is then confirmed.
Q16: By maintaining the publishing tables, all changes to the source table can be captured. If, however, there is a failure between the point of publishing a message using RVCM and updating the publishing table, will the adapter republish the message that has already been sent?
A16: Yes, the message will be republished and the subscriber will have to deal with the duplicate message.
Q17: For the subscriber adapter, if a failure occurs after doing a database update and before sending an acknowledgment back to the publisher adapter, can the restarted adapter configuration be prevented from redoing the update operation?
A17: No. This will cause a duplicate insert.
Q18: For a certified subscriber adapter, what happens if an insert exception occurs and no exception table is specified?
A18: If the tibco.clientVar.DirTrace property is specified in the adapter’s properties file when the adapter is started, exception handling information is written to the log file and the adapter configuration continues to run. Since the insert could not be performed, the ADB_L_DELIVERY_STATUS publishing table column has a value of P for the message.
Q19: How to preregister non-TIBCO ActiveMatrix Adapter for Database subscribers, such as custom adapters, to ensure that no messages are lost?
A19: Specify the CM name of the listener’s RVCM session.
Q20: The session names are automatically created. Can these names be changed without confusing TIBCO ActiveMatrix Adapter for Database, so that we can use a standard naming convention throughout the entire integration process?
A20: No, the session names are fixed and used by TIBCO ActiveMatrix Adapter for Database (TIBCO Business Studio) internally. They cannot be altered.
Q21: What’s the proper way to permanently remove an adbagent subscriber when you use CM?
A21: Two ways are available: One way is to completely remove the publisher’s ledger and to change all ’P’ records back to ’N’. Then restart the publisher. The other is using the TIBCO Hawk method, unRegisterListener(), which unregisters a CM subscription. This is the proper way to remove the adbagent subscriber as a CM listener.
Q22: Is it possible to run an adapter configuration using a remote TIBCO Rendezvous daemon?
A22: Yes. Change the default settings for network, service, and daemon parameters for the adapter using TIBCO Business Studio.
Q23: Is it possible to run two adapter configurations on the same machine?
A23: It's possible to run multiple configurations of the adapter on the same machine if each adapter configuration has a unique name. If both configurations use TIBCO Rendezvous certified messaging, each must use a different RVCM session.
Q24: Can an adapter configuration collate information from several database tables to send as a single TIBCO Rendezvous message, or can an adapter only publish data from a single table, in the format defined by that table?
A24: There are two ways to publish related tables:
  • Set the adb.publishChildData property to on in the adapter’s properties file. When there are insertions into parent table, the adapter will publish parent rows and the corresponding child rows using TIBCO ActiveEnterprise or XML format.
    Note: The adapter currently does not support publishing child data in the TIBCO Rendezvous Message format. Update and delete on parent-child relationship when publishing is also not supported. See Publication Options Tab on page 103.
  • Combine several tables into one table using a trigger, and then publish from the combined table.

When an adapter configuration publishes or subscribes to a message, you can change the message by using the callout library. See Using the User Callout Java Library for details.

Q25: How to fix an adapter that hangs problem when my Sybase transaction log becomes full?
A25: When a Sybase transaction log becomes full, if the abort trans on log full database setting is set to false, your application will hang instead of printing a transaction log full error.
To resolve this issue, type the following command:

sp_dboption dbname, "abort tran on log full", true