![](http://oshiete.xgoo.jp/images/v2/pc/qa/question_title.png?8acaa2e)
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で質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) VBAで時間(00:00形式)を積算(足し算)したい 1 2022/11/15 17:04
- PHP PHP MySQLに画像を直接保存 2 2022/06/05 11:50
- Ruby パイソンプログラミング 2 2022/12/03 18:44
- JavaScript sessionStorageを調べています。 1 2023/06/20 12:41
- PHP PHPで画像の渡しが上手く行きません。 1 2023/02/02 09:39
- HTML・CSS 私の能力からして間違っていないような気がします。 4 2022/09/30 13:24
- CGI perlで書いたcgiでsqliteの使い方を教えてください 2 2023/05/08 21:29
- 中学校 名前の聞き方 1 2022/09/04 15:47
- PHP 記述のおかしいところを教えて下さい。 1 2023/02/03 11:25
- PHP PHPで入力フォームでデータを確認表示画面まで送る流れを日本語で理解したいのです。 1 2023/05/29 19:12
このQ&Aを見た人はこんなQ&Aも見ています
-
「環境が人を育てる」って本当?環境によって人格や生き方は本当に変わるのか
環境が人生に与える影響は実際どれほどのものなのか、専門家の田宮由美さんに伺った。
-
ORA-01013のエラーについて経験のある方お願いします。
Oracle
-
PL/SQLで@ファイル名が反応しません
Oracle
-
datapumpの実行方法について
Oracle
-
-
4
オラクルのUPDATEで複数テーブル
Oracle
-
5
ORA-00959: 表領域'****'は存在しません
Oracle
-
6
突然オラクルへ接続できなくなりました
Oracle
-
7
SQLローダーCSV取込で、囲み文字がデータ中に入っている場合について
Oracle
-
8
日付型のフィールドに空白を入れる方法を教えてください
その他(データベース)
-
9
Oracleで上書きImportはできますか?
その他(データベース)
-
10
コマンドプロンプトで、ポート番号を知る方法
Excel(エクセル)
-
11
特定のスキーマのテーブルを一括削除したい
その他(データベース)
-
12
Statement ignored というエラー
Oracle
-
13
CLOB型へのINSERT
Oracle
-
14
SI Object Browserのテーブルスクリプト出力のやり方
その他(データベース)
-
15
Data Pump で大量データインポートの際のUNDO表領域、TEMP表領域不足エラー解消法のついて
Oracle
-
16
Oracleでの文字列連結サイズの上限
Oracle
-
17
exeファイルの中身を見ることは可能ですか?
フリーソフト
-
18
エラーを起こす方法
Oracle
-
19
「タイプ初期化子が例外をスローしました」エラー何?
Visual Basic(VBA)
-
20
FTPエラー425
その他(コンピューター・テクノロジー)
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
SIDとSERVICE_NAMEの違いとは?
-
突然オラクルへ接続できなくな...
-
ORA-12514が出た時の対処法と原因
-
異なる文字コードの環境にイン...
-
ORA-01092 ORACLEインスタンス...
-
OracleのWindowsプロセス名
-
OracleのUID
-
ORACLE9i Clientのエラーについて
-
ORA-12170のエラーについて
-
はじめまして oracleで聞きたい...
-
正しいSQLなのに「ORA-00936: ...
-
Windows Storeを使わずに付箋を...
-
ACCESSからODBC接続でORA-12504
-
OraOps10.dllのエラーについて
-
DB2で SQL1032N start databas...
-
データベース接続情報作成しま...
-
oracleのメモリ使用量が97%ほど...
-
16進数の指定の仕方
-
事務コンのデータ移行
-
Oracle10g・・ODBCで接続できない
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
SIDとSERVICE_NAMEの違いとは?
-
突然オラクルへ接続できなくな...
-
ORA-12514が出た時の対処法と原因
-
異なる文字コードの環境にイン...
-
ORA-01092 ORACLEインスタンス...
-
共有サーバ接続で ora-12523
-
Sqldeveloperに関して
-
SQLNET.ORAの設定について
-
DBサーバの接続エラー
-
tnsnames.oraファイルについて
-
Oracle Enterprise Manager 管...
-
OracleのUID
-
TNSListener サービスを再起動...
-
SID、SERVICE_NAMES、GLOBAL_DB...
-
Enterprise Manager を使用し、...
-
OracleClientサーバIPアドレス変更
-
oracle11g(64bit)に接続
-
DBサーバ接続エラーについて
-
OracleDB接続エラー(ORA-12541...
-
OracleのWindowsプロセス名
おすすめ情報