用 exp 做导出时可能遇到各种问题,往往都是通过现象关联过往经验来排错,本篇希望用更科学的方法来跟踪 exp 问题过程,找到问题的关键。
(一) 对于所有 exp问题提供:
A. 用于完成 export 的完整命令,包括参数文件内容(如果使用了的话)。
B. Exp 的日志文件
C. 当执行 export 时完整的数据库 alert.log 。
D. 提供以下问题的答案:
1) Exp 问题何时发生的 ?
2) 以前是否正常?
3) 最近有打过数据库或者操作系统补丁吗?
4) 是否在数据库或者系统层面做过改动?
(二) 在执行 export过程中遇到错误,则需要完成并收集以下内容:
A. 对以下问题提供是 / 否的答案:
1) 任何类型的 export 都会失败 , 例如 schema, full, table ?2) 使用 rows=n export 也会失败 ?
B. 如果发生了一个 ORA-nnnnn ,并且我们没有 Oracle 自动生成的跟踪文件,那么配置一个系统范围的“触发”类型事件来收集跟踪文件,如下所示:
SQL> CONN / AS SYSDBA
SQL> ALTER SYSTEM SET EVENTS '<error code> trace name errorstack level 12';
SQL> ALTER SYSTEM set MAX_DUMP_FILE_SIZE= unlimited ;
重新执行
SQL> ALTER SYSTEM SET EVENTS '<error code> trace name errorstack off';
注意
- 当使用ALTER SYSTEM SET EVENTS命令时,只有新的会话才能启用这个命令设置的事件。
- 将错误号替换为遇到的错误号(不含字符串'ORA-')。
例如, 如果遇到 ORA-00904,设置跟踪的命令是:alter system set events '904 trace name ERRORSTACK level 12';
然后从由 user_dump_dest 或 diagnostic_dest 参数指定的目录找到产生的 trace 或发给 DBA 。
C. 收集以下 SQL脚本的spool文件
SQL> connect / as sysdba
SQL> @srdc_exp_error.sql
(三) 如果在 exp执行过程中遇到hang或性能问题,需要完成和收集以下内容:
A. 对以下问题提供是 / 否的答案:
1) 如果使用 direct = y ,是否有改进?2) 数据结构是否改变或数据量增加了?
3) 是否只有特定对象遇到性能问题? 如果是,则提供对象名称。
B. 如下所述生成并收集 export 的 SQL trace :
1) 通过在命令行执行命令来启动 export shadow 进程
$ exp username/password
(在下面的步骤
2) 识别 shadow 进程 ospid
$ ps -ef | grep exp
或者使用
SQL> SELECT p.spid,p.addr,p.pid,s.sid,SUBSTR(s.username,1,15) "USERNAME",SUBSTR(s.program,1,15) "PROGRAM"
FROM v$process p,v$session s
WHERE s.paddr=p.addr
AND addr=(SELECT paddr FROM v$session WHERE UPPER(program) LIKE 'EXP%');
3) 通过 sqlplus, 使用 oradebug 附加到 (O)SPID, 设置 trace 文件大小为 unlimited 并打开 level 12 的 10046 event
SQL> oradebug setospid xxx (xxx = ospid)
SQL> oradebug unlimit
SQL> oradebug Event 10046 trace name context forever, level 12
4) 通过回复 export 会话中的交互问题来启动 export 。
5) 对于 hang 问题,让 export 运行至少 1 小时。 对于性能问题等待导出完成,并停止 trace :
SQL> oradebug Event 10046 trace name context off;
6) 找到生成的 trace 文件
SQL> oradebug tracefile_name
C. 收集问题发生时的 AWR 信息。
SQL> CONNECT / AS SYSDBASQL> @?/rdbms/admin/awrrpt.sql
D. 在问题发生时运行脚本 srdc_exp_performance.sql
SQL> connect / as sysdba
SQL> @srdc_exp_performance.sql
--等待10分钟
SQL> @srdc_exp_performance.sql
--等待10分钟
SQL> @srdc_exp_performance.sql收集三个 SRDC_EXP_PERFORMANCE_*.htm spool 文件
SQL> connect / as sysdba
SQL> set long 20000
SQL> select owner,object_type,data_object_id from dba_objects where object_name='<OBJECT_NAME>';
SQL> select dbms_metadata.get_ddl('<OBJECT_TYPE>','<OBJECT_NAME>','<SCHEMA_NAME>') from dual;
(四) 案例分析
新时代证券北京中心切换到上海中心后,使用 hstool 备份 hs_asset 非常慢,花了 1 个半小时,而相同数据量在北京中心只要 28 分钟
根据上述诊断计划
A. 拿到代码
select object_name from hsobjects where object_type in ('U', 'T') order by object_name; -- 表名取这个语句取出来的exp + User + '/' + Password
+ '@' + 实例名
+ ' file=' + 'XXX.fdm'
+ ' tables=(' 表名 ')'
+ ' log=' + 'XXX.fdm.out'
+ ' compress=n'
可以看到并没有特别参数
B. 针对导出从头开始跟踪:
oradebug setospid xxxoradebug dump errorstack 3
C. 发现底层调用这句 sql 时候,耗费时间较久
SELECT CNO, CNAME, TYPE, CONDITION, CONDLENGTH, ENABLED, DEFER, INAME, IDXSYSGEND FROM SYS.EXU8CON WHEREOBJID = 535520 AND TYPE IN (1, 2, 3, 7, 11, 12, 14, 15, 16, 17) ORDER BY CNO ;
SYS.EXU8CON 是一个视图,深入研究这个视图, 主要消耗都在 sys.obj$ 上, 而 理论上我们对象表没有 这么多。
CREATE OR REPLACE VIEW exu8con (
objid, owner, ownerid, tname, type, cname,
cno, condition, condlength, enabled, defer,
sqlver, iname) AS
SELECT o.obj#, u.name, c.owner#, o.name,
decode(cd.type#, 11, 7, cd.type#),
c.name, c.con#, cd.condition, cd.condlength,
NVL(cd.enabled, 0), NVL(cd.defer, 0),
sv.sql_version, NVL(oi.name, '')
FROM sys.obj$ o, sys.user$ u, sys.con$ c,
sys.cdef$ cd, sys.exu816sqv sv, sys.obj$ oi
WHERE u.user# = c.owner# AND
o.obj# = cd.obj# AND
cd.con# = c.con# AND
cd.spare1 = sv.version# (+) AND
cd.enabled = oi.obj# (+) AND
NOT EXISTS (
SELECT owner, name
FROM sys.noexp$ ne
WHERE ne.owner = u.name AND
ne.name = o.name AND
ne.obj_type = 2)
SQL> select count(*) from dba_recyclebin;
COUNT(*)
----------
130541
E. 故清除了垃圾表
purge dba_recyclebin;F. 目前测试下来,情况良好,全部只有 18 分钟。 检查北京那边,回收站数据也有 3 万多,那边导出时间大致为 26 分钟,建议也清空。
以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,也希望大家多多支持 码农网
猜你喜欢:本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
Building Social Web Applications
Gavin Bell / O'Reilly Media / 2009-10-1 / USD 34.99
Building a social web application that attracts and retains regular visitors, and gets them to interact, isn't easy to do. This book walks you through the tough questions you'll face if you're to crea......一起来看看 《Building Social Web Applications》 这本书的介绍吧!