出产报表数据库呈现了运动事项的回滚段毁坏(二)
本源:網海拾貝
目前入部下手想辦法處理處分這個運動事項和含有運動事項的回滾段了。
?
首先準備drop這個表試試看(先備份,然后drop,然后重建):
先是運用CTAS備份這個表:
SQL> create table WAP_AUTHPRICE_USER_SP_RD060308 tablespace INDEX_SUBN01 nologging as
select * from WAP_AUTHPRICE_USER_SP_RD where 1=2;
? 2?
Table created.
SQL> insert into WAP_AUTHPRICE_USER_SP_RD060308 nologging
? 2? select * from WAP_AUTHPRICE_USER_SP_RD;
insert into WAP_AUTHPRICE_USER_SP_RD060308 nologging
*
ERROR at line 1:
ORA-01555: snapshot too old: rollback segment number 19 with name "_SYSSMU19?$"
too small
SQL> insert into WAP_AUTHPRICE_USER_SP_RD060308 nologging
? 2? select * from WAP_AUTHPRICE_USER_SP_RD where rownum<100;
99 rows created.
SQL> rollback;
Rollback complete.
SQL>
我們看到,每次掃表到誰人回滾段中的數據庫時,系統就會報ORA-01555了。
由此料到,一切的對表的FTS城市喪失敗,比方exp:
oracle@rdb01:/oracle > exp report/slienttop parfile=a.par
Export: Release 9.2.0.5.0 - Production on Thu Mar 9 14:31:45 2006
Copyright (c) 1982, 2002, Oracle Corporation.? All rights reserved.
Connected to: Oracle9i Enterprise Edition Release 9.2.0.5.0 - 64bit Production
With the Partitioning and OLAP options
JServer Release 9.2.0.5.0 - Production
Export done in ZHS16GBK character set and UTF8 NCHAR character set
About to export specified tables via Direct Path ...
. . exporting table?????? WAP_AUTHPRICE_USER_SP_RD
EXP-00056: ORACLE error 942 encountered
ORA-00942: table or view does not exist
Export terminated successfully with warnings.
oracle@rdb01:/oracle >
?
目前,只需運用DUL了:
DUL> unload report.WAP_AUTHPRICE_USER_SP_RD;
. unloading table? WAP_AUTHPRICE_USER_SP_RD
?9430056 rows unloaded
DUL> exit
oracle@rdb01:/data/tmp/dul > gzip REPORT_WAP_AUTHPRICE_USER_SP_RD.dmp
oracle@rdb01:/data/tmp/dul > ll REPORT_WAP_AUTHPRICE_USER_SP_RD.dm*
-rw-r--r--?? 1 oracle???? dba??????? 49514464 Mar 13 14:18 REPORT_WAP_AUTHPRICE_USER_SP_RD.dmp.gz
oracle@rdb01:/data/tmp/dul >
這時,忽然想到運用oracledebug來跟蹤一下歷程大要會話,大要會有點收成:
SQL> oradebug setospid 15664?
ORA-00072: process "Unix process pid: 15664, image: " is not active
SQL> oradebug setospid 15664?
ORA-00072: process "Unix process pid: 15664, image: " is not active
SQL>
SQL> select pid, spid, username from v?$process where spid=15664;?
?????? PID SPID???????? USERNAME
---------- ------------ ---------------
??????? 63 15664??????? oracle
SQL>
SQL> oradebug setorapid 63?
ORA-00072: process "Unix process pid: 15664, image: oracle@rdb01 (TNS V1-V3)" is not active
SQL>
顯然,這個成果是和我們適才在操縱系統上kill process,以及在數據庫中kill session的成果是一致的——我們不能找到這些process和session的活動了。
由于alert.log的內容曾經被人清空了,但是數據庫中可以看到:
?????? USN NAME?????? STATUS????????? TABLESPACE_NAME????? ADDR??????????????? SID SERIAL# USERNAME?? PROGRAM????????????? MACHINE??? OSUSER
---------- ---------- --------------- -------------------- ---------------- ------ ------- ---------- -------------------- ---------- ----------
??????? 19 _SYSSMU19?$ PENDING OFFLINE UNDOTBS1???????????? C0000001A7BF5218???? 71?? 39809 REPORT???? sqlldr@RPT01 (TNS CS_RPT01?? report16
這個回滾段曾經毀壞,而且運動事項是一個sqlloader的歷程(適才看到的數據庫中sid 71正在執行的sql語句恰恰也是多么一個insert語句)。由此證實了我最后的推想。由于某種啟事,開辟人員將正在執行的sqlloader歷程kill了,而此時恰恰有一交運動在回滾段中,這個事故孕育發作在12/30/05 01:48:33 當前,由于沒有及時的締造和處理處分這個成績,數據庫的日記曾經被籠蓋多次,再之后,就孕育發作了我們目前看到的情況。
當然alert.log的內容不在了,但是憑據事故孕育發作的時分,我們找到了呼應的trace--report_ora_15664.trc,內里有如下的內容:
奸通奸騙 SESSION ID:(71.25999) 2005-12-30 01:48:33.580
奸通奸騙 2005-12-30 01:48:33.580
ksedmp: internal or fatal error
ORA-00600: internal error code, arguments: [4193], [2987], [2984], [], [], [], [], []
Current SQL statement for this session:
INSERT INTO WAP_AUTHPRICE_USER_SP_RD?? (LOCATIONID,ICPID,SUBSCAT,ICPATTR,ICPCODE,COUNTS,PERIOD,STAT_TIME) VALUES (:LOCATIONID,:ICPID,:SUBSCAT,:ICPATTR,:ICPCODE,:COUNTS,:PERIOD,TO_DATE(:STAT_TIME,'yyyy-mm-dd hh24:mi:ss'))
ORA-00600 [4193],這類錯誤粗淺即是運動回滾段毀壞一類的錯誤了,詳細的可以審查metalink。
目前我曾經制訂了一套執行方案,下周一入部下手處理處分這個成績(由于24*7,這類有風險的操縱必須求寫報告報到公司的率領和客戶的率領,層層審批,呵呵)。。。
版權聲明: 原創作品,允許轉載,轉載時請務必以超鏈接情勢標明文章 原始出處 、作者信息和本聲明。否則將追查法令責任。
轉載于:https://www.cnblogs.com/zgqjymx/archive/2011/03/07/1976329.html
總結
以上是生活随笔為你收集整理的出产报表数据库呈现了运动事项的回滚段毁坏(二)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Linux管事器战略 Web站点的悄然八
- 下一篇: Solaris 10装置jdk1.6及改