Oracle Trace文件的创建表(create table)语句显示不完整
版本:11.2.0.4.0
在生产的某个用户上,发现重建索引后,多了个job在执行授权操作但是一直失败报表不存在。
实际上,这个是触发了该用户下新创建表后将该表的查询权限授权到另外个用户下的触发器动作。
由于该触发器是通过创建job来达到授权操作的(详情参考:【Oracle】如何让一个用户能够访问另外一个用户下所有的表),因此猜想重建索引过程内部有中间表SYS_JOURNAL_129096产生导致触发该动作。
于是在测试环境对索引rebuild重建的时候做10046想验证猜想。
在做10046的时候,发现create table的语句在trace信息中显示不完全。
查询mos后发现这个是个BUG。
mos文档:Trace does not Show Complete Create Table Command (文档 ID 2699142.1)
创建测试表,创建测试索引后,开启10046。
select value from v$diag_info where name like ‘%De%‘; alter session set events ‘10046 trace name context forever,level 12‘;
然后执行重建索引动作。
alter index idx_id rebuild online
查看trace文件信息。
....... PARSING IN CURSOR #139675731324240 len=162 dep=1 uid=256 oct=1 lid=256 tim=1628646603043867 hv=2894664243 ad=‘cc894a18‘ sqlid=‘cmb1thqq8k4jm‘ create table "ZKM"."SYS_J END OF STMT PARSE #139675731324240:c=2032,e=2290,p=0,cr=2,cu=0,mis=1,r=0,dep=1,og=1,plh=0,tim=1628646603043866 ...... ===================== PARSING IN CURSOR #139675731345368 len=42 dep=1 uid=0 oct=12 lid=0 tim=1628646603184203 hv=1682030665 ad=‘7f08ca55b888‘ sqlid=‘6zx6s1pk43h29‘ drop table "ZKM"."SYS_JOURNAL_96891" purge END OF STMT PARSE #139675731345368:c=386,e=386,p=0,cr=0,cu=0,mis=1,r=0,dep=1,og=4,plh=0,tim=1628646603184202
可以看出,create table的sql是不全的。
不过已经可以看出,重建索引是会产生中间表的。
根据mos文档确定这是Bug 18705302 - 10046 TRACE DOES NOT SHOW COMPLETE CREATE TABLE COMMAND.
有对应的补丁,打上后再试试看。
由于补丁是个热补丁(Online Patch),通过如下命令打上。
opatch apply online -connectString zkm:sys:oracle:
查看补丁信息:
[oracle@zkm ~]$ opatch lspatches 18705302; 18034737; 31668908;OJVM PATCH SET UPDATE 11.2.0.4.201020 31537677;Database Patch Set Update : 11.2.0.4.201020 (31537677) 29938455;OCW Patch Set Update : 11.2.0.4.191015 (29938455) OPatch succeeded. [oracle@zkm ~]$ sqlplus / as sysdba SQL*Plus: Release 11.2.0.4.0 Production on Fri Aug 13 15:13:13 2021 Copyright (c) 1982, 2013, Oracle. All rights reserved. Connected to: Oracle Database 11g Enterprise Edition Release 11.2.0.4.0 - 64bit Production With the Partitioning, OLAP, Data Mining and Real Application Testing options 15:13:13 SYS@zkm(1012)> oradebug patch list Patch File Name State ================ ========= bug18705302.pch ENABLED
再次对重建索引过程做10046,这个时候的trace文件信息:
...... ===================== PARSING IN CURSOR #139675728531096 len=162 dep=1 uid=256 oct=1 lid=256 tim=1628646745736758 hv=2894664243 ad=‘cc894a18‘ sqlid=‘cmb1thqq8k4jm‘ create table "ZKM"."SYS_JOURNAL_96891" (C0 NUMBER(*,0), opcode char(1), partno number, rid rowid, primary key( C0 , rid )) organization index TABLESPACE "USERS" END OF STMT PARSE #139675728531096:c=1328,e=1381,p=0,cr=2,cu=0,mis=1,r=0,dep=1,og=1,plh=0,tim=1628646745736756 ...... ===================== PARSING IN CURSOR #139675730049784 len=42 dep=1 uid=0 oct=12 lid=0 tim=1628646745813321 hv=1682030665 ad=‘7f08ca55b888‘ sqlid=‘6zx6s1pk43h29‘ drop table "ZKM"."SYS_JOURNAL_96891" purge END OF STMT PARSE #139675730049784:c=444,e=444,p=0,cr=0,cu=0,mis=1,r=0,dep=1,og=4,plh=0,tim=1628646745813320 ......
至此。