はじめての親子ハイキングに挑戦!! >>

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

このQ&Aに関連する最新のQ&A

A 回答 (1件)

こんにちわ。


> rmanコマンドに、時間を引数として渡したいのですが、渡し方がわかりません。

以下RMAN マニュアルの「例3-34 置換変数の指定」が参考になるかと。
http://docs.oracle.com/cd/E16338_01/backup.112/b …

参考URL:http://docs.oracle.com/cd/E16338_01/backup.112/b …
    • good
    • 0
この回答へのお礼

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

お礼日時:2013/01/21 23:53

このQ&Aに関連する人気のQ&A

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています

関連するカテゴリからQ&Aを探す

このQ&Aを見た人が検索しているワード

このQ&Aと関連する良く見られている質問

Qbatファイルからsql文実行

クライアントOS:WIN2000
Oracle:9i(サーバ(UNIX)上にあります)

現在、クライアントからbatを起動し、SQL文を投げ、結果を取得したいと思っております。
(SQL文は単純にTBLをカウントしているだけです)

・batの中身
sqlplus %UID%/%PASS%@%SID% @test.sql > output

結果は取得出来るのですが、余分な情報も結果に出力されてしまいます。結果のみを出力させるにはどうすればよろしいでしょうか?

・余分な情報
Oracle9i Enterprise Edition Release 9.2.0.4.0 - Production
With the Partitioning, OLAP and Oracle Data Mining options
JServer Release 9.2.0.4.0 - Production
に接続されました。

Aベストアンサー

sqlplus に -S オプションを追加してみればどうでしょうか。

参考URL:http://biz.rivus.jp/sqlplus_overview.html

QRMANのlist backup コマンド

RMANのlist backup コマンドで表示される
バックアップリストが存在します。
このリストを削除する場合の正しい削除方法は
どのように行えばよろしいのでしょうか?

Aベストアンサー

- リテンションが失効したものを削除するのであれば、

RMAN> delete expired;

ちなみに、リテンションの設定は、

(例1) 多重度を3に設定
RMAN> CONFIGURE RETENTION POLICY TO REDUNDANCY 3;
--> delete expired; で3つのバックアップ・セットを残して全て削除されます。

(例2) 保存期間を14日に設定
RMAN> CONFIGURE RETENTION POLICY TO RECOVERY WINDOW OF 14 DAYS;
--> delete expired; で14日以上前に取得されたバックアップ・セット全て削除されます。

OS 上に存在しないものを削除するのであれば、

RMAN> cross check all;
RMAN> delete obsolete;

特定のバックアップ・セットを削除したいのであれば、

RMAN> delete backupset #,#,...;

※"#" は list backup で表示されるバックアップ・セットのID

全てのバックアップ・セットとイメージ・コピーを削除したいのであれば、

RMAN> delete backupset;
RMAN> delete copy;

参考URL:http://otndnld.oracle.co.jp/document/products/oracle10g/102/doc_cd/backup.102/B19193-02/maint.htm

- リテンションが失効したものを削除するのであれば、

RMAN> delete expired;

ちなみに、リテンションの設定は、

(例1) 多重度を3に設定
RMAN> CONFIGURE RETENTION POLICY TO REDUNDANCY 3;
--> delete expired; で3つのバックアップ・セットを残して全て削除されます。

(例2) 保存期間を14日に設定
RMAN> CONFIGURE RETENTION POLICY TO RECOVERY WINDOW OF 14 DAYS;
--> delete expired; で14日以上前に取得されたバックアップ・セット全て削除されます。

OS 上に存在しないものを...続きを読む

QSYSユーザーでログインしたい

SQL plusでSYSユーザーでログインするにはどうすればよいのでしょうか?
SYSTEMユーザーやSCOTTユーザーではログインできるのですが、SYSユーザーになる方法がわかりません。
お願いします。

Aベストアンサー

>SQL plusでSYSユーザーでログインするにはどうすればよいのでしょうか?
特別なことする必要がないと思います。
ログインできない場合いろいろな原因が考えられます。
一番可能な原因は設定によってSYSユーザーNOMAL権限でログインできない場合あります。
この場合
sqlplus sys/パスワード@接続文字列 as sysdba
で試してください。


>SYSTEMユーザーやSCOTTユーザーではログインできるのですが、SYSユーザーになる方法がわかりません。
conn sys/パスワード@接続文字列 as sysdba

Q突然オラクルへ接続できなくなりました

ローカルにオラクルをインストールして開発をしていました。
しばらく時間があいた後、開発を再開しようとするとDBへの
接続ができなくなっていました。

sqlplusではDB操作可能なので、DBそのものは落ちていないと
思うのですが…
リスナーのステータスを確認すると(lsnrctl status SID)下記のエラーが出ます。

(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=MY-PC)(PORT=1521))(CONNECT_DATA=(
SERVER=DEDICATED)(SERVICE_NAME=SID)))に接続中
TNS-12535: TNS: 操作はタイム・アウトしました。
TNS-12560: TNS: プロトコル・アダプタ・エラー
TNS-00505: 操作タイムアウトです。
32-bit Windows Error: 60: Unknown error

何が問題でどうすればよいのかわからないのですが、何か対応策があれば教えてください。
DBを再構築することも考えたのですが、原因がわからなければ同じ事が起こる(起こす?)
ような気がするので。

よろしくお願いします。

ローカルにオラクルをインストールして開発をしていました。
しばらく時間があいた後、開発を再開しようとするとDBへの
接続ができなくなっていました。

sqlplusではDB操作可能なので、DBそのものは落ちていないと
思うのですが…
リスナーのステータスを確認すると(lsnrctl status SID)下記のエラーが出ます。

(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=MY-PC)(PORT=1521))(CONNECT_DATA=(
SERVER=DEDICATED)(SERVICE_NAME=SID)))に接続中
TNS-12535: TNS: 操作はタイム・アウトしました。
TNS-12560: TNS:...続きを読む

Aベストアンサー

DBの起動/停止とサービスの起動/停止は別物です。
サービスの「OracleServiceSID」と「OracleOraDb11g_home1TNSListener」は、それぞれDBとリスナーのためのもので、DBやリスナーそのものではありません。
サービスの「OracleServiceSID」と「OracleOraDb11g_home1TNSListener」を起動状態にした後で
DBやリスナを起動します。

以下を参考にしてください。
http://www.shift-the-oracle.com/config/startup-oracle.html
http://otndnld.oracle.co.jp/beginner/oracle10g/1st/windows/index.html#configuration

Qrmanで別ホストへリストアする際の制御ファイル

rmanで別ホストへリストアする際に、Oracleのマニュアルを見ると制御ファイルのautobackupからのリストアを行っています。

制御ファイルを別ホストのrmanのカタログなり制御ファイルに登録する必要があるかと思うのですが、
それはどうやってやればいいのでしょうか。

ちなみに以下を参照しています。

http://docs.oracle.com/cd/E16338_01/backup.112/b56269/rcmadvre.htm#i1007814

Aベストアンサー

こんにちわ。

> 制御ファイルを別ホストのrmanのカタログなり制御ファイルに登録する
> 必要があるかと思うのですが、それはどうやってやればいいのでしょうか。

http://docs.oracle.com/cd/E16338_01/server.112/b56301/control001.htm#i1006143
制御ファイルには、上記マニュアルにある通りデータベース物理構造が
格納されていますが、ホスト名等情報は特に格納されていませんので、
マニュアルにある通りの方法で良いかと思います。
それとも、マニュアルにある通りの方法で操作して、何らかのエラーが出ている
のであれば、エラーの内容を記載して下さい。

参考URL:http://docs.oracle.com/cd/E16338_01/server.112/b56301/control001.htm#i1006143

Qdatapumpの実行方法について

いつもお世話になっております。

datapumpの実行方法(expdp/impdp)について、ご存知の方がいらっしゃいましたら、ご教授の程お願い致します。

------------------------------
●環境
 Oracle 11g (11.2.0.3)

以下の手順で、エクスポート/インポート テストを行ったのですが、
expdpで"tables"を指定するとエラーとなり実行できませんでした。
full=y(データベース全体)は動きました。
tablesで指定するものは、"CREATE TABLE"で作成したテーブル名ではないのでしょうか。

また、テーブルスペースを削除"drop tablespace tbl01"したのですが、
expdpでデータベース全体をエクスポートしたものから、impdpしても
削除したものが戻せませんでした。
impdpのコマンドに誤りがあるのでしょうか。


●expdp実行
-----
・tablespace作成
$ sqlplus / as sysdba
SQL> create tablespace tbl01 datafile '+data/testdb/datafile/tblsp1' size 10m autoextend off;
-----
・sequence作成
SQL> create sequence seq1;
-----
・TABLE作成
SQL> CREATE TABLE TEST_TBL(USER_ID VARCHAR2(8) NOT NULL, DEPT_NO VARCHAR2(8)) tablespace tbl01;
-----
・INSERT実行(5件分)
begin
for i in 1..5 loop
INSERT INTO TEST_TBL (USER_ID, DEPT_NO) VALUES (seq1.nextval, '1234') ;
commit;
end loop;
end;
/
-----
・expdp使用する為の準備
ディレクトリの作成と read/write 権限の付与
$ sqlplus / as sysdba
SQL> create directory expdp_dir as '/u01/tpump';
SQL> grant read,write on directory expdp_dir to system;
-----
・expdb実行
$ expdp system/pass dumpfile=TEST_DIR:expdp_all.dmp logfile= TEST_DIR:expdp_all.log full=y
=====
"SYSTEM"."SYS_EXPORT_FULL_01"を起動しています: system/******** dumpfile=TEST_DIR:expdp_all.dmp logfile= full=y
BLOCKSメソッドを使用して見積り中です...
オブジェクト型DATABASE_EXPORT/SCHEMA/TABLE/TABLE_DATAの処理中です
-中略-
SYSTEM.SYS_EXPORT_FULL_01に設定されたダンプ・ファイルは次のとおりです:
/u01/tpump/expdp_all.dmp
ジョブ"SYSTEM"."SYS_EXPORT_FULL_01"が11:31:19で正常に完了しました
=====

$ expdp system/pass tables=TEST_TBL dumpfile=TEST_DIR:expdp_tbl.dmp logfile= TEST_DIR:expdp_tbl.log
=====
"SYSTEM"."SYS_EXPORT_TABLE_01"を起動しています: system/******** tables=TEST_TBL dumpfile=TEST_DIR:expdp_tbl.dmp logfile=
BLOCKSメソッドを使用して見積り中です...
BLOCKSメソッドを使用した見積り合計: 0 KB
ORA-39166: オブジェクトSYSTEM.TEST_TBLが見つかりません。
ORA-31655: ジョブに対してデータまたはメタデータ・オブジェクトが選択されていません
ジョブ"SYSTEM"."SYS_EXPORT_TABLE_01"が完了しましたが、2エラーが11:33:54で発生しています
=====

●impdp実行
$ impdp system/pass dumpfile=TEST_DIR:expdp_all.dmp logfile= TEST_DIR:impdp_all.log
=====
マスター表"SYSTEM"."SYS_IMPORT_FULL_01"は正常にロード/アンロードされました
"SYSTEM"."SYS_IMPORT_FULL_01"を起動しています: system/******** dumpfile=expdp_dir:expdp_all.dmp logfile= full=y
オブジェクト型DATABASE_EXPORT/TABLESPACEの処理中です
ORA-31684: オブジェクト型TABLESPACE:"UNDOTBS1"はすでに存在します
ORA-31684: オブジェクト型TABLESPACE:"TEMP"はすでに存在します
ORA-31684: オブジェクト型TABLESPACE:"USERS"はすでに存在します
ORA-39083: オブジェクト型TABLESPACEの作成が次のエラーで失敗しました:
ORA-01119: データベース・ファイル'+DATA/testdb/datafile/tblsp1'の作成中にエラーが発生しました。
ORA-17502: ksfdcre:4 ファイル+DATA/testdb/datafile/tblsp1の作成に失敗しました
ORA-15005: name "testdb/datafile/tblsp1" is already used by an existing alias
-中略-
※以下のORAエラーが多数発生
例:ORA-31684: オブジェクト型TABLESPACE:"UNDOTBS1"はすでに存在します
例:ORA-39151: 表"SYSTEM"."REPCAT$_PRIORITY_GROUP"が存在します。スキップのtable_exists_actionのため、すべての依存メタデータおよびデータはスキップされます
例:ORA-39111: 依存オブジェクト型OBJECT_GRANT:"SYSTEM"はスキップされ、ベース・オブジェクト型VIEW:"SYSTEM"."SCHEDULER_PROGRAM_ARGS"はすでに存在します
-中略-
オブジェクト型DATABASE_EXPORT/SCHEMA/TABLE/CONSTRAINT/REF_CONSTRAINTの処理中です
オブジェクト型DATABASE_EXPORT/SCHEMA/TABLE/STATISTICS/TABLE_STATISTICSの処理中です
オブジェクト型DATABASE_EXPORT/SCHEMA/TABLE/POST_TABLE_ACTIONの処理中です
オブジェクト型DATABASE_EXPORT/SCHEMA/TABLE/TRIGGERの処理中です
オブジェクト型DATABASE_EXPORT/SCHEMA/POST_SCHEMA/PROCACT_SCHEMAの処理中です
オブジェクト型DATABASE_EXPORT/AUDITの処理中です
ジョブ"SYSTEM"."SYS_IMPORT_FULL_01"が完了しましたが、146エラーが20:14:48で発生しています
=====

いつもお世話になっております。

datapumpの実行方法(expdp/impdp)について、ご存知の方がいらっしゃいましたら、ご教授の程お願い致します。

------------------------------
●環境
 Oracle 11g (11.2.0.3)

以下の手順で、エクスポート/インポート テストを行ったのですが、
expdpで"tables"を指定するとエラーとなり実行できませんでした。
full=y(データベース全体)は動きました。
tablesで指定するものは、"CREATE TABLE"で作成したテーブル名ではないのでしょうか。

また、テーブルスペースを削除"...続きを読む

Aベストアンサー

> SYSスキーマなどを含めてエクスポートしたいときには、
> Full=y では無理だから各スキーマ(SYS、ORDSYS等)を指定して個別で
> 行う必要があるということなのでしょうか。

SYS スキーマはシステムの持ち物なのでexp した事はありません。
その他も、Oracle Text やExpression Filter 等、Oracle の拡張機能をInstall
した際に作成されるスキーマのため、ユーザが意識的にexp/imp する事はありません。

SYSスキーマにオブジェクトを作成しなければならない理由が無いのであれば、
新しいスキーマを作成してそちらにオブジェクトを移動した方が良いです。
テーブルのデータだけで良ければ、ユーザ作成後に
Create table 新ユーザ.テーブル名 as select * from SYS.テーブル名;
とすれば、コピー可能です。

Qバッチからsqlplusの接続エラーの検知について

バッチからsqlplusの接続エラーの検知について

環境:Xp、Oracle11g

バッチからsqlpulusを起動してPL/SQLを動かしてるのですが
DB接続に失敗した時に%ERRORLEVEL%では接続エラー時には
0が戻ってきてしまいエラーを検知できませんでした。

DB接続に失敗した場合、検知する方法を模索しております。

識者の方、助言を頂ければ幸いです。

Aベストアンサー

今、環境が無くて確認できないんですが、
sqlplus -L /nolog
WHENEVER OSERROR exit 9
WHENEVER SQLERROR exit 9
connect ユーザ名/パスワード
ではどうでしょうか?特にsqlplusの-Lオプションは使えそうな感じですが。

QOracle12cでユーザのSQLPLUSログイン

基本的な質問ですみません。Oracle 12cを初めて使うのですが、すごく単純に、ユーザを作成し、そのユーザでデータベースオブジェクト(テーブルなど)を作成する拡張子が.sqlのスクリプトを流したいです。

11gまでの場合、システムユーザでCREATE USERしたのちに、コマンドプロンプトを立ち上げて
C:\Scripts> SQLPLUS <USER>/<PASSWORD> @createtables.sql
とするだけで良かったと思います。

今回、12cではユーザの考え方が変わっており、CDBとPDBを作成しました。
> SQLPLUS /NOLOG
SQL> CONN SYS AS SYSDBA
(上記のようにローカル接続するとCDBに接続される)

SQL> ALTER SESSION SET CONTAINER=PDB1; // PDBへ移動
SQL> SHOW CON_NAME // 念のため現在接続中のPDBの名前確認
SQL> STARTUP;
(これでマウント状態だったPDB1がOPENしてREAD WRITEになる)

この状態でCREATE USER文を実行してPDB1上でユーザを作成。

ここからなんですが、PDBやCDBへのログイン方法はわかたのですが、PDB上で作成したユーザにはどのようにしてログインするのでしょうか? ログインしてテーブル作成をしたいです。また、テーブル作成のスクリプト文(.sql)があるのでそれを流したい場合は、コマンドプロンプトからどのように実行すればよいでしょうか?

基本的な質問で恐縮ですが、宜しくお願いします。

基本的な質問ですみません。Oracle 12cを初めて使うのですが、すごく単純に、ユーザを作成し、そのユーザでデータベースオブジェクト(テーブルなど)を作成する拡張子が.sqlのスクリプトを流したいです。

11gまでの場合、システムユーザでCREATE USERしたのちに、コマンドプロンプトを立ち上げて
C:\Scripts> SQLPLUS <USER>/<PASSWORD> @createtables.sql
とするだけで良かったと思います。

今回、12cではユーザの考え方が変わっており、CDBとPDBを作成しました。
> SQLPLUS /NOLOG
SQL> CONN SYS AS SYSDBA
...続きを読む

Aベストアンサー

こんにちわ。

> ORA-01017: ユーザー名/パスワードが無効です。ログオンは拒否されました。
上のtnsnames.ora の設定は、CDB に接続するためのものです。
新しい接続文字列で、SERVICE_NAME にPDB名を指定したものを作成して
試してみて下さい。

Qlistener.logが肥大化

Oracle11gでlistener.logが肥大化し、4GBまでいってしまい、
停止しました。
ログをスイッチし、Oracleは動作したのですが、
アプリケーションサーバからアプリケーションが動作しません。
例えば、SQLPLUSでSQLを発行すると正常ですが、
dllからは動作しません。
なんとなくですが、with句を用いたものが失敗しているようです。
やっぱりアプリケーションサーバを再起動でしょうか?
日曜日まで再起動ができないため、何か方法があればご教示ください。

Aベストアンサー

お疲れ様です。
tmnktmnkさんの言われていることで十分わかりますよ。
きっとそんなにOracle詳しくないので、言葉足らずかもしれませんが、
十分わかります。

>ログをスイッチし、Oracleは動作したのですが
確かに、listener.logをリネームすることをスイッチするって言われる方いますよね。
正しくはリネームというと思いますが、スイッチでわかります。

>dllからは動作しません。
固まるんじゃないんですか?応答がない感じで、ぐるぐる回ってるんじゃ?
エラーは特に表示されないんじゃ?

>なんとなくですが、with句を用いたものが失敗しているようです。
with句はSQLが複雑になっているんで、with句だけじゃなく複雑なものだと失敗すると思いますよ。

結論としてですが、
そのアプリケーションサーバからdll経由で接続したセッションが、DB側に残ってないでしょうか?
質問されてからですので、20時間くらいセッションをはったものがないでしょうか?
それを切断すれば大丈夫です。

切断できない場合は、Oracleを再起動しかありませんが…

こういった現象をなんとなく聞いてわかるようになるのには、経験しかありません。
エラーから調べることも大切ですが、現象である程度わかるようになれるといいですね。
tmnktmnkさんの今後のご活躍を期待します。

エラそうですみません。

お疲れ様です。
tmnktmnkさんの言われていることで十分わかりますよ。
きっとそんなにOracle詳しくないので、言葉足らずかもしれませんが、
十分わかります。

>ログをスイッチし、Oracleは動作したのですが
確かに、listener.logをリネームすることをスイッチするって言われる方いますよね。
正しくはリネームというと思いますが、スイッチでわかります。

>dllからは動作しません。
固まるんじゃないんですか?応答がない感じで、ぐるぐる回ってるんじゃ?
エラーは特に表示されないんじゃ?

>なんとなくですが...続きを読む

QEnterprise Manager を使用し、SYSでログインできない

専門学校の授業でOracle 10g リリース2を使用しています。

Enterprise Managerのログインページで、
ユーザ名:SYS
パスワード:データベース作成時のパスワード
接続モード:SYSDBA
としてログインしようとしましたが、再度ログインページが表示されるだけで、ログインできません。

Oracleを再インストールしても症状は変わりませんでした。
同じようにインストールしたクラスメイトは正常に動いています。
どうしたらログインできるようになるでしょうか。

スペック
Microsoft WindowsXP Pro SP2
SHARP PC-AE50L
Mobile AMD Sempron 3000+
メモリ512MB
Oracle 10g リリース2

Aベストアンサー

リスナーについては特に問題はなさそうな気がします。接続文字列をNetManager等を使用して作成し、SQL*PLUSで接続してみてください。

Enterprise Managerのログが
%ORACLE_HOME%\%HOSTNAME%_%sid%/sysman/log
にありますので、そのログから解析したほうがいいかもしれません。

同じ環境で正常に動作するマシンがあるのであれば、環境や手順を照合してみてはどうでしょうか?
#特にネットワーク系。


人気Q&Aランキング