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も見ています
-
プロが教えるわが家の防犯対策術!
ホームセキュリティのプロが、家庭の防犯対策を真剣に考える 2組のご夫婦へ実際の防犯対策術をご紹介!どうすれば家と家族を守れるのかを教えます!
-
ORA-01013のエラーについて経験のある方お願いします。
Oracle
-
コマンドプロンプトの「%1」と「%~1」の違いがわからない
その他(プログラミング・Web制作)
-
datapumpの実行方法について
Oracle
-
-
4
日付型のフィールドに空白を入れる方法を教えてください
その他(データベース)
-
5
ORA-00959: 表領域'****'は存在しません
Oracle
-
6
SQLローダーCSV取込で、囲み文字がデータ中に入っている場合について
Oracle
-
7
突然オラクルへ接続できなくなりました
Oracle
-
8
バッチでテキストファイルから任意の行のみ取得したい
その他(プログラミング・Web制作)
-
9
コマンドプロンプトのエラーについて
その他(パソコン・周辺機器)
-
10
特定のスキーマのテーブルを一括削除したい
その他(データベース)
-
11
コマンドプロンプトで、ポート番号を知る方法
Excel(エクセル)
-
12
Statement ignored というエラー
Oracle
-
13
SI Object Browserのテーブルスクリプト出力のやり方
その他(データベース)
-
14
CLOB型へのINSERT
Oracle
-
15
PL/SQLで@ファイル名が反応しません
Oracle
-
16
Oracleでの文字列連結サイズの上限
Oracle
-
17
Data Pump で大量データインポートの際のUNDO表領域、TEMP表領域不足エラー解消法のついて
Oracle
-
18
不明なコマンドです(FROM")。行の残りは無視されました。 のエラー"
Oracle
-
19
Oracleで上書きImportはできますか?
その他(データベース)
-
20
SQL Plusで項目名が最後まで表示されない?
Oracle
関連するカテゴリからQ&Aを探す
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
SIDとSERVICE_NAMEの違いとは?
-
突然オラクルへ接続できなくな...
-
HTTPリスナー
-
Oracle8iでポートの固定
-
ORA-12514が出た時の対処法と原因
-
SID、SERVICE_NAMES、GLOBAL_DB...
-
異なる文字コードの環境にイン...
-
Oracle Enterprise Manager 管...
-
ORA-01092 ORACLEインスタンス...
-
CloverをインストールしたUSBメ...
-
Windows Storeを使わずに付箋を...
-
データベース接続情報作成しま...
-
OracleでEMが起動できない
-
ORA-12170のエラーについて
-
Oracle11g SQLPlusログインにつ...
-
.NET Frameworkがコントロール...
-
正しいSQLなのに「ORA-00936: ...
-
ASP.NETでのオラクルAL16UTF16...
-
東方紅魔郷
-
InsertもしくはUpdate時の文字...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
SIDとSERVICE_NAMEの違いとは?
-
突然オラクルへ接続できなくな...
-
異なる文字コードの環境にイン...
-
ORA-12514が出た時の対処法と原因
-
ORA-01092 ORACLEインスタンス...
-
DBサーバの接続エラー
-
Sqldeveloperに関して
-
tnsnames.oraファイルについて
-
共有サーバ接続で ora-12523
-
Oracleインスタンスへの接続制...
-
SQLNET.ORAの設定について
-
TNSListener サービスを再起動...
-
oracle 10g サーバ機のIPアド...
-
OASのコマンドラインからの再起動
-
【sqlplus】USER/PASS@HOSTでロ...
-
OracleDB接続エラー(ORA-12541...
-
Oracle Enterprise Manager 管...
-
ログを見ても無応答の原因がつ...
-
OracleのUID
-
OracleClientサーバIPアドレス変更
おすすめ情報