Oracle XEインスタンスのSIDを変更するにはどうすればよいですか
-
03-07-2019 - |
質問
Oracle XEデータベースのSID(サービス名ではない)を本番データベースに一致するように変更する必要がありました。
オンラインで検索しようとしたとき、ほとんどのページでtnsnames.oraを介してサービス名を変更または追加することが説明されていました。それは私がやるべきことではありません。
解決
asktom 記事には答えがありますが、書式設定と冗長性のために理解するのが難しくなるため、ここに要約を示します。
[XE_HOME]は、Oracle XEがインストールされている場所を意味します。通常、これは C:\ oraclexe \ app \ oracle \ product \ 10.2.0 \ server
です。
管理者権限があることを確認してください。そうでない場合、手順は失敗します。
- SPFILEを構成します(必要に応じて古いファイルを削除できます)。
-
copy [XE_HOME] \ dbs \ spfileXE.ora [XE_HOME] \ dbs \ spfileNEW_SID_NAME.ora
-
copy [XE_HOME] \ database \ initXE.ora [XE_HOME] \ database \ initNEW_SID_NAME.ora
-
[XE_HOME] \ database \ initNEW_SID_NAME.ora
を編集:次のような1行を含める必要があります:SPFILE = '[XE_HOME] \ server \ dbs / spfileNEW_SID_NAME.ora'
-
- シャットダウンして、古いサービスを新しいものに置き換えます。
-
sqlplus / as sysdba
およびshutdown
を実行します
-
lsnrctl stop
-
oradim -new -sid NEW_SID_NAME -startmode auto -pfile [XE_HOME] \ database \ initNEW_SID_NAME.ora
-
oradim -delete -sid XE
-
lsnrctl start
-
- ORACLE_SID環境プロパティを更新します(システム設定>詳細>環境)
- Oracleにリスナーへの登録を強制する
-
sqlplus / as sysdba
を実行し、alter system register;
を実行します
-
次のクエリを実行して、SIDが変更されたことを確認できます。 select instance_name from v $ instance;
他のヒント
Asktomには答えがあります、私はそれに到達するために多くのgoogle-fuを経験しなければなりませんでした。
ヨハネスが投稿したソリューションに問題があったため、追加の手順を実行する必要がありました。 sqlplus / as sysdba を実行してOracleに接続しようとすると(ステップ4)、次のようになりました:
ERROR: ORA-12560: TNS:protocol adapter error
これに対する解決策は、次の行を実行することでした:
oradim -start -sid NEW_SID_NAME
その後接続/正常に動作しましたが、システムまたは人事でNEW_SID_NAMEに接続しようとすると、別の問題が発生しました:
ERROR: ORA-12514: TNS:listener does not currently know of service requested in connect descriptor
クエリ select in instance_name from v $ instance;
で、リスナーがNEW_SID_NAMEになることを確認しました。しかし、コマンドラインで lsnrctl status
を実行するか、 dba_servicesから選択名を照会する
では、リスナーとしてNEW_SID_NAMEが表示されませんでした。
この問題の解決策は、sqlplusで次の文を実行することでした。
alter system set service_names='NEW_SID_NAME';
alter system register;
を実行する必要があるかもしれません。
この2つのステップを実行した後、システムとHRを使用してNEW_SID_NAMEに接続できます。
希望する
バージョン11gでは、以前のソリューションはすべて機能しませんでした... sqlplus / as sysdba を実行しようとすると、常に次のエラーが表示されます:
エラー:ORA-12560:TNS:プロトコルアダプターエラー
幸いなことに、[XE_HOME] \ config \ scriptsの下に、やりたいことを実行するスクリプトが見つかりました。このスクリプトの名前はXE.batで、プロセスに沿ってsysPasswordを要求する新しいデータベースをゼロからインスタンス化します。だから私がやったのは:
- 既存のサービスがある場合は停止して削除します:
oradim -delete -sid XE
- リスナーを停止します
- Johannesの説明に従ってSPFILEを構成します
- スクリプトXE.batのコピーを作成します。好きな名前を付けることができます
-
次のようにスクリプトのコピーを編集します。
- 行を変更" set ORACLE_SID = XE" " set ORACLE_SID = NEW_SID_NAME"
- " -sid XE"が表示されている場所を変更します" -sid NEW_SID_NAME"へ
- " orapwd.exe"を呼び出す行を更新します。 PWDXE.oraではなくPWDNEW_SID_NAME.oraというファイルを指すコマンド
- spfileXE.oraをinitXE.oraにエコーする行を更新して、spfileNEW_SID_NAME.oraをinitNEW_SID_NAME.oraにエコーします(この部分では、ステップ3が役に立たない場合がありますが、万が一に備えて行うことをお勧めします...)
-
スクリプトを実行します... SYSTEMパスワードの入力を何度か促します
1の値を入力します
または
2の値を入力します
それで、NEW_SID_NAMEを含む新しいデータベースが稼働します!!