英語は私の母国語ではありません。
システム/パスワードのようにsysdbaとしてoracle(linux)にsqldeveloper(window)でログインしようとすると
サービス名を介して失敗し、ORA-0131 を返します:権限が不十分です
しかしシド?合格しました
どんな違い?サービス名に接続する方法は?
英語は私の母国語ではありません。
システム/パスワードのようにsysdbaとしてoracle(linux)にsqldeveloper(window)でログインしようとすると
サービス名を介して失敗し、ORA-0131 を返します:権限が不十分です
しかしシド?合格しました
どんな違い?サービス名に接続する方法は?
Thomas Kyte はその違いを見事に説明しています。
サービス名は、SID よりも柔軟です。
データベースは、1 つ以上のサービス名を使用してリスナーに動的に登録できます。実際、同じサービス名を使用して複数のデータベースをリスナーに登録できます (内部ではすべてが同じデータベースである複数のインスタンスがあるクラスター化された環境について考えてみてください)。
一方、データベースには単一の SID があります。そして、1 つの SID が 1 つのデータベースに割り当てられます。純粋な 1 対 1 の関係です。
サービスは多対多の関係です。
サービス名は動的登録で使用されます。データは、起動後にリスナーに登録されます。それができたら、接続できます。
SIDを使用すると、リスナーに「この特定のデータベースに接続してほしい、「アドレス」はわかっているので、どうぞ」と伝えるようなものです。
サービスを使用すると、リクエストにサービスを提供できるデータベース、そのサービスを使用して登録するデータベースに連絡するようにリスナーに依頼します。
詳細はこちらhttps://asktom.oracle.com/pls/asktom/f?p=100:11:0::::P11_QUESTION_ID:1508737000346067364
同様の質問が 6 年前のスタック オーバーフローで尋ねられました。どのように SID が Oracle tnsnames.ora のサービス名と異なるか
テスト環境で、 と をいじってみましょtnsnames.ora
うlistener.ora
。私の知る限り、12cservice_name
以降、Oracleは柔軟で多対多の関係があるため、のみを使用します。間違っていると判断した場合は、ドキュメントから相互検証します。