昨日書いたさいあくなOracleの復旧のさせかた。

inPlase Install(復旧インストール)でも上手くいかないとWindows2000を再インストールしなきゃいけないよね。そう、たとえばマザーボードを交換したりとか、起動にドライバが必要なHDDにつなぎ換えたりするとき!*1!!(´ー`)

そうなるとWindowsレジストリとかに入ってるOracleの設定回りが吹っ飛びますよね。NTサービスなどから消滅するので、単にコピーしただけでは勿論戻りません、Windowsってだけで復旧が非情に面倒くさそうです。
でもアプリだけ入れ替えて、リポジトリーデータとか、そのままコピーでうごかないのん?と思ってやってみました、ちょっとやったら動きました。

DB神ことOracle様をこんなメチャクチャな使い方するのは罰当たり以外の何者でもありませんね。なにしろコレをやろうとして情報をさがしても全然出てきませんでした。オラクルを使う人はすべからくオラクルマスターという行儀の良い人ばかりなのですから。
キッチリハードウェアで冗長をとり、毎日ダンプをとり、毎週フルバックアップをし、毎月コールド/ホットのタンデム切り替えをし、毎年リプレースするような禁欲的なプリーストじゃないとムリです。
開発機とはいえガッツ石松さながらにクリッコだけでインスコして、2年くらい放置したら突然ハードこわれて大騒ぎの漏れなんかどうしようもないわけです。


多分漏れの管理するシステムはオラクル様ののろいがかかって今後原因不明のロックなどが相次ぐと思います。まあ、今現在も原因不明なロックは有りますが。


自虐はさておき。


c:\oracleにインストールされてるとすると、大抵の場合
c:\orable\ora81
c:\oracle\admin
c:\orable\oradata
となりますが。

まずこれらすべてをリネームするなりして横にどけます(上書きでインストールは成功しませんでした)

後、SIDとかをメモります(orahome/network/admin/listener.oraあたりをみるとSIDとGlobal DB名がわかりますよ、ちゃんとリスナーに登録されていればですが)


まず普通にOracleをインストール、有名だが猿でもできるインストール。
途中で押しつけがましくDBを作成させられるが、適当なものをダミーで作るなりしておいてもいいし、上でメモったSIDでDBを作ってもかまいません。


終わったらば、Oracle系のサービスをすべて止めて、避けておいたc:\oracle\ora81を上書きで戻します。


改めてDatabase Configuration Assistantを起動し、メモったSID、Global Dbnameを入力してダミーのDBを作成。
途中で\ora81\database\initsid.oraや、PWDSID.oraを消さないといけないと言われるので、コピーしておきます。


DBを作成したら、作成直後に起動してしまうサービスを止め、\adminと\oradataの中のダミーをリネームして、本物と差し替える。\ora81\database\のinitsid.oraなどを戻す。

おもむろにサービスから起動する。リスナーも再起動する。


以前と変わらぬ方法でsqlplusでつないでみる、つなげたらselectしてみる。


うまく行ったら奇声を上げて喜びましょう。


漏れは一発でつなげなかった!
具体的なトラブルシュートは以下。


sqlplusでつなぐも
ORA-01034:ORACLE not available
ORA-27101:shared memory realm dos not exist
といわれてしまう。
最初はListenerの設定かとおもい、\ora81\network\ADMIN\listener.oraを開き、中のコネクター設定を確認する(IPが変わっていないか、等)しかし問題なし、そもそもListenerのログにもその旨エラーが乗っているので違うらしい。

と言う事でDB起動時のエラーを捜すもAlertログ(\admin\sid\bdump\sidALRT.log)にはなにも出力されておらず、意味がわからん(;´Д`)と途方に暮れた。

そこで、なにげなく\admin\sidを、確保していた物から今回ダミーに使った物にもどしてみた。なんと起動した!
謎だ(;´Д`)謎すぎる。とりあえずうごいたので(パラメーターは変わってしまったかもしれないが)よしとする。


同様に他のリポジトリも修復中、次も問題発生。
ERROR: ORA-01033: ORACLE initialization or shutdown in progress
と出てしまった、ALRTログを見るとalter database openまで行っていない。いくら待ってもopenされない。
調べてみるとPWDSID.oraをコピーし忘れていただけだったのでDBが公開に移れなかったらしい、単純ミス。


以上二つの問題以外は特に何の問題もなく作業はおわりました、スッキリ。


と言う事でOracleをまるまるバックアップしておいて、手で戻す事は出来ます。ディレクトリバックアップでもOracleはバックアップ出来るのです。Snapshotの取れる値段の高いストレージや、どこぞの動作中にフルミラーが取れるようなバックアップソフトをつかえれば、むしろNLSLANGがどうとかしちめんどくせーうえに激遅いexp/impなんてやってらんねーぜー(´ー`)ニラ ってかんじ、笑い


また行儀のいい人に怒られるな。

*1:なんで修復セットアップではCD起動中にベンダー提供ドライバを読み込ませた場合に、HDDにインストールされるOSにそのドライバを組み込んでくれないのだろう…、新規インストールではちゃんとドライバを組み込んでくれるのに。つかセーフモードにドライバを組み込むモードが必要じゃないだろうか。あと、FDDからしか読めないのは欠陥だ。