データベース -> ORACLE -> バックアップ
以降作成中....
■RMANインストール -------------------------------------------------------------------------------------------------- リカバリカタログ用表領域の作成 SQL> create tablespace rman_ts datafile /data/oracle/repos/rman.dbf’size 20M; リカバリカタログ所有者の作成 SQL> create user rman identified by rman 2> default tablespace rman_ts 3> temporary tablespace temp 4> quota unlimited on rman_ts; SQL> grant recovery_catalog_owner to rman; リカバリカタログの作成とターゲットデータベースの登録 $ rman catalog rman/rman@oemrep msglog=crcatalog.log RMAN> create catalog tablespace rman; リカバリカタログにターゲットデータベースの登録 $ rman catalog rman/rman@oemrep target sys/passwd@dba RMAN> register database; ■RMAN初期設定 -------------------------------------------------------------------------------------------------- 自動チャネル割当 RMAN> configure channel device type disk format ‘/data/%U’; BACKUPコマンド、COPYコマンドの実行時に制御ファイルを同時に取得する設定。 サーバパラメタファイル(spfile)も取得 --自動バックアップ RMAN> configure controlfile autobackup on; --制御ファイルバックアップの出力先の指定 RMAN> configure controlfile autobackup format for device type disk to ‘/backup/oracle/dba_%F’; RMAN> configure channel device type disk format ‘/backup/oracle/full_%s_%p_%t_%d.bak’;↑ バックアップのパラレル処理 CPUが複数ある場合、複数のチャネルを使用することにより高速バックアップをおこなうことが可能 (nは多重度を示し、CPU数が最大値) RMAN> configure device type disk parallelism n; バックアップの保存方針の設定 バックアップを保存するポリシーを決定します。 保存世代数、保存期間を設定できます。 n日間保持を行うと、n日前の状態に戻すことが可能となります。 設定したポリシーに反するバックアップファイルはコマンドにて削除される n世代のバックアップを保持する RMAN> configure retention policy to redundancy n; n日間バックアップを保持する RMAN> configure retention poricy to recovery window of ndays; 設定の確認 RMAN> show all; ■バックアップ ------------------------------------------------------------------------------------------------ バックアップ RMANバックアップは、バックアップセットと、イメージコピーの2種類がある。 ○バックアップセット(バックアップセットには以下の特徴がある) 1つ以上のデータファイルをまとめて1つのバックアップセットを作成 未使用のブロックを圧縮する バックアップ先の対象はディスク・テープ媒体が可能 1つ以上のバックアップピースから構成され、複数のテープに分割してバックアップを取得できる 制御ファイルのバックアップ CONFIGUREコマンドにて制御ファイルの自動バックアップを有効にしている場合には バックアップコマンドの実行により制御ファイルの自動作成が行われる。 RMAN> backup current controlfile; RMAN> backup バックアップコマンド include current controlfile; データファイルのバックアップ データファイルのバックアップを取得するには表領域単位とデータファイル単位の2種類の方法がある。 表領域単位 RMAN> backup tablespace users; データファイル単位 RMAN> backup datafile ‘/data/oracle/dba/user01.dbf, 2> ‘/data/oracle/dba/user02.dbf;↑ アーカイブログファイルのバックアップ RMAN> backup バックアップコマンド Plus archivelog; RMAN> backup archivelog all; データベース全体のバックアップ データファイル、アーカイブログファイル、制御ファイルのバックアップを取得する方法。 CONFIGUREコマンドにて制御ファイルの自動保存が設定されていなくても保存される。 RMAN> backup full database plus archivelog; サーバパラメタファイル(SPFILE)のバックアップ RMAN> backup spfile; ○イメージコピー(イメージコピーには以下の特徴があります) 取得ファイルはOSコマンドによるファイル取得と同様 未使用ブロックの圧縮は行われない バックアップ対象はディスクのみ リストアに必要な時間が短い OSコマンドで取得したファイルをリカバリカタログに登録することで、RMANでイメージコピーを取得したのと同様になる 制御ファイルのイメージコピー 現行の制御ファイルをバックアップします。 CONFIGUREコマンドで制御ファイルの自動バックアップを設定しているときは、copyコマンドを実行した時点で制御ファイルのバックアップファイルが作成される。 RMAN> copy current controlfile to ‘/tmp/oracle/dba/control01.bak’; データファイルのイメージコピー(複数のデータファイルのバックアップを取得する例を示します) RMAN> copy 2> datafile ‘/data/oracle/dba/user01.dbf’ 3> to ‘/tmp/backup/dba/user01.dbf’, 4> datafile ‘/data/oracle/dba/user02.dbf’ 5> to ‘/tmp/backup/dba/user02.dbf’; アーカイブログファイルのイメージコピー RMAN> copy 2> archivelog ‘/data/oracle/dba/arch_1_123.arc’ 3> to ‘/tmp/backup/dba/arch_1_123.arc’;↑ OS管理のバックアップファイルをRMANレポジトリに登録 CATALOGコマンドを使用してOSコマンドで取得したバックアップをリポジトリに登録してイメージコピーと同等に扱うことが可能。 カタログから削除する場合にはコマンドの最後に UNCATALOG コマンドをつけます。 --データファイルを登録 RMAN> catalog datafilecopy ‘/data/backup/dba/user02_bk.dbf’; --アーカイブログを登録 RMAN> catalog archivelog ‘/data/oracle/dba_arch_1_111.arc’; --制御ファイルを登録 RMAN> catalog controlfilecopy ‘/backup/ctl/dba/control01.ctl’; ■リカバリ ---------------------------------------------------------------------------------------------- RMAN-DBの起動 $ sqlplus /nolog SQL> connect / as sysdba SQL> startup SQL> select INSTANCE_NAME,STATUS from v$instance; Oracle-DBの停止 $ sqlplus /nolog SQL> connect / as sysdba SQL> shutdown immediate Oracle-DBのマウント SQL> startup mount; SQL> select INSTANCE_NAME,STATUS from v$instance; SQL> select GROUP#,THREAD#,SEQUENCE#,MEMBERS,ARCHIVED,STATUS from v$log; $ rman catalog rman/***@XXX target sys/****@XXX RMAN> run { 2> allocate channel t1 type 'sbt' 3> restore database; 4> recover database; 5> release channel t1; 6> } RMAN> exit SQL> select GROUP#,THREAD#,SEQUENCE#,MEMBERS,ARCHIVED,STATUS from v$log; SQL> alter database open; SQL> select INSTANCE_NAME,STATUS from v$instance; SQL> exit $ sqlplus /nolog SQL> connect / as sysdba SQL> shutdown immediate ----------------------------------------------------------------------------------------------