2
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

Oracleネタ帳 RMANについていろいろ

Last updated at Posted at 2019-01-22

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のみ)

アクティブ・スタンバイ構成を取る時に構築済みの稼働系サーバ(プライマリサーバ)より待機系サーバ(スタンバイサーバ)を作成する。
データベースの物理構成(制御ファイルやデータファイルのパス)は稼働系と待機系では一致させること。

手順の流れ

稼働系サーバの構成

  1. アーカイブログモードを有効にする
  2. 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更新

2
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?