Author Archives: 何勇

记录win2008的一个bug,端口占用 TIME_WAIT pid=0

现象:

netstat –ano|findstr “TIME_WAIT”  发现系统中存在大量状态为TIME_WAIT,pid=0进程占用端口,由于这种占用,导致程序无法通过此端口访问外部程序,外部程序也无法访问此端口。

而且此种占用无法通过重启程序解决,通过任务管理器可以发现pid=0的进程为 system idle process,由于是客户生产系统,不敢随意杀死进程,无法判断杀死pid=0的进程能否解决。

查找资料发现者这种问题是Windows系统的一个BUG,具体表现如下:

症状


在计算机上运行的 Windows Vista,Windows 7,Windows Server 2008 中,还是 Windows Server 2008 R2,您遇到以下问题。

问题

在系统启动时从 497 天后所有在TIME_WAIT状态的 TCP/IP 端口都不会被关闭。因此, TCP/IP 端口可能会被用光,并且可能不会创建新的 TCP/IP 会话。

注意:这台计算机某些与网络相关的操作可能受此问题。例如,您试图使用某些远程管理工具来管理已超过 497 天运行的基于 Windows Server 2008 的域控制器。在此示例中,远程管理工具无法连接到域控制器。

https://support.microsoft.com/zh-cn/help/2553549/all-the-tcp-ip-ports-that-are-in-a-time-wait-status-are-not-closed-aft

 

 

ogg通过中间库两次同步

ogg两次同步:从test同步到test1,再同步到test2,用以模拟a库到b库再到c库的同步,其中b库免去抽取的过程,直接投递从a库传到b库的trail文件到c库,免去中间库资源消耗。

 

准备工作:

ggsci>create subdirs
ggsci>add checkpointtable ogg.checkpoint
管理进程mgr
PORT 7809
DYNAMICPORTLIST 7800-8000
–AUTOSTART ER *
AUTORESTART EXTRACT *, RETRIES 5, WAITMINUTES 3
PURGEOLDEXTRACTS /ogg/dirdat/*, usecheckpoints, minkeepdays 10
LAGREPORTHOURS 1
LAGINFOMINUTES 30
LAGCRITICALMINUTES 45

一个抽取进程
EXTRACT eora
setenv (NLS_LANG=AMERICAN_AMERICA.ZHS16GBK)
USERID ogg, PASSWORD ogg
EXTTRAIL ./dirdat/ea
DISCARDFILE ./dirpt/eora.dsc,APPEND,MEGABYTES 500
TRANLOGOPTIONS ALTARCHIVELOGDEST +fra/sysi/archivelog
TRANLOGOPTIONS ALTARCHIVEDLOGFORMAT %t_%s_%r.dbf
tranlogoptions dblogreader
table test.p_tb1;

ggsci>add extract eora,tranlog,begin now
ggsci>add exttrail ./dirdat/ea,EXTRACT eora megabytes 20

第一个投递进程pump1
EXTRACT pump1
USERID ogg, PASSWORD ogg
RMTHOST 10.10.10.132, MGRPORT 7809
RMTTRAIL /ogg/dirdat/eb
DISCARDFILE ./dirrpt/pump1.dsc,APPEND,MEGABYTES 500
table test.p_tb1;

ggsci>add EXTRACT pump1,exttrailsource ./dirdat/ea
ggsci>ADD RMTTRAIL /ogg/dirdat/eb, EXTRACT pump1

 

 

第一个复制进程rep1

REPLICAT rep1
setenv (NLS_LANG=AMERICAN_AMERICA.ZHS16GBK)
USERID ogg, PASSWORD ogg
HandleCollisions
ASSUMETARGETDEFS
reperror default, discard
DISCARDFILE ./dirrpt/rep1.dsc,APPEND,MEGABYTES 20
dynamicresolution
MAP test.p_tb1, target test1.p_tb1;

ggsci>add REPLICAT rep1,EXTTRAIL ./dirdat/eb,checkpointtable ogg.checkpoint

 

 

第二个投递进程pump2

EXTRACT pump2
USERID ogg, PASSWORD ogg
RMTHOST 10.10.10.132, MGRPORT 7809
RMTTRAIL /ogg/dirdat/ec
DISCARDFILE ./dirrpt/pump2.dsc,APPEND,MEGABYTES 500
table test.p_tb1;                                                        –这里要注意,由于trail文件来源于a 库,记录                                                                                    –信息都是a库的,写成b库的将找不到更新

ggsci>add EXTRACT pump2,exttrailsource ./dirdat/eb
ggsci>ADD RMTTRAIL /ogg/dirdat/ec, EXTRACT pump2

 

 

第二个复制进程rep2

REPLICAT rep2
setenv (NLS_LANG=AMERICAN_AMERICA.ZHS16GBK)
USERID ogg, PASSWORD ogg
HandleCollisions
ASSUMETARGETDEFS
reperror default, discard
DISCARDFILE ./dirrpt/rep2.dsc,APPEND,MEGABYTES 20
dynamicresolution
MAP test.p_tb1, target test2.p_tb1;                  –这里要注意,由于trail文件来源于a库,记录信息                                                                               –都是a库的,写成b库的将找不到更新

ggsci>add REPLICAT rep2,EXTTRAIL ./dirdat/ec,checkpointtable ogg.checkpoint

netpro-fd备份oracle数据库时清理残留rman进程

linux 下处理rman备份进程残留:

产生情况:
1、正常取消作业,fd和插件内部已经处理,rman进程可以正常退出

2、异常情况导致rman进程残留,netpro-fd没有退出
解决方案:
为区分找到netpro-fd启动的rman进程,拷贝$ORACLE_HOME/bin/rman到/usr/NETPRO5.02.8/bin/下备份脚本中使用这个rman启动备份,

备份脚本hzmh_rman.sh修改为
#! /bin/sh
ps -ef |grep NETPRO5.02.8/bin/rman |grep -v grep | awk ‘{print $2}’ | xargs kill -9
su – oracle -c “/usr/NETPRO5.02.8/scripts/rman_orcl.sh”
备份作业启动前杀死由我们netpro-fd调起的rman进程

备份脚本rman_orcl.sh使用这个/usr/NETPRO5.02.8/bin/rman启动备份,
将RMAN=$ORACLE_HOME/bin/rman修改为RMAN=/usr/NETPRO5.02.8/bin/rman

3、异常情况导致rman进程残留,netpro-fd退出
解决方案:
这种情况下fd无法做任何处理,可以在crontab中作一个任务,检测netpro-fd客户端退出时,杀死rman进程,重启客户端

#! /bin/sh
pid_fd=`ps -ef | grep netpro-fd | grep -v grep | awk ‘{print $2}’`
if [ -z “$pid_fd” ]
then
`ps -ef |grep NETPRO |grep -v grep |grep rman | awk ‘{print $2}’ | xargs kill -9`
netprostop
netprostart
fi