Windows環境でOracleデータベースを再構築する最小構成手順

LinuxではOracleを別サーバーへ丸ごと移行する際、データベースを安全に停止した後、OSユーザー/グループを作り、環境変数を書き換え、$ORACLE_BASE 以下をコピーすれば再起動できる。Windowsでも同様に「OS再インストール後に最小手順で復旧」できるか検証した。

前提条件

  • OS再インストール前に D:\OracleBase 以下のディレクトリは丸ごと残してある
  • バージョンは 11gR2 (11.2.0)
  • SID は ZEN

1. 環境変数の追加

システム環境変数を GUI または setx で設定する。

setx ORACLE_HOME D:\OracleBase\product\11.2.0\dbhome_1 /M
setx PATH "%ORACLE_HOME%\bin;%PATH%" /M
setx ORACLE_SID ZEN /M

2. OS 認証用グルグループの作成

ローカルグループ ORA_DBA を作成し、AdministratorSYSTEM を追加する。

net localgroup ORA_DBA /add
net localgroup ORA_DBA Administrator /add
net localgroup ORA_DBA SYSTEM /add

3. SQL*Plus での接続確認

sqlnet.ora%ORACLE_HOME%\network\admin に存在し、次の内容になっていることを確認する。

SQLNET.AUTHENTICATION_SERVICES = (NTS)
NAMES.DIRECTORY_PATH = (TNSNAMES, EZCONNECT)

コマンドプロンプトを起動し、OS 認証で接続。

sqlplus / as sysdba
SQL> startup

4. サービス化までの落とし穴

手動起動は問題ないが、毎回 startup を実行するのは面倒。そこで oradim でサービスを作成しようとしたところ、次のエラーが発生した。

oradim -NEW -SID ZEN -STARTMODE manual -SPFILE
DIM-00019: create service error
O/S-Error: (OS 2) The system cannot find the file specified.

原因と対処

  1. レジストリ不足
    HKEY_LOCAL_MACHINE\SOFTWARE\ORACLE\KEY_OraDb11g_home1 以下に ORACLE_HOME などが存在していなかったため、手動でキーを作成した。
  2. サービスパス不一致
    oradim が内部的に参照するパスが %ORACLE_HOME% ではなく orant\bin になっていた。レジストリ値を修正後、再度実行するとサービス作成成功。
  3. 自動起動設定
    作成されたサービスは起動してもインスタンスが NOMOUNT のままだった。
    レジストリ値 ORA_ZEN_AUTOSTARTtrue に変更すると、サービス起動時に OPEN まで自動で遷移した。

5. まとめ

Windows でも Linux と同様に「環境変数+レジストリ+グループ」の3要素さえ整えれば、データベースファイルを丸ごっと移動して最小手順で復旧できる。面倒な GUI インストーラを再実行する必要はない。

タグ: Oracle Windows Database Migration Environment Variables Registry

6月15日 18:44 投稿