Thu Jan 24 02:12:36 2008
Errors in file /opt/app/oracle/admin/gzgov/udump/gzgov1_ora_8417.trc:
ORA-07445: exception encountered: core dump [_kill()+48] [SIGIOT] [unknown code] [0x0000020E1] [] []
相应的trc文件中,有一些信息:
*** 2008-01-24 02:12:36.394
*** SESSION ID:(20.39311) 2008-01-24 02:12:36.355
Exception signal: 6 (SIGIOT), code: -1 (unknown code), addr: 0x20e1, exception issued by pid: 8417, uid: 200, PC: [0xc00000000031a89
0, _kill()+48]
r1: 9fffffffbf470128 r20: 0 br5: 0
r2: 0 r21: 0 br6: 0
r3: 0 r22: 0 br7: 0
r4: c00000006bad1598 r23: 0 ip: c00000000031a890
r5: 9fffffffffff669c r24: 0 iipa: 0
r6: e r25: 0 cfm: 2
r7: 9fffffffbf166590 r26: 0 um: 1a
r8: 25 r27: 0 rsc: 1f
r9: 2 r28: 0 bsp: 9fffffffbf800d50
r10: 20 r29: 0 bspstore: 9fffffffbf800d50
r11: c000000000000185 r30: 0 rnat: 0
r12: 9fffffffffff21b0 r31: 0 ccv: 0
r13: 9fffffffbf7ed420 NaTs: ffffc00c unat: 0
r14: 0 PRs: 29 fpsr: 9804c8277433f
r15: 0 br0: c00000000023f1d0 pfs: c000000000000002
r16: 0 br1: 4000000001205520 lc: 0
r17: 0 br2: 0 ec: 0
r18: 0 br3: 0 isr: 9fffffffbf800d50
r19: 0 br4: 0 ifa: 0
Reason code: 0000
*** 2008-01-24 02:12:36.421
ksedmp: internal or fatal error
ORA-07445: exception encountered: core dump [_kill()+48] [SIGIOT] [unknown code] [0x0000020E1] [] []
Current SQL statement for this session:
SELECT /*+NESTED_TABLE_GET_REFS+*/ "GZGOVII"."GZGOV_NEWSCLICK".* FROM "GZGOVII"."GZGOV_NEWSCLICK"
………..
LIBRARY OBJECT LOCK: lock=c00000006d17d8a0 handle=c000000073a51cd0 mode=N
This is also consistent with seeing large amounts of queries with this hint, and that those queries are not reused. If this is a problem for you, try to export at another time of day. If the exports are really long-running or the system load is constant, try to find out what you are using exports for and suggest alternatives (eg. backup and recovery purposes, etc). If this is a DSS system, you probably have a smaller shared pool and use import/export heavily. If so, it might be a good idea to use a bigger shared pool when doing this activity.
. . exporting table GZGOV_MESSAGE 11789 rows exported . . exporting table GZGOV_NEWSCLICK EXP-00056: ORACLE error 3113 encountered ORA-03113: end-of-file on communication channel EXP-00056: ORACLE error 24324 encountered ORA-24324: service handle not initialized EXP-00056: ORACLE error 24324 encountered ORA-24324: service handle not initialized EXP-00056: ORACLE error 24324 encountered ORA-24324: service handle not initialized EXP-00056: ORACLE error 24324 encountered ORA-24324: service handle not initialized EXP-00000: Export terminated unsuccessfully ORA-24324: service handle not initialized EXP-00000: Export terminated unsuccessfully $
4)第一步结论
正式由于在执行exp的过程中,当开始导出GZGOV_NEWSCLICK到一定时间后,数据库就报了上面的07445的错误。
经过手工执行用户的逻辑备份命令:
exp gzgovii/db110g file=`date +%Y%m%d`.dmp buffer=204800 compress=y grants=y indexes=yes constraints=yes log=exp.log &
确实发现GZGOV_NEWSCLICK到一定时间后,exp就异常退出了,且数据库日志里报了以上的07445的错误。
5)嵌套表?
根据官方文档的说明,这个oracle自动加上的hints跟嵌套表有关,于是研究了一下嵌套表,过程如下:
(deptno NUMBER(2) PRIMARY KEY,
dname VARCHAR2(14),
loc VARCHAR2(13)
);
(empno NUMBER(4) PRIMARY KEY,
ename VARCHAR2(10),
job VARCHAR2(9),
mgr NUMBER(4) REFERENCES emp,
hiredate DATE,
sal NUMBER(7, 2),
comm NUMBER(7, 2),
deptno NUMBER(2) REFERENCES dept
);
INSERT INTO dept SELECT * FROM scott.dept;
INSERT INTO emp SELECT * FROM scott.emp;
commit;
AS OBJECT
(empno NUMBER(4),
ename VARCHAR2(10),
job VARCHAR2(9),
mgr NUMBER(4),
hiredate DATE,
sal NUMBER(7, 2),
comm NUMBER(7, 2)
);
/
AS TABLE OF emp_type;
(deptno NUMBER(2) PRIMARY KEY,
dname VARCHAR2(14),
loc VARCHAR2(13),
emps emp_tab_type
)
NESTED TABLE emps STORE AS emps_nt;
UNIQUE(empno) ;
FOREIGN KEY(mgr) REFERENCES emps_nt(empno);
SELECT dept.*,
CAST( MULTISET( SELECT empno, ename, job, mgr, hiredate, sal, comm
FROM emp
WHERE emp.deptno = dept.deptno ) AS emp_tab_type )
FROM dept;
commit;
MULTISET用来告诉Oracle子查询返回不止一行,CAST用来告诉Oracle将返回设置为一个集合类型。
FROM dept_and_emp d
WHERE deptno = 10;
TABLE( SELECT emps
FROM dept_and_emp
WHERE deptno = 10
)
SET comm = 100;
(SELECT emps FROM dept_and_emps WHERE deptno=10)
VALUES
(1234,'NewEmp','Clerk',7782,SYSDATE,1200,NULL);
(SELECT emps FROM dept_and_emps WHERE deptno=20)
WHERE ename='SCOTT';
NESTED_TABLE_ID, SYS_NC_ROWINFO$
FROM "EMPS_NT";
SET ename=INITCAP(ename);
查询该表的定义:
-- Create table create table GZGOVII.GZGOV_NEWSCLICK ( CONTENT_ID NUMBER, CLICK_DATE DATE, CLICK_COUNT NUMBER ) tablespace FSDATA pctfree 10 pctused 40 initrans 1 maxtrans 255 storage ( initial 200K minextents 1 maxextents unlimited );
这个表根本不是嵌套表,oracle为什么会加上这个hint?呢,不得而知。
于是开始怀疑exp的参数有问题,因为这个表的记录非常多,但buffer=204800似乎太小了,
所以修改命令,进行单独对这个表导出的测试:
$ exp gzgovii/db110g file=exptest.dmp buffer=4096000 tables=GZGOV_NEWSCLICK log=exptest.log feedback=5000
导出过程中,监控v$session_longops:
SID TARGET MESSAGE START_TIME LAST_UPDATE_TIME
--- ------------------------ -------------------------------------------------------------------- ----------- ----------------
138 GZGOVII.GZGOV_NEWSCLICK Table Scan: GZGOVII.GZGOV_NEWSCLICK: 76410 out of 76410 Blocks done 2008-1-23 0 2008-1-23 2:26:2
138 GZGOVII.GZGOV_NEWSCLICK Table Scan: GZGOVII.GZGOV_NEWSCLICK: 73843 out of 77529 Blocks done 2008-1-29 1 2008-1-29 15:29:
发现当前正在的导出的操作记录还在,还有23号的导出成功的记录还在,23号后面的记录都没有了,说明都不正常执行完毕就退出了。
继续监控导出过程,最后又报错:
Assertion failed: bd->seqno_skgxprbd == bid->seqno_skgxpbid, file skgxpu.c, line 2859
EXP-00056: ORACLE error 3113 encountered
ORA-03113: end-of-file on communication channel
EXP-00056: ORACLE error 24324 encountered
ORA-24324: service handle not initialized
EXP-00056: ORACLE error 24324 encountered
ORA-24324: service handle not initialized
EXP-00056: ORACLE error 24324 encountered
ORA-24324: service handle not initialized
EXP-00056: ORACLE error 24324 encountered
ORA-24324: service handle not initialized
EXP-00000: Export terminated unsuccessfully
$
此时v$session_ops显示,其实已经快导出完了:75943 out of 77529 Blocks done
同事分析,该表可能有不合法记录,或者数据文件有坏块,于是检查数据库文件:
$ dbv file=/dev/vgfsdata/rfsdata1 blocksize=8192
DBVERIFY: Release 9.2.0.6.0 - Production on Tue Jan 29 15:56:32 2008
Copyright (c) 1982, 2002, Oracle Corporation. All rights reserved.
DBVERIFY - Verification starting : FILE = /dev/vgfsdata/rfsdata1
DBVERIFY - Verification complete
Total Pages Examined : 254720
Total Pages Processed (Data) : 76530
Total Pages Failing (Data) : 0
Total Pages Processed (Index): 26362
Total Pages Failing (Index): 0
Total Pages Processed (Other): 177
Total Pages Processed (Seg) : 0
Total Pages Failing (Seg) : 0
Total Pages Empty : 151651
Total Pages Marked Corrupt : 0
Total Pages Influx : 0
Highest block SCN : 109856332 (0.109856332)
$ dbv file=/dev/vgfsdata/rfsdata2 blocksize=8192
DBVERIFY: Release 9.2.0.6.0 - Production on Tue Jan 29 16:00:43 2008
Copyright (c) 1982, 2002, Oracle Corporation. All rights reserved.
DBVERIFY - Verification starting : FILE = /dev/vgfsdata/rfsdata2
DBVERIFY - Verification complete
Total Pages Examined : 254720
Total Pages Processed (Data) : 78363
Total Pages Failing (Data) : 0
Total Pages Processed (Index): 28169
Total Pages Failing (Index): 0
Total Pages Processed (Other): 414
Total Pages Processed (Seg) : 0
Total Pages Failing (Seg) : 0
Total Pages Empty : 147774
Total Pages Marked Corrupt : 0
Total Pages Influx : 0
Highest block SCN : 109857157 (0.109857157)
$
可能是有不合法记录,只能改天对表做游标一步一步的挪移了????
7)第二天,继续检查
发现该天的备份居然又成功了。
用bdf命令,发现exp的dump文件所存目录为nfs:
172.16.1.165:/data/gzgov_db_bak
85728728 66324200 15049712 82% /root/db_exp
登陆到172.16.1.165机器,发现该机器是linux,且用df -m命令进程会挂掉,并且查看
chkconfig --list nfs,发现nfs服务显示是关闭的(其实显示不正常的)。
重启了一下nfs服务
service nfs stop
service nfs start
最后建议用户重启该机器,用户决定暂时不重启,等适当时候重启该nfs服务器。
[@more@]来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/8861952/viewspace-1034694/,如需转载,请注明出处,否则将追究法律责任。
转载于:http://blog.itpub.net/8861952/viewspace-1034694/