Salesforce

Error (4192) causes database to be shutdown. Machines hostname was changed.

« Go Back

Information

 
TitleError (4192) causes database to be shutdown. Machines hostname was changed.
URL NameP12067
Article Number000144794
EnvironmentProduct: Progress
Version: 8.x, 9.x
Product: OpenEdge
Version: 10.x, 11.x
OS: All supported platforms
Question/Problem Description
Abnormal Database Shutdown When Host Name Is Not The Host Name Expected 4192 4196.
The database cannot be restarted: Can't attach shared memory.
Impact of changing the hostname while the database is online. 
 
Steps to Reproduce
Clarifying Information
The host name is correct when the hostname command is issued.
Error Message<filename>: HOSTNAME is <hostname>, expected <hostname>. (4192)
<file-name> is not a valid .lk file for this server. (4196)
The Host parameter supplied was <host>, however, this Host is <host>. (5149)
SYSTEM ERROR: Can't attach shared memory with segment_id
Defect Number
Enhancement Number
Cause
The system's hostname was changed while the database was running online.

The hostname will be whatever the hostname is when the database is started and this is then the information that is stored in the database .lk file together with the the PID and mode.

The Watchdog sub-process of the login Broker (or WDOG if started) verifies the lock file of the database to ensure that the lk file does not disappear and that the information within the lock file is correct. The .lk file lists the pid and the hostname along with other information.  Shutting the database down when the hostname is changed is expected as designed.

When an attempt is made to start the database, a check is made to verify if it is already running. The existence of the .lk file is an indication that it is, but not absolute proof, so it is also verified.

The process id (PID) of the broker (or user if in single user mode) is fetched from the .lk file to verify if that process is still running. If this is the case, then the database is definitely in use. 

However, if the .lk file is on a filesystem, somebody could try to start the database from a different machine that has the filesystem mounted (when the database is already up and running). In order to prevent this from happening, we need the host name to know if the process id is on the system that is trying to start the database or someplace else.

When the database is online, the watchdog process periodically checks for the existence and validity of the .lk file. If it has been removed or no longer valid, the database must be shut down because now there is no protection against starting it up while it is already running, which is absolutely certain to lead to database corruption.  For further detail refer to Article:
Resolution
Either:

A. Restart the database using the new -H <hostname> parameter, or
B. Revert the hostname of the system to its previous value.

The Master Block information from the previous crashed instance may additionally need to be cleared:
$   proutil dbname -C truncate bi
$   prostrct list dbname dbname.st
$   prostrct repair dbname dbname.st

Note: It is recommended to only change the hostname while the OpenEdge products are offline and to adjust all parameter and properties files with the new hostname value as needed. 
Workaround
Notes
Keyword Phrase
Last Modified Date11/20/2020 7:39 AM

Powered by