oracle中句柄,释放句柄 – 提供7*24专业数据库(Oracle,SQL Server,MySQL等)恢复和Oracle技术服务@Tel:+86 13429648788 - 惜分飞...

在很多时候,检查系统时候发现,由于某个Oracle的trace文件导致磁盘空间告警,因为业务需要不能让数据库down下来。这个时候你想到的方法可能是直接删除掉这个trace文件,如果是win系统,那恭喜你这样做可以解决问题;如果是linux/unix系统,那就等着事故的发生吧。在linux/unix中,如果直接rm掉oracle进程的某个文件(该进程还存在),文件句柄不会释放,即磁盘使用空间不会释放。可以通过df命名看到磁盘的空间释放释放。下面通过对lgwr进程的一系列操作,使用oradebug来释放oracle进程句柄,从而达到释放oracle某个被删除的trace文件的磁盘空间

一、查找lgwr进程的trace文件

[oracle@localhost /]$ cd $ORACLE_BASE/admin/$ORACLE_SID/bdump

[oracle@localhost bdump]$ pwd

/opt/oracle/admin/mcrm/bdump

[oracle@localhost bdump]$ ls -l|grep lgwr

-rw-r----- 1 oracle oinstall 32133 Dec 22 21:00 mcrm_lgwr_3485.trc

-rw-r----- 1 oracle oinstall 3713 Oct 8 07:13 mcrm_lgwr_3489.trc

-rw-r----- 1 oracle oinstall 22507 Mar 3 06:00 mcrm_lgwr_3598.trc

-rw-r----- 1 oracle oinstall 8441 Sep 15 10:29 mcrm_lgwr_4963.trc

[oracle@localhost bdump]$ ps -ef|grep lgwr

oracle 1056 30718 0 21:10 pts/3 00:00:00 grep lgwr

oracle 3598 1 0 2011 ? 00:04:10 ora_lgwr_mcrm

[oracle@localhost bdump]$ df |grep /opt

/dev/sda6 37798668 33312588 2534988 93% /opt

[oracle@localhost bdump]$ du -s .

948 .

从这里得出几点结论:

1.当前lgwr进程的spid为:3598

2.当前lgwr进程产生的trace文件大小为:22507B

3.包含该trace文件的分区大小使用大小为:33312588KB

4.bdump目录大小为:948KB

二、删除lgwr进程对应trace文件

[oracle@localhost bdump]$ rm mcrm_lgwr_3598.trc

[oracle@localhost bdump]$ du -s .

924 .

[oracle@localhost bdump]$ df |grep /opt

/dev/sda6 37798668 33312588 2534988 93% /opt

[oracle@localhost bdump]$ ls -l /proc/3598/fd|grep lgwr

l-wx------ 1 oracle oinstall 64 Mar 3 20:54 2 -> /opt/oracle/admin/mcrm/bdump/mcrm_lgwr_3598.trc (deleted)

从这里得出结论:

1.bdump目录当前大小变为:924KB(大约等于948KB-22507B)

2.包含该trace文件的分区大小使用大小依然为:33312588KB(没有因为删除trace文件而释放空间)

三、释放被删除trace文件空间

[oracle@localhost bdump]$ sqlplus / as sysdba

SQL*Plus: Release 10.2.0.4.0 - Production on Sat Mar 3 21:12:41 2012

Copyright (c) 1982, 2007, Oracle. All Rights Reserved.

Connected to:

Oracle Database 10g Enterprise Edition Release 10.2.0.4.0 - 64bit Production

With the Partitioning, OLAP, Data Mining and Real Application Testing options

SQL> !ls -l /proc/3598/fd|grep lgwr

l-wx------ 1 oracle oinstall 64 Mar 3 20:54 2 -> /opt/oracle/admin/mcrm/bdump/mcrm_lgwr_3598.trc (deleted)

SQL> oradebug setospid 3598

Oracle pid: 6, Unix process pid: 3598, image: oracle@localhost.localdomain (LGWR)

SQL> oradebug flush;

Statement processed.

SQL> oradebug close_trace;

Statement processed.

SQL> !ls -l /proc/3598/fd|grep lgwr

SQL> !df |grep /opt

/dev/sda6 37798668 33312564 2535012 93% /opt

SQL> exit

Disconnected from Oracle Database 10g Enterprise Edition Release 10.2.0.4.0 - 64bit Production

With the Partitioning, OLAP, Data Mining and Real Application Testing options

从这里可以得出结论:

1.包含该trace文件的分区大小使用大小为:33312564KB(大约等于948KB-22507B)

2./proc/spid/fd下面的句柄已经释放

3.总这里可以看出使用oradebug可以真正释放oracle进程磁盘使用空间

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值