Kbase 19947: Error 1260 on Unix
Autor |
  Progress Software Corporation - Progress |
Acesso |
  Público |
Publicação |
  10/16/2008 |
|
Status: Verified
FACT(s) (Environment):
Unix
SYMPTOM(s):
Shared memory in use by another process. (1260)
system crashed previously
Database doesn't start with error 1260
more than one database needing to be started
CAUSE:
If the system crashes, or the databases are not shut down normally (for example, in UNIX kill -9, etc), the database may fail to restart with error 1260. The error is caused by the shared memory segment number being retained in the master block in the database from the previous instance.
When more than one database is running, it is possible that the shared memory ID in the master block of one database is the same as the new one granted to another database server by the operating system.
The bug is fixed in the commercial versions of Progress 8.3D and 9.1C, plus the latest patch for Progress 9.1B.
CAUSE:
Bug# 20000517-020
FIX:
This issue was fixed in Progress 8.3D and Progress 9.1C where device and inode information were added into the shared memory (shmid) validation.
To immediately address this issue, the segment number can be cleared by either:
1) Truncating the Before-image (BI) file,
or,
2) Running a single-user session and exiting.
or,
3) Running prostrct repair, ensuring that the database
If there are a large number of databases, truncating the BI on all of them can take a significant amount of time.
The following script provides one approach to truncating the BI files in parallel using background tasks:
#/bin/sh
# Script to cleanup after a system crash or database restart.
# Insert your databases here.
proutil test1 -C truncate bi -G 0 &
proutil test2 -C truncate bi -G 0 &
proutil test3 -C truncate bi -G 0 &
# Loop to wait until the above truncations finish.
#
# NOTE: there is one process returned from the
# ps command that has the _proutil executable,
# even when the above commands have finished.
# This is the grep process, and it can be ignored.
count=2
until [ $count -lt 2 ]
do
echo "Waiting for BI truncation..."
count=`ps -ef|grep _proutil|wc -l`
sleep 10
done
# Now, grow the BI files
#
# Note: there will be one process returned from the
# ps command that has the _proutil executable,
# even when the above commands have finished.
# This is the grep process, and it can be ignored.
proutil test1 -C bigrow 10 &
proutil test2 -C bigrow 10 &
proutil test3 -C bigrow 10 &
# Wait again until the bigrow's finish.
count=2
until [ $count -lt 2 ]
do
echo "Waiting for BI growth..."
count=`ps -ef|grep _proutil|wc -l`
sleep 10
done