web-dev-qa-db-ja.com

古いrmanバックアップからデータを復元する-ORA-01152

古いバックアップから一部のデータを復元するのに問題があります。

元のマシンが失われ、私の使命はデータを復元することです。これは重要なマシンではありませんが、一部のデータはまだ有用です。

  • 元のサーバー上のOracle:11.2.0.2
  • 宛先サーバー上のOracle:11.2.0.4

サーバーはredhat- 5.6オリジナルです。 6.x宛先。

新しいマシンで、Oracleをインストールして、次のようにしました。

export Oracle_SID=oldsid
rman TARGET /

そしてrmanで私は古いデータベースとしてsidを設定しました:

SET DBID 3348161342;

次に、制御ファイルとspfileをバックアップから復元しました。 重要な注意:これらのファイルはバックアップよりも新しいものです。

RESTORE CONTROLFILE from '/mount/restorepoint/3348161342_41qtltn4_1_1_20160111.bck
restore spfile from '/mount/restorepoint/sp_OLDDB-3348161342_42qtltn6_1_1_20160111.bck';

マウントされたデータベース:

ALTER DATABASE MOUNT;

また、バックアップファイルの場所を指定します。

catalog start with '/mount/restorepoint/rmanfiles';

元のデータベースにはTDEもあるからです。

  • ウォレットを置くディレクトリを作成しました
  • ウォレットの場所を示すsqlnet.oraファイルを作成しました

変更されたシステム:

alter system set encryption wallet open identified by "thetdepassword";

そして再びrmanで:

alter database mount;
RESTORE DATABSE;

これまでのところ、すべてが問題ありません。しかし、私がデータベースをOPENするときは:

ORA-01589: must use RESETLOGS or NORESETLOGS option for database open

元気です。それから私は使用しますalter database open RESETLOGS;と私はエラーを持っています:

ORA-01152: file 4 was not restored from a sufficiently old backup
ORA-01110: data file 4: '/ltm/data/Oracle/dati/olddb/users01.dbf'

何が欠けていますか?
元のバックアップスクリプトでは、オプションは次のようにする必要があります。

BACKUP AS COMPRESSED BACKUPSET INCREMENTAL LEVEL 0 DATABASE

そのデータを再度読み取るにはどうすればよいですか

私はsqlserverとpostgresqlの世界から来ているので、おそらく何かを逃しています...

2
user_0

Oerrユーティリティによって提供される情報を見てみましょう。

ORA-01152:ファイル1は十分に古いバックアップから復元されませんでした

原因:不完全な回復セッションが開始されましたが、データベースの整合性を保つために適用されたログの数が不十分です。このファイルは、最後に適用されたログの将来のものです。このエラーの最も可能性の高い原因は、不完全な回復を行う前にバックアップからファイルを復元するのを忘れていることです。

アクション:データベースが整合するまでさらにログを適用するか、古いバックアップからデータベースファイルを復元してリカバリを繰り返します

あなたの投稿によると、あなたはデータベースを回復していません。データベースを回復するには、次のコマンドを試してください。

 SQL>キャンセルされるまでバックアップ制御ファイルを使用してデータベースを回復します; 
 SQL>データベースを開いてリセットログを変更します; 

Oracleは初めてなので、次のリンクは古いバックアップを新しいホストに復元するのに役立ちます。
新しいホストでのデータベースの復元

3
JSapkota

データベースを回復する必要があります。私はあなたがオンラインバックアップを復元したと想定しています(または一貫性のないオフラインバックアップですが、この可能性は無視します)。次のステップは、データベースをリカバリーすることです。 rmanセッションで、

recover database;

または

recover database until ....;

ここで、「....」は特定の時点(またはSCNまたは類似のもの)です。特定の時点を使用する場合は、データファイルバックアップの終了時刻より後でなければなりません。そうしないと、データファイルは不整合のままになります。

復元プロセスでは、レベル1の増分バックアップ(存在する場合)とアーカイブログがデータベースに適用されます。

データベースを復元した後、11.2.0.2データベースを11.2.0.4環境に復元するため、次の問題が発生する可能性があります。したがって、復元と11.2.0.4へのアップグレードを組み合わせる必要があります。

11.2.0.4へのアップグレードの詳細な手順は、11.2.0.4ソフトウェアバンドルにあります。これが私がググった短いblob記事です( rkorclappsdbastuff )。これから、11.2.0.2データベースで実行する必要があるいくつかの事前アップグレード手順(手順2〜5)があることがわかります。そのため、それらをスキップする必要があります。事前アップグレードスクリプトutlu112i.sqlを実行してその推奨事項を実装することもできません。アップグレード前にディクショナリ統計を計算します。無効なオブジェクトをコンパイルするためにutlrp.sqlを実行することはできません。復元されたspfileを11.2.0.4に適合させる必要があります。pfileを作成し、パラメータを変更/追加/削除します。必要に応じて、spfileからspfileを再作成します。 create pfilecreate spfileを実行するためのデータベースは必要ありません。

これでデータベースを開くことができますが、11.2.0.2にアップグレードする必要があるのは11.2.0.2データベースであるため、アップグレードモードで開く必要があります。また、ログファイルのない回復されたデータベースであるため、リセットログで開く必要があります。したがって、適切なコマンド( Oracle SQL言語リファレンス を参照)は

REM step 12 of rkorclappsdbastuff
startup mount
alter database open resetlogs upgrade ;
@catupgrd.sql

これで、残りのステップに進むことができます。

2
miracle173

制御ファイルのバックアップが複数ある場合は、最も古いバックアップを使用してみてください。基本的にメッセージは、制御ファイルが残りのバックアップより新しいことを通知しています。たとえば、制御ファイルをバックアップしてから、データベースをバックアップしてから、制御ファイルをバックアップしたとします。制御ファイルの2番目のバックアップを使用して復元を行うと、エラーが発生します。制御ファイルの古いバックアップまたは最初のバックアップを使用してリストアを実行すると、機能するはずです。

0
Gandolf989