---------------------------------------------------------------------- ELOQUENCE B.07.10 - patch XE71-070222 ---------------------------------------------------------------------- This patch is intended for testing purposes and adds the option to Eloquence B.07.10 to replicate database transactions to other database environments. Severity: XE71-070222: BETA TEST Superseded patches: XE71-061020: BETA TEST XE71-060906: BETA TEST XE71-060901: BETA TEST XE71-060626: BETA TEST XE71-060623: BETA TEST XE71-060522: BETA TEST XE71-060418: BETA TEST Patch XE71-070222 ----------------- * Incorporated the most recent Eloquence B.07.10 patches, including PE71-0702080, PE71-0702081 and PE71-0702082. * Purging a database could in rare cases result in a crash of the slave server or the dbrecover utility (#3300). A message like below is output: bf_link_cluster() f_bhp->id.node_id=#xxx:P, node_id=#1:SP, ... Assertion failed: f_bhp->id.node_id == node_id server panic: Aborting on internal failure, file mpool.c, line 465 The problem was caused by potentially reordering actions when recorded in the fwlog file (compared to the original transaction). This could have the effect that data was unexpectedly left in the page cache, owned by the purged database. This triggers a consistency check. * A dbrestore operation could hang replication (#3305). The database server had a defect in handling receiving large blocks of data from a client when shared memory communication is enabled. In this case, large transfers may be splitted in multiple blocks. This could result in a missing wakeup, resulting in a hanging server thread. This problem only affects the replication function. * The dbrepl utility was enhanced to support replication up to a specified point in time (#3297). The new -T option may be used to specify a point-in-time beyond dbrepl stops forwarding changes to a slave server. Once this point is passed, dbrepl will exit. The follwing syntax is supported to specify a timestamp: YYYY-MM-DD [HH:MM:SS] MM/DD/YYYY [HH:MM:SS] DD.MM.YYYY [HH:MM:SS] Any character may be used to separate date and time. Specifying the time is optional (defaults to 00:00:00). For example: dbrepl -T "2007-02-22 16:53:00" ... This specifies to apply transactions committed up to Feb 22, 2007, 16:53:00. * The dbrepl utility was enhanced to support limiting the network bandwidth (#3186). The new command line option -b may be used to specify the max. bandwidth used by dbrepl. In a WAN environment with limited bandwidth this option may be used to prohibit the replication consuming the available network bandwidth, potentially starving competing applications. The bandwidth limit is specified as bits, kilo bits (k suffix) or megabits (m suffix) per second. Any suffix must directly follow the value. For example: dbrepl -b 2m ... dbrepl -b 2048k ... dbrepl -b 2097152 ... Each example specifies a bandwidth limit of 2 megabits per second, equivalent to 256 kilobytes per second. * The dbrecover utility was enhanced to support incremental recovery. The dbrecover utility may be restarted and should be able to continue from the previous point. Please note: When using incremental recovery the server process MAY NOT not be started between dbrecover runs when configured in a MASTER or STANDALONE role. The server may be started when configured to function in a SLAVE role as this will not change the data volumes. The original dbrecover utility requires starting from the previous backup. * The dbrecover utility was enhanced to support replication up to a specified point in time without previously switching the forward- log file (#3298). The new -T option may be used to specify a point-in-time beyond dbrecover stops applying changes. Once this point is passed, dbrecover will exit. The follwing syntax is supported to specify a timestamp: YYYY-MM-DD [HH:MM:SS] MM/DD/YYYY [HH:MM:SS] DD.MM.YYYY [HH:MM:SS] Any character may be used to separate date and time. Specifying the time is optional (defaults to 00:00:00). For example: dbrecover -T "2007-02-22 16:53:00" ... This specifies to apply transactions committed up to Feb 22, 2007, 16:53:00. * A DBOPEN in write mode when the [Replication] RedirectWrite is not configured now fails with a native status of -2:-810 (S_INUSE/S_REPL) indicating a conflicting open mode (#3308). When using the image3k library this is translated to status -32. Previous versions returned the status -1:-810 in this case, indicating the database does not exist or is inaccessible. * The current server replication role (MASTER/SLAVE) is logged in the server log upon server startup (#3302). * An unknown value specified to the [Replication] Role= config item is considered an error (#3301). Previously this resulted in a warning message and the condition was ignored. * dbctl replication status returns a timestamp of the last checkpoint operation when the server is configured to function as a MASTER or SLAVE role (#3320). For example: > dbctl -s :8102 replication status Server is configured as MASTER Last checkpoint is 12-1.1083 (2006-04-18 18:57:13) Forward-logging has been enabled. Forward-log is '/fwlog/fw-12-1'. * An updated chklic utility is included in this patch that understands the repl license key. * The server was enhanced to support additional options for logging server or individual session performance information. The following config items are supported: [server] StatFile StatFile specifies a file name to be used for logging the server utilization. If enabled, this file is updated once a minute. As the file is re-opened each time it is updated it may be moved/deleted freely. This config item was introduced with the B.07.10 release. Please refer to the B.07.10 release notes for details. User visible change: The config file must specify an absolute file name. This is consistent with the corresponding dbctl command. [server] StatFileFlags StatFileFlags specifies options that influence the StatFile format. By default (StatFileFlags not set) the file content is replaced each time it is updated. Also, the content is formatted with multiple lines, each containing a descriptive text and the actual value, separated by a colon. The following flags are supported: s (single line) causes the values to be formatted into a single line. Values are separated by a space and no descriptive text is present. a (append) causes additional values to be appended to the file instead of replacing the previous content. t (local timezone) causes the timestamp to include the offset of the local timezone from UTC. If not present, the timestamp value denotes UTC. This flag allows to use the timestamp value with DSI (MeasureWare) on HP-UX without requiring a conversion. These flags may be combined (eg. StatFileFlags = sat). Example output (single line format): 1172193450 6 110 0 441 0 0 1 [server] SessionStatFile If specified, SessionStatFile is used for logging session utilization information. Depending on the SessionStatMode setting, information is logged when a session ends or after the next database call after the specified interval expires. This file is opened on the first event and kept open until a new value is specified with dbctl SessionStatFile or the SessionStatMode is changed through dbctl. The config file must specify an absolute path name. This is consistent with the corresponding dbctl command. The information logged to SessionStatFile is substantially similar to session details provided in the HTTP status and may be used to evaluate performance/behavior of an application after it has completed. Every entry in SessionStatFile consists of a single line, fields are separated by a vertical bar (|) character. The following information is provided in SessionStatFile: timestamp - the timestamp (UTC) the entry was added TID - The id of the database thread Type - Type of Entry (E or U character), E specifies the entry was logged when the thread had completed (application disconnected from the database), U specifies the entry was logged after the interval specified in SessionStatMode had expired OSuser - Operating system account used by the application DBuser - database login (most recently) used by the application ConnTime - Connect time (in ISO format YYYY-MM-DD HH:MM:SS) ConnSec - Number of seconds elapsed since connecting Stat - Three numerical values for each monitored database activity (a subset of database activity typically called from applications). The values specify two counters and the wall time for the sum of all calls of a category. The first counter specifies the number of database calls (from the client library, may be different from application calls if client side caching is used), the second counter may specify a count related to the particular call (see below). The wall time is specified in usec (1 mio per second). The follwing database activities are monitored IO_READ - Disk reads accounted to the session. This includes both reading activity as well as any disk reads required for writing activity. The count field specifies the number of IO requests, the count2 field specifies the number of pages (8K units). DBFIND - DBFIND calls. DBGET - DBGET calls (single record). DBGETB - Multi-record DBGET calls. These are used internally by the client library if client side caching is used. The count2 field specifies the number of records obtained. DBPUT - DBPUT calls DBUPDATE - DBUPDATE calls DBDELETE - DBDELETE calls DBLOCK - DBLOCK calls, count2 specifies the number of unconditional DBLOCK calls that could not be granted immediately but were blocked by a competing lock. DBUNLOCK - DBUNLOCK calls TXBEGIN - Begin Transaction TXCOMMIT - Commit Transaction TXROLLBACK - Transaction Rollback IP - IP Address and port number (separated by a colon) used to connect to the database AppEnv - Information collected from the application environment, such as process ID, operating system specific user id, (subset of the) command line, EQ_AUDIT_INFO content Please Note: The content of the SessionStatFile is subject to change without notice. Example output (single line): 1172196823|9|E|mike|public|2007-02-22 16:54:39|4|11|11|751| 0|0|0|0|2|163|45|6|10591|0|0|0|0|0|0|0|0|0|0|1|8879|0|1|6| 0|0|0|0|0|0|0|0|0|127.0.0.1:64169|uid=102 pid=4812 pname=query3k [server] SessionStatMode SessionStatMode is a numeric value that specifies when an entry is logged to the SessionStatFile. The following values are supported: 0 - (zero) The SessionStatFile is disabled 1 - (one) A log entry is written to the SessionStatFile when a session ends. Any other value is understood to specify an interval (in seconds) after which an entry is logged to the SessionStatFile in addition to the entry that is logged after the session ends. The specified value must be at least 60 seconds. * The server was enhanced to support additional dbctl commands to allow dynamically changing the logging of performance information. The following additional dbctl commands were added dbctl statfile [FileName|DISABLED] Obtain the current value of [server] StatFile or specify a new value. If used without additional file name argument this returns the current value for [server] StatFile. When a file name is present, it specifies a new value for [server] StatFile. If DISABLED is specified, the [server] StatFile is unconfigured and no longer used. Otherwise an absolute file name must be specified. The file may not exist. When a file name is specified dba capabilities are required. For example: dbctl statfile dbctl -u dba statfile /tmp/server.stat dbctl statfileflags [flags] Obtain the current value of [server] StatFileFlags or specify a new value. If used without additional flags argument this returns the current value for [server] StatFileFlags. When a flags argument is present, it specifies a new value for [server] StatFile. An empty argument may be used to reset the flags. When a flags argument is specified dba capabilities are required. For example: dbctl statfileflags dbctl -u dba statfileflags sat dbctl -u dba statfileflags "" dbctl sessionstatfile [FileName|DISABLED] Obtain the current value of [server] SessionStatFile or specify a new value. If used without additional file name argument this returns the current value for [server] SessionStatFile. When a file name is present, it specifies a new value for [server] SessionStatFile. If DISABLED is specified, the [server] SessionStatFile is unconfigured and no longer used. Otherwise an absolute file name must be specified. The file may not exist. When a file name is specified dba capabilities are required. For example: dbctl sessionstatfile dbctl -u dba sessionstatfile /tmp/session.stat dbctl sessionstatmode [mode] Obtain the current value of [server] SessionStatMode or specify a new value. If used without additional mode argument this returns the current value for [server] SessionStatMode. When a mode argument is present, it specifies a new value for [server] SessionStatMode. When a mode argument is specified dba capabilities are required. For example: dbctl sessionstatmode dbctl -u dba sessionstatmode 1 * On HP-UX PA-RISC the listen queue backlog size was increased (#3324) Patch XE71-061020 ----------------- * Incorporated the most recent Eloquence B.07.10 patches * Fixed behavior in a corner case where the forward-log is now properly updated from the transaction journal even if a crash recovery is repeated (#3048) * Improved handling of forward recovery (dbrecover) and replication (dbrepl) after a role change when the master server was aborted and slave server role was changed to a master server. This is now recognized automatically without the need for manual intervention. dbrecover and replication in previous versions could stop prematurely at the time of the role change. * The dblogreset -M option was removed. It was only intended as a short term workaround. * dblogreset was changed to create forward-log files with the correct permissions * Added updated dbcfix utility to the beta archive to protect additional volume status information that is maintained for replication use. Patch XE71-060906 ----------------- * Added updated dbvolextend, dbvolchange and dbfsck utilities to the beta archive to protect additional volume status information that is maintained for replication use. * Changed slave server to synchronize volume files on each checkpoint and if dbrepl exits. * Fixed problem with the volume generation count that could get out of sync if forward-logging was restarted during on-line backup and the eloqdb6 was then stopped while still in on-line backup mode (#3130). Patch XE71-060901 ----------------- * On-line backup on the replication slave is now functional. * An option -G was added to the dbrepl utility. * Using the slave server volume files to recover the master server is now supported. * An option -M was added to the dblogreset utility (currently undocumented). * A new dbctl replication status command was added. * After using the dbrecover utility, the internal volume generation is now correctly incremented the next time the eloqdb6 is started or the dblogreset command is used. * Fixed a problem on the slave server that could abort with an internal failure message as below on shutdown if the previous replication was incomplete: bf_link_cluster() f_bhp->id.node_id=#3:SLP, node_id=#2:SLP, page_id=0x1000007, npages=1 server panic: Fatal problem detected in bf_link_cluster Assertion failed: f_bhp->id.node_id == node_id server panic: Aborting on internal failure, file mpool.c, line 456 * A problem was solved that could cause an inconsistency of the internal volume generation between data and log volumes (#3129). This could result in an error during eloqdb6 startup like below: failed to open volume: volume #1 has inconsistent generation count This could happen under a rare condition when forward-logging was configured but disabled and afterwards the eloqdb6 process was terminated unexpectedly two times in a row. In this case, the log volume header was not updated and therefore contained a wrong volume generation. For additional information, please refer to the documentation (also installed as /opt/eloquence6/share/doc/REPL.README). Patch XE71-060626 ----------------- * Fixed problem with slave server forward-log files. In some cases the slave server forward-log file could contain repeated data. * Restarting the recovery was improved. The previous version caused the slave server to re-read the most recent fw-log file segment to synchronize. This is no longer necessary. * The dbrepl utility was modified to remove a repeated warning message. Patch XE71-060623 ----------------- * Support for forward-log files was added to the slave server. * Fixed a potential buffer overflow when redirecting a writing dbopen from a slave server. * Fixed a compatibility problem with older forward-log files. * Fixed a problem with cached meta information on slave server possibly not updated. Patch XE71-060522 ----------------- * Fixed a bug where a dbrestore would corrupt the configuration * Fix bug with dbopen mode 4 on slave not bounced to master * Changed btree logging format to improve incremental updates in some corner cases * Added initial support for detecting conflicting database use on the slave server. The access requirements for replication is recorded by the master server and applied by the replication process. The following conditions are currently recognized: - The replication requesting exclusive access to a database (eg. erasing a database or an application on the master requested exclusive access to the database) - An application opening a database on the slave server in mode 8 (deny concurrent write) If a database is currently in use by an application, the replication is temporarily suspended until the database is available. If a database is currently accessed by the replication an attempt by an application to open the database in a conflicting mode will fail with a database status. Patch XE71-060418 ----------------- * This patch adds the option to Eloquence B.07.10 to replicate database transactions to other database environments. It is only intended for testing purposes. Installation: ------------- Please download the patch archive that corresponds with the installed release. The patch files follow the conventions below: XE71-070222-hpux-ia64.tar.gz ^ ^ ^ | | Architecture / OS specific build | Operating system Patch ID HP-UX: In order to install this patch, you need to unpack it with gzip and tar. Gzip is included with HP-UX. Installation requires root privileges. cd /opt/eloquence6 gzip -dc /path/to/XE71-070222-hpux-pa20.tar.gz | tar xf - Files: bin/eloqdb6 bin/dbrepl bin/dblogreset bin/dbrecover bin/dbvoldump bin/fwaudit bin/dbvolextend bin/dbvolchange bin/dbfsck share/doc/REPL.README Linux: In order to install this patch, you need to unpack it with tar. Installation requires root privileges. cd /opt/eloquence6 tar xzf /path/to/XE71-070222-linux-*.tar.gz Files: bin/eloqdb6 bin/dbrepl bin/dblogreset bin/dbrecover bin/dbvoldump bin/fwaudit bin/dbvolextend bin/dbvolchange bin/dbfsck share/doc/REPL.README