表題の通り、OCI(Oracle Cloud Infrastructure) Database(DBaaS) の PDB に
Java の JDBC Thin Driver で接続してみます。下記の構成で試すやで彡(゚)(゚)
Compute(Java, JDBC Thin Driver) ⇒ (Private Subnet) ⇒ DBaaS(PDB)
前回の記事の続きになります。
OCI Database(DBaaS) の PDB に sqlplus で接続してみる。(Oracle Cloud Infrastructure)
https://qiita.com/ora_gonsuke777/items/5029e8cb64fbd9fd62ce
1. 接続先情報の確認
以下のPDBに接続します。
ホスト名(Private):dbname.subnetname.vcnname.oraclevcn.com
ポート番号 :1521
PDBサービス名 :ayspdb2.subnetname.vcnname.oraclevcn.com
JDBC URL(thin) :jdbc:oracle:thin:@//dbname.subnetname.vcnname.oraclevcn.com:1521/ayspdb2.subnetname.vcnname.oraclevcn.com
2. Java のソースコード
PDBに接続してV$CONTAINERSビューからPDB名を取得してます。
接続文字列は前回同様の簡易接続(ホスト名:ポート番号/サービス名)やで彡(゚)(゚)
import java.sql.*;
public class GetContainerName {
public static void main(String[] args) {
final String path = "jdbc:oracle:thin:@//" +
"dbname.subnetname.vcnname.oraclevcn.com:" + //hostname
"1521/" + //port
"ayspdb2.subnetname.vcnname.oraclevcn.com"; //PDB Service
final String id = "xxxxxxxx"; //ID
final String pw = "yyyyyyyy"; //password
try (
Connection conn = DriverManager.getConnection(path, id, pw);
Statement stmt = conn.createStatement();
ResultSet rs = stmt.executeQuery("SELECT NAME FROM V$CONTAINERS");
) {
while (rs.next()) {
String cn = rs.getString("name");
System.out.println("Container Name => " + cn);
}
} catch(SQLException ex) {
ex.printStackTrace(); //Error
}
}
}
3. コンパイルと実行
いつもの生コンパイルなスタイル彡(゚)(゚)
export JAVA_HOME=/home/opc/work/jdk1.8.0_191
export ORACLE_HOME=/home/opc/app/opc/product/18.0.0/client_1
export PATH=${JAVA_HOME}/bin:${PATH}
javac GetContainerName.java
java -classpath .:${ORACLE_HOME}/jdbc/lib/ojdbc8.jar GetContainerName
Container Name => AYSPDB2 ★←PDB名
PDB名が出力されてるで!彡(^)(^)
4. まとめ
PDBのサービス名さえ分かっていれば、至ってフツー彡(゚)(゚)
次回は Autonomous DB(ADW/ATP) の接続を書いてみるやで。