質問

なぜ 2 つ必要なのでしょうか?どちらかを使用する必要がある場合は?

役に立ちましたか?

解決

@DAC

要するに:sid = dbの一意の名前、servicename =接続時に使用されるエイリアス

厳密には真実ではありません。SID = インスタンスの一意の名前 (マシン上で実行されている Oracle プロセスなど)。Oracle では、「データベース」をファイルとみなします。

サービス名 = インスタンス (または複数のインスタンス) のエイリアス。この主な目的は、クラスターを実行している場合、クライアントが「SALES.acme.com に接続してください」と言うことができ、DBA が SALES.acme.com リクエストに使用できるインスタンスの数をその場で変更できることです。あるいは、クライアントが設定を変更することなく、SALES.acme.com をまったく別のデータベースに移動することもできます。

他のヒント

参照してください: http://www.sap-img.com/oracle-database/finding-oracle-sid-of-a-database.htm

Oracle SidsとOracleサービス名の違いは何ですか。1つの構成ツールがサービス名を探し、次にSIDSを探します!どうしたの?!

Oracle Sidは、データベースにリモートで接続し、このサービス名がクライアントのtnsnames.oraファイルに記録され、それがクライアントのファイルに記録されているときに提供するTNSエイリアスであるインスタンス/データベースを一意に識別するユニークな名前です。 SIDと同じです。また、必要な他の名前を付けることもできます。

service_nameは、データベースがリスナーに登録できるOracle 8i以降の新機能です。この方法でデータベースがリスナーに登録されている場合は、tnsnames.oraでservice_nameパラメーターを使用できます。

また、OPS(RAC)がある場合は、インスタンスごとに異なるservice_nameがあります。

service_namesこのインスタンスが接続するデータベースサービスの1つ以上の名前を指定します。同じデータベースの異なる使用を区別するために、複数のサービス名を指定できます。例えば:

service_names = sales.acme.com、widgetsales.acme.com

また、サービス名を使用して、複製を使用して2つの異なるデータベースから使用できる単一のサービスを識別することもできます。

Oracle Parallel Server環境では、すべてのインスタンスにこのパラメーターを設定する必要があります。

要するに:SID = DB インスタンスの一意の名前、ServiceName = 接続時に使用されるエイリアス

これが古いことであることは承知していますが、次のような扱いにくいツール、用途、ユーザー、または症状に対処する場合は、sid とサービスの名前付けでは、次のように tnsnames エントリに少しの変更を加えることができます。

mySID, mySID.whereever.com =
(DESCRIPTION =
  (ADDRESS_LIST =
    (ADDRESS = (PROTOCOL = TCP)(HOST = myHostname)(PORT = 1521))
  )
  (CONNECT_DATA =
    (SERVICE_NAME = mySID.whereever.com)
    (SID = mySID)
    (SERVER = DEDICATED)
  )
)

質問と多少関連性があり、Oracle ネットワーキングの明確ではない特異性を回避しようとするときに役立つ可能性があるため、これをここに残しておこうと思いました。

SID とサービス名とは何ですか

Oracle のドキュメントを参照してください。 https://docs.oracle.com/cd/B19306_01/network.102/b14212/concepts.htm

将来上記のリンクにアクセスできなくなった場合に備えて、この回答の執筆時点では、上記のリンクは、『データベース ネット サービス管理者ガイド』の接続概念の章の「データベース サービスとデータベース インスタンスの識別」トピックに移動します。 。このガイドは、Oracle Databaseオンライン・ドキュメント、10gリリース2 (10.2)の一部としてOracleによって公開されています。

どちらかを使用する必要がある場合は?なぜ 2 つ必要なのでしょうか?

RAC 環境での以下のマッピングを検討してください。

SID SERVICE_NAME
bob1 ボブ
ボブ2 ボブ
ボブ3 ボブ
bob4 ボブ

負荷分散が構成されている場合、リスナーは 4 つの SID すべてにわたってワークロードを「分散」します。負荷分散が構成されている場合でも、必要に応じて SERVICE_NAME の代わりに SID を使用して bob1 に常に接続できます。

ご参照ください、 https://community.oracle.com/thread/4049517

Oracle 用語集によると:

SID は、Oracle データベース インスタンスの一意の名前です。---> Oracleデータベースを切り替えるには、ユーザーは目的のSID <---を指定する必要があります。SIDは、tnsnames.oraファイルの接続記述子の接続データ部分と、ristener.oraファイルのネットワークリスナーの定義に含まれています。システムIDとも呼ばれます。Oracleサービス名は、「myoracleserviceorcl」のような記述的なものです。Windowsでは、Windowsサービスの下でサービスとして実行されているサービス名を実行できます。

より良いアプローチとして、TNSNAMES.ORA で SID を使用する必要があります。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top