12c RAC + ASMがスタンドアロンファイルシステムに復元されます

背景メモ

RMANバックアップを実装するために他のベンダーによって実装された一連のOracle12c RAC環境がありますが、リカバリテストは長年実装されていません。また、その年の受け入れデータを復旧するためのマニュアルが見つからなかったため、既存のバックアップの復旧テストを実施し、マニュアルのガイドを残すように依頼されました。

実施記録

顧客情報の機密性を考慮して、以下はテスト環境シミュレーションです。

1.バックアップを確認します

バックアップチェックを通じて、いくつかの有用な情報を取得できます。以下を参照してください。
インスタンス名:RACDB
DBID番号:1038706910
ここに画像の説明を挿入

2.サーバー環境構築の復元

リカバリサーバーを作成し、元のデータベースデータサイズよりも大きいディスク容量を設定します。同じサーバーホスト名を設定して、元のサーバーシステムと、復元されたサーバーのソフトウェアバージョンとビット構成を参照し、復元プロセス中のバージョンの違いによって引き起こされる問題を回避します。
ORACLEのユーザー権限と番号はこのページを参照しています。そうでない場合、NFSバックアップディスクをマウントするときに権限の問題が発生します
<プロセス省略>

3.現在のNFSバックアップディスクをマウントします

NFSバックアップディスクをマウントすると、コピーによる待機時間とディスク容量を減らすことができます。多くのお客様のデータは、常にTBレベルのコピーであり、時間がかかりすぎます。

mount -t nfs,_netdev -o rw,bg,hard,nointr,rsize=32768,wsize=32768,tcp,actimeo=0,vers=3,timeo=600 192.168.0.99:/home/nfs /backups

ここに画像の説明を挿入

4.関連するディレクトリを作成します

mkdir -p /opt/app/oracle/admin/RACDB/{
    
    adump,bdump,cdump,dpdump,pfile,udump}
mkdir -p /opt/app/oracle/oradata/RACDB
mkdir -p /opt/app/oracle/archive/RACDB

5.PFILEファイルを手動で書き込む

元のRACSPFILEの内容がリカバリ・サーバーと異なるという事実を考慮して、PFILEファイルは手動で作成されます。

vi /opt/app/oracle/product/12.1.0/dbhome_1/dbs/initRACDB.ora
## pfile参考
*.audit_file_dest='/opt/app/oracle/admin/RACDB/adump'
*.audit_sys_operations=TRUE
*.audit_trail='NONE'
*.cluster_database=false
*.compatible='12.1.0.2.0'
*.control_files='/opt/app/oracle/oradata/RACDB/control01.ctl','/opt/app/oracle/oradata/RACDB/control02.ctl'
*.db_block_size=8192
*.db_domain=''
*.db_files=500
*.db_name='RACDB'
*.diagnostic_dest='/opt/app/oracle'
*.dispatchers='(PROTOCOL=TCP) (SERVICE=ORCLXDB)'
*.instance_number=1
*.log_archive_dest_1='LOCATION=/opt/app/oracle/archive/RACDB/'
*.log_archive_format='%t_%s_%r.dbf'
*.log_checkpoints_to_alert=TRUE
*.memory_max_target=7516192768
*.memory_target=7516192768
*.nls_language='ENGLISH'
*.nls_territory='HONG KONG'
*.open_cursors=500
*.processes=500
*.recyclebin='off'
*.remote_login_passwordfile='exclusive'
*.sessions=955
*.thread=1
*.undo_tablespace='UNDOTBS1'
*.local_listener=''

6.新しいファイルパス変更の構築

別のマシンからリカバリする場合、元のデータベースはASM環境であり、リカバリサーバーはファイルシステムです。2つは異なるため、SETNEWNAMEを使用して新しい場所を指定する必要があります。
DGのdb_file_name_convertパラメーターを使用して自動変更を実現することはできません。SETNEWNAMEを使用する必要があります。

select 'SET NEWNAME FOR DATAFILE '|| file# ||' to ' ||''''|| name ||''''|| ';' from v$datafile;

ここに画像の説明を挿入
以下を置き換えて、RMANリカバリスクリプトを作成します。

run {
    
    
SET NEWNAME FOR DATAFILE 1 to '/opt/app/oracle/oradata/RACDB/system01.dbf';
SET NEWNAME FOR DATAFILE 2 to '/opt/app/oracle/oradata/RACDB/sysaux01.dbf';
SET NEWNAME FOR DATAFILE 3 to '/opt/app/oracle/oradata/RACDB/undotbs101.dbf';
SET NEWNAME FOR DATAFILE 4 to '/opt/app/oracle/oradata/RACDB/undotbs201.dbf';
SET NEWNAME FOR DATAFILE 5 to '/opt/app/oracle/oradata/RACDB/users01.dbf';
restore database;
switch datafile all;
}

7.新しいREDOFILEパス変更の構築

select 'alter database rename file '''||member||q'[' to '/opt/app/oracle/oradata/RACDB/redo';]' from v$logfile;

ここに画像の説明を挿入

8.RMANユニバーサルリカバリ

rman target /
# 设置DBID号码信息
set dbid=1038706910
# 通过pfile启动到nomount状态
startup nomount pfile ='/opt/app/oracle/product/12.1.0/dbhome_1/dbs/initRACDB.ora';
# 恢复ControlFile控制文件
restore controlfile from '/backups/RACDB.c-1038706910-20200530-01.conf';
# 数据库启动到mount状态
alter database mount;
# 注册RMAN备份信息
catalog start with '/backups/';
# restore database还原数据文件
run {
    
    
SET NEWNAME FOR DATAFILE 1 to '/opt/app/oracle/oradata/RACDB/system01.dbf';
SET NEWNAME FOR DATAFILE 2 to '/opt/app/oracle/oradata/RACDB/sysaux01.dbf';
SET NEWNAME FOR DATAFILE 3 to '/opt/app/oracle/oradata/RACDB/undotbs101.dbf';
SET NEWNAME FOR DATAFILE 4 to '/opt/app/oracle/oradata/RACDB/undotbs201.dbf';
SET NEWNAME FOR DATAFILE 5 to '/opt/app/oracle/oradata/RACDB/users01.dbf';
restore database;
switch datafile all;
}
# recover database应用日志文件
## "完整恢复" (鉴于有一些REDOFILE在ASM未取出来的且Archivelog也没有取过来,无法做完整恢复)
recover database;
## 基于时间恢复
sql "alter session set nls_date_format=''yyyy-mm-dd hh24:mi:ss''";
recover database until time '2020-05-30 01:30:00';

# REDO FILE路径变更
alter database rename file '+DATA01/RACDB/redo01.log' to '/opt/app/oracle/oradata/RACDB/redo01.log';
alter database rename file '+DATA01/RACDB/redo02.log' to '/opt/app/oracle/oradata/RACDB/redo02.log';
alter database rename file '+DATA01/RACDB/redo03.log' to '/opt/app/oracle/oradata/RACDB/redo03.log';
alter database rename file '+DATA01/RACDB/redo04.log' to '/opt/app/oracle/oradata/RACDB/redo04.log';
# 创建SPFILE文件
create spfile from pfile
# 启动数据库 (如果需要可以通过read only开库检查一下)
alter database open resetlogs;

9.監視サービスを作成します

netca

ここに画像の説明を挿入
<省略>

10.TEMPテーブルスペースの修復

create temporary tablespace temp02 tempfile '/opt/app/oracle/oradata/RACDB/temp02.dbf' size 10M autoextend on next 100M maxsize 30G;
alter database default temporary tablespace temp02;
drop tablespace temp;
create temporary tablespace temp tempfile '/opt/app/oracle/oradata/RACDB/temp01.dbf' size 100M autoextend on next 100M maxsize 30G;
alter database default temporary tablespace temp;
drop tablespace temp02;

11.データベースのステータスを確認します

# 检查数据库启动状态
select dbid, open_mode from v$database;
# 检查数据文件状态
select status,enabled, name, bytes/1024/1024 file_size from v$datafile;
# 检查临时文件状态
select status,enabled, name, bytes/1024/1024 file_size from v$tempfile;
# 检查日志文件状态
select * from v$logfile;
# 检查无效对象状态
col vname format a60
select o.object_type,o.status,o.owner||'.'||o.object_name vname from dba_objects o join dba_users u on o.owner = u.username 
where u.default_tablespace like 'USER%' and o.status ='INVALID';

一般的な問題

  1. 次の情報がリカバリ制御ファイルに表示されます。
RMAN> restore controlfile from '/backups/RACDB.c-1038706910-20200530-00.conf';

Starting restore at 30-MAY-20
using channel ORA_DISK_1

channel ORA_DISK_1: no AUTOBACKUP in 7 days found
RMAN-00571: ===========================================================
RMAN-00569: =============== ERROR MESSAGE STACK FOLLOWS ===============
RMAN-00571: ===========================================================
RMAN-03002: failure of restore command at 05/30/2020 22:48:16
RMAN-06172: no AUTOBACKUP found or specified handle is not a valid copy or piece

解決策:/ backupsバックアップファイルのアクセス許可の問題が発生しました。アクセス許可の問題を解決してください。

2.sysユーザーログインはORA-01017
ソリューションを報告します:パスワードファイルを手動で作成します

# 查询密码文件是否存在
select * from v$pwfile_users;
# 创建密码文件
orapwd file='/opt/app/oracle/product/12.1.0/dbhome_1/dbs/orapwRACDB' password=oracle entries=5 force=y
  1. ビジネステスト中、データベースは自動的に閉じます。クエリログは次の情報を返します。
ORA-00600: internal error code,arguments:[17090], [] , []

解決策:TEMPファイルはRMANリカバリプロセス中に作成されないため、手動で作成する必要があります。

おすすめ

転載: blog.csdn.net/weixin_38623994/article/details/106447061