RMANのバッチ実行に関する不完全リカバリの方法

このQ&Aのポイント
  • RMANのバッチ実行に関して不完全リカバリをバッチ化する方法を調査しています。
  • バッチ実行時に時間を指定してリカバリを行いたい場合、rmanコマンドに引数を渡す方法がわかりません。
  • OracleDB 11g R2でのWindowsServer2008 R2上での実行環境で、うまく時間を渡す方法を教えていただきたいです。
回答を見る
  • ベストアンサー

RMANのバッチ実行に関して

RMANの不完全リカバリをバッチ化しようとしています。 サービスの起動や状態を確認するバッチ(oracle_restore.bat)内で リカバリを行うsqlファイル(oracke_restore.sql)を呼び出して、 実行しようとしています。 不完全リカバリの方法としては、時間を指定してリカバリを行うので、 rmanコマンドに、時間を引数として渡したいのですが、渡し方がわかりません。 バッチ実行時に oracle_restore.bat 2013-01-21 10:55:00 set RESTORE_TIME_YMD=%~1 set RESTORE_TIME_HMS=%~2 こんな感じで、引数を渡して rmanコマンドに rman target sys/pass @C:\oracle_restore.bat %RESTORE_TIME_YMD% %RESTORE_TIME_HMS% こんな感じで渡すことで、 set until time内に正しく時間を渡したいです。 SET UNTIL TIME "TO_DATE('%1','YYYY-MM-DD HH24:MI:SS')"; ↑sqlplusならこれで渡せたのですが。。。 なにか良い方法はありませんでしょうか。 ご教示願います。 OS:WindowsServer2008 R2 Oracle:oracleDB 11g R2

  • Oracle
  • 回答数1
  • ありがとう数2

質問者が選んだベストアンサー

  • ベストアンサー
  • muyoshid
  • ベストアンサー率72% (230/318)
回答No.1

こんにちわ。 > rmanコマンドに、時間を引数として渡したいのですが、渡し方がわかりません。 以下RMAN マニュアルの「例3-34 置換変数の指定」が参考になるかと。 http://docs.oracle.com/cd/E16338_01/backup.112/b56270/rcmsynta2011.htm

参考URL:
http://docs.oracle.com/cd/E16338_01/backup.112/b56270/rcmsynta2011.htm
under-son
質問者

お礼

「USING」を使用することで、解決しました!ありがとうございました!

関連するQ&A

  • .bat(バッチ)から.batを実行したいのですがエラーになってしまいます。

    <やりたい事> (1)メニュー的なバッチからOracleインストール後 (2)OracleのDB作成sqlを実行する.bat(バッチ)を実行する。 <現状> メニュー的バッチから(2)をCALLで呼びだすと「内部コマンドまたは外部コマンド、操作可能なプログラムまたはバッチ ファイルとして認識されていません。」とコンソールに表示されてしまいます。 コマンドの拡張子を実行できる設定になっている事は確認できています。 また、コマンドプロンプトから(2)のバッチを実行すると実行できました。 色々と調べて見たのですが原因、解決策が見つかりません。 どうか皆様のお力をお借りできればと思います。 宜しくお願いします。 ↓以下バッチの詳細 <(1)メニュー的なバッチ> ECHO OFF :Start ECHO. ECHO 1. ・・・ 運用APLデータベース設定 %P5% ECHO 99. ・・・ 終了 SET Process= SET Choice= SET /p Choice=Type 選択して下さい。 IF '%Choice%'=='1' GOTO MakeDB :MakeDB REM 5. 運用APLデータベース設定選択時 SET Process=運用APLデータベース設定 ECHO *** "%Process%"開始 *** REM 文字変換バッチ実行 CALL C:\TEMP\aaaa.bat IF ERRORLEVEL 1 GOTO ExceptionError :InputError REM 入力エラー時 ECHO 不正なパラメータが入力されました。 GOTO Start :ExceptionError REM 例外エラー時 ECHO ******** 失敗しました。 ******** GOTO Start :End REM バッチを終了する。 EXIT <(2)OracleのDB作成sqlを実行する.bat(バッチ)> SET ORACLE_INSTALL_DIR=C:\oraclexe SET ORACLE_BIN_DIR=%ORACLE_INSTALL_DIR%\app\oracle\product\10.2.0\server\BIN SET ADMIN_DIR=%ORACLE_INSTALL_DIR%\app\oracle\admin\XE SET ORADATA_DIR=%ORACLE_INSTALL_DIR%\oradata\XE SET DBS_DIR=%ORACLE_INSTALL_DIR%\app\oracle\product\10.2.0\server\dbs SET USERNAME=aaa SET PASSWORD=bbb REM // LOGファイル名用に日付の取得 // FOR /F "tokens=1,2,3 delims=/, " %%i IN ('date /t') DO SET SYSDATE=%%i%%j%%k REM // 「Win31J」に文字変換 // ECHO 文字変換開始 %date% %time% >> "C:\install%SYSDATE%.log" "%ORACLE_BIN_DIR%\sqlplus" %USERNAME%/%PASSWORD% as sysdba @C:\TEMP\Drop.sql >> "C:\install%SYSDATE%.log" IF ERRORLEVEL 1 GOTO ExceptionError ECHO DBユーザー作成開始 %date% %time% >> "C:\install%SYSDATE%.log" "%ORACLE_BIN_DIR%\sqlplus" %USERNAME%/%PASSWORD% as sysdba @C:\TEMP\CreateDB.sql >> "C:\install%SYSDATE%.log" IF ERRORLEVEL 1 GOTO ExceptionError

  • Oracle RMANでのリカバリ

    ORACLE9iのRMANでリカバリの検証をしていますが、 上手くいきません。 RMANに詳しい方、ご教授下さい。 運用時、RMANのバックアップ(フルバックアップ、アーカイブログバックアップ)は日々行っており、 OS丸ごとのバックアップは月ごとに行っています。 それで、HDD障害が起こったときに、OS丸ごとバックアップを利用してバックアップした日(月初)に戻して、 本日のRMANのバックアップを利用して、リストアができるかを検証しています。 [環境] Oracleのバージョン[Oracle9i 9.2.0.7.0] アーカイブモード [検証内容] (1).DBの設定、RMANの設定 -> (2).REDOログのCURRENT確認 -> (3).Windowsの機能でバックアップ -> (4).REDOログが上書きされてアーカイブログがはかれるまでDBのテーブルにデータを追加 -> (5).RMANでバックアップ -> (6).REDOログのCURRENT確認((2)のときのCURRENTが異なるようにした) -> (7).(3)のバックアップを使ってWindowsの機能で復元 -> (8).(5)のRMANバックアップデータ (フルバックアップデータ、アーカイブログバックアップデータ)を置換して、RMANのリストア (2)の時点のREDOログの状態を「select * from v$log」で確認したところ、 GROUP#2がCURRENTでした。 GROUP# SEQUENCE# ARCHIVE STATUS 1 2 YES INACTIVE 2 3 NO CURRENT 3 1 YES INACTIVE (6)の時点のREDOログの状態を確認したところ、 GROUP#3がCURRENTでした。 GROUP# SEQUENCE# ARCHIVE STATUS 1 11 YES INACTIVE 2 12 YES ACTIVE 3 13 NO CURRENT (8)のとき、「RMAN> restore database;」のコマンドを打ったとき、下記のエラーが出てきて、 リストアできませんでした。 エラー「ORA-19612:データ・ファイル1はmissing or corrupt dataのためリストアされませんでした。」 CURRENTの状態、位置によってリストアできたりできなかったりするのでしょうか? SEQUENCE#の値を変更、もしくは、アーカイブログのバックアップから、REDOログをリストア する必要があるのでしょうか? または、他に必要な設定をする必要があるのでしょうか? リカバリするときのコマンドは、下記の通りです。 SET ORACLE_SID=<SID名> rman target / catalog rman/rman@RMAN RMAN> STARTUP NOMOUNT RMAN> RESTORE CONTROLFILE; RMAN> ALTER DATABASE MOUNT; RMAN> RESTORE DATABASE; RMAN> ALTER DATABASE OPEN RESETLOGS; 前回、同じようなやり方でリストアしたときは、上手く行きました。 そのときは、下記のような状態でした。 ((4)のときのデータ件数は少し異なり、(6)の時点でGROUP#1がCURRENTでした。) GROUP# SEQUENCE# ARCHIVE STATUS 1 11 NO CURRENT 2 9 YES INACTIVE 3 10 YES ACTIVE 以上、宜しくお願いします。

  • コマンドプロクプトのif文について

    WindowsXP Pro sp2 環境です バッチファイルで set, date , time を用いて、ファイル名にまたはその一部に日付と時間をつけようとしています。例えば"yyyymmddhhmmss.txt" この時、10時前だと、"20050305 51020.txt" とtimeの先頭1桁が空白になります。これを "0" にする方法をお教えください 今までに試したこと set ymd=%date:~-10,4%%date:~-5,2%%date:~-2,2% :/ set "c1=1" set "c9=9" :/ set "time= 0:10:20.30" :/ set "ch=%time:~0,1%" :/ if ((%ch% GEQ %c1%) AND (%ch% LEQ %c9%)) ( set hms=%time:~0,2%%time:~3,2%%time:~6,2% ) ELSE ( set hms=0%time:~1,1%%time:~3,2%%time:~6,2% ) echo %ymd%%hms% ----- (1) :/ set time=10:10:20.30 set "ch=%time:~0,1%" :/ if ((%ch% GEQ %c1%) AND (%ch% LEQ %c9%)) ( set hms=%time:~0,2%%time:~3,2%%time:~6,2% ) ELSE ( set hms=0%time:~1,1%%time:~3,2%%time:~6,2% ) echo %ymd%%hms% ----- (2) :/ pause この結果、(1)(2)共、"20050305001020" となってしまっています 宜しくお願い致します

  • バッチからSQLCMDを実行する方法

    以下のようなコマンドをバッチファイル(.bat)に記載し、実行しています。(ローカルのsqlserverにwindows認証で入れる事は確認済みです。) !!sqlcmd -E -d database -i c:\sql\a.sql ですが、バッチを実行してもsqlcmdが動作せず、 「'!!sqlcmd'は、内部コマンドまたは外部コマンド、操作可能なプログラムまたはバッチファイルとして認識されていません。」 というエラーが発生します。 バッチファイルから、sqlcmdの実行方法をご存知の方、申し訳ありませんがご教示お願いします。

  • RMANを使用してのバックアップとリカバリの検証

    RMANを使用してのバックアップとリカバリの検証 Oracleの知識があまりないので、変な事を聞いているかもしれませんが、 RMANのバックアップとリカバリについて以下の現象について、エラーが解決できずにいます。 ===現象=== Oracle11g Release2 11.2.0.3(ASM使用) 現在、指定の表領域以外のバックアップ(フルと累積増分)を取得し、累積増分を取得した時点までリカバリを行う検証を行っております。 ※バックアップコマンド ・フル  backup incremental level = 0 format '+DATA/BACKUP/lv0backup_%U' database TAG 'dbbackup' plus archivelog TAG 'archivebackup' delete all input; ・累積増分  BACKUP INCREMENTAL LEVEL 1 format '+DATA/BACKUP/lv1backup_%U' CUMULATIVE DATABASE TAG 'dbbackup' PLUS ARCHIVELOG TAG 'archivebackup' DELETE INPUT; RMANの環境構成に以下を設定 他はデフォルトです。  CONFIGURE CONTROLFILE AUTOBACKUP ON;  CONFIGURE CONTROLFILE AUTOBACKUP FORMAT FOR DEVICE TYPE DISK TO '+DATA/BACKUP/CF_%F';  CONFIGURE EXCLUDE FOR TABLESPACE 'TBLSP01';←データファイル6  CONFIGURE EXCLUDE FOR TABLESPACE 'TBLSP02';←データファイル7 この設定で、以下のコマンドで累積増分バックアップを行った時点までリカバリしようとすると、エラーになります。 ~~~~~ RMAN> run{ set until scn = 1069044; restore database; recover database; alter database open; } 実行コマンド: SET until clause restoreが開始されました(開始時間: 13-08-14) チャネル: ORA_DISK_1が割り当てられました チャネルORA_DISK_1: SID=14 インスタンス=orcl_1 デバイス・タイプ=DISK ファイル6はデータベース全体のバックアップから除外されています。 ファイル7はデータベース全体のバックアップから除外されています。 チャネルORA_DISK_1: データファイル・バックアップ・セットのリストアを開始しています チャネルORA_DISK_1: バックアップ・セットからリストアするデータファイルを指定しています チャネルORA_DISK_1: データファイル00001を+DATA/orcl/datafile/system.313.823464749にリストアしています チャネルORA_DISK_1: データファイル00002を+DATA/orcl/datafile/sysaux.323.823464751にリストアしています チャネルORA_DISK_1: データファイル00003を+DATA/orcl/datafile/undotbs1.274.823464751にリストアしています チャネルORA_DISK_1: データファイル00004を+DATA/orcl/datafile/users.286.823464751にリストアしています チャネルORA_DISK_1: データファイル00005を+DATA/orcl/datafile/undotbs2.280.823464985にリストアしています チャネルORA_DISK_1: データファイル00008を+DATA/orcl/datafile/testspace3にリストアしています チャネルORA_DISK_1: バックアップ・ピース+DATA/backup/lv0backup_0ioha718_1_1から読取り中です チャネルORA_DISK_1: ピース・ハンドル=+DATA/backup/lv0backup_0ioha718_1_1 タグ=DBBACKUP チャネルORA_DISK_1: バックアップ・ピース1がリストアされました チャネルORA_DISK_1: リストアが完了しました。経過時間: 00:01:05 以前のバックアップへのフェイルオーバー restoreが完了しました(完了時間: 13-08-14) recoverが開始されました(開始時間: 13-08-14) チャネルORA_DISK_1の使用 RMAN-00571: =========================================================== RMAN-00569: =============== ERROR MESSAGE STACK FOLLOWS =============== RMAN-00571: =========================================================== RMAN-03002: recoverコマンドが08/14/2013 20:57:47で失敗しました RMAN-06556: データファイル6は、SCN 1069044より古いバックアップからリストアする必要があります ~~~~~ 私には、なぜバックアップから除外されているデータファイル6に対して「~古いバックアップからリストア~」といったメッセージが出てくるのか理解できていません。 おそらくリカバリで使用するコマンドが誤っているのだと思うのですが、このエラーの解決のヒントなどございましたらご教示ください。 よろしくお願いします。

  • mysqlのloadコマンドに引数をセットするバッチの作成

    mysqlのloadコマンドに引数をセットするバッチの作成 データ移行でロードするファイルが数多くあり バッチ処理(param.bat)で実行できるようにしたいのですが、 SQLスクリプト(param.sql)にうまく引数を渡すことができません。 引数1にデータ:aaa.txt 引数2にテーブル:test_tbl どうかアドバイスいただけないでしょうか。 宜しくお願いいたします。 OS:Windows XP 【実行時】 c:temp>param.bat aaa.txt test_tbl 【作成したファイルの記述】 param.bat ------- mysql test1 -u user1 -puser1 < param.sql %1 %2 param.sql ------- LOAD DATA INFILE '&1' INTO TABLE &2 FIELDS TERMINATED BY ',' ESCAPED BY '\\' LINES TERMINATED BY '\r\n'; exit;

  • バッチからのSQLPLUS実行について

    はじめまして。 SQLPLUSでご質問ををさせてください。 環境 OS:Win2003server Oracle:10g バッチから、以下のようにSQLを実行したいと考えています。 バッチファイル sqlplus ID/PASS@インスタンス名 @SQLファイル.sql SQLファイル.sql set trimsool on set pagesize 0 set linsize 2000 set feedback off set colsep ',' spool on spool ABC.txt select * from xxx; spool off exit; ご質問  バッチファイルからSQLファイル.sqlが呼ばれているのですが、  接続時にENTERキーを押下しないと、後続の処理が実行されません。  ENTERキー押下後のメッセージ内容が  「バージョン情報の表示や、接続されました。」と出力されているため、  接続時の処理と思われます。    上記でENTERキーを押下せずに、処理を実行させるためにはどうすればよろしいでしょうか。  初歩的な質問で申し訳ありませんが、宜しくお願い致します。

  • RMAN(Oracle9i)を使ったDB移行

    Oracle 9iのRMANを使用して、現行のDBサーバから新DBサーバの移行 を考えており、DB移行のテストをしているのですが、上手く行きません。 ※バックアップファイルは、アーカイブモードでオンラインバックアップです。 新サーバーでOracle9iをインストール、RMAN構築、RMANで仮バックアップ、 旧サーバーのRMANのアーカイブ、フルバックアップファイル(ARCH.BUS, FULL.BUS)を 差し替えてリストアしましたが、 RMAN> restore database; で、「ora-196112:データ・ファイル1はmissing or corrupt dataのためリストされませんでした。」とエラーを吐きました。 RMAN> alter database open resetlogs; を入れたところ、 ora-01157、ora-01110を吐き、リストアできませんでした。 そこで、旧DBサーバーのRMANのデータをごっそり新DBサーバーのRMANに置換して、リストアをしようと試みたところ、RMANのスタート時点で、ora-01991というエラーを吐いて、RMAN自体、起動できませんでした。 どなたか、RMANのバックアップを使用して、DB移行を成功した方、ご教授ください。 もしくは、他のDB移行をご存知の方、ご教授ください。 よろしくお願いします。

  • コマンドプロンプトのバッチについて

    WindowsのDOSなどのコマンド処理をするバッチファイルについて ですが、DOSからDB(OracleやSQL Serverなど)を起動させるバッチがあって、DBに入ってからSQLのコマンドなどを自動でさせるバッチって 何か方法はないのでしょうか?? DOS → DB起動後、自動でコマンドで動かしたいです。 細かくいうとWindowsのDOSではなくなるので、 動かなくなると思います。

  • バッチファイルを起動したけど、win98では引数が長すぎて。。。

    VBからバッチファイルを起動する処理を作成中です。 SHELL コマンドで実行しているのですが、 そのバッチファイルの引数がすごく長いのです。 >batch.bat "引数1" "引数2" "引数3" とする際、引数1 ~ 引数3までの合計文字列が 128?byte を超えてしまい、 win98では、使えないプログラムがあります。 複数の引数をまとめたファイルを、バッチファイルの 引数として起動させる等、 回避作はあるのでしょうか? 教えてください。