• ベストアンサー

Oracleの動作の仕組みについて

Oracleの動作の仕組みについてご教示ください。 1.初回、OracleクライアントがOracleサーバーのデータベースに接続するときは、接続要求をリスナーが受け付けるが、二回目以降、同じデータベースに接続する際、リスナーに接続要求を行わずに直接データベースとやり取りを行うという認識でいいでしょうか。 2.1の認識で間違いがない場合、Windows、Linuxとも同じでしょうか。また、バージョンによって違いがありますでしょうか。

この投稿のマルチメディアは削除されているためご覧いただけません。
noname#242248
noname#242248
  • Oracle
  • 回答数2
  • ありがとう数7

質問者が選んだベストアンサー

  • ベストアンサー
  • muyoshid
  • ベストアンサー率72% (230/318)
回答No.2

こんにちわ。 > Oracleでの動的ポートがわからないのでご教示頂けますでしょうか。 デフォルトでは、TNS Listener がClient からの接続要求を1521ポートで 待っていますが、接続要求を受け取った後はClient とサーバープロセスが 別のポートで通信し合う事かと。 この辺が参考になるかと思います。 http://www.oracle.co.jp/forum/thread.jspa?threadID=27000005

noname#242248
質問者

お礼

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

その他の回答 (1)

  • muyoshid
  • ベストアンサー率72% (230/318)
回答No.1

こんにちわ。 先ず、SQL*Net 経由を前提として説明します。 > 二回目以降、同じデータベースに接続する際、リスナーに接続要求を > 行わずに直接データベースとやり取りを行うという認識でいいでしょうか。 DB に接続する時は必ずListener に接続要求を行います。 Listener は接続要求を受け取ると、サーバープロセスを生成します。 接続後の要求 (SQL 文の実行) については、Listener を介さずにサーバープロセスが 相手をしてくれます。 サーバー側が共有サーバー構成になっていた時は、サーバープロセスの生成を行わず 既に生成済みの共有サーバープロセスにディスパッチしますが、基本的なトコロは同じです。 > Windows、Linuxとも同じでしょうか。また、バージョンによって違いがありますでしょうか。 Windows の場合は、thread ベース, Linux (Unix) の場合はprocess ベースと言う違いがあります。 なので、Linux ではps コマンドでサーバープロセスを確認する事ができますが、Windows では Task Manager で見てもプロセスとしては見れません、

noname#242248
質問者

お礼

ありがとうございます。

noname#242248
質問者

補足

ありがとうございます。 SQL*Netでの接続になります。 >DB に接続する時は必ずListener に接続要求を行います。 > >Listener は接続要求を受け取ると、サーバープロセスを生成します。 >接続後の要求 (SQL 文の実行) については、Listener を介さずにサーバープロセスが >相手をしてくれます。 > >サーバー側が共有サーバー構成になっていた時は、サーバープロセスの生成を行わず >既に生成済みの共有サーバープロセスにディスパッチしますが、基本的なトコロは同じです。 この仕組みはWindows、Linuxとも同じでしょうか。 Listenerはデフォルトで1521だと思いますが、サーバープロセスとやり取りする場合、ポート については動的ポートで行われますでしょうか。 SonicWALLのNSA400のライブデモにて、"ファイアウォール設定" ‐ "詳細"にて"動的ポート機能 への対応"として"オラクルSQLNetを有効にする"という設定項目があります。 この項目が有効の場合、SonicWALLがOracleで使用される動的ポートを判断してポート解放を行う 機能とのことを確認しましたが、Oracleでの動的ポートがわからないのでご教示頂けますでしょうか。 ----------------------------------------------- http://nsa2400j.demo.sonicwall.com/main.html -----------------------------------------------

関連するQ&A

  • オラクルに詳しい方、教えてください

    Windows2000サーバにOracle8iをインストールしています。 クライアントからサーバに対して オラクルのインスタンスとリスナーが起動していることを確認したい場合、 oracle.exe と listener.exe が起動していることを確認できれば 「OK」と言えますか? 「データベースに接続できる状態」と言えるでしょうか? 毎日の定例作業として行う予定です。 あまりオラクルに詳しくないので、 知識のある方、ぜひ教えてください。

  • エクセル2003からODBCでoracleのデータを取り出す

    oracle10gをwindows2003serverにインストールしました。 oracleは完全な初心者です。 最終目的は、クライアントのエクセル2003からODBCでサーバーのoracleのデータを取り出すということを行う必要があります。 クライアントから接続するためにリスナーの設定を「Net Configuration Assistant」で行っています。 クライアント側からの接続テストで「接続中...ORA-12514: TNS: リスナーは接続記述子で要求されたサービスを現在認識していません テストが失敗しました。」というエラーが出て接続ができません。 tnspingは成功します。リスナーは起動中となっています。 サーバー側にクライアントとしてのローカルネットワーク構成をして試してみても同じ状況でした。 どこに問題があるのでしょうか? サーバー:windows2003server クライアント:xp

  • PHP4によるOracleへの接続

    PHP4(Linux)からOracle 8.1.5(WindowsNT) への接続を考えております。 なるべく構成をシンプルにしたいのとコストをかけたくないという理由から、Linuxにインストールすべきクライアントソフトを模索しています。 Oracleに明るくないもので素人調べなのですが、通常ですとOracle for Linuxのサーバライセンスを購入しそれに付属するクライアントをインストールする。これが一番素直なのでしょうか。 またODBCでも接続が可能と小耳に挟んだのですが、この場合ですとクライアント側には特にライセンスやクライアントソフトなどは必要ないのでしょうか。 妙な事を言っているのかもしれません、どなかお知恵をお貸し願えれば幸いです。 よろしくお願いいたします。

  • AccessからOracleへのODBC接続

    現在、Oracleで作成したデータベースに接続して 検索するソフトを、Accessで作成してあります。 Oracleに接続をするのに、 ODBCを使用しているのですが、 最初依頼があったときは「Oracle8」のときだったので、 「Oracle8」のみ接続可能なプログラムが組んであり、 「Oracle10g」の入っているPCでは接続できないという問題が発生しました。 そこで、「Oracle8」と「Oracle10g」とも接続出来るように プログラムを書き換えたのですが、 現在は「Oracle11g」が最新になっていると思うので、 ゆくゆくはそれに対応しなければならないなあ、と思っています。 そうすると、Oracleがバージョンアップするたびに、 ソフトのプログラムを書き換えなくてはならなくなり、 効率的ではないな…と思いまして… Oracleのバージョンが違っていても、 自分のPCのOracleのバージョンを自動認識して、 AccessからOracleへ接続する方法はあるのでしょうか? ちなみに現在は、TableDefsコレクションを使用して、 まず、Oracle8で繋ぎにいき、それでエラーが起これば Oracle10gで繋ぎにいく、という処理を行っています。 【参考コード】 dim db as object dim tdf as object set db = CurrentDb set tdf = TableDefs("テーブル名") tdf.Connect = "(※テーブルのプロパティの説明のところに入る文)" tbf.RefreshLink (※ここが8と10gで違ってくる) よろしくお願いします。

  • オラクルに接続できない

    すみません、オラクルに接続しようとすると、 「ORA-01033:Oracleの初期化またはシャットダウン中です」とメッセージが表示され、 接続できません。 そこでsysdbaで接続し、shutdownを行った後にstartupを行うと、 「ORA-12514: TNS: リスナーは接続記述子でリクエストされたサービスを現在認識していま せん」とメッセージが表示され、復旧できない状態です。 どのようにすれば復旧・接続できるようになるのでしょうか? ちなみにオラクルはoracle11gです。

  • vbからoracleへの接続

    vbからoracleへの接続について教えて下さい。 ORACLEデータベースにoo4oを使って接続をしているのですが、Oracleクライアントをインストール済みのPCでは何ら問題なく接続できます。 OracleクライアントをインストールしていないPCではエラーメッセージがでてしまいます。 処理はこんな感じです... Public ssOra As Object       Public dbOra As OraDatabase Public dynOra As OraDynaset Set ssOra = CreateObject("OracleInProcServer.XOraSession") Set dbOra = ssOra.OpenDatabase("HRH", "HRH00/HRH00", 0&) Set dynOra = dbOra.DbCreateDynaset("select * from 消耗品_注文履歴", 0&) Set ssOra... のところでエラーとなってしまいます。エラー内容は ********実行時エラー'429'***************************** ActiveXコンポーネントはオブジェクトを作成できません ************************************************** activeX,oracle関連のDLLファイルは参照設定に登録しています。 これを解決するためにはOracleクライアントをインストールするしかないのでしょうか? また、インストールしたらエラーは本当になくなるのでしょうか? 皆様宜しくお願いします。 ちなみにクライアントPCはOS:WIN95 oracleバージョン8.1.7です

  • OracleのSQLPLUSログインについて

    sqlplusにてデータベースにアクセスできません。 どなたか知恵をお貸しください。 環境は、LinuxにOracle10gをインストールしました。 インストールと同時にデータベース(orcl)を作成しました。 インストールしたマシンにて、sqlplusを実行してみようとしているところです。 Oracleのインストール、データベースの作成が終了し、 コマンドラインから"sqlplu /nolog"を実行し、データベースに 接続しようとしましたが、エラーと表示されます。 コマンド、エラーは以下の通りです。 SQL> conn sys/manager as sysdba ERROR ORA-12162: TNS:net service name is incorrectly specified Oracleのインストール、データベースの作成を行った Linuxのユーザは"oracle"です。 この場合、ユーザ名はoracleが正しいのでしょうか?

  • Oracleクライアントの共存について

    既存環境としてOracleクライアントが実装されているサーバに 新たに別バージョンのOracleクラインアント環境を実装することは可能 でしょうか?(既存構築:Oracle8i、追加構築:Oracle11g) インストール時のインストール先指定でパスは変更できるかとおもいますが、動作として既存環境のOracleに影響が出ないのか懸念しております。

  • Oracle ORA-12224のエラーが発生しました。

    Eazy Configよりデータベースへの接続テストを行おうとしたら、「ORA-12224:TNSリスナーがありません。入力されたフィールドにエラーがあります」のメッセージが表示されます。 クライアント:NT サーバー  :NT Oracleバージョン:8.0.6 サーバーの方にはネットワークのアダプタが2つ入っている状態です。(なにかこの状況が影響しているのか・・・・) とても困っております(;;) どなたかお教え下さい。よろしくお願い致しますm(- -)m

  • WindowsXPでOracleの勉強

    データベースの勉強をしたいのでoracleを始めたいと思っていますが"Windows SP Home Edition"では動作しないんでしょうか? 下記URLの動作環境を見たところ、WindowsXPのProはあるけどHomeはありません もしXPHomeが駄目ならLinux版を利用しようと思っているんですが、動作環境にはRedHatやSUSEしか書いてません 他のOS(VineかFedoraCore)では使えまえんでしょうか? http://otn.oracle.co.jp/software/products/oracle9i/index.html