Striim 3.9.7 documentation

HP NonStop reader properties

Before you can use the HPNonStopEnscribeReader, HPNonStopSQLMPReader, or HPNonStopSQLMXReader, the Striim change data capture (CDC) processes must be installed on the host as detailed in Setting up HP NonStop with the Striim agent. To read from or write to SQL/MP or SQL/MX using DatabaseReader or DatabaseWriter, the JDBC driver must be installed as described in Installing the HP NonStop JDBC driver for SQL/MX.

property

type

default value

notes

AgentIpAddress

java.lang.String

IP address (or DNS hostname) of the HP NonStop system from which the adapter is to receive change data.

AgentPortNo

java.lang.Integer

TCP port number to be used to communicate with the Agent process. This must match the port number given on the command line when starting the Agent (the program wagent).

AuditTrails

java.lang.String

merged

List of audit trail name abbreviations from which to read change records and transmit them in parallel TCP sessions to the Striim server. Audit trail name abbreviations are: "MAT', 'AUX01', 'AUX02', ... , 'AUX15'. A value of 'parallel' means to read from all the configured audit trails in parallel. The default value of 'merged' means to merge the change records from all the audit trails into a single stream and send them in a single TCP session. The value is not case-sensitive.

NOTE: If recovery is enabled (see Recovering applications), either leave this blank or specify only a single audit trail.

blocksize

java.lang.integer

64

Amount of data in KB requested by each read operation when receiving change data from the CDC Process.

Compression

java.lang.Boolean

False

If set to True, fields with unchanged values are omitted from output. See HP NonStop reader WAEvent fields for details.

IncludeSYSKEY

java.lang.Boolean

false

SQL/MP and SQL/MX only: set to true to treat the SYSKEY as if it were a user-defined primary key column. Its value is put into data[0] and before[0], and is NOT put in the ROWID of the metadata. This enables DatabaseWriter to replicate tables that contain no user-defined primary key columns. The target table must contain an extra column (that is not in the source table) to hold the SYSKEY values.

ipaddress

java.lang.String

Leave blank unless instructed otherwise by Striim support.

Name

java.lang.String

Distinguishes adapter instances in the Agent, and also used as the process name of the Guardian process that is started to collect the change data for this instance of the adapter (the CDC Process). Must be 1 to 3 letters or numbers, beginning with a letter. The Guardian process name is formed by adding "$" to the beginning of this name, and in some cases, one character to the end of this name.

portno

java.lang.Integer

TCP port number on which the HP NonStop reader module running in the Striim server listens to get the change data from the HP NonStop system.

ReturnDateTimeAs

java.lang.String

Joda

Set to String to return timestamp values as strings rather than Joda timestamps. The primary purpose of this option is to avoid losing precision when microsecond timestamps are converted to Joda milliseconds. The format of the string is yyyy-mm-dd hh:mm:ss.ffffff.

StartLSN

java.lang.String

To start reading from a specific position, specify the value of the LSNValue field (including the final semicolon) from a WAEvent (see HP NonStop reader WAEvent fields).

Tables

java.lang.String

List of file or table names, separated by semicolons, for which change data is requested. All the files or tables must exist at the time the application using this reader is started. See further description of the syntax below.

TrimGuardianNames

java.lang.Boolean

False

For HPNonStopSQLMPReader and HPNonStopEnscribeReader only:

If set to True, the table names in the Tables property may be specified as <volume>.<subvol>.<name> instead of the usual  \<system>.$<volume>.<subvol>.<name>.

When using the MAP function, the target tables must be specified in the shorter format.

This property has no effect on the forms accepted for the part of an Enscribe name following the colon (:), which specifies the location of the DDL dictionary and record name in that dictionary that describes the layout of the records in the Enscribe file. The dictionary location may not be shortened, even if the Enscribe file name is shortened.

TrimGuardianNames has no effect on the forms accepted for the table or file names used in a file that is specified with the ALLOWED-TABLES param.

The output type is WAEvent. See WAEvent contents for change data for more information.

The format of the Tables property value depends on which type of database the adapter is accessing:

Enscribe

$volume.subvolume.file:$ddl-volume.ddl-subvolume.ddl-recordname

wildcard pattern allowed for $volume.subvolume.file; wildcards are * for any series of characters and ? for a single character

SQL/MP

$volume.subvolume.table

wildcard pattern allowed; wildcards are * for any series of characters and ? for a single character

SQL/MX

catalog.schema.table

wildcard pattern allowed; wildcards are % for any series of characters and _ for a single character; % and _ are always wildcards, there is no way to escape them to represent literal % or _.

Note that when using DatabaseReader or DatabaseWriter, the wildcards for SQL/MP and SQL/MX are % and _. (Enscribe files are not accessible using JDBC, so it is not supported as a DatabaseReader source or DatabaseWriter target.) Wildcards are not supported in ALLOWED-TABLES.

For Enscribe files, the file name is followed by the DDL Dictionary name and record name. The file name is separated from the dictionary name by a colon (":"), and the dictionary name is separated from the record name by a period ("."). $ddl-volume.ddl-subvolume gives the location of an Enscribe DDL dictionary. The ddl-recordname may be a DDL RECORD or a DDL DEF in that dictionary that describes the layout of the records in the Enscribe file. The DDL record can be the same as is used to access the file with Enform or to create a record structure declaration for use when accessing the file in a programming language. The dictionary may be created by either DDL or DDL2.

If the volume and/or subvolume part of a SQL/MP table name or Enscribe file name is omitted, the Guardian default volume and subvolume of the wagent process are used to fill in the missing parts, though it probably would be best not to rely on knowing the default volume and subvolume of the wagent process. The ddl-volume may be be omitted and the default taken from the wagent process, but, again, that probably is best avoided.

For SQL/MP tables or Enscribe files on SMF Virtual Disks, the logical name of the table or file is what should be specified, not the physical name.

These adapters use data from change data capture logs, so you will need to use the META() and IS_PRESENT() TQL functions in your queries. See WAEvent contents for change data for more information.

The default value for AuditTrails should be used unless measurements show that there is a performance bottleneck in either reading the audit trails or in the TCP session from the HP NonStop system to the Striim server. Even then, the default value should be used unless the HP NonStop system actually has multiple audit trails configured, and the disks on which the tables or files listed in the Tables property reside send their change data to more than one of the audit trails.

If parallel audit trail reading is specified with the AuditTrails property, the transmission of change records in the parallel TCP sessions is not synchronized, so a TQL application might receive changes for a given transaction after it receives the COMMIT or ROLLBACK record for that transaction. If the MAT is not included among the audit trail name abbreviations (MAT is included implicitly for 'merged' and 'parallel'), the TQL application will not receive any COMMIT or ROLLBACK records. The writer of the TQL application must keep those facts in mind when designing the application.

For all three NonStop databases, numeric data with a nonzero scale is sent to Striim as a string consisting of the decimal digits with an explicit decimal point that expresses the value of the numeric item. If the numeric item is signed, negative values will also have a minus sign as the first character.

For all three NonStop databases, data represented in TQL as DateTime is converted to GMT from the time zone in which it is stored in the database. Since the database does not include an indication of the time zone with the data, Striim assumes the data is stored in the local civil time of the time zone configured as the TIME_ZONE_OFFSET for the NonStop system. This assumption can be changed by using the WA-ASSUMED-TIMEZONE PARAM when starting the Striim Agent. You can make it use local standard time or GMT. This is described in Setting up HP NonStop with the Striim agent.

For all three NonStop databases, the result of processing any of the unsupported data types is unpredictable.

For all three NonStop databases, the contents of fields of single-byte characters, such as PIC X(n), CHAR(n), etc., are assumed to be encoded as UTF-8 unless the PARAM name WA-CHARSET-FOR-CHAR was specified when WAGENT was started to specify the encoding used for single-byte character fields. See Encoding of character fields for more details.

The contents of fields of double-byte characters, such as PIC N(n), NCHAR(n), etc., are interpreted according to the character set specified by the fields' declarations or the defaults configured for the database. If the PARAM named WA-CHARSET-FOR-NCHAR was specified when WAGENT was started, the encoding given by that PARAM is used for double-byte character fields, overriding any explicit or default specification in the declarations. See Encoding of character fields more details.

In all cases, when character fields are referenced in TQL, they are normal Java strings, encoded in Java's default character set.

Examples:

CREATE SOURCE SQLMPSource using HPNonStopEnscribeReader (
  AgentPortNo:4012,
  AgentIpAddress:'192.0.2.150',
  portno:4013,
  ipaddress:'192.0.2.151',
  Name:'ens',
  Tables:'test.es1:test.es1;test.es3:test.es3'
) OUTPUT TO CDCStream;
  
CREATE SOURCE SQLMPSource using HPNonStopSQLMPReader (
  AgentPortNo:4012,
  AgentIpAddress:'192.0.2.150',
  portno:4013,
  ipaddress:'192.0.2.151',
  Name:'lod',
  Tables:'$data06.test.esa;$data06.test.esb;$data06.test.esc'
) OUTPUT TO CDCStream;

CREATE SOURCE SQLMXSource using HPNonStopSQLMXReader (
  AgentPortNo:4012,
  AgentIpAddress:'192.0.2.150',
  portno:4013,
  ipaddress:'192.0.2.151',
  Name:'lod',
  Tables:'testcat.testsch.sqltest1'
) OUTPUT TO CDCStream;