在Oracle中增进SCN及案例介绍


在Oracle数据库中我们可以利用oracle的内部事件调整SCN。增进SCN通常有两种常用方法:

1.alter session set events 'IMMEDIATE trace name ADJUST_SCN level x';
--需要数据库OPEN

2.通过10015事件
alter session set events '10015 trace name adjust_scn level x';
--在数据库无法打开,mount状态下。
注:level 1为增进SCN 10亿 (1 billion) (1024*1024*1024=1073741824)

测试:
SQL> select dbms_flashback.get_system_change_number from dual;
 
GET_SYSTEM_CHANGE_NUMBER
------------------------
                 571904
 
SQL> alter session set events 'IMMEDIATE trace name ADJUST_SCN level 1';
Session altered
 
--10g的告警日志会报这样的错:
Tue Mar 31 17:01:00 2009
Errors in file c:\oracle\product\10.2.0\admin\orasjh\udump\orasjh_ora_2208.trc:
ORA-01031: 权限不足
查看trace文件,有这样的报错:
...
Clearing ORA-1031 thrown by trace 'ADJUST_SCN'
----- Dump for trace 'ADJUST_SCN': -----
*** 2009-03-31 17:01:00.828
ksedmp: internal or fatal error
ORA-01031: 权限不足
Current SQL statement for this session:
...
 
我在9i测试是没问题的。
 
SQL> select dbms_flashback.get_system_change_number from dual;
GET_SYSTEM_CHANGE_NUMBER
------------------------
             1073766630
 
在测试一下在数据库关闭的情况下SCN的增进。
 
SQL> shutdown immediate;
数据库已经关闭。
已经卸载数据库。
ORACLE 例程已经关闭。
SQL>
 
SQL> startup mount
ORACLE 例程已经启动。
Total System Global Area  147921840 bytes
Fixed Size                   453552 bytes
Variable Size             121634816 bytes
Database Buffers           25165824 bytes
Redo Buffers                 667648 bytes
数据库装载完毕。
SQL> alter session set events '10015 trace name adjust_scn level 10';
会话已更改。
SQL> alter database open;
数据库已更改。
SQL> select dbms_flashback.get_system_change_number from dual;
GET_SYSTEM_CHANGE_NUMBER
------------------------
             1.0737E+10
SQL>

  • 1
  • 2
  • 下一页

相关内容