ETERNUS SF AdvancedCopy Manager 運用手引書 13.0 -Microsoft(R) Windows(R) 2000- -Microsoft(R) Windows Server(TM) 2003-
目次 索引 前ページ次ページ

付録B サンプルスクリプト

本章では、AdvancedCopy Manager用のサンプルスクリプトについて説明します。

サンプルスクリプトの目的は、AdvancedCopy Managerを使用して、業務ボリュームのデータをバックアップ可能とすることです。

本章で説明するサンプルスクリプトは、バックアップ管理機能向けに作成されていますが、本スクリプトを参考にしてレプリケーション管理機能向けに作成することで、Oracleのデータベースについてもコピーを作成することができます。

B.1 概 

AdvancedCopy Managerを使用し、業務ボリュームをバックアップします。

AdvancedCopy Managerは、バックアップを行うサンプルスクリプトを提供します。バックアップ運用管理者は、業務に合わせてサンプルスクリプトを修正し、実際のバックアップ運用に適用します。

本ドキュメントおよびサンプルスクリプトでは、バックアップ対象とするインスタンス内にある全ての表領域の物理データファイルが配置されているドライブ2つともバックアップを実行しています。

しかし、バックアップを取りたい表領域のあるドライブのみをバックアップすることもスクリプトに修正を加えれば可能です。

なお、AdvancedCopy Managerのバックアップはドライブ単位で行われるため、バックアップ対象表領域のデータファイルのあるドライブに他の表領域のデータファイルが存在する場合はそれらに対してもOracleへのバックアップ宣言を必ず行っておいてください。例えば、図B.1のSYSTEM表領域のバックアップを行いたい場合、同一ボリュームに存在している他の表領域も含め、5つの表領域全てにOracleへのバックアップ宣言を行ってください。

Oracleへのバックアップ宣言無しにバックアップした表領域のデータファイルは、バックアップをとっているあいだも、データファイルへの更新が発生し不整合が発生するためリカバリには使用できません。

[図B.1 Oracleインスタンスとドライブ表領域のデータファイルの関係(サンプルスクリプトの場合)]

AdvancedCopy Managerで提供するサンプルスクリプトは、以下のバージョンのOracleを想定して作成しています。それ以外のバージョンをご使用の場合は、適宜修正してご使用ください。

B.2 業務ボリュームのバックアップとリスト 

AdvancedCopy Managerを利用してOracleのデータベースのバックアップ・リストアを実施する手順について説明します。

B.2.1 バックアップの手

バックアップを行う場合の処理手順の概要を以下に示します。

  1. 業務運用状態の確認

    業務が運用中か運用中でないかを確認します。

  2. 業務停止

    1で業務が運用中の場合は、データベースに対しオンラインバックアップ開始を宣言しデータファイルへの更新を停止し、業務データを格納しているディスクパーティションをオンラインバックアップのとれる状態にします。

  3. ディスクパーティションのバックアップ(コピー)

    AdvancedCopy Managerのバックアップ機能を使用して、業務データを格納しているディスクパーティションをバックアップ(コピー)します。

  4. 業務再開

    1で業務が運用中だった場合は、データベースに対しオンラインバックアップ終了を宣言しデータファイルへの更新を再開します。

なお、AdvancedCopy Managerでは、手順2〜4までを自動で行うサンプルスクリプトを提供しています。詳細については、本マニュアルの『バックアップ』を参照してください。

[図B.2 バックアップ方法]

B.2.2 リストアの手 

リストアを行う場合の処理手順の概要を以下に示します。

  1. 業務停止状態の確認

    業務が停止状態であることを確認します。運用中の場合は、業務を完全に停止します。

  2. リストア

    AdvancedCopy Managerのリストア機能を利用して、バックアップボリュームから業務ボリュームにリストアします。

[図B.3 リストア方法]

B.3 サンプルスクリプ 

AdvancedCopy Managerで提供しているサンプルスクリプトについて説明します。

B.3.1 サンプルスクリプトの概 

AdvancedCopy Managerで提供するサンプルスクリプトは、"環境設定ディレクトリ\etc\backup\sample"ディレクトリ配下に格納されています。サンプルスクリプトの相関図を図B.5に示します。

[図B.5 サンプルスクリプトの相関図]

本サンプルスクリプトは任意のフォルダにコピーして使用することをお勧めします。

B.3.1.1 DB情報の収

swst_or_iv.sqlは、Oracleデータベースの情報を出力します。出力する内容は次のとおりです。

上記データベースの情報は、バックアップを行うスクリプトを作成する際の参考資料として使用します。

  1. 起動方法

    sqlplus ユーザー名/パスワード@バックアップ対象DBへの接続文字列 @swst_or_iv

  2. 使用例

    C:\>sqlplus system/manager@orcl @swst_or_iv <RETURN>

  3. 結果例

    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

B.3.1.2 バックアッ

swst_or_bk_as.js は、ファイルシステム上に存在するOracleデータベースを使用した業務データをAdvancedCopy Managerでバックアップします。

業務データは、AdvancedCopy Managerのバックアップボリュームにコピーされます。

本スクリプトは、本マニュアルの『バックアップの手順』における処理2〜4の範囲に対応します。

  1. 起動方法

    CSCRIPT.EXE swst_or_bk_as.js

  2. 使用例

    C:\>CSCRIPT.EXE swst_or_bk_as.js

  3. 結果例

    正常時は、特に結果は出力されません。

  4. 処理概要

    メイン処理
    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)                  エラー処理

B.3.2 サンプルスクリプトの適 

B.3.2.1 サンプルスクリプトの更

サンプルスクリプトを実際の運用に合うように更新します。

このサンプルスクリプトはインスタンスが2つのドライブに分かれて物理ファイルが格納されていた場合を想定して記述されています。" DB情報の収集"にて参照したインスタンスの情報が1つのドライブのみであった場合は以下の行で囲まれた二箇所を削除してください。また、2つより多数のドライブで構成されている場合は3つめ以降のドライブの分をコピーしてそれぞれ修正してください。
//[[[ Second Drive  - START - ]]] 
          XXXXXXX
          XXXXXXX
//[[[ Second Drive  - END - ]]] 
Oracle9i以降の場合は、svrmgrlコマンドをsqlplusコマンド(/nologオプション指定)に変更してください。

なお、本スクリプトは、AdvancedCopy ManagerのStorageサーバでのみ動作します。

B.3.2.2 ボリュームロック動作指定ファイルの作 

"サンプルスクリプトの更新"にて更新したサンプルスクリプト中(swst_or_bk_as.js)では、AdvancedCopy Managerバックアップコマンド(swstbackup)を実行しています。AdvancedCopy Managerバックアップコマンドは通常、バックアップ実行中のファイル更新を防ぐためにバックアップ対象のボリュームをロックします。

しかし、バックアップ実行中もOracleデータベースは稼動中で、バックアップ宣言して更新されることのないデータファイルもオープンしています。そのため、"サンプルスクリプトの更新"にて指定したOracleデータベースのバックアップ対象ボリュームがAdvancedCopy Managerバックアップコマンドに指定され実行された場合、バックアップ対象のボリュームをロックせず、ファイルシステムバッファのフラッシュのみを実施する必要があります。よって、バックアップ用業務ボリュームロック動作指定ファイルで前後処理の動作を変更してください。設定例を以下に示します。また、swstbackupコマンドにXflushオプションを指定することによって前後処理の動作を変更することも可能です。

B.3.3 リストアの方 

AdvancedCopy Managerのリストア機能を使用してリストアします。

業務ボリューム内の一部のファイルだけをリストアしたい場合には、AdvancedCopy Managerのリストアコマンド(swstrestore)で、-rオペランドを指定し、バックアップデータを作業用のドライブにリストアします。OSのcopyコマンドを使用し、作業用のドライブから、破壊されたファイルのみを複写します。

B.3.4 サンプルスクリプト使用時の注意事 

B.3.4.1 Oracle資源の配 

Oracleのデータファイル、データファイル以外のファイルは、それぞれ異なるディスク、またはパーティションに格納してください。

B.3.4.2 Oracle資源のバックアップ運 

以下の注意事項があります。

  1. 初期化パラメーターファイル

    変更の都度、OSのcopyコマンド等でバックアップします。

  2. 制御ファイル

  3. データファイル

  4. REDOファイル

オンラインバックアップを行うには,対象となるOracleデータベースはアーカイブログ運用が必須です。

B.3.4.3 Oracleデータベースのリカバ 

最新の状態まで復旧する場合には、Oracleデータベースをリストア後に障害発生ファイルをリストアしたファイルに置き換えて、Oracleのリカバリ機能を使用して行ってください。

例:recover tablespace

Oracleデータベースのリカバリ機能については、「Oracle8i バックアップおよびリカバリ・ガイド」(Oracle8iの場合)をごらんください。


目次 索引 前ページ次ページ

All Rights Reserved, Copyright(C) 富士通株式会社 2002-2006