質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
JDBC

JDBC(Java DataBase Connectivity)は、Javaとリーレーショナルデータベースに接続させる基本的なAPIです。Java上でSQLステートメントを発行することで、データベースの種類に影響を受ないDB操作を可能とします。

Oracle

Oracleは、米オラクルが取り扱うリレーショナルデータベース管理システムです。メインフレームからPCまで、多様なプラットフォームに対応しています。

Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

Q&A

解決済

2回答

22414閲覧

Oracle12c JDBC 接続エラーが発生することがある

kanchan

総合スコア79

JDBC

JDBC(Java DataBase Connectivity)は、Javaとリーレーショナルデータベースに接続させる基本的なAPIです。Java上でSQLステートメントを発行することで、データベースの種類に影響を受ないDB操作を可能とします。

Oracle

Oracleは、米オラクルが取り扱うリレーショナルデータベース管理システムです。メインフレームからPCまで、多様なプラットフォームに対応しています。

Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

0グッド

0クリップ

投稿2015/06/18 02:20

vmware上のWindows2012R2 + Oracle12c(12.1.0.2) で稼働しています。
vmware上の別のWindows2012R2 + Webサーバーから、3分毎にバッチ処理としてOracleに接続しています。
この際に、30~90分に1回程度、接続エラーが発生します。

接続方法は、JDBCで、データベースURLは、
jdbc:oracle:thin:@//WIN2012:1521/PDBORCL
としています。
接続エラーは、
Unknown host specified または
Listener refused the connection with the following error
が発生します。(ほとんど次の3分後には接続できている)

listener.logには特にエラーが発生しているわけではないので、
リスナとサービスとで再更新の際に接続できなくなるのか、
仮想環境上のOS間のネットワークで、一時的に名前解決ができてないのか、
原因が判明できず、対応に行き詰まってます。

Oracle11gの同様の仮想上でも似たことがあり、listener.oraを静的構成すると解決したとの話を聞いたことがあります。

Oracle12cで、CDBとPDBがあり、listener.oraを静的構成にする場合のSIDは、PDB? CDB? 2個書く? 記述サンプルがあまりなく例があれば欲しいです。
また、根本原因はこれだ、というのがありましたらご教授下さい。

listener.oraは下記内容で動的構成(?)です

listener.ora Network Configuration File: C:\app\oracle\product\12.1.0\dbhome_1\network\admin\listener.ora

Generated by Oracle configuration tools.

SID_LIST_LISTENER =
(SID_LIST =
(SID_DESC =
(SID_NAME = CLRExtProc)
(ORACLE_HOME = C:\app\oracle\product\12.1.0\dbhome_1)
(PROGRAM = extproc)
(ENVS = "EXTPROC_DLLS=ONLY:C:\app\oracle\product\12.1.0\dbhome_1\bin\oraclr12.dll")
)
)

LISTENER =
(DESCRIPTION_LIST =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = WIN2012)(PORT = 1521))
(ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1521))
)
)

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

sho_cs

2015/06/18 04:17

Listener refused the connection with the following error の後にもメッセージが出力されていると思うのですが記載お願いします。
kanchan

2015/06/18 04:51

すいません。そこは拾えてないです。ORA-12505,ORA-12514あたりだと想定しています。
guest

回答2

0

自己解決

vmwareのネットワーク設定の問題でした。
ネットワークが瞬断することがあったのが原因でした。

投稿2015/09/28 04:47

kanchan

総合スコア79

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

質問を読む限り、ネットワークのほうが怪しいように感じます。
タイムアウトの設定を変更した場合、エラーの頻度は減りますか?

12cについてはあまりわからないのですがlistener.oraはSID_LIST_LISTENER を設定しているので静的構成になると思います。

投稿2015/06/18 04:32

sho_cs

総合スコア3541

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

kanchan

2015/06/18 04:59

タイムアウト値はありかもですね。試してみます。(明日でないと試せない) SID_LIST_LISTENER があるだけで静的構成なのかな?(インストール時に作られます) SID_LISTに、下記のようにORCL(CDB)や、PDBORCLを追加する必要がある気がしています。 ただ、PDB受けで、CDB受けでない感じになるので・・・でも、CDBは外向け用途じゃないからいいのかな? https://teratail.com/questions/11469# SID_LIST_LISTENER = (SID_LIST = (SID_DESC = (GLOBAL_DBNAME = ORCL) (ORACLE_HOME = C:\app\oracle\product\12.1.0\dbhome_1) (SID_NAME = PDBORCL) ) (SID_DESC = (SID_NAME = CLRExtProc) (ORACLE_HOME = C:\app\oracle\product\12.1.0\dbhome_1) (PROGRAM = extproc) (ENVS = "EXTPROC_DLLS=ONLY:C:\app\oracle\product\12.1.0\dbhome_1\bin\oraclr12.dll") ) )
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問