Oracle コントロールファイルをすることでSCNを変更する

ORACLEデータベース によくあるエラ の解決策

プロのOracle Databaseの復旧サービスを提供
携帯番号: +86 13764045638 メール:service@parnassusdata.com

 

このテストは前回のoradebug修正の後でSCNを修正する。ここで使っているのはコントロールファイルSCNと関連するフラグを修正するという方法である:

 

 

SQL> startup mount
ORACLE instance started.
 
Total System Global Area  626327552 bytes
Fixed Size                  2255832 bytes
Variable Size             184550440 bytes
Database Buffers          432013312 bytes
Redo Buffers                7507968 bytes
Database mounted.
SQL> select checkpoint_change#,to_char(checkpoint_change#,'XXXXXXXXXXXXXXXXX')  from v$database;
 
CHECKPOINT_CHANGE# TO_CHAR(CHECKPOINT
------------------ ------------------
           2726293             299995

このテストにSCNを百万増やす。つまり、SCNを 2726293から 3726293に変更する。

SQL> select '3726293',to_char(3726293,'XXXXXXXXXXXXXXXXX')  from v$database;
 
'372629 TO_CHAR(3726293,'X
------- ------------------
3726293             38DBD5
 
SQL> 


今のコントロールファイルの位置を確認する:

SQL> show parameter control
 
NAME                                 TYPE        VALUE
------------------------------------ ----------- ------------------------------
control_file_record_keep_time        integer     7
control_files                        string      +DATA/lunars/control01.ctl, +D
                                                 ATA/lunars/control02.ctl
control_management_pack_access       string      DIAGNOSTIC+TUNING
SQL>


コントロールファイルをローカルに取り戻して修正する。プロセスは以下の通り:
まずはデータベースSCNを探し出す:
________________________________________

scnheadroom3

 

SCNと関連するフラグを修正する:

 

scnheadroom4

データベースshutdownして、修正できたコントロールファイルをASMにコピして、このコントロールファイルでデータベースを起動する:

 

 

ASMCMD> ls
CONTROLFILE/
DATAFILE/
ONLINELOG/
TEMPFILE/
control01.ctl
control02.ctl
lunar01.dbf
redo01.log
redo02.log
redo03.log
soe01.dbf
sysaux01.dbf
system01.dbf
temp01.dbf
undotbs01.dbf
users01.dbf
ASMCMD> rm control01.ctl
ASMCMD> rm control02.ctl
ASMCMD> cp /tmp/control01.dbf +DATA/lunars/control01.ctl
copying /tmp/control01.dbf -> +DATA/lunars/control01.ctl
ASMCMD> cp /tmp/control01.dbf +DATA/lunars/control02.ctl
copying /tmp/control01.dbf -> +DATA/lunars/control02.ctl
ASMCMD>


データベースをMountして、データベースSCNを確認する:

SQL> startup mount
ORACLE instance started.
Total System Global Area  626327552 bytes
Fixed Size                  2255832 bytes
Variable Size             184550440 bytes
Database Buffers          432013312 bytes
Redo Buffers                7507968 bytes
Database mounted.
SQL> select checkpoint_change#,to_char(checkpoint_change#,'XXXXXXXXXXXXXXXXX')  from v$database;
CHECKPOINT_CHANGE# TO_CHAR(CHECKPOINT
------------------ ------------------
           3726293             38DBD5
SQL> alter database open;
Database altered.
SQL> select checkpoint_change#,to_char(checkpoint_change#,'XXXXXXXXXXXXXXXXX')  from v$database;
CHECKPOINT_CHANGE# TO_CHAR(CHECKPOINT
------------------ ------------------
           3726296             38DBD8
SQL> 
SQL>


ここで、データベースのSCNは指定した3726296に修正できた。

Comment

*

沪ICP备14014813号-2

沪公网安备 31010802001379号