标签云
asm恢复 bbed bootstrap$ dul In Memory kcbzib_kcrsds_1 kccpb_sanity_check_2 MySQL恢复 ORA-00312 ORA-00607 ORA-00704 ORA-00742 ORA-01110 ORA-01555 ORA-01578 ORA-01595 ORA-08103 ORA-600 2131 ORA-600 2662 ORA-600 3020 ORA-600 4000 ORA-600 4137 ORA-600 4193 ORA-600 4194 ORA-600 16703 ORA-600 kcbzib_kcrsds_1 ORA-600 KCLCHKBLK_4 ORA-15042 ORA-15196 ORACLE 12C oracle dul ORACLE PATCH Oracle Recovery Tools oracle加密恢复 oracle勒索 oracle勒索恢复 oracle异常恢复 Oracle 恢复 ORACLE恢复 ORACLE数据库恢复 oracle 比特币 OSD-04016 YOUR FILES ARE ENCRYPTED 勒索恢复 比特币加密文章分类
- Others (2)
- 中间件 (2)
- WebLogic (2)
- 操作系统 (103)
- 数据库 (1,768)
- DB2 (22)
- MySQL (77)
- Oracle (1,609)
- Data Guard (52)
- EXADATA (8)
- GoldenGate (24)
- ORA-xxxxx (166)
- ORACLE 12C (72)
- ORACLE 18C (6)
- ORACLE 19C (15)
- ORACLE 21C (3)
- Oracle 23ai (8)
- Oracle ASM (69)
- Oracle Bug (8)
- Oracle RAC (54)
- Oracle 安全 (6)
- Oracle 开发 (28)
- Oracle 监听 (29)
- Oracle备份恢复 (591)
- Oracle安装升级 (97)
- Oracle性能优化 (62)
- 专题索引 (5)
- 勒索恢复 (86)
- PostgreSQL (30)
- pdu工具 (6)
- PostgreSQL恢复 (9)
- SQL Server (32)
- SQL Server恢复 (13)
- TimesTen (7)
- 达梦数据库 (3)
- 达梦恢复 (1)
- 生活娱乐 (2)
- 至理名言 (11)
- 虚拟化 (2)
- VMware (2)
- 软件开发 (39)
- Asp.Net (9)
- JavaScript (12)
- PHP (2)
- 小工具 (22)
-
最近发表
- ORA-600 kokiasg1故障分析(obj$中核心字典序列全部被恶意删除)
- ORA-00756 ORA-10567故障数据0丢失恢复
- 数据库文件变成32k故障恢复
- tcp连接过多导致监听TNS-12532 TNS-12560 TNS-00502错误
- 文件系统格式化MySQL数据库恢复
- .sstop勒索加密数据库恢复
- 解决一次硬件恢复之后数据文件0kb的故障恢复case
- Error in invoking target ‘libasmclntsh19.ohso libasmperl19.ohso client_sharedlib’问题处理
- ORA-01171: datafile N going offline due to error advancing checkpoint
- linux环境oracle数据库被文件系统勒索加密为.babyk扩展名溯源
- ORA-600 ksvworkmsgalloc: bad reaper
- ORA-600 krccfl_chunk故障处理
- Oracle Recovery Tools恢复案例总结—202505
- ORA-600 kddummy_blkchk 数据库循环重启
- 记录一次asm disk加入到vg通过恢复直接open库的案例
- CHECKDB 发现了 N 个分配错误和 M 个一致性错误
- 达梦数据库dm.ctl文件异常恢复
- Oracle Recovery Tools修复ORA-00742、ORA-600 ktbair2: illegal inheritance故障
- 可能是 tempdb 空间用尽或某个系统表不一致故障处理
- 11.2.0.4库中遇到ORA-600 kcratr_nab_less_than_odr报错
月归档:三月 2012
利用oradebug释放被删除文件空间
在很多时候,检查系统时候发现,由于某个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进程磁盘使用空间
Getting ORA-01476 during execution of DBMS_STATS.GATHER_SCHEMA_STATS
alert日志
Fri Jan 27 22:00:09 2012 GATHER_STATS_JOB encountered errors. Check the trace file. Fri Jan 27 22:00:09 2012 Errors in file /oracle10/admin/ocs/bdump/ocs1_j001_29138.trc: ORA-01476: divisor is equal to zero
trace内容
Oracle Database 10g Enterprise Edition Release 10.2.0.4.0 - 64bit Production With the Partitioning, Real Application Clusters, OLAP, Data Mining and Real Application Testing options ORACLE_HOME = /oracle10/app/product/db/10.2.0 System name: HP-UX Node name: ocsdb1 Release: B.11.23 Version: U Machine: ia64 Instance name: ocs1 Redo thread mounted by this instance: 1 Oracle process number: 60 Unix process pid: 29138, image: oracle@ocsdb1 (J001) *** ACTION NAME:(GATHER_STATS_JOB) 2012-01-27 22:00:09.308 *** MODULE NAME:(DBMS_SCHEDULER) 2012-01-27 22:00:09.308 *** SERVICE NAME:(SYS$USERS) 2012-01-27 22:00:09.308 *** SESSION ID:(988.31342) 2012-01-27 22:00:09.307 ORA-01476: divisor is equal to zero *** 2012-01-27 22:00:09.417 GATHER_STATS_JOB: GATHER_TABLE_STATS('"OCS_SM"','"HLP_SMS_SEND"','""', ...) ORA-01476: divisor is equal to zero
错误原因
oracle unpublished Bug 5645718
解决方法
1.Setting event 38041 at level 16
sql> connect / as sysdba sql> alter system set events '38041 trace name context forever, level 16';
2.Patch 6319761