パラメータファイルが壊れたときの対応

このQ&Aのポイント
  • Oracle11gをWindowsVistaにインストールし、SQL、PL/SQLの勉強をしている初心者です。ファイル操作の勉強をしようと思い、UTL_FILE_DIRの変更を試みたところ、データベースが起動しなくなってしまいました。
  • oradim.logを確認したところ、ORA-01078エラーとLRM-00109エラーが記録されていました。復旧方法がわからず困っています。
  • パラメータファイルが壊れたとき、WindowsVistaでOracle11gを使用している場合にデータベースが起動しなくなる問題が発生しました。UTL_FILE_DIRの変更を試みた後、oradim.logにORA-01078エラーとLRM-00109エラーが記録されています。復旧方法を教えてください。
回答を見る
  • ベストアンサー

パラメータファイルが壊れたときの対応

お世話になります。Oracle11gをWindowsVistaにインストールし、SQL、PL/SQLの勉強をしている初心者です。 ファイル操作の勉強をしようと思い、UTL_FILE_DIRの変更を試みたところ、データベースが起動しなくなってしまいました。databaseフォルダにあるoradim.logを確認したところ、次の記録がありました。 Fri Dec 18 00:30:04 2009 E:\app\taro\product\11.1.0\db_1\bin\oradim.exe -startup -sid orcl -usrpwd * -log oradim.log -nocheck 0 Fri Dec 18 00:30:04 2009 ORA-01078: failure in processing system parameters LRM-00109: ?p?????[?^?E?t?@?C??'E:\APP\TARO\PRODUCT\11.1.0\DB_1\DATABASE\INITORCL.ORA'???I?[?v?????????????B いろいろと検索してみたのですが、復旧方法がわからず困っております。お助けいただければ幸いです。 何卒、よろしくお願いいたします。

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

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

  • ベストアンサー
  • ishi7474
  • ベストアンサー率32% (71/216)
回答No.2

初期化パラメータファイルは制御ファイルのように多重化されておらず、日常のデータベースバックアップでも忘れられがちなので、一度破壊されると復旧は結構厄介です(バイナリのSPFILEともなればなおさら)。 ※以下、テキスト形式のパラメータファイルを"PFILE"、バイナリ形式のパラメータファイルを"SPFILE"と呼びます。 (1)とりあえずSPFILExxxx.ORA(おそらくSPFILEORCL.ORA)をSPFILE.ORA.BAK等にリネームする(バックアップ兼Oracleから認識されないようにする) (2)一度でもデータベースを正常起動したのでしたら、アラートログに「(パラメータファイルから読み込んで)設定した非デフォルトのパラメータ」が列挙されているので、その記述と(1)のSPFILEを元に、PFILE (INITORCL.ORA)を作成し、データベースの起動を試みる(起動できるまでは何度か編集することになりますので、PFILEのまま運用する)。 (3)以後PFILE(INITORCL.ORA)のままで運用されるならこのままでも結構ですが、元通りSPFILEでの運用を希望されるのでしたら、以下のSQL文でSPFILEを再作成します。 CREATE SPFILE FROM PFILE;

kisoyasa
質問者

お礼

shi7474 様 おかげ様で無事復旧しました。ありがとうございました。 たまたま正常に起動していたときの、HDのバックアップをとってあったので、 SPFILEをそのまま上書きしたら、起動してくれました。 本当に助かりました。また、復旧方法の詳細も勉強させていただき、 感謝しております。ありがとうございました。

その他の回答 (1)

  • ishi7474
  • ベストアンサー率32% (71/216)
回答No.1

UTL_FILE_DIRの変更を行ったとありますが、どのような方法で行いましたか。INITORCL.ORA(テキストファイル)を編集したのでしたら、知らない間に拡張子が付いていた(INITORCL.ORA.TXTとか)ということはないですか。

kisoyasa
質問者

お礼

さっそくご回答いただき、感謝しております。 %ORACLE_HOME%\database\SPFILE××.ORAをメモ帳で変更してしまいました。 バイナリなので、やはり大変なことをしてしまった・・・、と思いますが 見かけ上、問題がなかったので楽観していました。 もしこれが原因であれば、spfileを初期化できればありがたいのですが。 お世話になります。

関連するQ&A

  • SQL*PLUSでホスト名を入れるとエラー

    よろしくお願いします。 SQL*PLUSで、ホスト名を入れると、ORA-12154エラーとなってしまいます。 ホスト名を入力しないと、正常に接続可能です。 ちなみに、DBはローカルにあります。 以下、TNSNAMES.ORAの内容です。 =========================== ORCL = (DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST = cl-000788.iafc.local )(PORT = 1521)) (CONNECT_DATA = (SERVER = DEDICATED) (SERVICE_NAME = orcl) ) ) ================================= どこか、設定が間違っているのでしょうか? よろしくお願いいたします。

  • データベースに接続できない

    データベースに接続できません!! 「tnsnames.ora」、「listener.ora」、「sqlnet.ora」の内容は以下になっております。いろいろ調べてみて、これでいいとは思うのですが、「ORA-12545 ターゲット・ホストまたはオブジェクトが見つかりません。」というエラーが出てしまい接続できません。 DBはOracle10g Release1を使用しています。 【tnsnames.oraの内容】 ORCL = (DESCRIPTION = (ADDRESS_LIST = (ADDRESS = (PROTOCOL = TCP)(HOST = localhost)(PORT = 1521)) ) (CONNECT_DATA = (SERVICE_NAME = orcl) ) ) EXTPROC_CONNECTION_DATA = (DESCRIPTION = (ADDRESS_LIST = (ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC)) ) (CONNECT_DATA = (SID = PLSExtProc) (PRESENTATION = RO) ) ) 【listener.oraの内容】 SID_LIST_LISTENER = (SID_LIST = (SID_DESC = (SID_NAME = PLSExtProc) (ORACLE_HOME = G:\oracle\product\10.1.0\Db_1) (PROGRAM = extproc) ) (SID_DESC = (GLOBAL_NAME = orcl) (ORACLE_HOME = G:\oracle\product\10.1.0\Db_1) (SID_NAME = orcl) ) ) LISTENER = (DESCRIPTION_LIST = (DESCRIPTION = (ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC)) ) (DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST = localhost)(PORT = 1521)) ) )

  • create databaseがうまくいきません。。

    databaseを新規に作成したいのですが 今使用しているDB(Oracle 10g Express Edition )は インストール時にデフォルトでデータベースを 作成してしまうため、 「create databese」のsql文を実行すると以下のエラーが出てしまいます。 すでにマウントってどういうことなのでしょうか。 ORA-01501: CREATE DATABASE文でエラーが発生しました。 ORA-01100: データベースはすでにマウントされています。 今存在するDB名が分かれば「drop」コマンドで 削除を試みようと思っているのですが DB名を参照する方法もよく分かりません。 どなたかご教授お願いします。

  • 【sqlplus】USER/PASS@HOSTでログインできない

    SQLPLUSでローカルのOracle10gに接続を試みているのですが コマンドプロンプトで sqlplus USER/PASS では接続できるのですが、 sqlplus USER/PASS@HOST で接続できないんです。 環境は下記となっております。 Windows XP Oracle10g(10.1.0) ======【エラー内容】================================== C:\Documents and Settings\XXXX XXXX>sqlplus USER/PASS@orcl SQL*Plus: Release 10.1.0.2.0 - Production on 火 7月 3 01:56:57 2007 Copyright (c) 1982, 2004, Oracle. All rights reserved. ERROR: ORA-12523: TNS:listener could not find instance appropriate for the client connection ======【listener.ora】================================== # listener.ora Network Configuration File: C:\oracle\product\10.1.0\Db_1\network\admin\listener.ora # Generated by Oracle configuration tools. SID_LIST_LISTENER = (SID_LIST = (SID_DESC = (SID_NAME = PLSExtProc) (ORACLE_HOME = C:\oracle\product\10.1.0\Db_1) (PROGRAM = extproc) ) (SID_DESC = (SID_NAME = ORCL) (ORACLE_HOME = C:\oracle\product\10.1.0\Db_1) (PROGRAM = oracle) ) ) LISTENER = (DESCRIPTION_LIST = (DESCRIPTION = (ADDRESS_LIST = (ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC)) ) (ADDRESS_LIST = (ADDRESS = (PROTOCOL = TCP)(HOST = localhost)(PORT = 1521)) ) ) ) ======【sqlnet.ora】================================== # sqlnet.ora Network Configuration File: C:\oracle\product\10.1.0\Db_1\network\admin\sqlnet.ora # Generated by Oracle configuration tools. SQLNET.AUTHENTICAION_SERVICES=NONE NAMES.DIRECTORY_PATH= (TNSNAMES, EZCONNECT) ======【tnsnames.ora】================================== # tnsnames.ora Network Configuration File: C:\oracle\product\10.1.0\Db_1\network\admin\tnsnames.ora # Generated by Oracle configuration tools. ORCL = (DESCRIPTION = (ADDRESS = (PROTOCOL = TCP) (HOST = localhost) (PORT = 1521) ) (CONNECT_DATA = (SERVER = SHARED) (SERVICE_NAME = orcl) ) ) ======【tnsping】================================== Used TNSNAMES adapter to resolve the alias Attempting to contact (DESCRIPTION = (ADDRESS = (PROTOCOL = TCP) (HOST = localhost) (PORT = 1521)) ( CONNECT_DATA = (SERVER = SHARED) (SERVICE_NAME = orcl))) OK (40 msec) ======【LSNRCTL>status】================================== Listening Endpoints Summary... (DESCRIPTION=(ADDRESS=(PROTOCOL=ipc)(PIPENAME=\\.\pipe\EXTPROCipc))) (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=127.0.0.1)(PORT=1521))) Services Summary... Service "ORCL" has 1 instance(s). Instance "ORCL", status UNKNOWN, has 1 handler(s) for this service... 実は当初PHPから接続しようと色々やっていたのですが、sqlplusで まともに接続できていないことが判明し、自分でも色々調べてみた のですが、どうしてもうまくいかず質問させていただいた次第です。 初心者ですが、どうかよろしくお願いいたします。

  • オンラインREDOログ障害からの復旧方法について

    現在、Oracle11g Release2 11.2.0.3(ASM使用) の環境で、オンラインREDOログファイルが全て消失した場合を想定して、以下の手順で復旧の方法をテストしています。 ----- 1.sqlコマンドでテーブルに1件データを挿入する。 2.フルバックアップ(バックアップセット)を取得する。 3.sqlコマンドでテーブルに1件データを挿入する。 4.累積増分バックアップを取得する。 5.sqlコマンドでテーブルに1件データを挿入する。 6.DBをシャットダウンする。 (RMAN> shutdown immediate;) 7.オンラインREDOログファイルを全て削除する。 8.DBをマウントする。 (RMAN> startup mount;) 9.リストアをする。 (RMAN> restore database;) 10.バックアップの際に除外している表領域をオフラインにする。 (SQL> Alter database datafile '+DATA/orcl/DATAFILE/hoge2' offline drop;) 11.リカバリをする。 (SQL> recover database using backup controlfile until cancel;) (ログの指定は AUTO) 12.DBをオープンする。 (RMAN> alter database open resetlogs;) 13.sqlコマンドでテーブルの中を確認する。 (SQL> select * from HOGEHOGE;) (データが1件) ----- 上記の手順でDBをオープンにするところまで上手くいったのですが、 私の考えでは、13でテーブルを確認するとデータが2件はいっていると思ったのですが、 結果は、1件だけでした。 累積増分バックアップを取得した時点(データが2件入った状態)まで戻したいのですが、 解決の手がかりになる情報などがございましたらご教示いただけますでしょうか。 よろしくお願いします。

  • Oracle10gXE DB再作成でログインできず

    デフォルトで作成されるDBは、「NLS_CHARACTERSET=AL32UTF8」だが、 JA16SJISTILDE で使いたいため、データベース「XE」を一度削除して、 同じデータベース名で再作成したんですが、再作成後、 sqlplusにてSYSTEMユーザでつなげません。 SYSTEMユーザでつないで、pupbld.sql を流さないと、 新規ユーザを作ってもログイン時にエラーがでます。 警告: 製品のユーザー・プロファイル情報がロードされていません。 PUPBLD.SQLをSYSTEMとして実行する必要があるかもしれません。 どなたか、よろしくお願いします。 ◆以下、手順メモです◆ 1.データベースの削除 >sqlplus /nolog SQL> connect / as sysdba 接続されました。 SQL> shutdown abort ORACLEインスタンスがシャットダウンされました。 SQL> startup restrict mount ORACLEインスタンスが起動しました。 Total System Global Area 146800640 bytes Fixed Size 1286220 bytes Variable Size 75501492 bytes Database Buffers 67108864 bytes Redo Buffers 2904064 bytes データベースがマウントされました。 SQL> drop database; データベースが削除されました。 Oracle Database 10g Express Edition Release 10.2.0.1.0 - Productionとの接続が切 断されました。 2.フォルダの作成 以下のフォルダが存在することを確認。中に存在したファイルを削除。 C:\oraclexe\app\oracle\admin\XE\adump C:\oraclexe\app\oracle\admin\XE\bdump C:\oraclexe\app\oracle\admin\XE\cdump C:\oraclexe\app\oracle\admin\XE\dpdump C:\oraclexe\app\oracle\admin\XE\udump C:\oraclexe\oradata\XE 3.初期化パラメータファイルの作成 以下の内容でテキストファイルを作成し、 C:\oraclexe\app\oracle\product\10.2.0\server\dbs\initXE.ora として保存する。 ---- db_name="XE" control_files=(C:\oraclexe\oradata\XE\ctrl01, C:\oraclexe\oradata\XE\ctrl02, C:\oraclexe\oradata\XE\ctrl03) db_block_size=8192 user_dump_dest='C:\oraclexe\app\oracle\admin\XE\udump' background_dump_dest='C:\oraclexe\app\oracle\admin\XE\bdump' core_dump_dest='C:\oraclexe\app\oracle\admin\XE\cdump' sga_target=400M undo_management=auto undo_tablespace=undo1 ------------------------------------------------------------------ 4.データベースの作成 (1) 初期化パラメータファイルを指定して、nomount 状態で起動する。 >sqlplus / as sysdba SQL> shutdown abort ORACLEインスタンスがシャットダウンされました。 SQL> connect / as sysdba アイドル・インスタンスに接続しました。 SQL> startup nomount pfile=C:\oraclexe\app\oracle\product\10.2.0\server\dbs\initXE.ora ORACLEインスタンスが起動しました。   :   : (2) データベースを作成 (create database コマンド) SQL> create database XE 2 logfile group 1 ('C:\oraclexe\oradata\XE\redo01a.log') size 50M, 3 group 2 ('C:\oraclexe\oradata\XE\redo02a.log') size 50M, 4 group 3 ('C:\oraclexe\oradata\XE\redo03a.log') size 50M 5 datafile 'C:\oraclexe\oradata\XE\system.dbf' 6 size 100M autoextend on next 10M maxsize unlimited extent management local 7 sysaux datafile 'C:\oraclexe\oradata\XE\sysaux.dbf' 8 size 100M autoextend on next 10M maxsize unlimited 9 default temporary tablespace temp 10 tempfile 'C:\oraclexe\oradata\XE\temp.dbf' size 100M extent management local 11 undo tablespace undo1 12 datafile 'C:\oraclexe\oradata\XE\undo1.dbf' size 100M 13 character set JA16SJISTILDE 14 national character set AL16UTF16 15 ; データベースが作成されました。 (3) pfile から spfile を作成 SQL> create spfile='C:\oraclexe\app\oracle\product\10.2.0\server\dbs\spfileXE.ora' 2 from pfile='C:\oraclexe\app\oracle\product\10.2.0\server\dbs\initXE.ora' 3 ; ファイルが作成されました。 --- 5.データベースの再起動 (正常起動の確認) の後、スクリプトファイルの実行。 スクリプトファイル … catalog.sql, catproc.sql, pupbld.sql ---- SQL> shutdown データベースがクローズされました。 データベースがディスマウントされました。 ORACLEインスタンスがシャットダウンされました。 SQL> startup ORACLEインスタンスが起動しました。 Total System Global Area 419430400 bytes Fixed Size 1287784 bytes Variable Size 121637272 bytes Database Buffers 293601280 bytes Redo Buffers 2904064 bytes データベースがマウントされました。 データベースがオープンされました。 > sqlplus / as SYSDBA SQL> @C:\oraclexe\app\oracle\product\10.2.0\server\RDBMS\ADMIN\catalog.sql : : (結果の出力) : SQL> @C:\oraclexe\app\oracle\product\10.2.0\server\RDBMS\ADMIN\catproc.sql : : (結果の出力) : ★この後、SQL*Plusを終了して、コマンドプロンプトから  「sqlplus SYSTEM/ORACLE」でログインしようとすると、エラーになる。 ERROR: ORA-01017: invalid username/password; logon denied 理由がまったくわかりません。どうかよろしくお願いします。

  • ShellからTruncate【Linux】

    現在、ShellでSQL*PLUSを起動し、 テーブルをTruncateしようとしているのですが、 直接コマンドで実行すると可能なんですが、Shellで実行すると接続してすぐに切断されSQLが実行されません。 <Souce> ora_pass=TEST/TEST@DB log_pth=/home/oracle/TEST/04_log/ scrLOG=${log_pth}SHELL.log echo "S" sqlplus $ora_pass <<EOF > $scrLOG truncate table W_BSL_INV; EOF echo "E" ちなみにSelect文はscrLOGに正常に出力されます。

  • リスナーがありません

    無償版のOracle 12cをインストールしました。 レジストリで「ORACLE_HOME」と「ORACLE_SID」の値を確認して環境変数に設定しました。 ORACLE_HOME … C:\app\ora\product\12.1.0\dbhome_2 ORACLE_SID … orcl それから下記のURLを参考にしてユーザーを作成しました。 http://replication.hatenablog.com/entry/2015/08/05/093000 作成したユーザーで接続しようとしたら下記のエラーが発生してしまいました。 conn 上記で作成したユーザー/パスワード@PDBORCL ORA-12541: TNS: リスナーがありません ネットで「tnsnames.ora」に記述するという記事を見たので下記のパス先ある「tnsnames.ora」に下記の内容を追加しました。 C:\app\ora\product\12.1.0\dbhome_2\NETWORK\ADMIN PDBORCL = (DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST = IPアドレス)(PORT = 1521)) (CONNECT_DATA = (SERVER = DEDICATED) (SERVICE_NAME = PDBORCL) ) ) でも結果は同じでした。 ※試しに下記のパス先に「tnsnames.ora」を設置しても同じでした。 C:\app\ora\product\12.1.0\dbhome_1\NETWORK\ADMIN 申し訳ありませんがどのようにすればいいのでしょうか。 何卒、ご教授宜しくお願いします。

  • パラメーターエラーで復元できません

    SQLSERVER2005でwindows2003serverで運用しています。 マネージメントスタジオの復元機能で行いました。 どこに間違いがあるのでしょうか? RESTORE DATABASE [test] FROM DISK = N'C:\~.bak' WITH FILE = 1, NOUNLOAD, STATS = 10 GO メッセージ 5133、レベル 16、状態 1、行 1 オペレーティング システム エラー 87(パラメータが間違っています。) により、ファイル "E:\Program Files\Microsoft SQL Server\MSSQL.1\MSSQL\DATA\~.mdf" のディレクトリ参照に失敗しました。 メッセージ 3156、レベル 16、状態 3、行 1 ファイル '~' を 'E:\Program Files\Microsoft SQL Server\MSSQL.1\MSSQL\DATA\~.mdf' に復元できません。WITH MOVE を使用して、そのファイルにとって有効な場所を特定してください。 メッセージ 5133、レベル 16、状態 1、行 1 オペレーティング システム エラー 87(パラメータが間違っています。) により、ファイル "E:\Program Files\Microsoft SQL Server\MSSQL.1\MSSQL\DATA\~.ldf" のディレクトリ参照に失敗しました。 メッセージ 3156、レベル 16、状態 3、行 1 ファイル '~_log' を 'E:\Program Files\Microsoft SQL Server\MSSQL.1\MSSQL\DATA\~_log.ldf' に復元できません。WITH MOVE を使用して、そのファイルにとって有効な場所を特定してください。 メッセージ 3119、レベル 16、状態 1、行 1 RESTORE ステートメントのプランを作成中に問題が検出されました。詳細については、以前のメッセージを参照してください。 メッセージ 3013、レベル 16、状態 1、行 1 RESTORE DATABASE が異常終了しています。

  • OracleClientのインストールがおかしい?

    いつもお世話になっております。 WinXP(32bit)にOracleXE11gをインストールしました。 そして、Win7(64bit)にClientをインストールして使用しようと思ったのですが、 インストールがうまくいっていないような気がします。 11g32bit用のClientをダウンロードし、「C:\app\product\11.2.0\client_1」にインストールしたところ、 問題なく終了したのですが、「C:\app\product\11.2.0\client_1」配下に 「network」フォルダも「bit」フォルダもないのです。 とりあえず、「network\admin\tnsnames.ora」を自分で作成したところ、 SQL*PlusでDBに接続はできました。 oo4oを使用したいと考えていたのですが、それもなく・・・ このインストールは失敗しているのでしょうか? 原因がわかる方がいらっしゃいましたら、教えてください。 どうぞよろしくお願いします。