RMANの情報確認
set lin 256
col session_key for 9999
col input_type for a10
col status for a10
col status for a10
col start_dt for a17
col end_dt for a17
col output_bytes_per_sec for 9999999999.999
col output_bytes_display for a10
col compression_ratio for 999.999
select session_key,
input_type,
status,
to_char(START_TIME, 'yy/mm/dd hh24:mi:ss') start_dt,
to_char(END_TIME, 'yy/mm/dd hh24:mi:ss') end_dt,
elapsed_seconds/60 mins,
output_bytes_per_sec,
output_bytes_display,
compression_ratio
from v$rman_backup_job_details order by 1 ;
RMANの進捗を確認する
select sid, serial#, context, sofar, totalwork,
round(sofar/totalwork*100,2) "%_complete"
from v$session_longops
where opname like 'RMAN%'
and opname not like '%aggregate%'
and totalwork != 0
and sofar <> totalwork
;
RMANの処理を中断する
-- sid, serial#を確認
select sid, serial#, event, program
from v$session
where username is not null
and program like 'rman%';
-- 殺す
alter system kill session '<sid>, <serial#>';
データベースの不完全リカバリ(ある時点の状態に戻す)
コマンド
run{
SET UNTIL TIME "TO_DATE('2017-09-05 10:34:14','YYYY-MM-DD HH24:MI:SS')";
restore database;
recover database;
alter database open resetlogs;
}
手順
DBIDを確認(これは事前に)
$ sqlplus / as sysdba
SQL> select dbid from v$database;
DBID
----------
9999999999
Oracleが起動していれば停止する
フルバックアップを所定の場所に配置
アーカイブログを所定の場所に配置
RMANに接続
$ rman target /
RMAN> set dbid 9999999999
RMAN> startup force nomount;
RMAN> restore controlfile from '/path/to/controlfile/name_of_controlfile.ctl';
RMAN> alter database mount;
RMAN> restore database;
RMAN> restore archivelog all;
RMAN> quit
アーカイブの適用
$ sqlplus / as sysdba
SQL> recover database until cancel using backup controlfile;
ログの指定: {<RET>=suggested | filename | AUTO | CANCEL}
AUTO
ORA-00308:
アーカイブ・ログ/path/to/archivelog/name_of_archivelog.dbfをオープンできません。
ORA-27037: ファイル・ステータスを取得できません。 Linux-x86_64 Error:
2: No such file or directory
Additional information: 3
SQL> alter database open resetlogs;
データベースの複製(Enterprise Editionのみ)
アクティブ・スタンバイ構成を取る時に構築済みの稼働系サーバ(プライマリサーバ)より待機系サーバ(スタンバイサーバ)を作成する。
データベースの物理構成(制御ファイルやデータファイルのパス)は稼働系と待機系では一致させること。
手順の流れ
稼働系サーバの構成
- アーカイブログモードを有効にする
- RMANでフルバックアップを取得する
待機系サーバへフルバックアップとアーカイブログをコピーする
格納先は稼働系と同じ場所
インスタンスを再起動する
oracleユーザでSQL*Plusを起動して下記コマンドを実行する。
$ sqlplus / as sysdba
SQL> shutdown immediate
SQL> startup nomount
SQL> quit
RMANコマンドで複製する
rmanコマンドを起動して下記コマンドを実行する。
稼働系と待機系両方に接続する。
$ rman target sys/change_on_install@<ip address>:<port>/<sid> auxiliary /
RMAN> duplicate target database for standby nofilenamecheck dorecover;
RMAN> quit
アーカイブログを待機系に適用する
稼働系で新たに出力されたアーカイブログを待機系にコピーし、アーカイブログを待機系に適用する。
oracleユーザでSQL*Plusを起動して下記コマンドを実行する。
$ sqlplus / as sysdba
SQL> SELECT MAX(SEQUENCE#) FROM V$LOG_HISTORY;
SQL> set autorecovery on
SQL> recover standby database;
SQL> SELECT MAX(SEQUENCE#) FROM V$LOG_HISTORY;
フィジカル・スタンバイ・データベースの作成
前述の複製(duplicateコマンド)ではない方法で待機系を構成する方法
稼働系でパラメータファイルを作成
pfileを作成して編集後、待機系サーバに配置する
$ sqlplus / as sysdba
SQL> create pfile ='/path/to/pfile/name_of_pfile' from spfile;
SQL> quit
$ vi /path/to/pfile/name_of_pfile
*.log_file_name_convert='/path/to/log_file_dir','/path/to/log_file_dir' ★追記
*.db_file_name_convert='/path/to/data_file_dir','/path/to/data_file_dir' ★追記
スタンバイ制御ファイルの作成
こちらも作成後待機系サーバに配置する
$ rman target /
RMAN> COPY CURRENT CONTROLFILE FOR STANDBY TO '/path/to/standby_control_file.ctl';
RMAN> quit
稼働系サーバでフルバックアップを取得する
稼働系から待機系サーバにフルバックアップ、アーカイブログをコピーする
※ 稼働系サーバはアーカイブログモードが有効になっていること
2号機でのリストア・リカバリ
Oracleを停止して、制御ファイル、spfileのバックアップをとっておく
$ sqlplus / as sysdba
SQL> shutdown immediate
SQL> quit
$ mkdir ~/control_file_bk
$ cp -pv /path/to/control_file.ctl ~/control_file_bk/
$ ll ~/control_file_bk
$ cp -pv $ORACLE_HOME/dbs/spfile$ORACLE_SID.ora $ORACLE_HOME/dbs/spfile$ORACLE_SID.ora.`date +"%Y%m%d"`
$ ll $ORACLE_HOME/dbs/
バックアップ取得後に前項で作成したスタンバイ制御ファイルと差し替える
$ mv /path/to/standby_control_file.ctl /path/to/control_file.ctl
Oracleを起動して、spfile作成、スタンバイ設定をする
$ sqlplus / as sysdba
SQL> startup nomount pfile='/path/to/pfile/name_of_pfile'
SQL> create spfile='$ORACLE_HOME/dbs/spfile$ORACLE_SID.ora' from pfile='/path/to/pfile/name_of_pfile';
SQL> shutdown immediate
SQL> startup mount
SQL> quit
$ rman target /
RMAN> crosscheck backup;
RMAN> catalog start with '/path/to/backup_dir/';
RMAN> restore database;
RMAN> recover database;
RMAN> shutdown immediate
RMAN> quit
待機系サーバの起動と確認
$ sqlplus / as sysdba
SQL> shutdown immediate
SQL> startup nomount
SQL> alter database mount standby database;
SQL> select status from v$instance; ※「MOUNTED」と表示される
SQL> select db_unique_name,database_role from v$database; ※「PHYSICAL STANDBY」と表示されること
SQL> quit
待機系をアクティベートする
$ sqlplus / as sysdba
SQL> alter database activate standby database;
SQL> quit
参考情報
スタンドバイ・データベースの運用と回復手順
Oracle Standard Editionで可能なフィジカル・スタンバイ・データベース検証(基本スタンバイ)
Oracle Data Guard 概要および管理 3 フィジカル・スタンバイ・データベースの作成
DataGuard入門 その3
以上
2020/11/10 10:00更新