• ベストアンサー
  • すぐに回答を!

Oracleデータベースの復旧方法

識者の方々、どうかお教えください。 昨日データメンテナンス中に、保守プログラムがとまってしまいました。 サーバーを再起動して、Oracleをスタートしたところ、データベースに接続できなくなっていました。 色々調べましたが、以下の状態から進むことができません。 恥ずかしながらバックアップはとっていませんでした。 なんとか復旧する手だてはあるのでしょうか? -------------------------------------------- SQL>connect sys/Oracle as SYSDBA アイドル・インスタンスに接続しました。 SQL>startup ORACLEインスタンスが起動しました。 Total System Global Area 1826944268 bytes Fixed Size 70924 bytes Variable Size 49324416 bytes Redo Buffers 77824 bytes データベースがマウントされました。 ORA-01589: データベースをオープンするにはRESETLOGSまたはNORESETLOGSを使用する必要があります SQL> alter database open resetlogs; alter database open resetlogs * 行1でエラーが発生しました。: ORA-01152: ファイル1は十分に古いバックアップからリストアされていません。 ORA-01110: データファイル1: '/opt/oracle/oradata/o10g/system01.dbf' SQL>recover database using backup controlfile until cancel; ORA-00279: 変更 25084677(04/20/2009 12:11:39で生成)にはスレッド1が必要です。 ORA-00289: 検討すべきログライル: D:\ORACLE\ORA81\RDBMS\ARC87062.001 ORA-00280: 変更 258365040(スレッド1)は順序番号 87062に存在します。 ログの指定:[<RET>=suggested | filename | AUTO | CANCEL} auto ORA-00308: ORA-27041: OSD-04002: ファイルをオープンできません。 O/S-Error: (OS 2) 指定されたファイルが見つかりません。 ORA-01547: 警告:RECOVERは成功しましたがOPEN RESETLOGSが次のエラーを受け取りました。 ORA-01194: ファイル1は一貫した状態にするためにさらにリカバリが必要です。 ORA-01110: データ・ファイル1:D:\ORACLE\ORADATA\MYCOMPANY\SYSTEM01.DBF ----------------------------------------------------------

共感・応援の気持ちを伝えよう!

  • 回答数1
  • 閲覧数7554
  • ありがとう数1

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

  • ベストアンサー
  • 回答No.1
  • entree
  • ベストアンサー率55% (405/735)

> ORA-01152: ファイル1は十分に古いバックアップからリストアされていません。 このエラーのとおりです。リカバリするためには最も新しいデータファイルのSCN よりも先までのアーカイブログ (もしくはオンラインログ) が必要ですが、それが存在しないことを意味しています。 つまり、もっと古いバックアップからリストアし、理科張りしなければならないと言うことですが、バックアップが存在しないと言うことでしたら復旧できません。

共感・感謝の気持ちを伝えよう!

質問者からのお礼

ご回答ありがとうございました。 現在、データ復旧専門会社の解析結果返事待ちです。 CSVにでも吐き出せたら大助かりなんですが。

関連するQ&A

  • データベースをオープンできない

    Oracle(10.2.0.5)のパッチを当てた後、データベースをオープンすることができませんでした。 原因と対処法にについてわかりましたら、教えて頂けますか。 SQL> startup ORACLEインスタンスが起動しました。 Total System Global Area 1258291200 bytes Fixed Size 2067624 bytes Variable Size 318767960 bytes Database Buffers 922746880 bytes Redo Buffers 14708736 bytes データベースがマウントされました。 ORA-01092: Oracleインスタンスが終了しました。強制的に切断されます

  • 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 理由がまったくわかりません。どうかよろしくお願いします。

  • ORACLE9iのリカバリ方法

    ORACLE9iのリカバリ方法を教えてください。 Windows server 2003 R2、Oracle9iを使用しています。 Cドライブにoracleをインストール、Dドライブにoracleのデータを格納しています。 Cドライブのハードディスクが駄目になったので、Cドライブのハードディスクを交換して Windows server 2003 R2をインストールして Windowsの標準機能のバックアップ(バックアップデータには、system stateも含んでいます。)からバックアップしておいたデータを復元させました。 ファイル単位のデータや、オラクルのサービスは復旧したのですが、オラクルのテーブルなどが開きません。 SI ObjectBrowserでオラクルを開こうとしたとき、 「ORA-01219:データベースがオープンしていません。固定の表/ビューに対する問合せのみ可能です。」 というメッセージが表示されます。サービスの再起動をしましたが、同じようなエラーがでます。 SQLPLUSで、alter database openのコマンドを入れてデータベースをオープンさせようとしたところ、 次のようなエラーが出てきました。 ORA-01122:データベース・ファイル8の照合検査でエラーが発生しました。 ORA-01110:データ・ファイル8:'D:ORACLE^ORADATA\SFRES\USER01.DBF' ORA-01207:ファイルが制御ファイルより新しくなっています。-古い制御ファイルです。 どなたか、解決方法をご存知の方、ご教授ください。

  • OracleのSGA領域の拡張について

    SGA領域の拡張をしておりますがOS上のメモリーの見方が よく分かりません。 SGAを拡張する前は下記のようになっております。 ●MiracleLinux 2.1 [oracle@svr20 dbs]$ free -m total used free shared buffers cached Mem: 1254 1247 7 233 659 190 -/+ buffers/cache: 397 857 Swap: 2000 0 2000 →見方としては free7M + buffers659M + cached190M = 856M  -/+ buffers/cache:とほぼ同じでだいたい856Mあまっている?  と言う見方でよろしいのでしょうか? ●Oracle9.2.0.1 SQL> startup open; ORACLE instance started. Total System Global Area 235999352 bytes Fixed Size 450680 bytes Variable Size 201326592 bytes Database Buffers 33554432 bytes Redo Buffers 667648 bytes Database mounted. Database opened. →SGAは235Mとなっております。 ------------ ここで alter system set sga_max_size = 1024M scope=spfile; 発行して1024Mに拡張しOracleとOSを再起動しました。 SQL> startup open; ORACLE instance started. Total System Global Area 1074861156 bytes Fixed Size 451684 bytes Variable Size 1040187392 bytes Database Buffers 33554432 bytes Redo Buffers 667648 bytes Database mounted. Database opened. →SGAは1Gとなっており増えております。 [root@svr20 /root]# free -m total used free shared buffers cached Mem: 1254 1212 42 236 668 161 -/+ buffers/cache: 382 872 Swap: 2000 73 1926 →872Mあまっている? 75Mぐらい増やしましたがOS上では減っておりません。 freeは42Mと増えてます。 また、alter system set sga_max_size = 2024M scope=spfile; と拡張しましたら再起動後メモリが足らないのかORA-27123となり起動 できなくなりました。 この場合SGAのメモリ枠は何メガまで拡張できるかどのようにして 判断したら良いか教えてください.

  • Oracleの起動時に、マウントしたりしなかったりで困っています。

    初めまして。Oracleの知識が薄く困っております。 よろしくお願い致します。 さて、現象ですがPC起動と同時にOracleが起動するように設定しているのですが、 マウントまで行ったり行かなかったりで困っております。 (起動する度に現象が異なります) Ver:ORACLE V10.1.0.2.0 OS :WindosXP SP2 アラートログを確認しますと、 XXXX started with pid=Y(XXXX=SMONだったりRECOだったり・・・) の直後に、 alter database mount exclusive のコマンドが続く場合は、うまく立ち上がるようです。 しかし、 XXXX started with pid=Y の後に何もない時はマウントできていないようです。 また、 (1) > sqlplus /nolog (2) SQL> connect sys/aaaa@bbbb as sysdba (3) SQL> select status from v$instance; とすると、「STARTED」状態であり、 SQL> alter database mount; SQL> alter database open; とすると、正常に動作するようになります。 oradim.logを確認すると、  ORA-01012: not logged on  ORA-24324: service handle not initialized が出ていますが、どこから調査をすればいいのか暗闇の中です。 お助言頂きますようお願い致します。

  • UNDO表領域の拡張について

    Oracle9iにてUNDO表領域を自動拡張ではないため手動にて拡張(512M→1024M)しようとしております。 UNDO表領域:/oradata/undotbs01.dbf 表領域をオフライン(alter tablespace '/oradata/undotbs01.dbf' offline;)にすることなく以下のSQL文のみで拡張することは可能でしょうか? SQL> alter database datafile '/oradata/undotbs01.dbf' resize 1024M; ご教授の程、宜しくお願い致します。

  • Oracle10gのデータベースの移行について

    Oracle10gのデータベースの移行について質問です。 Oracle10g が稼動しているサーバ機があります。 老朽化の為、新しいハードウェアへ入れ替える事になりました。 OSは、入れ替え前も入れ替え後もWindows Server 2003です。  DB: Oracle10g → Oracle10g  OS: Windows Server 2003 → Windows Server 2003 現行のサーバ上では4つのインスタンスが稼動しています。 新しいサーバ上に、同じ構成でそのまま移行する方法を検討していますが、下記のような方法で大丈夫なものでしょうか? (1)新しいサーバ上にOracle10gを初期データベースなしでインストールする (2)新しいサーバ上で新規のOracleインスタンスを4つ作成する (ORADIMツールを使用) (3)現行のサーバ上の各インスタンス・Oracle関連サービスを停止し、オフラインでデータベース関連のファイルのバックアップを取得する (4)現行のサーバから、新しいサーバへ、オフラインで取得したバックアップファイルを転送する (5)新しいサーバ上の各インスタンス・Oracle関連サービスを停止する (6)新しいサーバ上から、(3)で取得したファイルと同じファイルを削除する (7)新しいサーバ上で、バックアップしたファイルを現行のサーバと同じ位置に配置する (8)新しいサーバ上のOracle関連サービスと各インスタンスを起動し、動作を確認する どなたか、回答宜しくお願い致します。

  • Oracle sqlplusで接続できなくない

    お世話になっております。 Oracle11gを使っています。 PROCESSESの値を変えようとして、 以下のコマンドを実行しました。 ALTER SYSTEM SET PROCESSES = 10 SCOPE = SPFILE; Oracleを再起動した後、 sqlplusを使ってログインできなくなってしまいました。 表面的には、 ORA-12514: TNS: リスナーは接続記述子で要求されたサービスを現在認識していません。 というメッセージなのですが、サーバのログに以下の記述を見つけました。 ORA-00444: background process "MMAN" failed while starting ORA-00020: maximum number of processes () exceeded PROCESSESの値が小さすぎたようです。 SPFILEに定義されているので、 変更するにはsqlplusで接続して、 再度ALTER SYSTEM コマンドを実行すると思うのですが、 そもそもsqlplusで接続できないので、変更することができません。 データベースOpen時に、 nomoutにしてPFILEから起動しようとするとしても、 これもまた、接続できないので、使えない手段でした。 また、SPFILEのバックアップも取っていなかったので、どうにもなりません。 この窮状から復旧する方法について、教えていただければ幸いです。 よろしくお願いします。

  • Oracleで空きがあるのにimportできない

    4年程前から稼動しているLinuxシステム(Oracle8i使用)があります。そのシステムでexpしたデータを、別のサーバ(同じくOracle8i)にimpしたいのですが、エラーになってしまいます。 IMP-00003: ORACLE error 1237 encountered ORA-01237: cannot extend datafile 1 ORA-01110: data file 1: '/u01/app/oracle/oradata/orcl/system01.dbf' ORA-19502: write error on file "/u01/app/oracle/oradata/orcl/system01.dbf", bloc kno 202993 (blocksize=8192) ORA-27072: skgfdisp: I/O error Linux Error: 9: Bad file descriptor Additional information: 202993 Import terminated successfully with warnings. いろいろ調べたら SYSTEM にデータを入れるのは良くないということがわかりましたが、このサーバは本番サーバではないので表の中身を select で見れれば十分なので、このままの構成で行かれればと思います。 ディスク容量が不足しているようですが、DBA Studio で調べてみると、SYSTEM 1,608,576KB(1,570MB)中、800,992KB(782MB)使用中と表示されます。 imp したいファイルは 158,880KB(155.2MB)なので空き容量の部分に余裕で入ると思うのですが、データファイルを拡張しようとしているみたいです。 df コマンドの出力は /dev/sda6 2909420 2745980 15644 99% /u01 となり、確かにパーティションの空き容量はないのですが、SYSTEM領域の残り800MBの部分にはインポートできないのでしょうか。

  • Oracleでデータのコピーをしたい。

    別のマシンのOracleをエクスポートしてインポートし自分のマシンにデータを移動しようとしているのですが なぜかインスタンスにドメインのようなおまけがついてしまいます。 例:[データベース名]→[データベース名].us.oracle.com Oracleのバージョンは8.1.6.0.0です。 init.oraというファイルの中を見ると global_names = true という設定値が怪しいと思い、いろいろやってみましたがわかりません。 クライアントサーバではなくスタンドアロンにしたいんです。 良い知恵ありましたら些細なことでもいいので回答ください。