tnsnames.oraの中の(CONNECT_DATA=に SIDだったりSERVICE_NAMEだったりしますが、どのような違いがあるのでしょうか?
どちらでもつながるのでいいかとは思いますが、何かメリット・デメリットでもあるのでしょうか?
それとも過去の遺物が未だ共存しているだけでしょうか?
SIDはインスタンスにつけられた名前だと知っていますが、SERVICE_NAMEってなんですか?

このQ&Aに関連する最新のQ&A

A 回答 (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に移すだけです。
    • good
    • 2
この回答へのお礼

ありがとうございます 大変参考になりました!

お礼日時:2011/07/19 23:45

http://search.yahoo.co.jp/search?b=1&n=10&ei=UTF …

上記の検索リンク順にたどってゆくとわかると思います。

tnsnames.ora

からたどると、確かにわかりにくい説明ばかりかもしれません。いや、実際そうですね。このファイルは互換性のために、いまだに存在して言うかと私は思っています。

これらが使用去られるようになったのはVer7 くらいからだったと思います(今11?)。

ファイルから見るとよくわからないので、GUIツールから見て、ガイドを読んでゆくとわかると思います。DB管理ツールですね。エンタープライズXXXだったかな?

GUIで変えると、ああ、ここが変わるんだ、とわかるはずです。実験できるなら、名前に、全て設定箇所か特定できる名前をつけるといいです。

通常ホスト名とか、グループ(チーム名)を、いろんなところにつけてしまうから、これって何の役に立っているのと、新人君からよく聞かれます。
    • good
    • 0
この回答へのお礼

ありがとうございます 大変参考になりました!

お礼日時:2011/07/19 23:45

こんにちわ。



> ・・・どのような違いがあるのでしょうか?
SID はインスタンスに付けられた名前です。

通常の環境では、SID, SERVICE_NAME のどちらでも構いませんが、
RAC 環境の場合ノード毎にインスタンス名が異なるのでSERVICE_NAME
で指定できるようになっていたと思います。
    • good
    • 1
この回答へのお礼

ありがとうございます 大変参考になりました!

お礼日時:2011/07/19 23:45

このQ&Aに関連する人気のQ&A

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています

関連するカテゴリからQ&Aを探す

このQ&Aを見た人が検索しているワード

このQ&Aと関連する良く見られている質問

QSIDの設定が保存されていない?

ORACLEのDATABASEフォルダをコピーしてデータベースサーバーを移設しようとしております。
Listnerやtnsnameを設定し、下記のコマンドでSIDとサービスの登録を行いました。
Set ORACLE_SID=SID名
oradim80 -new -sid SID名 -intpwd ORACLE -startmode auto -pfile ~\initSID名.ora

これでサービス起動し、接続も出来ました。

しかし、DOSプロンプトからSVRMGR30を実行するとまず接続出来ないと出て、その後にconnect internal/oracleとすると接続出来ませんでした。
試しに、初めにSet ORACLE_SID=SID名をしてからSVRMGR30を起動すると接続出来ました。

DATABASEフォルダをコピーしてくる方法ではSIDの設定は保持されないのでしょうか?こんな経験がありましたらどうか教えて下さい。
よろしくお願いします。
WindowsNT
Oracle8.0.4

Aベストアンサー

デフォルト接続先などの情報は、レジストリに持っているので、ファイルだけ持ってきてもダメですね。
オラクル関係のレジストリ情報も連れてくれば解決する話です。

Qtnsnames.oraファイルについて

初心者の質問で申し訳ないのですが。。。。

下記サイトからOracle Database 10g Client Release(10.2.0.3)を
ダウンロードしてインストールしました。

(URL)
http://www.oracle.com/technology/software/products/database/oracle10g/htdocs/10203vista.html

インストール後、Visual Studioの開発環境からデータソースの新規追加を行い、接続テストを試みたところ、
以下のエラーが出力されました。

(Error)
ORA-12514: TNS:listener does not currently know of service requested in connect descriptor

いろいろ調べていると、上記エラーの発生原因として、tnsnames.oraファイルの内容に誤りがあるのでは?
という認識をもっているのですが、
肝心のtnsnames.oraファイルがOracle Clientのインストール環境下に存在しません。

そもそも、tnsnames.oraファイルというのは、クライアント側で設定するものではないのでしょうか??

基本的な質問で本当に申し訳ないのですが、
どなたかご回答をお願い致します。

初心者の質問で申し訳ないのですが。。。。

下記サイトからOracle Database 10g Client Release(10.2.0.3)を
ダウンロードしてインストールしました。

(URL)
http://www.oracle.com/technology/software/products/database/oracle10g/htdocs/10203vista.html

インストール後、Visual Studioの開発環境からデータソースの新規追加を行い、接続テストを試みたところ、
以下のエラーが出力されました。

(Error)
ORA-12514: TNS:listener does not currently know of service requested in connect de...続きを読む

Aベストアンサー

tnsnames.ora, listener.ora
たしかに、いろいろと分かりにくいですよね


今回のエラーは
ORA-12514: TNS:listener
でありますので、 DBサーバ側の tnsnames.oraは関係ありません。
listener.ora そして DBNAMEの問題です。

listenr.oraは、TNSリスナーの設定ファイルです。

質問に書かれているリンク先から、
Oracle Database 10g Release 2 (10.2.0.3/10.2.0.4)
Enterprise/Standard Edition for Microsoft Windows Vista and Windows 2008
をダウンロードして、インストールしたと理解しました。

>tnsnames.oraファイルというのは、クライアント側で設定するものではないのでしょうか

その通りです。詳細は異なりますが、おおまかに、
tnsnames.oraは、クライアントで設定します。

そして、サーバー側で設置するものが、
listener.oraです。

not currently know of service とあります。
これは、
サーバーのlistener.oraが設定している、Service名と、
クライアントの tnsnames.oraが設定いる Service名が一致しな
いことを意味しています

9i(正式には8i)以降は、listener.oraの中にサービス名を記入せず、
動的リスナーであることが多いので、今回は、すでに起動中の
リスナーから確認してみましょう

◆実際にやってみましょう

DBサーバー側で
コマンドプロンプトを起動してください

C:\Users\MOTOTAKA>lsnrctl

LSNRCTL for 32-bit Windows: Version 10.2.0.3.0 - Production on 08-10月-2009

Copyright (c) 1991, 2006, Oracle. All rights reserved.

LSNRCTLへようこそ。詳細は"help"と入力してください。

◆状況を確認します

LSNRCTL> status
(DESCRIPTION=(ADDRESS=(PROTOCOL=IPC)(KEY=EXTPROC1)))に接続中
リスナーのステータス
------------------------
別名 LISTENER
バージョン TNSLSNR for 32-bit Windows: Version 10.2.0.3.0 - Pr
開始日 08-10月-2009 23:57:00
稼働時間 0 日 0 時間 0 分 48 秒
トレース・レベル off
セキュリティ ON: Local OS Authentication
SNMP OFF
パラメータ・ファイル C:\oracle\product\10.2.0\db_1\network\admin\listener
ログ・ファイル C:\oracle\product\10.2.0\db_1\network\log\listener.
リスニング・エンドポイントのサマリー...
(DESCRIPTION=(ADDRESS=(PROTOCOL=ipc)(PIPENAME=\\.\pipe\EXTPROC1ipc)))
(DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=MOTOTAKA-PC)(PORT=1521)))
サービスのサマリー...
サービス"ORCL_XPT"には、1件のインスタンスがあります。
インスタンス"orcl"、状態READYには、このサービスに対する1件のハンドラがあります
サービス"PLSExtProc"には、1件のインスタンスがあります。
インスタンス"PLSExtProc"、状態UNKNOWNには、このサービスに対する1件のハンドラが
サービス"orcl"には、1件のインスタンスがあります。
インスタンス"orclsid"、状態READYには、このサービスに対する1件のハンドラがあります
コマンドは正常に終了しました。
LSNRCTL>


いろいろありますが、この

サービス"orcl"には、1件のインスタンスがあります。
インスタンス"orclsid"、状態READYには、このサービスに対する1件のハンドラがあります

がサービス名です。ですので、この場合は、
サービス名が orcl
この名称(大文字小文字関係なし)と、
クライアントの tnsnames.ora のサービス名を合わせる必要があります。
ちなみに、
SID(インスタンス名)が orclsid
になります。


◆ クライアントの tnsnames.oraをみてみます

MMM =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = 127.0.0.1)(PORT = 15211))
)
(CONNECT_DATA =
(SID = XE)
)
)

このようになっていたら、
サービス名接続ではなく、SID接続になります。

よって、サービス名 orcl で接続させためには、

MMM =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = 127.0.0.1)(PORT = 15211))
)
(CONNECT_DATA =
(SERVICE_NAME = ORCL)
)
)

としてください。
サービス名は、大文字小文字関係なしです。

これにより、

今回のエラー
ORA-12514: TNS:listener
は、解決します

Your DBA MOTO:TAKER

tnsnames.ora, listener.ora
たしかに、いろいろと分かりにくいですよね


今回のエラーは
ORA-12514: TNS:listener
でありますので、 DBサーバ側の tnsnames.oraは関係ありません。
listener.ora そして DBNAMEの問題です。

listenr.oraは、TNSリスナーの設定ファイルです。

質問に書かれているリンク先から、
Oracle Database 10g Release 2 (10.2.0.3/10.2.0.4)
Enterprise/Standard Edition for Microsoft Windows Vista and Windows 2008
をダウンロードして、インストールしたと理解しま...続きを読む

QPL/SQL 実行中のSID

自作のストアドプロシージャのどの関数がいつ呼ばれたかを記録したいと思いました。
例えば FUNC_A という関数があって、その関数の先頭で、その関数を実行しているセッションのSIDと関数名を取得できないものでしょうか。

そのようなパッケージ DBMS_**** みたいなものがあって、下記のような感じで使えたらなあと考えています。
------------------
FUNC_A
IS
sid NUMBER;
funcName VARCHAR2(30);
BEGIN
SELECT DBMS_****.GET_EXECUTING_SID INTO sid FROM DUAL;
SELECT DBMS_****.GET_CURRENT_FUNC INTO funcName FROM DUAL;
...
(sid と funcName を現時刻とともに記録)
END;
------------------

このような目的に合致したパッケージ、あるいはこの目的を実現する方法などありますでしょうか。

よろしくお願いします

Aベストアンサー

dda167さん

蛇足や余計なお世話などではありませんね。

質問者さんの欲しい値を取るには、

select SYS_CONTEXT ('USERENV', 'SID') from dual;

こちらですね・・・

ご指摘ありがとうございました。


また、関数名について回答していませんでした。
確実に使えるかは分からないですが、DBMS_UTILITY.FORMAT_CALL_STACKの戻り値のコールスタックの内容から取得できるかもしれません。
当方の環境(10g XE)で少し試してみました。
インデントしていないので見づらいですが・・

--ストアド名を返すファンクション
create or replace function get_name
return varchar2
is
callstack varchar2(2000);
currentname varchar2(2000);
begin
callstack := DBMS_UTILITY.FORMAT_CALL_STACK;
/*
コールスタックの最初には、このファンクション自身の情報が入っているため
2つ目のストアド名を取得する
*/
currentname := regexp_substr(callstack, 'procedure.+$|function.+$|package.+$',1,2,'im');
return currentname;
end;
/

--上記ファンクションを呼ぶだけのファンクション
create or replace function func_a return number
is
begin
dbms_output.put_line(get_name);
return 0;
end;
/

--プロシージャ
create or replace procedure proc_a
is
begin
dbms_output.put_line(get_name);
end;
/

--パッケージ
create or replace package pack_a is
procedure proc_a;
end;
/

create or replace package body pack_a is
procedure proc_a is
begin
dbms_output.put_line(get_name);
end;
end;
/

--無名ブロックで上記ファンクションらを実行
set serveroutput on
declare
w_num number;
begin
w_num := func_a; --function スキーマ名.FUNC_A
proc_a; --procedure スキーマ名.PROC_A
pack_a.proc_a; --package body スキーマ名.PACK_A
end;
/
set serveoutput off

無名ブロックのコード内にある、コメントの内容が出力されました。
パッケージの場合は、プロシージャ名までは取得できないようです。

参考になれば幸いです。

dda167さん

蛇足や余計なお世話などではありませんね。

質問者さんの欲しい値を取るには、

select SYS_CONTEXT ('USERENV', 'SID') from dual;

こちらですね・・・

ご指摘ありがとうございました。


また、関数名について回答していませんでした。
確実に使えるかは分からないですが、DBMS_UTILITY.FORMAT_CALL_STACKの戻り値のコールスタックの内容から取得できるかもしれません。
当方の環境(10g XE)で少し試してみました。
インデントしていないので見づらいですが・・

--ストアド名を返すファンクシ...続きを読む

Q「.ora」「.dbf」の違い

Oracle8を利用していて、領域がすくなくなったので
「DBA STUDIO」を利用し、新規にデータファイルを追加
作成しました。既存のデータファイルを類似作成したのですが、その際の拡張子が「.ora」となっていました。
#元ファイルの拡張子は「.dbf」
これは、どちらもデータファイルとして扱われるのでしょうか???

Aベストアンサー

昔、Windows系では拡張子oraでファイルが作成されていましたし、自分でスクリプトを流す場合にもoraを使っていました。

Unix系では、以前から拡張子がdbfで作るのが慣例となっていました。

Oracleのシステムテーブル(v$datafileなど)には、フルパスでファイル名が記録されます。
その際、oraでもdbfでも、またそれ以外でも区別なく登録されるので、いずれもデータファイルとして扱われます。

どちらかに統一したい場合には、DBA権限をもつユーザーで接続し、
「ALTER DATABASE RENAME FILE 古いファイル名 TO 新しいファイル名;」
で変更してください。

QSIDとSERVICE_NAMEの違いとは?

tnsnames.oraの中の(CONNECT_DATA=に SIDだったりSERVICE_NAMEだったりしますが、どのような違いがあるのでしょうか?
どちらでもつながるのでいいかとは思いますが、何かメリット・デメリットでもあるのでしょうか?
それとも過去の遺物が未だ共存しているだけでしょうか?
SIDはインスタンスにつけられた名前だと知っていますが、SERVICE_NAMEってなんですか?

Aベストアンサー

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に移すだけです。

SIDはインスタンスの識別子、service_nameはサービス名。
インスタンスとサービスの違いはRAC を勉強されるとよくわかると思います。

サービス名は初期化パラメータのservice_namesで設定します。
設定されていない場合は先述のとおりdb_unuque_name.db_domainになります。
(これが同義と誤解されやすい原因となっているわけですが)

ところで、service_namesパラメータですが、複数形になっていることからもわかるように、複数のサービス名をコンマ区切りで指定できるようになっています。

これをこのように...続きを読む

QORACLE_SIDについて

一つのサーバAがあったとします。このサーバに対してデータベース名が1,2,3,4,5というものが5つあったとします。この5つのデータベースに対して一つずつ、ORACLE_SIDが存在し、すべて同じorclだったとします。このようなことは可能でしょうか?また、可能であればクライアントからどのようにして接続先を選ぶのでしょうか?教えてください。

Aベストアンサー

こんにちは。

No.1の方がおっしゃっているように、同一サーバ内では
ORACLE_SIDの値を重複させ、起動する事は出来ません。
なのでクライアントからの接続も考慮する必要なしです。
(起動するインスタンスが常に1つのみという事であればまた別です)

No.2の方のグローバルデータベースは、同一データベース名を
識別するためのものであり、この質問とは無関係です。

#No.1にて回答されているためポイント辞退

QSIDSって・・・

SIDSって・・・
この8月に出産したのですが、41歳にして初産、初めての事だらけで不安でいっぱいです。赤ちゃんは32週で出産したので、まだNICUにいます。1700gで産まれましたが、現在2000gちょっとに増えました。今はNICUにいるので安心ですが、退院してからが不安です。SIDS対策のおくるみを購入したり、夜も気をつけてみていようとは思いますがSIDSが怖いな・・・と。つくづく子供を育てあげた世のお母さん(我が母も含めて)はすごいなぁ・・・と思っています。
みなさん、こんな事で悩んだりしないのでしょうか?

Aベストアンサー

心配ですよね。
うちも出産してからはなかなか眠れず、子供の様子をちょこちょこ見て、息してるかな…なんて触ったり、タオルがかかってないか、俯せになってないか、確認したり気にしてましたよ~。夜中の授乳回数が多い時期はぐっすり寝た記憶ないですね…。
でもね、子供って結構強いですよ。
周りに子供は沢山いるけど当たり前のように生まれて来る事だって、かなり奇跡…ですよね。

うちは子供が一歳半過ぎて色々楽になった頃に、原因不明の大きい病気にかかり入院して…。その時はかなり活発に動き回ってたんですが、気付かなかったら命の危険もあったんです。
でもそんな状況でも乗り越えて退院し、すくすく育ち、今周りの子供と全く変わらず、元気に幼稚園に行ってます。
病気になった時に、「この子は妊娠、出産を乗り越えて産まれて来たんだから、絶対に大丈夫!」って何故か強く思ってました。そう思わなきゃって思ってた所もありますけどね。

今年に入って二人目を妊娠したものの、流産してしまい…やっぱり産まれて来る事って、すごい事なんだなって改めて思いましたよ。

初めてだと分からない事ばかりで、毎日大丈夫かな?って心配ばかりですよね。でも、不安な事は電話でも保健センターにいる保健師さんに相談して聞いたりして、少しでも不安な気持ちを解消して安心に変えた方が良いですよ。
借りられる手があるなら、どんどん利用して気分転換とか体力回復して…自分でも勉強したり、毎日子供と向き合って生活するうちに、赤ちゃんと一緒にママとして少しずつ成長して、気持ちも強くなれます。大丈夫ですよ。

私は今となっては子供より早く寝てしまう事もあるダメなママですf^_^;

心配ですよね。
うちも出産してからはなかなか眠れず、子供の様子をちょこちょこ見て、息してるかな…なんて触ったり、タオルがかかってないか、俯せになってないか、確認したり気にしてましたよ~。夜中の授乳回数が多い時期はぐっすり寝た記憶ないですね…。
でもね、子供って結構強いですよ。
周りに子供は沢山いるけど当たり前のように生まれて来る事だって、かなり奇跡…ですよね。

うちは子供が一歳半過ぎて色々楽になった頃に、原因不明の大きい病気にかかり入院して…。その時はかなり活発に動き回って...続きを読む

QFunction内に記述したdbms_output.put_lineの表示について

Functionのテスト(デバッグ)にて、
dbms_output.put_lineを使用しております。

しかし、
SQL*Plusで「SET SERVEROUTPUT ON」を発行してから
SELECT文を発行しても、
「dbms_output.put_line」で指定した値が表示されません。

ソースにはdbms_output.put_line文を入力しておりますし、
コンパイルも通っております。

SELECT文にてdbms_output.put_lineで指定した値を表示するには、
どのようにすればよいのでしょうか?

なお環境は、
Oracle8iを使用しております。

Aベストアンサー

ひょっとしてこれ?

dbms_outputはPL/SQLでのみ動くので、

declare
a varchar2(1);
begin
select fnc(2) into a from tbl
where col1 = 'hoge' ;
end;
/

なら出力されますが、

select fnc(2) from tbl;

だと出力されません。

QSIDとは?

Oracle使用の参考書を買ったんですが、データベースにはMysqlを使おうと思っていろいろとやっている最中です。XMLファイルの設定で『データベースのホスト、ポート番号、SID等は環境に合わせて変更する必要があります』と書かれてあるのですが、SIDとはなんなんでしょうか?
また私がしようとしている、Oracle用に書かれてあるプログラムをMysqlに書きかえるってことは困難なのでしょうか?お願いします。

Aベストアンサー

いきなり XML ファイルの一部を取り出されても、わかりません、て。

Servlet か何かですか?

少なくとも、Oracle では SID と呼んでいるものに相当するものが Mysql のデータベース名ですから
どこかに記述する必要があります。

また、それを読み込んで connect する部分も手を入れる必要があるかもしれません。

QTNSNAMS.ORAの設定がうまくできない・・・

ロ-カルネイミングパラメタのTNSNAMS.ORAに書き込む内容について教えてください。
CONNECT_DATAにSlDとSERVlCE_NAMEとかっていう項目がありますよね
これって両方設定しなくてはいけないのでしょうか?
それぞれどういった役目を果たしているのかが理解できてはいないのですが・・・

なぜかわからないのですがHOSTにIPアドレスで書いたときSERVlCE_NAMEでDBにつなぐことができるのですが、HOSTにホス卜名で書いたときはつながません。しかし、逆にSlDではつなぐことができます。

さっぱり理由がわかりません・・・
DB以外のことでIPやホスト名を使っても問題なしです。DBにつなぐことだけおかしいです。
DBのデ-タは8I→9I→10Gと引き継いできています。
サーバはWinR2 2008です。

Aベストアンサー

こんにちわ。

> これって両方設定しなくてはいけないのでしょうか?
接続する対象が特定できれば良いので、どちらか一方で構わないです。

SID指定/SERVICE_NAME 指定でつながったり、つながらなかったりとの
事ですが、つながらない時ってどんなエラーが出ているのでしょう?


このQ&Aを見た人がよく見るQ&A

人気Q&Aランキング