Oracle で状態を回復するデータ ファイル環境では、別のマシンの回復を実行します。

バックグラウンド:

一部のリカバリ テスト ケースでは、奇妙な問題が発生することがよくありますが、その一部は非標準のソース データ ファイルによって引き起こされ、リカバリ プロセスでエラーが発生します。より一般的なエラーは次のとおりです。

  1. データ ファイルの名前が繰り返されています (/oradata1/user01.dbf と /oradata2/user01.dbf など)。この場合、リカバリ テストを実行しているときに、データ ファイルを同じディスクに復元すると、エラーが報告されるため、データファイルの名前を同じ名前に変更する必要があります。
  2. データ ファイルのステータスは、オンラインではなくリカバリです。通常、顧客が RAC 環境を使用してデータ ファイルを追加する場合、データ ファイルは誤ってローカル ディスクに追加され、エラーが見つかった後、オフライン データ ファイル操作が実行されます。 。

この記事の主なテストは、データベース内のリカバリ状態を含むデータ ファイルの RMAN リカバリ テストを実行する方法です。

1. テスト表領域を作成する

SQL> CREATE TABLESPACE test DATAFILE  '/u01/app/oracle/oradata/TEST/test01.dbf' size 10M autoextend on EXTENT MANAGEMENT LOCAL;

Tablespace created.

SQL> alter tablespace test add datafile  '/u01/app/oracle/oradata/TEST/test02.dbf' size 10M;

Tablespace altered.

2. テスト表領域に表を作成します

SQL> create table scott.test1 tablespace test as select * from dba_objects;

Table created.

SQL> select count(*) from scott.test1 ;

  COUNT(*)
----------
     78918

3. オフラインデータファイルをシミュレートする

3.1 オフラインデータファイルの実行

SQL> set line222
SQL> col name for a80
SQL> select file#,name,status  from v$datafile;

     FILE# NAME                                                                             STATUS
---------- -------------------------------------------------------------------------------- --------------
         1 /u01/app/oracle/oradata/TEST/system01.dbf                                        SYSTEM
         2 /u01/app/oracle/oradata/TEST/sysaux01.dbf                                        ONLINE
         3 /u01/app/oracle/oradata/TEST/undotbs01.dbf                                       ONLINE
         4 /u01/app/oracle/oradata/TEST/users01.dbf                                         ONLINE
         5 /u01/app/oracle/oradata/TEST/example01.dbf                                       ONLINE
         6 /u01/app/oracle/oradata/TEST/test01.dbf                                          ONLINE
         7 /u01/app/oracle/oradata/TEST/test02.dbf                                          ONLINE


SQL> alter database datafile 7 offline;

Database altered.

SQL> select file#,name,status  from v$datafile;

     FILE# NAME                                                                             STATUS
---------- -------------------------------------------------------------------------------- --------------
         1 /u01/app/oracle/oradata/TEST/system01.dbf                                        SYSTEM
         2 /u01/app/oracle/oradata/TEST/sysaux01.dbf                                        ONLINE
         3 /u01/app/oracle/oradata/TEST/undotbs01.dbf                                       ONLINE
         4 /u01/app/oracle/oradata/TEST/users01.dbf                                         ONLINE
         5 /u01/app/oracle/oradata/TEST/example01.dbf                                       ONLINE
         6 /u01/app/oracle/oradata/TEST/test01.dbf                                          ONLINE
         7 /u01/app/oracle/oradata/TEST/test02.dbf                                          RECOVER

7 rows selected.

この時点で、データファイル 7 のステータスが回復するように変更されたことがわかります。

3.2 再度クエリを実行してエラーを報告する

SQL> select count(*) from scott.test1 ;
select count(*) from scott.test1
                         *
ERROR at line 1:
ORA-00376: file 7 cannot be read at this time
ORA-01110: data file 7: '/u01/app/oracle/oradata/TEST/test02.dbf'

3.3 テストテーブルの作成を続ける

SQL> create table scott.test2 tablespace test as select * from dba_objects;

Table created.


SQL> select count(*) from scott.test2 ;

  COUNT(*)
----------
     78919

3.4 アーカイブログを手動で削除する

SQL> alter system switch logfile ;

System altered.

SQL> /

System altered.

SQL> alter system checkpoint;

System altered.

-- 手动删除归档日志
[oracle@ora11204 ~]$ rm -rf 1_*

3.5 データの挿入とログの切り替えを継続する

SQL> insert into  scott.test2  select * from dba_objects;

78919 rows created.

SQL> select count(*) from scott.test2 ;

  COUNT(*)
----------
    157838

SQL> alter system switch logfile ;

System altered.

SQL> /

System altered.

SQL> alter system checkpoint;

System altered.

結論: データファイル 7 のステータスはリカバリに変更されましたが、元のテーブル test1 のみが影響を受け、新しいテーブル test2 は影響を受けず、書き込みを続行できます。実際、つまり、オフライン データファイルにオブジェクトが含まれていない場合、データの使用には影響がありません。

3.6 データファイル 7 のリカバリを試行します

SQL> recover datafile 7;
ORA-00279: change 4592370 generated at 07/09/2022 12:38:37 needed for thread 1
ORA-00289: suggestion : /home/oracle/1_37_1104664055.dbf
ORA-00280: change 4592370 for thread 1 is in sequence #37

Specify log: {
   
   <RET>=suggested | filename | AUTO | CANCEL}
AUTO
ORA-00308: cannot open archived log '/home/oracle/1_37_1104664055.dbf'
ORA-27037: unable to obtain file status
Linux-x86_64 Error: 2: No such file or directory
Additional information: 3

ORA-00308: cannot open archived log '/home/oracle/1_37_1104664055.dbf'
ORA-27037: unable to obtain file status
Linux-x86_64 Error: 2: No such file or directory
Additional information: 3

結論: 現時点では、データファイル 7 をリカバリして通常のオンライン状態に復元することはできません。アーカイブされたログが手動で削除されているためです。

したがって、正しいアプローチは次のとおりです。3.1 でオフライン データファイルを手動で実行した後、すぐにデータファイルをリカバリします。これにより、アーカイブ ログが削除された場合でも、いつでもオンライン データファイルを使用できるようになります。

この時点で、データベースには状態回復データ ファイルが含まれているので、バックアップと復元の方法を見てみましょう。

4. バックアップリカバリをシミュレートする

4.1 rmanバックアップ

-- 备份前,先删掉expired archivelog
[oracle@ora11204 backup]$ rman target /

Recovery Manager: Release 11.2.0.4.0 - Production on Sat Jul 9 12:47:26 2022

Copyright (c) 1982, 2011, Oracle and/or its affiliates.  All rights reserved.

connected to target database: LHR11G (DBID=2007947551)

RMAN> crosscheck archivelog all;

RMAN> delete expired archivelog all;
Do you really want to delete the above objects (enter YES or NO)? yes
deleted archived log
archived log file name=/home/oracle/1_18_1104664055.dbf RECID=30 STAMP=1107010872
deleted archived log
archived log file name=/home/oracle/1_19_1104664055.dbf RECID=31 STAMP=1107084082
deleted archived log
archived log file name=/home/oracle/1_20_1104664055.dbf RECID=32 STAMP=1107084317
deleted archived log
archived log file name=/home/oracle/1_21_1104664055.dbf RECID=33 STAMP=1107248395
deleted archived log
archived log file name=/home/oracle/1_23_1104664055.dbf RECID=35 STAMP=1107248458
deleted archived log
archived log file name=/home/oracle/1_24_1104664055.dbf RECID=36 STAMP=1107248477
deleted archived log
archived log file name=/home/oracle/1_25_1104664055.dbf RECID=37 STAMP=1107248494
deleted archived log
archived log file name=/home/oracle/1_26_1104664055.dbf RECID=38 STAMP=1107248708
deleted archived log
archived log file name=/home/oracle/1_27_1104664055.dbf RECID=39 STAMP=1107249210
deleted archived log
archived log file name=/home/oracle/1_28_1104664055.dbf RECID=40 STAMP=1107249384
deleted archived log
archived log file name=/home/oracle/1_29_1104664055.dbf RECID=41 STAMP=1107594979
deleted archived log
archived log file name=/home/oracle/1_30_1104664055.dbf RECID=42 STAMP=1107965313
deleted archived log
archived log file name=/home/oracle/1_31_1104664055.dbf RECID=43 STAMP=1109430200
deleted archived log
archived log file name=/home/oracle/1_32_1104664055.dbf RECID=44 STAMP=1109400986
deleted archived log
archived log file name=/home/oracle/1_33_1104664055.dbf RECID=45 STAMP=1109514747
deleted archived log
archived log file name=/home/oracle/1_34_1104664055.dbf RECID=46 STAMP=1109515327
deleted archived log
archived log file name=/home/oracle/1_35_1104664055.dbf RECID=47 STAMP=1109593810
deleted archived log
archived log file name=/home/oracle/1_36_1104664055.dbf RECID=48 STAMP=1109593862
deleted archived log
archived log file name=/home/oracle/1_37_1104664055.dbf RECID=49 STAMP=1109594665
deleted archived log
archived log file name=/home/oracle/1_38_1104664055.dbf RECID=50 STAMP=1109594666
Deleted 20 EXPIRED objects

-- 正式备份
RMAN> run{ 
2> allocate channel c1 device type disk;
3> backup database filesperset 3 format '/home/oracle/backup/db_%d_%T_%U'; 
4> backup archivelog all format '/home/oracle/backup/arc_%t_%s';  
5> backup current controlfile format '/home/oracle/backup/cntrl_%s_%p_%s'; 
6> release channel c1; 
7> } 

released channel: ORA_DISK_1
allocated channel: c1
channel c1: SID=33 device type=DISK

Starting backup at 2022-07-09 12:48:34
channel c1: starting full datafile backup set
channel c1: specifying datafile(s) in backup set
input datafile file number=00001 name=/u01/app/oracle/oradata/TEST/system01.dbf
channel c1: starting piece 1 at 2022-07-09 12:48:34
channel c1: finished piece 1 at 2022-07-09 12:48:41
piece handle=/home/oracle/backup/db_LHR11G_20220709_4k1264p2_1_1 tag=TAG20220709T124834 comment=NONE
channel c1: backup set complete, elapsed time: 00:00:07
channel c1: starting full datafile backup set
channel c1: specifying datafile(s) in backup set
input datafile file number=00003 name=/u01/app/oracle/oradata/TEST/undotbs01.dbf
input datafile file number=00005 name=/u01/app/oracle/oradata/TEST/example01.dbf
input datafile file number=00007 name=/u01/app/oracle/oradata/TEST/test02.dbf
channel c1: starting piece 1 at 2022-07-09 12:48:41
channel c1: finished piece 1 at 2022-07-09 12:48:44
piece handle=/home/oracle/backup/db_LHR11G_20220709_4l1264p9_1_1 tag=TAG20220709T124834 comment=NONE
channel c1: backup set complete, elapsed time: 00:00:03
channel c1: starting full datafile backup set
channel c1: specifying datafile(s) in backup set
input datafile file number=00002 name=/u01/app/oracle/oradata/TEST/sysaux01.dbf
input datafile file number=00004 name=/u01/app/oracle/oradata/TEST/users01.dbf
input datafile file number=00006 name=/u01/app/oracle/oradata/TEST/test01.dbf
channel c1: starting piece 1 at 2022-07-09 12:48:44
channel c1: finished piece 1 at 2022-07-09 12:48:47
piece handle=/home/oracle/backup/db_LHR11G_20220709_4m1264pc_1_1 tag=TAG20220709T124834 comment=NONE
channel c1: backup set complete, elapsed time: 00:00:03
channel c1: starting full datafile backup set
channel c1: specifying datafile(s) in backup set
including current control file in backup set
including current SPFILE in backup set
channel c1: starting piece 1 at 2022-07-09 12:48:48
channel c1: finished piece 1 at 2022-07-09 12:48:49
piece handle=/home/oracle/backup/db_LHR11G_20220709_4n1264pf_1_1 tag=TAG20220709T124834 comment=NONE
channel c1: backup set complete, elapsed time: 00:00:01
Finished backup at 2022-07-09 12:48:49

Starting backup at 2022-07-09 12:48:50
current log archived
channel c1: starting archived log backup set
channel c1: specifying archived log(s) in backup set
input archived log thread=1 sequence=39 RECID=51 STAMP=1109594808
input archived log thread=1 sequence=40 RECID=52 STAMP=1109594809
input archived log thread=1 sequence=41 RECID=53 STAMP=1109594930
channel c1: starting piece 1 at 2022-07-09 12:48:50
channel c1: finished piece 1 at 2022-07-09 12:48:51
piece handle=/home/oracle/backup/arc_1109594930_152 tag=TAG20220709T124850 comment=NONE
channel c1: backup set complete, elapsed time: 00:00:01
Finished backup at 2022-07-09 12:48:51

Starting backup at 2022-07-09 12:48:51
channel c1: starting full datafile backup set
channel c1: specifying datafile(s) in backup set
including current control file in backup set
channel c1: starting piece 1 at 2022-07-09 12:48:52
channel c1: finished piece 1 at 2022-07-09 12:48:53
piece handle=/home/oracle/backup/cntrl_153_1_153 tag=TAG20220709T124851 comment=NONE
channel c1: backup set complete, elapsed time: 00:00:01
Finished backup at 2022-07-09 12:48:53

released channel: c1

4.2. DBの復元

バックアップを使用して、別のマシンのリカバリを実行します (バックアップ、pfile、パスワード ファイルなどをコピーするプロセスは省略されます...)

4.2.1 データベースをマウント解除状態で起動する

SQL> startup nomount
ORACLE instance started.

Total System Global Area 1068937216 bytes
Fixed Size                  2260088 bytes
Variable Size             331350920 bytes
Database Buffers          729808896 bytes
Redo Buffers                5517312 bytes

4.2.2 制御ファイルの復元

[oracle@ora11204 backup]$ rman target /

Recovery Manager: Release 11.2.0.4.0 - Production on Sat Jul 9 12:51:00 2022

Copyright (c) 1982, 2011, Oracle and/or its affiliates.  All rights reserved.

connected to target database: LHR11G (not mounted)

RMAN> restore controlfile from '/home/oracle/backup/cntrl_153_1_153';

Starting restore at 2022-07-09 12:51:01
using target database control file instead of recovery catalog
allocated channel: ORA_DISK_1
channel ORA_DISK_1: SID=19 device type=DISK

channel ORA_DISK_1: restoring control file
channel ORA_DISK_1: restore complete, elapsed time: 00:00:01
output file name=/u01/app/oracle/oradata/TEST/control01.ctl
Finished restore at 2022-07-09 12:51:03

4.2.3 データベースのマウント

RMAN> alter database mount;

database mounted
released channel: ORA_DISK_1

4.2.4 データベースの復元

RMAN> restore database;

Starting restore at 2022-07-09 12:51:23
Starting implicit crosscheck backup at 2022-07-09 12:51:23
allocated channel: ORA_DISK_1
channel ORA_DISK_1: SID=19 device type=DISK
Crosschecked 22 objects
Finished implicit crosscheck backup at 2022-07-09 12:51:24

Starting implicit crosscheck copy at 2022-07-09 12:51:24
using channel ORA_DISK_1
Finished implicit crosscheck copy at 2022-07-09 12:51:24

searching for all files in the recovery area
cataloging files...
no files cataloged

using channel ORA_DISK_1

channel ORA_DISK_1: starting datafile backup set restore
channel ORA_DISK_1: specifying datafile(s) to restore from backup set
channel ORA_DISK_1: restoring datafile 00001 to /u01/app/oracle/oradata/TEST/system01.dbf
channel ORA_DISK_1: reading from backup piece /home/oracle/backup/db_LHR11G_20220709_4k1264p2_1_1
channel ORA_DISK_1: piece handle=/home/oracle/backup/db_LHR11G_20220709_4k1264p2_1_1 tag=TAG20220709T124834
channel ORA_DISK_1: restored backup piece 1
channel ORA_DISK_1: restore complete, elapsed time: 00:00:03
channel ORA_DISK_1: starting datafile backup set restore
channel ORA_DISK_1: specifying datafile(s) to restore from backup set
channel ORA_DISK_1: restoring datafile 00003 to /u01/app/oracle/oradata/TEST/undotbs01.dbf
channel ORA_DISK_1: restoring datafile 00005 to /u01/app/oracle/oradata/TEST/example01.dbf
channel ORA_DISK_1: restoring datafile 00007 to /u01/app/oracle/oradata/TEST/test02.dbf
channel ORA_DISK_1: reading from backup piece /home/oracle/backup/db_LHR11G_20220709_4l1264p9_1_1
channel ORA_DISK_1: piece handle=/home/oracle/backup/db_LHR11G_20220709_4l1264p9_1_1 tag=TAG20220709T124834
channel ORA_DISK_1: restored backup piece 1
channel ORA_DISK_1: restore complete, elapsed time: 00:00:03
channel ORA_DISK_1: starting datafile backup set restore
channel ORA_DISK_1: specifying datafile(s) to restore from backup set
channel ORA_DISK_1: restoring datafile 00002 to /u01/app/oracle/oradata/TEST/sysaux01.dbf
channel ORA_DISK_1: restoring datafile 00004 to /u01/app/oracle/oradata/TEST/users01.dbf
channel ORA_DISK_1: restoring datafile 00006 to /u01/app/oracle/oradata/TEST/test01.dbf
channel ORA_DISK_1: reading from backup piece /home/oracle/backup/db_LHR11G_20220709_4m1264pc_1_1
channel ORA_DISK_1: piece handle=/home/oracle/backup/db_LHR11G_20220709_4m1264pc_1_1 tag=TAG20220709T124834
channel ORA_DISK_1: restored backup piece 1
channel ORA_DISK_1: restore complete, elapsed time: 00:00:03
Finished restore at 2022-07-09 12:51:33

4.2.5 RMANでのデータベースのリカバリの実行

RMAN> recover database;

Starting recover at 2022-07-09 12:51:49
using channel ORA_DISK_1

starting media recovery

archived log for thread 1 with sequence 39 is already on disk as file /home/oracle/1_39_1104664055.dbf
archived log for thread 1 with sequence 40 is already on disk as file /home/oracle/1_40_1104664055.dbf
archived log for thread 1 with sequence 41 is already on disk as file /home/oracle/1_41_1104664055.dbf
Oracle Error: 
ORA-01547: warning: RECOVER succeeded but OPEN RESETLOGS would get error below
ORA-01152: file 1 was not restored from a sufficiently old backup 
ORA-01110: data file 1: '/u01/app/oracle/oradata/TEST/system01.dbf'

RMAN-00571: ===========================================================
RMAN-00569: =============== ERROR MESSAGE STACK FOLLOWS ===============
RMAN-00571: ===========================================================
RMAN-03002: failure of recover command at 07/09/2022 12:51:49
RMAN-06053: unable to perform media recovery because of missing log
RMAN-06025: no backup of archived log for thread 1 with sequence 38 and starting SCN of 4593111 found to restore
RMAN-06025: no backup of archived log for thread 1 with sequence 37 and starting SCN of 4591558 found to restore

結論: rman で従来の方法を直接使用してデータベースのリカバリを実行すると、エラーが報告され、削除された 37 個と 38 個のアーカイブ ログが必要となり、リカバリを完了できません。

4.2.6 SQLPLUS でデータベースのリカバリを実行する

-- 先恢复归档全备中的归档日志
RMAN> restore archivelog from logseq 39 thread 1;

Starting restore at 2022-07-09 13:02:02
using target database control file instead of recovery catalog
allocated channel: ORA_DISK_1
channel ORA_DISK_1: SID=1 device type=DISK

channel ORA_DISK_1: starting archived log restore to default destination
channel ORA_DISK_1: restoring archived log
archived log thread=1 sequence=39
channel ORA_DISK_1: restoring archived log
archived log thread=1 sequence=40
channel ORA_DISK_1: restoring archived log
archived log thread=1 sequence=41
channel ORA_DISK_1: reading from backup piece /home/oracle/backup/arc_1109594930_152
channel ORA_DISK_1: piece handle=/home/oracle/backup/arc_1109594930_152 tag=TAG20220709T124850
channel ORA_DISK_1: restored backup piece 1
channel ORA_DISK_1: restore complete, elapsed time: 00:00:01
Finished restore at 2022-07-09 13:02:03

-- 执行 recover database操作
SQL> recover database using backup controlfile until cancel;
ORA-00279: change 4592370 generated at 07/09/2022 12:38:37 needed for thread 1
ORA-00289: suggestion : /home/oracle/1_37_1104664055.dbf
ORA-00280: change 4592370 for thread 1 is in sequence #37

結論: sqlplus でデータベースのリカバリを実行すると、エラーが報告され、削除された 37 と 38 のアーカイブ ログが必要になり、リカバリを完了できません。

4.3. 解決策

4.3.1 データファイルのステータスのクエリ

SQL> set line222
SQL> col name for a60
SQL> SELECT a.FILE#,a.NAME,a.RECOVER,a.CHECKPOINT_CHANGE#,status  FROM v$datafile_header a;

     FILE# NAME                                                      RECOVE CHECKPOINT_CHANGE# STATUS
---------- --------------------------------------------------------- ------ ------------------ -------------
         1 /u01/app/oracle/oradata/TEST/system01.dbf                                   4593921 ONLINE
         2 /u01/app/oracle/oradata/TEST/sysaux01.dbf                                   4593926 ONLINE
         3 /u01/app/oracle/oradata/TEST/undotbs01.dbf                                  4593924 ONLINE
         4 /u01/app/oracle/oradata/TEST/users01.dbf                                    4593926 ONLINE
         5 /u01/app/oracle/oradata/TEST/example01.dbf                                  4593924 ONLINE
         6 /u01/app/oracle/oradata/TEST/test01.dbf                                     4593926 ONLINE
         7 /u01/app/oracle/oradata/TEST/test02.dbf                                     4592370 ONLINE

7 rows selected.

SQL> select file#,name,status  from v$datafile;

     FILE# NAME                                                      STATUS
---------- --------------------------------------------------------- --------------
         1 /u01/app/oracle/oradata/TEST/system01.dbf                 SYSTEM
         2 /u01/app/oracle/oradata/TEST/sysaux01.dbf                 ONLINE
         3 /u01/app/oracle/oradata/TEST/undotbs01.dbf                ONLINE
         4 /u01/app/oracle/oradata/TEST/users01.dbf                  ONLINE
         5 /u01/app/oracle/oradata/TEST/example01.dbf                ONLINE
         6 /u01/app/oracle/oradata/TEST/test01.dbf                   ONLINE
         7 /u01/app/oracle/oradata/TEST/test02.dbf                   RECOVER

7 rows selected.

v datafileheader ビューでは、データファイル 7 のステータスはまだオンラインです。 v datafile_header ビューでは、データファイル 7 のステータスはまだオンラインです。 v では、データファイル 7 のステータスはまだオンラインであることがわかります。データファイル_ _ _ _ _ _eaderから見るデータファイル7状態まだオンラインです_ _ _ _ _ _ステータスはv datafileで回復されます。

4.3.2 オフラインデータファイル操作の実行

SQL> alter database datafile 7 offline drop;

Database altered.

SQL> set line222
SQL> col name for a60
SQL> SELECT a.FILE#,a.NAME,a.RECOVER,a.CHECKPOINT_CHANGE#,status  FROM v$datafile_header a;

     FILE# NAME                                                 RECOVE CHECKPOINT_CHANGE# STATUS
---------- ---------------------------------------------------- ------ ------------------ --------------
         1 /u01/app/oracle/oradata/TEST/system01.dbf                              4593921 ONLINE
         2 /u01/app/oracle/oradata/TEST/sysaux01.dbf                              4593926 ONLINE
         3 /u01/app/oracle/oradata/TEST/undotbs01.dbf                             4593924 ONLINE
         4 /u01/app/oracle/oradata/TEST/users01.dbf                               4593926 ONLINE
         5 /u01/app/oracle/oradata/TEST/example01.dbf                             4593924 ONLINE
         6 /u01/app/oracle/oradata/TEST/test01.dbf                                4593926 ONLINE
         7 /u01/app/oracle/oradata/TEST/test02.dbf                                4592370 OFFLINE
SQL> recover database using backup controlfile until cancel;
ORA-00279: change 4593921 generated at 07/09/2022 12:48:34 needed for thread 1
ORA-00289: suggestion : /home/oracle/1_41_1104664055.dbf
ORA-00280: change 4593921 for thread 1 is in sequence #41


Specify log: {
   
   <RET>=suggested | filename | AUTO | CANCEL}
AUTO
ORA-00279: change 4593946 generated at 07/09/2022 12:48:50 needed for thread 1
ORA-00289: suggestion : /home/oracle/1_42_1104664055.dbf
ORA-00280: change 4593946 for thread 1 is in sequence #42
ORA-00278: log file '/home/oracle/1_41_1104664055.dbf' no longer needed for
this recovery


ORA-00308: cannot open archived log '/home/oracle/1_42_1104664055.dbf'
ORA-27037: unable to obtain file status
Linux-x86_64 Error: 2: No such file or directory
Additional information: 3

結論: リカバリには、削除されたアーカイブ ログ 37 と 38 は必要なくなり、リカバリ操作は正常に完了します。

4.3.3 REDO ログファイルと一時ファイルの表示

-- 确保redo logfile & tempfile路径存在或者rename file
SQL> select member from v$logfile;

MEMBER
------------------------------------------------------------------------------------------------------------
/u01/app/oracle/oradata/TEST/redo01.log
/u01/app/oracle/oradata/TEST/redo02.log
/u01/app/oracle/oradata/TEST/redo03.log

SQL> select name from v$tempfile;

NAME
------------------------------------------------------------
/u01/app/oracle/oradata/TEST/temp01.dbf

4.3.4 データベースを開く

SQL> alter database open resetlogs;

Database altered.

4.4 データの検証

SQL> select count(*) from scott.test2 ;

  COUNT(*)
----------
    157838

SQL> select count(*) from scott.test1 ;
select count(*) from scott.test1
                         *
ERROR at line 1:
ORA-00376: file 7 cannot be read at this time
ORA-01110: data file 7: '/u01/app/oracle/oradata/TEST/test02.dbf'

4.5 データファイル 7 を削除してみる

SQL> alter tablespace test drop datafile '/u01/app/oracle/oradata/TEST/test02.dbf';
alter tablespace test drop datafile '/u01/app/oracle/oradata/TEST/test02.dbf'
*
ERROR at line 1:
ORA-03264: cannot drop offline datafile of locally managed tablespace

結論: データファイル 7 はエラーを削除しますが、対処する必要がある場合は、bbed で修復して削除できます。

Guess you like

Origin blog.csdn.net/u010674953/article/details/129667969