
No.3ベストアンサー
- 回答日時:
SIDはインスタンスの識別子、service_nameはサービス名。
インスタンスとサービスの違いはRAC を勉強されるとよくわかると思います。
サービス名は初期化パラメータのservice_namesで設定します。
設定されていない場合は先述のとおりdb_unuque_name.db_domainになります。
(これが同義と誤解されやすい原因となっているわけですが)
ところで、service_namesパラメータですが、複数形になっていることからもわかるように、複数のサービス名をコンマ区切りで指定できるようになっています。
これをこのように使います。
2ノードRAC環境で、インスタンス1(SID=hoge1)、インスタンス2(SID=hoge2)があったとします。
ノードを意識することなく接続できるようにするためにクライアント側のtnsnames.oraにはこんな設定を追加します。
HOGE.EXAMPLE.COM
(DESCRIPTION =
(LOAD_BALANCE = ON)
(ADDRESS = (PROTOCOL = TCP)(HOST = host1)(PORT = 1521))
(ADDRESS = (PROTOCOL = TCP)(HOST = host2)(PORT = 1521))
(CONNECT_DATA = (SERVER = DECIDATED)(SERVICE_NAME = hoge.example.com))
)
インスタンス1とインスタンス2のservice_namesパラメータにhoge.example.comを追加します。すると、インスタンス1とインスタンス2にラウンドロビンで接続できるようになります。
ここで、もしtnsnames.oraのservice_name=...がSID=hoge1だったらどうなるでしょう?
インスタンス2のSIDはhoge2ですから一致せず、インスタンス2には接続できず、いつもインスタンス1に繋がってしまいます。
次に、一時的にメンテナンスのためにインスタンス2にアクセスしてほしくないケースを考えます。service_nameであれば、インスタンス2のservice_namesパラメータからhoge.example.comを削除することで(動的に変更できます)直ちにインスタンス1にのみ接続されるようにできます。
ここで、もしORACLE_SIDだったら・・・変更のためにインスタンスの再起動が必要になってしまいますね?
最後にservice_namesは複数登録できます。3ノードRAC環境において、オンライン処理(service_name=ONLINE)、バッチ処理(service_name=BATCH)があったとします。
バッチ処理は1つのノード(インスタンス1)でのみ処理したいとします。オンライン処理は3つのノードでしたいとします。
そんなとき、service_nameであれば、
<<サーバ側の初期化パラメータ>>
1:service_names = online, batch
2:service_names = online
3.service_names = online
<<クライアント側のtnsnames.ora>>
オンライン処理
ONLINE.EXAMPLE.COM
(DESCRIPTION =
(LOAD_BALANCE = ON)
(ADDRESS = (PROTOCOL = TCP)(HOST = host1)(PORT = 1521))
(ADDRESS = (PROTOCOL = TCP)(HOST = host2)(PORT = 1521))
(CONNECT_DATA = (SERVER = DECIDATED)(SERVICE_NAME = online.example.com))
)
BATCH.EXAMPLE.COM
(DESCRIPTION =
(LOAD_BALANCE = ON)
(ADDRESS = (PROTOCOL = TCP)(HOST = host1)(PORT = 1521))
(ADDRESS = (PROTOCOL = TCP)(HOST = host2)(PORT = 1521))
(CONNECT_DATA = (SERVER = DECIDATED)(SERVICE_NAME = batch.example.com))
)
と、クライアント側では接続先サーバを気にすることなく構成できますね?
BATCHのノードを1から2にしたい場合の変更はサーバ側のみでできますよね?
serivce_namesの"batch"設定をノード2に移すだけです。
No.2
- 回答日時:
上記の検索リンク順にたどってゆくとわかると思います。
tnsnames.ora
からたどると、確かにわかりにくい説明ばかりかもしれません。いや、実際そうですね。このファイルは互換性のために、いまだに存在して言うかと私は思っています。
これらが使用去られるようになったのはVer7 くらいからだったと思います(今11?)。
ファイルから見るとよくわからないので、GUIツールから見て、ガイドを読んでゆくとわかると思います。DB管理ツールですね。エンタープライズXXXだったかな?
GUIで変えると、ああ、ここが変わるんだ、とわかるはずです。実験できるなら、名前に、全て設定箇所か特定できる名前をつけるといいです。
通常ホスト名とか、グループ(チーム名)を、いろんなところにつけてしまうから、これって何の役に立っているのと、新人君からよく聞かれます。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
このQ&Aを見た人はこんなQ&Aも見ています
-
データを削除しても表領域の使用率が減りません
Oracle
-
ORA-00959: 表領域'****'は存在しません
Oracle
-
Oracleでインスタンスを複数にしたい
Oracle
-
-
4
Oracleで上書きImportはできますか?
その他(データベース)
-
5
ORA-01013のエラーについて経験のある方お願いします。
Oracle
-
6
PL/SQLで@ファイル名が反応しません
Oracle
-
7
突然オラクルへ接続できなくなりました
Oracle
-
8
datapumpの実行方法について
Oracle
-
9
フルインポートで警告が発生します
Oracle
-
10
SQLローダーCSV取込で、囲み文字がデータ中に入っている場合について
Oracle
-
11
「タイプ初期化子が例外をスローしました」エラー何?
Visual Basic(VBA)
-
12
カーソルオープンでエラー(ORA-01012)
C言語・C++・C#
-
13
NUMBER(N,M) としたときの、格納データサイズ(バイト)
Oracle
-
14
importについて
Oracle
-
15
CloseとDisposeの違い
Visual Basic(VBA)
-
16
コマンドプロンプトの「%1」と「%~1」の違いがわからない
その他(プログラミング・Web制作)
-
17
oracle spool SJIS → UTF-8
Oracle
-
18
oracleのimp-00002エラーについて
Oracle
-
19
コマンドプロンプトのエラーについて
その他(パソコン・周辺機器)
-
20
コマンドプロンプトで、ポート番号を知る方法
Excel(エクセル)
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
SIDとSERVICE_NAMEの違いとは?
-
突然オラクルへ接続できなくな...
-
異なる文字コードの環境にイン...
-
ORA-01092 ORACLEインスタンス...
-
tnsnames.oraファイルについて
-
Oracleサービスが突然起動でき...
-
.NET Frameworkがコントロール...
-
CloverをインストールしたUSBメ...
-
DB2で SQL1032N start databas...
-
データソース名および指定され...
-
ORA-12170のエラーについて
-
Oracle11g SQLPlusログインにつ...
-
oracleのメモリ使用量が97%ほど...
-
正しいSQLなのに「ORA-00936: ...
-
ソケット通信で接続クライアン...
-
QNDを使うとクライアント側の情...
-
LONG RAW型のイメージデータ取...
-
Windows Storeを使わずに付箋を...
-
AnyDVDとレジストリKey
-
WiFi環境があればTikTokLiteは...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
SIDとSERVICE_NAMEの違いとは?
-
突然オラクルへ接続できなくな...
-
異なる文字コードの環境にイン...
-
Oracle10g と9iの同居
-
データベースへの接続について
-
Sqldeveloperに関して
-
SybaseCentral
-
SQLNET.ORAの設定について
-
ORA-01092 ORACLEインスタンス...
-
OracleのUID
-
Enterprise Manager を使用し、...
-
Oracle「ローカル・ネット・サ...
-
tnsnames.oraファイルについて
-
サーバ上のOracleデータベース...
-
共有サーバ接続で ora-12523
-
OracleのWindowsプロセス名
-
UNIX上のアプリケーションで別...
-
ORACLE9i Clientのエラーについて
-
OracleClientサーバIPアドレス変更
-
PHP5でOracle接続がエラー
おすすめ情報