Oracle 10046跟踪事件操作步骤

1、开启10046事件跟踪 
alter session set events '10046 trace name context forever, level 12';
 
2、随便执行一个SQL语句(trace文件中我们会发现此SQL的执行情况)
select * from dba_users where username='HR';
 
3、停止10046事件跟踪
alter session set events '10046 trace name context off';

4、定位此次生成的跟踪文件

 select distinct(m.sid),p.pid,p.tracefile from v$mystat m,v$session s,v$process p where m.sid=s.sid and s.paddr=p.addr;
 

Oracle 10046跟踪事件操作步骤

5、用tkprof工具规范文件格式(便于查看分析)

tkprof.exe E:\APP\Oracle\diag\rdbms\orcl\orcl\trace\orcl_ora_3304.trc
output=1.txt
nodepad 1.txt

SQL ID: 7bx241ats4942 Plan Hash: 4242951753

select * 
from
 dba_users where username='HR'


call    count      cpu    elapsed      disk      query    current        rows
------- ------  -------- ---------- ---------- ---------- ----------  ----------
Parse        1      0.03      0.01          0          0          1          0
Execute      1      0.00      0.00          0          0          0          0
Fetch        1      0.00      0.01          1        16          0          1
------- ------  -------- ---------- ---------- ---------- ----------  ----------
total        3      0.03      0.02          1        16          1          1


Misses in library cache during parse: 1
Optimizer mode: ALL_ROWS
Parsing user id: SYS
Number of plan statistics captured: 1


Rows (1st) Rows (avg) Rows (max)  Row Source Operation
---------- ---------- ----------  ---------------------------------------------------
        1          1          1  MERGE JOIN CARTESIAN (cr=16 pr=1 pw=0 time=13157 us cost=12 size=228 card=1)
        1          1          1  HASH JOIN OUTER (cr=14 pr=1 pw=0 time=13068 us cost=11 size=215 card=1)
        1          1          1    HASH JOIN  (cr=12 pr=1 pw=0 time=12782 us cost=9 size=177 card=1)
        1          1          1    NESTED LOOPS  (cr=10 pr=1 pw=0 time=12407 us)
        17        17        17      NESTED LOOPS  (cr=9 pr=1 pw=0 time=12355 us cost=6 size=167 card=1)
        1          1          1      NESTED LOOPS  (cr=8 pr=0 pw=0 time=153 us cost=5 size=154 card=1)
        1          1          1        NESTED LOOPS  (cr=6 pr=0 pw=0 time=135 us cost=4 size=142 card=1)
        1          1          1        NESTED LOOPS  (cr=4 pr=0 pw=0 time=115 us cost=3 size=130 card=1)
        1          1          1          TABLE ACCESS BY INDEX ROWID USER$ (cr=2 pr=0 pw=0 time=39 us cost=1 size=111 card=1)
        1          1          1          INDEX UNIQUE SCAN I_USER1 (cr=1 pr=0 pw=0 time=23 us cost=0 size=0 card=1)(object id 46)
        1          1          1          TABLE ACCESS FULL USER_ASTATUS_MAP (cr=2 pr=0 pw=0 time=74 us cost=2 size=19 card=1)
        1          1          1        TABLE ACCESS CLUSTER TS$ (cr=2 pr=0 pw=0 time=17 us cost=1 size=12 card=1)
        1          1          1          INDEX UNIQUE SCAN I_TS# (cr=1 pr=0 pw=0 time=4 us cost=0 size=0 card=1)(object id 7)
        1          1          1        TABLE ACCESS CLUSTER TS$ (cr=2 pr=0 pw=0 time=14 us cost=1 size=12 card=1)
        1          1          1        INDEX UNIQUE SCAN I_TS# (cr=1 pr=0 pw=0 time=2 us cost=0 size=0 card=1)(object id 7)
        17        17        17      INDEX RANGE SCAN I_PROFILE (cr=1 pr=1 pw=0 time=12206 us cost=0 size=0 card=17)(object id 285)
        1          1          1      TABLE ACCESS BY INDEX ROWID PROFILE$ (cr=1 pr=0 pw=0 time=43 us cost=1 size=13 card=1)
        2          2          2    TABLE ACCESS FULL PROFNAME$ (cr=2 pr=0 pw=0 time=46 us cost=2 size=10 card=1)
        0          0          0    TABLE ACCESS FULL RESOURCE_GROUP_MAPPING$ (cr=2 pr=0 pw=0 time=46 us cost=2 size=38 card=1)
        1          1          1  BUFFER SORT (cr=2 pr=0 pw=0 time=80 us cost=10 size=13 card=1)
        1          1          1    TABLE ACCESS BY INDEX ROWID PROFILE$ (cr=2 pr=0 pw=0 time=42 us cost=1 size=13 card=1)
        17        17        17    INDEX RANGE SCAN I_PROFILE (cr=1 pr=0 pw=0 time=35 us cost=0 size=0 card=17)(object id 285)

Elapsed times include waiting on following events:
  Event waited on                            Times  Max. Wait  Total Waited
  ----------------------------------------  Waited  ----------  ------------
  SQL*Net message to client                      1        0.00          0.00
  Disk file operations I/O                        1        0.00          0.00
  db file sequential read                        1        0.01          0.01
  SQL*Net message from client                    1      22.50        22.50
 
以上信息即为规范后的相关SQL的执行信息,以便DBA对相关问题SQL进行诊断

  • 恢复映像副本:示例
如果每天都运行以下命令:
 
RMAN> recover copy of database with tag 'daily_inc';
RMAN> backup incremental level 1 for recover of copy with tag 'daily_inc' database;
 
结果如下:
 
 
 
恢复映像副本:示例
 
如果每天都运行上面所示的命令,则可以随时获得所有数据库数据文件的连续更新的映像副本。
 
图表显示了每次运行所发生的操作。请注意,这种算法需要一段准备期间;到第3 天后策略才会起作用。
第1 天:RECOVER命令不执行任何操作。尚不存在要恢复的映像副本。BACKUP命令创建映像副本。
第2 天:RECOVER命令仍然不执行任何操作。因为尚不存在增量备份。由于已在第1 天创建了基线映像副本,BACKUP命令会创建增量备份。
第3 天:RECOVER命令将增量备份中的更改应用于映像副本。BACKUP命令将执行另一个增量备份,该备份将在第4 天用于恢复映像副本。依此进行循环。
 
实施这种备份策略时一定要使用标记,这一点非常重要。标记可以将这些特定的增量备份链接至所创建的映像副本。如果不使用标记,则可能会使用最新但可能不正确的增量备份来恢复映像副本。
 
  • 执行到映像副本的快速切换
SQL> SWITCH DATAFILE 'filename' TO COPY;
 
 
执行到映像副本的快速切换
 
执行以下步骤,可以使用数据文件的映像副本进行快速恢复:
1.使数据文件脱机。
2.使用SWITCH TO ... COPY命令指向这些文件的映像副本。
3.恢复数据文件。
4.使数据文件联机。
此时,数据库是可用的,且数据文件已恢复。但是,如果你希望将数据文件放回其原始位置,请继续执行以下步骤:
5.使用BACKUP AS COPY命令在原始位置创建数据文件的映像副本。
6.使数据文件脱机。
7.使用SWITCH TO COPY命令切换到在步骤5 中创建的副本。
8.恢复数据文件。
9.使数据文件联机。
可以使用此命令来恢复数据文件、表空间、临时文件或整个数据库。切换到的目标文件必须为映像副本。
 
  • 使用SET NEWNAME切换文件
? 在RUN块中使用SET NEWNAME命令来还原到非默认位置。
RUN
{ ALLOCATE CHANNEL dev1 DEVICE TYPE DISK;
ALLOCATE CHANNEL dev2 DEVICE TYPE sbt;
SQL "ALTER TABLESPACE users OFFLINE IMMEDIATE";
SET NEWNAME FOR DATAFILE '/disk1/oradata/prod/users01.dbf' TO '/disk2/users01.dbf';
RESTORE TABLESPACE users;
SWITCH DATAFILE ALL;
RECOVER TABLESPACE users;
SQL "ALTER TABLESPACE users ONLINE";
}
 
 
? 为数据库或已命名表空间中的所有文件指定一个默认的名称格式,不要单独指定各个名称。
? 默认名称用于RUN块中的DUPLICATE、RESTORE和SWITCH命令。
 
 
使用SET NEWNAME切换文件
SET NEWNAME命令只能在RUN块中使用。该命令可以为后续操作准备名称映射。在上图中的示例中,SET NEWNAME命令定义了该数据文件的还原操作的写入位置。执行RESTORE命令后,users01.dbf数据文件将还原到/disk2/users01.dbf。数据文件将写入到该位置,但控制文件仍不指向该位置。SWITCH命令将导致使用新位置更新控制文件。
 
更有效的方法是,使用SET NEWNAME子句为已命名表空间中的所有数据文件和数据库中的所有数据文件指定默认的名称格式(而不是像在Oracle Database 11gR2 (11.2) 之前的数据库版本中那样分别设置文件名)。
 
SET NEWNAME命令的优先顺序如下所示:
1.SET NEWNAME FOR DATAFILE和SET NEWNAME FOR TEMPFILE
2.SET NEWNAME FOR TABLESPACE
3.SET NEWNAME FOR DATABASE
 
 
  • SET NEWNAME的替代变量
 
RUN
{ SET NEWNAME FOR DATAFILE 1 TO '/oradata1/system01.dbf';
SET NEWNAME FOR DATAFILE 2 TO '/oradata2/sysaux01.dbf';
SET NEWNAME FOR DATAFILE 3 TO '/oradata3/undotbs01.dbf';
SET NEWNAME FOR DATAFILE 4 TO '/oradata4/users01.dbf';
SET NEWNAME FOR TABLESPACE example TO '/oradata5/%b';
DUPLICATE TARGET DATABASE TO dupldb; }
 
 
SET NEWNAME的替代变量
 
要在还原到其它位置时避免可能的名称冲突,使用SET NEWNAME命令的替代变量。
至少指定以下替代变量中的一种:%b、%f和%U。%I和%N是可选变量。
该示例显示SET NEWNAME FOR TABLESPACE命令使用替代变量和显式SET NEWNAME子句来设置默认名称。

请使用浏览器的分享功能分享到微信等