SIDがOracle tnsnames.oraのサービス名とどのように異なるか


回答:


154

@DACによる引用

つまり、SID = DBの一意の名前、ServiceName =接続時に使用されるエイリアス

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

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


1
だから、あなたの例では、SIDがあるかもしれませんSales1Sales2と、Sales3サービス名を介して利用されているすべてが、Sales

1
私は反対だと思います:あなたは多くのサービスとして利用可能な1つのSIDを持っています。次に、サービスの1つを受け取り、それを別のSID /データベースにポイントします。
Colin Nicholls、2015

Oracle SID名をTNS名と同じにすることはできますか?問題でしょうか?
user2441441

2
@ user2441441:マシューが与えられた説明で行く、私はすべてのSIDを抽象化し、複数のSIDとサービス後があり得ることにあなたが正しいという仮定であると思います
Dwarak

26

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

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

Oracle SIDはインスタンス/データベースを一意に識別する一意の名前です。サービス名はデータベースにリモートで接続するときに指定するTNSエイリアスであり、このサービス名はクライアントのTnsnames.oraファイルに記録されており、 SIDと同じで、他の名前を付けることもできます。

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

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

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

SERVICE_NAMES = sales.acme.com、widgetsales.acme.com

サービス名を使用して、レプリケーションを使用して2つの異なるデータベースから利用できる単一のサービスを識別することもできます。

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

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


よくわかりません。RACでは、インスタンスごとに異なる「INSTANCE_NAME」が必要になるのではないでしょうか。また、1つのSERVICE_NAMEを複数のインスタンスに関連付けることができますか?
Iwan Satria

20

私はこれが古くからあることを知っていますが、厄介なツール、使用、ユーザー、または症状を扱う場合、次のようにsid&serviceの名前付けで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)
  )
)

これは質問に穏やかに関連しており、オラクルネットワークの明確ではない特異性を回避しようとするときに役立つ可能性があるため、ここに残しておくと思いました。


5

SIDとサービス名とは

オラクルのドキュメントをご覧ください https://docs.oracle.com/cd/B19306_01/network.102/b14212/concepts.htmご覧ください。

上記のリンクに将来アクセスできない場合に備えて、この回答を書いている時点で、上記のリンクは「データベースネットサービス管理者ガイド」の接続概念の章にある「データベースサービスとデータベースインスタンスの識別」のトピックに移動します。 。このガイドは、Oracleによって「Oracle Database Online Documentation、10g Release 2(10.2)」の一部として発行されています。

どちらを使用する必要があるのですか?なぜ2つ必要なのですか?

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

SID SERVICE_NAME
bob1 bob
bob2 bob
bob3 bob
bob4 bob

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

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


0

Oracle用語集に従って:

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

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

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.