ETERNUS SF AdvancedCopy Manager 運用手引書 13.0 -Microsoft(R) Windows(R) 2000- -Microsoft(R) Windows Server(TM) 2003- |
目次
索引
![]() ![]() |
本章では、AdvancedCopy Manager用のサンプルスクリプトについて説明します。
サンプルスクリプトの目的は、AdvancedCopy Managerを使用して、業務ボリュームのデータをバックアップ可能とすることです。
本章で説明するサンプルスクリプトは、バックアップ管理機能向けに作成されていますが、本スクリプトを参考にしてレプリケーション管理機能向けに作成することで、Oracleのデータベースについてもコピーを作成することができます。
AdvancedCopy Managerを使用し、業務ボリュームをバックアップします。
AdvancedCopy Managerは、バックアップを行うサンプルスクリプトを提供します。バックアップ運用管理者は、業務に合わせてサンプルスクリプトを修正し、実際のバックアップ運用に適用します。
本ドキュメントおよびサンプルスクリプトでは、バックアップ対象とするインスタンス内にある全ての表領域の物理データファイルが配置されているドライブ2つともバックアップを実行しています。
しかし、バックアップを取りたい表領域のあるドライブのみをバックアップすることもスクリプトに修正を加えれば可能です。
なお、AdvancedCopy Managerのバックアップはドライブ単位で行われるため、バックアップ対象表領域のデータファイルのあるドライブに他の表領域のデータファイルが存在する場合はそれらに対してもOracleへのバックアップ宣言を必ず行っておいてください。例えば、図B.1のSYSTEM表領域のバックアップを行いたい場合、同一ボリュームに存在している他の表領域も含め、5つの表領域全てにOracleへのバックアップ宣言を行ってください。
Oracleへのバックアップ宣言無しにバックアップした表領域のデータファイルは、バックアップをとっているあいだも、データファイルへの更新が発生し不整合が発生するためリカバリには使用できません。
AdvancedCopy Managerで提供するサンプルスクリプトは、以下のバージョンのOracleを想定して作成しています。それ以外のバージョンをご使用の場合は、適宜修正してご使用ください。
Oracle8i Release 8.1.x
AdvancedCopy Managerを利用してOracleのデータベースのバックアップ・リストアを実施する手順について説明します。
バックアップを行う場合の処理手順の概要を以下に示します。
業務運用状態の確認
業務が運用中か運用中でないかを確認します。
業務停止
1で業務が運用中の場合は、データベースに対しオンラインバックアップ開始を宣言しデータファイルへの更新を停止し、業務データを格納しているディスクパーティションをオンラインバックアップのとれる状態にします。
ディスクパーティションのバックアップ(コピー)
AdvancedCopy Managerのバックアップ機能を使用して、業務データを格納しているディスクパーティションをバックアップ(コピー)します。
業務再開
1で業務が運用中だった場合は、データベースに対しオンラインバックアップ終了を宣言しデータファイルへの更新を再開します。
なお、AdvancedCopy Managerでは、手順2〜4までを自動で行うサンプルスクリプトを提供しています。詳細については、本マニュアルの『バックアップ』を参照してください。
リストアを行う場合の処理手順の概要を以下に示します。
業務停止状態の確認
業務が停止状態であることを確認します。運用中の場合は、業務を完全に停止します。
リストア
AdvancedCopy Managerのリストア機能を利用して、バックアップボリュームから業務ボリュームにリストアします。
AdvancedCopy Managerで提供しているサンプルスクリプトについて説明します。
AdvancedCopy Managerで提供するサンプルスクリプトは、"環境設定ディレクトリ\etc\backup\sample"ディレクトリ配下に格納されています。サンプルスクリプトの相関図を図B.5に示します。
本サンプルスクリプトは任意のフォルダにコピーして使用することをお勧めします。
swst_or_iv.sqlは、Oracleデータベースの情報を出力します。出力する内容は次のとおりです。
テーブルスペース名と格納先の一覧
Oracleデータベースのログファイルの情報
上記データベースの情報は、バックアップを行うスクリプトを作成する際の参考資料として使用します。
起動方法
sqlplus ユーザー名/パスワード@バックアップ対象DBへの接続文字列 @swst_or_iv |
使用例
C:\>sqlplus system/manager@orcl @swst_or_iv <RETURN> |
結果例
SQL*Plus: Release 8.1.6.0.0 - Production on 火 May 22 21:33:21 2001 (c) Copyright 1999 Oracle Corporation. All rights reserved. Oracle8i Release 8.1.6.0.0 - Production JServer Release 8.1.6.0.0 - Production に接続されました。 TABLESPACE-NAME DEVICE-NAME -------------------- -------------------------------------------------- INDX D:\ORACLE\ORADATA\CONTENTS\INDX01.DBF RBS D:\ORACLE\ORADATA\CONTENTS\RBS01.DBF SYSTEM D:\ORACLE\ORADATA\CONTENTS\SYSTEM01.DBF TEMP D:\ORACLE\ORADATA\CONTENTS\TEMP01.DBF TOOLS D:\ORACLE\ORADATA\CONTENTS\TOOLS01.DBF USERS E:\ORACLE\ORADATA\CONTENTS\USERS01.DBF SQL> show parameters log_archive_dest NAME TYPE ------------------------------------ -------------- VALUE ------------------------------ log_archive_dest string D:\Oracle\oradata\contents\arc hive log_archive_dest_1 string log_archive_dest_2 string log_archive_dest_3 string log_archive_dest_4 string log_archive_dest_5 string log_archive_dest_state_1 string enable log_archive_dest_state_2 string enable log_archive_dest_state_3 string enable log_archive_dest_state_4 string enable log_archive_dest_state_5 string enable SQL>EXIT Oracle8i Release 8.1.6.0.0 - Production JServer Release 8.1.6.0.0 - Productionとの接続が切断されました。 |
SQL*PlusツールはOracleのバージョンにより以下の種類があります。
Oracleバージョン
コマンドライン版
ウインドウ版
Oracle7 Release7.3.x
PLUS33.EXE
PLUS33W.EXE
Oracle8 Release8.0.x
PLUS80.EXE
PLUS80W.EXE
Oracle8i Release8.1.x
SQLPLUS.EXE
SQLPLUSW.EXE
swst_or_bk_as.js は、ファイルシステム上に存在するOracleデータベースを使用した業務データをAdvancedCopy Managerでバックアップします。
業務データは、AdvancedCopy Managerのバックアップボリュームにコピーされます。
本スクリプトは、本マニュアルの『バックアップの手順』における処理2〜4の範囲に対応します。
起動方法
CSCRIPT.EXE swst_or_bk_as.js |
使用例
C:\>CSCRIPT.EXE swst_or_bk_as.js |
結果例
正常時は、特に結果は出力されません。
処理概要
メイン処理 try { // create global objects var oracle_sid = "CONTENTS"; // [[[ **1** TARGET INSTANCE NAME ]]] var ScriptPathName = "C:\\SCRIPT"; // [[[ **2** SCRIPT PATH ]]] var BinPathName = "C:\\WIN32APP\\AdvancedCopyManager\\bin" // [[[ **3** SCRIPT PATH ]]] var OraclePathName = "D:\\Oracle\\Ora81\\bin"; // [[[ **4** ORACLE PATH ]]] var OracleServerManager9i = "sqlplus /nolog"; // [[[ ORACLE SERVER MANAGER Oracle9i ]]] var OracleServerManager8i = "svrmgrl"; // [[[ ORACLE SERVER MANAGER Oracle8i ]]] var OracleServerManager8 = "svrmgr30"; // [[[ ORACLE SERVER MANAGER Oracle8.x ]]] var OracleServerManager7 = "svrmgr23"; // [[[ ORACLE SERVER MANAGER Oracle7.x ]]] var OracleSM = OraclePathName + "\\" + OracleServerManager8i; // [[[ **5** PLEASE SELECT ]]] ----- 上記の4つから一つを選択して記述する var FirstBusinessVolumeName = "g3d0p2"; // [[[ **6** First Business Volume Name ]]] var WorkBatchfile = ScriptPathName + "\\work" + FirstBusinessVolumeName + ".bat"; // [[[ Work Batchfile ]]] var ErrorLogfile = ScriptPathName + "\\error" + FirstBusinessVolumeName + ".log"; // [[[ Error Logfile ]]] // create Shell object var WshShell = WScript.CreateObject("WScript.Shell"); ***** 一つ目のドライブのバックアップコピー処理開始 ****** //[[[ First Drive - START - ]]] ExecSql("swst_first_st.sql", true); // [[[ ***7*** FileName ]]] if (CheckErrorLog != 0) { ExecSql(swst_first_ed.sql", false); // [[[ ***8*** FileName ]]] swstQuit (1); } var returnCode = WshShell.Run(BinPathName + "\\swstbackup g3d0p2 -Xdevmap " + ScriptPathName + "\\swst_devmap.txt", 0, true); // [[[ ***9*** DeviceName FileName ]]] ExecSql("swst_first_ed.sql", false); // [[[ ***10*** FileName ]]] if (returnCode != 0) { SwstQuit (2); } else if (CheckErrorLog() != 0) { SwstQuit (1); } //[[[ First Drive - END - ]]] ***** 一つ目のドライブのバックアップコピー処理終了 ****** ***** 二つ目のドライブのバックアップコピー処理開始 ****** //[[[ Second Drive - START - ]]] ExecSql("swst_second_st.sql", false); // [[[ ***11*** FileName ]]] if (CheckErrorLog != 0) { ExecSql("swst_second_ed.sql, false"); // [[[ ***12*** FileName ]]] swstQuit (1); } var returnCode = WshShell.Run(BinPathName + "\\swstbackup g3d0p3 -Xdevmap " + ScriptPathName + "\\swst_devmap.txt", 0, true); // [[[ ***13*** DeviceName FileName ]]] ExecSql("swst_second_ed.sql", false); // [[[ ***14*** FileName ]]] if (CheckErrorLog != 0) { SwstQuit (2); } else if (CheckErrorLog() != 0) { SwstQuit (1); } //[[[ Second Drive - END - ]]] ***** 二つ目のドライブのバックアップコピー処理終了 ****** 正常終了の時は、エラーログを削除して終了する。 var fs = WScript.CreateObject("Scripting.FileSystemObject"); var fs_d = fs.GetFile(ErrorLogfile); fs_d.Delete(true); SwstQuit(0); //Normal END } catch (e) { エラーの場合は、エラーログファイルを削除せずに終了。 swstQuit(3); //Abnomal END } function ExecSql(fileName, flg) 実行するSQLスクリプトファイル名を受け取り、サーバマネージャで実行します。第2引数はログの上書き可否フラグ。 function CheckErrorLog() サーバマネージャ実行後リダイレクトで取得したログファイル内を検索しオラクルのエラーがないか確認します。 function swstQuit(exitStatus) エラー処理 |
サンプルスクリプトを実際の運用に合うように更新します。
swst_first_st.sql
"DB情報の収集"にて参照した、テーブルスペース名を使用して各テーブルスペースのバックアップ開始を宣言するよう修正します。
例:ALTER TABLESPACE xxxxx BEGIN BACKUP;xxxxxにテーブルスペース名を入れます
格納先ドライブが異なる場合は、ドライブ毎に任意の名前で作成した別ファイルに宣言します。
1行目のCONNECT文のユーザー名/パスワードは、ALTER権限を持ったユーザーのものに修正します。
swst_first_ed.sql
"DB情報の収集"にて参照した、テーブルスペース名を使用して各テーブルスペースのバックアップ終了を宣言するよう修正します。
例:ALTER TABLESPACE xxxxx END BACKUP;xxxxxにテーブルスペース名を入れます
格納先ドライブが異なる場合は、ドライブ毎に任意の名前で作成した別ファイルに宣言します。
1行目のCONNECT文のユーザー名/パスワードは、ALTER権限を持ったユーザーのものに修正します。
swst_xdevmap.txt
1行にバックアップ対象の業務ボリューム(左)と対応するバックアップボリューム名(右)の「AdvancedCopy Managerデバイス名」を「半角空白またはタブ文字」で区切って記述します。バックアップ対象が複数ある場合は続けて、それぞれ一行づつ書き込みます。
例:g1d0p3 g1d1p3
注)業務ボリュームのAdvancedCopy Managerデバイス名の取得はAdvancedCopy Managerのコマンド“swstexecstat”にてバックアップ対象ドライブの行に表示されているDevice列に表示されているボリューム名を使用します。
例:下図にてバックアップ対象がEドライブの場合、業務ボリュームのAdvancedCopy Managerデバイス名は“g1d1p4”となります。
C:\>C:\Win32app\AdvancedCopyManager\bin\swstexecstat Server Device Last-Backup-Date Interval Status Mount-Point (Method) Execute 業務1 g1d1p2 2000/12/11 12:20 OK IDLE C: (NTFS) ---- 業務1 g1d1p3 2000/12/10 12:20 DELAY=1 EXEC D: (FAT) snapshot(22%) 業務1 g1d1p4 2000/12/9 12:20 DELAY=2 EXEC E: (NTFS) snapshot(45%) : |
swst_or_bk_as.js
本サンプルスクリプト(swst_or_bk_as.js)に対して、以下の個所を修正します。
修正個所の説明にある項番は、スクリプト中にコメントとして記述された項番に対応しています。
バックアップ対象のオラクルインスタンス名に修正します。
サンプルスクリプトの格納先ディレクトリに修正します。
AdvancedCopy Managerのインストール先ディレクトリ+“\\bin” に修正します。
ORACLEのインストールディレクトリ+“\\bin” に修正します。
オラクルのバージョンを4つの中から選びます。
ひとつ目のバックアップ対象ドライブの業務ボリューム名に書き換えます。
すでに作成した“swst_first_st.sql”にあたるファイル名に書き換えます。
すでに作成した“swst_first_ed.sql”にあたるファイル名に書き換えます。
バックアップ対象ドライブの業務ボリューム名(上記7・8にて指定したテーブルスペースのあるドライブ)と“swst_xdevmap.txt”にあたるファイル名に書き換ます。
上記8と同じです。
“swst_first_st.sql”の別ドライブ用にあたる任意につけたファイル名に書き換えます。
“swst_first_ed.sql”の別ドライブ用にあたる任意につけたファイル名に書き換えます。
9で指定した物とは別のバックアップ対象の業務ボリューム名(上記11・12にて指定したテーブルスペースのあるドライブ)と“swst_xdevmap.txt”にあたるファイル名に書き換えます。
上記12と同じです。
このサンプルスクリプトはインスタンスが2つのドライブに分かれて物理ファイルが格納されていた場合を想定して記述されています。" DB情報の収集"にて参照したインスタンスの情報が1つのドライブのみであった場合は以下の行で囲まれた二箇所を削除してください。また、2つより多数のドライブで構成されている場合は3つめ以降のドライブの分をコピーしてそれぞれ修正してください。
//[[[ Second Drive - START - ]]]XXXXXXXXXXXXXX//[[[ Second Drive - END - ]]]
Oracle9i以降の場合は、svrmgrlコマンドをsqlplusコマンド(/nologオプション指定)に変更してください。
なお、本スクリプトは、AdvancedCopy ManagerのStorageサーバでのみ動作します。
"サンプルスクリプトの更新"にて更新したサンプルスクリプト中(swst_or_bk_as.js)では、AdvancedCopy Managerバックアップコマンド(swstbackup)を実行しています。AdvancedCopy Managerバックアップコマンドは通常、バックアップ実行中のファイル更新を防ぐためにバックアップ対象のボリュームをロックします。
しかし、バックアップ実行中もOracleデータベースは稼動中で、バックアップ宣言して更新されることのないデータファイルもオープンしています。そのため、"サンプルスクリプトの更新"にて指定したOracleデータベースのバックアップ対象ボリュームがAdvancedCopy Managerバックアップコマンドに指定され実行された場合、バックアップ対象のボリュームをロックせず、ファイルシステムバッファのフラッシュのみを実施する必要があります。よって、バックアップ用業務ボリュームロック動作指定ファイルで前後処理の動作を変更してください。設定例を以下に示します。また、swstbackupコマンドにXflushオプションを指定することによって前後処理の動作を変更することも可能です。
バックアップ用業務ボリュームロック動作指定ファイル
AdvancedCopy Managerのリストア機能を使用してリストアします。
業務ボリューム内の一部のファイルだけをリストアしたい場合には、AdvancedCopy Managerのリストアコマンド(swstrestore)で、-rオペランドを指定し、バックアップデータを作業用のドライブにリストアします。OSのcopyコマンドを使用し、作業用のドライブから、破壊されたファイルのみを複写します。
Oracleのデータファイル、データファイル以外のファイルは、それぞれ異なるディスク、またはパーティションに格納してください。
以下の注意事項があります。
初期化パラメーターファイル
変更の都度、OSのcopyコマンド等でバックアップします。
制御ファイル
Oracleによるミラー化をお勧めします。
DB環境に変化があった場合、以下のコマンドでトレースファイルを作成します。制御ファイルが破壊された場合は、トレースファイル中のSQL文を実行して復旧します。
Alter database backup controlfile to trace;
データファイル
必ずOracleのバックアップ同期処理(begin backup/end backup) を全てのバックアップ対象の表領域に行ってください。同期処理無しに行ったバックアップファイルはリカバリには使用できません。このようなバックアップファイルを用いてリカバリするのは危険です。データベースに矛盾が発生し、そのデータベースはオープンできなくなるおそれもあります。
データファイルをファイルシステムに配置する場合は、データファイルの自動拡張機能を無効(AUTOEXTEND OFF)にしてください。
REDOファイル
オンラインREDOログファイル、アーカイブログファイルともOracleまたはOSによるによるミラー化をお勧めします。
オンラインREDOログファイルは、バックアップする必要はありません。
オンラインバックアップを行うには,対象となるOracleデータベースはアーカイブログ運用が必須です。
最新の状態まで復旧する場合には、Oracleデータベースをリストア後に障害発生ファイルをリストアしたファイルに置き換えて、Oracleのリカバリ機能を使用して行ってください。
例:recover tablespace
Oracleデータベースのリカバリ機能については、「Oracle8i バックアップおよびリカバリ・ガイド」(Oracle8iの場合)をごらんください。
目次
索引
![]() ![]() |