|
本帖最后由 eooyc 于 2014-1-19 14:29 编辑
我测出来了
测试环境1:
solaris 10 sparc
大端序
前4字节表示SCN WRAP:00000000
5~8字节表示SCN BASE:0002FB37
SQL> oradebug dumpvar sga kcsgscn_
kcslf kcsgscn_ [380016528, 380016558) = 00000000 0002FB37 00000000 00000000 0000D5E9 00000000 00000000 00000000 00000000 00000000 00000003 80016208
SQL> oradebug dumpvar sga kcsgscn_
kcslf kcsgscn_ [380016528, 380016558) = 00000000 0002FC5C 00000000 00000000 0000D634 00000000 00000000 00000000 00000000 00000000 00000003 80016208
SQL>
SQL> select to_char(checkpoint_change#,'XXXXXXXX') from v$database;
TO_CHAR(C
---------
3C264
SQL> select checkpoint_change# from v$database;
CHECKPOINT_CHANGE#
------------------
246372
1)设置SCN BASE值
SQL> oradebug poke 0x380016528 8 0x3C264 8表示修改8个字节的值
BEFORE: [380016528, 380016530) = 00000000 00000000 (mount数据库时kcsgscn_=0)
AFTER: [380016528, 380016530) = 00000000 0003C264 -->更改成功
SQL> oradebug dumpvar sga kcsgscn_
kcslf kcsgscn_ [380016528, 380016558) = 00000000 0003C264 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000003 80016208
SQL> oradebug poke 0x380016528 4 0x00000001 --> 4表示修改前4个字节SCN_WRAP,改成1
BEFORE: [380016528, 38001652C) = 00000000
AFTER: [380016528, 38001652C) = 00000001
SQL> oradebug dumpvar sga kcsgscn_
kcslf kcsgscn_ [380016528, 380016558) = 00000001 0003C264 --> 最终SCN_WRAP和SCN_BASE都修改成功
00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000003 80016208
SQL> alter database open;
SQL>
SQL> select dbms_flashback.get_system_change_number from dual;
GET_SYSTEM_CHANGE_NUMBER
------------------------
4295213826
SQL> select to_char(dbms_flashback.get_system_change_number,'XXXXXXXXXXXXXXXX') from dual;
TO_CHAR(DBMS_FLAS
-----------------
10003C30B --> SCN WRAP跳了一位
SQL>
实际上用poke 地址 8 0x000000010003C264直接修改也可以
SQL> oradebug dumpvar sga kcsgscn_
kcslf kcsgscn_ [380016528, 380016558) = 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000003 80016208
SQL> select to_char(checkpoint_change#,'XXXXXXXXXXXXXXXX') from v$database;
TO_CHAR(CHECKPOIN
-----------------
10003C482
SQL> oradebug poke 0x380016528 8 0x10003C482
BEFORE: [380016528, 380016530) = 00000000 00000000
AFTER: [380016528, 380016530) = 00000001 0003C482
本测试说明大端序64位系统,语法
oradebug poke 地址 8 SCN号 |
|