QA@IT

Oracle11gで、制御ファイルが破損(復元不可)でDBを削除したいとき

7706 PV

すみません。

OracleDBを再起動しようとしたら、STARTUP(NOMOUNT)状態で止まってしまいました。
どうやら制御ファイルが開けないからエラーが出てるようでした。

でも、制御ファイルは完全破損で復元ができないので、いったんDBを削除してからもう1度DBを再作成してリストアしたいと思っています。

でも、NOMOUNT状態でないとDBは削除できないみたいで、制御ファイルがないのでNOMOUNTにできません。

どうすればDBを削除できるでしょうか?

ちなみにDBのデータはPostgresに移そうと思っていたので、Oracle自体はRMANなど利用しておらず、OEMも立てておらず、どうしようかなと思っています。NOARCHIVEモードで作業しており、メディアリカバリなどもありません。

##すみません。下記作業で解決しました。
CREATE CONTROLFILE
SET DATABASE "DB名"
LOGFILE GROUP 1 ('/opt/oracle/oradata/life/redo01a.log') SIZE 100M BLOCKSIZE 512,
GROUP 2 ('/opt/oracle/oradata/life/redo02a.log') SIZE 100M BLOCKSIZE 512,
GROUP 3 ('/opt/oracle/oradata/life/redo03a.log') SIZE 100M BLOCKSIZE 512
RESETLOGS
DATAFILE '/opt/oracle/oradata/インスタンス名/system01.dbf' SIZE 5000M REUSE
MAXLOGFILES 50
MAXLOGMEMBERS 3
MAXLOGHISTORY 400
MAXDATAFILES 200
MAXINSTANCES 6
ARCHIVELOG;

で制御ファイルを作成

その後 shutdown immediate
STARTUP RESTRICT MOUNT
DROP DATABASE;

で、DBが削除できました。ありがとうございます!

  • 回答に追記しました。 -

回答

よくわからないのですが、startup nomountができないという意味ですか?

制御ファイルとはコントロールファイルのことですか?
そもそもどういう操作をしてそうなったのか、心当たりはあるんでしょうか。


書いた後で思いましたが、ristrictでマウントできないからdrop databaseができないということでしょうか?


試したことはないですが、冗長化もなくバックアップもない状態であれば、制御ファイルの再作成という手段があります。
こちらを参考にされてはどうでしょうか。

http://docs.oracle.com/cd/E16338_01/server.112/b56301/control.htm#i1006293

新しい制御ファイルの作成
ここでは、新しい制御ファイルを作成する場合とその方法について説明します。
新しい制御ファイルを作成する場合
次の状況の場合に、新しい制御ファイルを作成する必要があります。

  • データベースの制御ファイルがすべて破損し、制御ファイルのバックアップがない場合
    (以下略)
編集 履歴 (2)
  • はい、制御ファイル=コントロールファイルです。
    startup nomountはできるのですが、startup mountや、startup ristricted mount ができない状態です。
    DB作成する際に初期化パラメータファイルのcontrolfileパラメータがコメントアウトされたままDB作成してしまったため、コメントを外しても制御ファイルにヘッダがないみたいなエラーがでます
    -
  • 質問欄に、解決方法を記載しました。
    初期化パラメータファイルのcontrol_filesに指定しているファイルパスを確認する必要はありますが、教えていただいたやり方で解決しました。ありがとうございます…
    -
  • あ、まだ未解決な部分がありますので、整理したら書きます。 -
  • 解決しました。質問欄修正しました。ありがとうございます。 -
ウォッチ

この質問への回答やコメントをメールでお知らせします。