怎么检查Oracle GoldenGate(OGG)的checkpoint file 是否被locked? 参考原文: How to check if the check point file is locked? (Doc ID 1480118.1) 适用于: Oracle GoldenGate - Version 11.1.1.1.1 and later Information in this document applies t
怎么检查Oracle GoldenGate(OGG)的checkpoint file 是否被locked?
参考原文:
How to check if the check point file is locked? (Doc ID 1480118.1)
适用于:
Oracle GoldenGate - Version 11.1.1.1.1 and later
Information in this document applies to any platform.
目标:
GoldenGate 使用 file lock 来确定 进程(抽取进程,传输进程,应用进程)是否在running
有时候,我们呢会看到进程(extract or replicat) 正在running,但是该进程确实没有running,并且该进程的检查点文件(checkpoint file)处于被锁定的状态。MOS文章 1314220.1 描述了解决这个问题的方法
本文描述了确认 checkpoint file 是否被locked的方法。
解决方案:
1. checkpoint file被本server上的一个进程lock:
(1) lsof [oracle@localhost dirchk]$ lsof E1.cpe COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME extract 19025 oracle 16uW REG 253,0 53248 419123 E1.cpe
(2) fuser [oracle@localhost dirchk]$ fuser E1.cpe E1.cpe: 19025
[oracle@localhost dirchk]$ ps -ef|grep 19025 oracle 19025 7443 2 18:14 ? 00:00:01 /app/goldengate/source/extract PARAMFILE /app/goldengate/source/dirprm/e1.prm REPORTFILE /app/goldengate/source/dirrpt/E1.rpt PROCESSID E1 USESUBDIRS oracle 19035 19025 1 18:14 ? 00:00:01 oracleorcl (DESCRIPTION=(LOCAL=YES)(ADDRESS=(PROTOCOL=beq))) oracle 19041 19025 2 18:14 ? 00:00:01 oracleorcl (DESCRIPTION=(LOCAL=YES)(ADDRESS=(PROTOCOL=beq))) oracle 19058 18929 0 18:15 pts/0 00:00:00 grep 19025
2.checkpoint file 在nfs server端,并且 lock 也是在nfs server端,可以用如下的perl脚本来检查:
----------------
#!/usr/bin/perl use Fcntl ':flock'; # import LOCK+* constants my $f = $ARGV[0]; open (MYFILE, "+< $f") || die "cannot open file\n"; print "status 1: file is opened, but not locked yet\n"; flock(MYFILE, LOCK_EX) || die "cannot flock file\n"; print "status 2: file is opened/locked, but not seeked yet\n"; seek (MYFILE, 0, 2) || die "seek failed \n"; print "status 3: file is opened/locked/seeked sucessfully, sleeping for 20 sec\n"; sleep(20); close (MYFILE); print "status 4: closed file\n";
-----------------
使用例子:
(1) when the file is locked mugato:/mnt/shared/Public/Support/oracle/v111114_2_linux64_ora11g/dirchk> ./tt.pl E1.cpe status 1: file is opened, but not locked yet
(2) when the file is not locked mugato:/mnt/shared/Public/Support/oracle/v111114_2_linux64_ora11g/dirchk> ./tt.pl E1.cpe status 1: file is opened, but not locked yet status 2: file is opened/locked, but not seeked yet status 3: file is opened/locked/seeked sucessfully, sleeping for 20 sec status 4: closed file Note: the script is only tested on Solaris 10, and it may need to be modified on other platform