Windows 2003サーバー上のOracle 11.2.0.3インストールのサービス名を変更しようとしています。
インストール中に、サービス名はデフォルトドメインで定義されましたが、それを取り除きたいと思います。
サービス名mydb.foo.bar
を次のように変更するためにこれまでに行ったこと(および以前に機能したこと)mydb
:
alter system set service_names = 'mydb' scope = both;
alter database rename global_name to mydb;
うまくいったようです:
SQL>パラメータ名を表示 名前タイプ値 ------------------------------------ ----------- --- --------------------------- db_name文字列mydb db_unique_name文字列mydb global_namesブールFALSE instance_name文字列mydb service_names文字列mydb SQL>
(上記の出力から関連性のないいくつかのプロパティを削除しました)
次に、を使用alter system register
してリスナーに再登録します。
これは効果がなかったので、データベースとリスナーを再起動しましたが、まだ運がありません。
現在の状況は次のとおりです。
select name from v$active_services
戻り値:
SERVICE_ID | NAME | ネットワーク名 ----------- + ----------------- + -------------------- 1 | SYS $ BACKGROUND | 2 | SYS $ USERS | 3 | mydb | mydb 5 | mydbXDB | mydbXDB 6 | mydb.foo.bar | mydb.foo.bar
そのため、何らかの理由で古いサービス名がまだ存在し、実行されています。
を使用してサービスを停止しようとするとき
SQL> exec dbms_service.stop_service( 'mydb.foo.bar'); PL / SQLプロシージャが正常に完了しました。
エラーは報告されませんが、サービスを削除しようとすると、Oracleは私に許可しません:
SQL> exec dbms_service.delete_service( 'mydb.foo.bar'); BEGIN dbms_service.delete_service( 'mydb.foo.bar'); 終わり; * 1行目のエラー: ORA-44305:サービスmydb.foo.barが実行されています ORA-06512:「SYS.DBMS_SYS_ERROR」の86行目 ORA-06512:「SYS.DBMS_SERVICE」の454行目 ORA-06512:「SYS.DBMS_SERVICE」の343行目 ORA-06512:1行目
私はそのサービスを使用して開いている接続がないことを確認しました:
select count(*)
FROM v$session
where service_name = 'mydb.foo.bar';
返された0
(ゼロ)
私もoradimを使用してWindowsサービスを再作成しましたが、役に立ちませんでした。
ある時点で私は走った
alter system set service_names = 'mydb,mydb.foo.bar' scope = both;
それが今私が両方を持っている理由でしょうか?
しかし、service_namesを1つの名前だけに変更した後、2番目の名前はなくなっているはずですよね。
2番目のサービスを廃止できない場合は、長いサービス名ではなく、短いサービス名を使用してインスタンスをリスナーに登録するだけで十分です。
私はかなり明白なものを見逃していると確信していますが、それが何であるか理解できません。