Mam's WebSite
建築CGパース住宅CGパース

Mamの覚書Q&A検索

トップページMamの覚書Q&A検索PHP(設定)⇒Q&A


大項目:「 PHP 」 - 中項目:「 設定 」

「 PHPからPDO経由でOracleに接続する 」

PHPからPDO経由でSID又はネットサービス名を使ってORACLEに接続するにはどうするか。
.../client/network/admin/tnsnames.ora
の設定の仕方はどうするか。


回答

■tnsnames.oraファイルの設定
・SID接続の場合
ネットサービス名=(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=接続先ホスト)(PORT=1521))(CONNECT_DATA=(SID=接続SID名)))
・サービス接続の場合
ネットサービス名=(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=接続先ホスト)(PORT=1521))(CONNECT_DATA=(SERVICE_NAME=接続サービス名)))
 
(例)
MYDB=(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=LOCALHOST)(PORT=1521))(CONNECT_DATA=(SID=mydb)))
MYDB=(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=192.168.1.2)(PORT=1521))(CONNECT_DATA=(SERVICE_NAME=mydb)))
 
■sqlplusからの接続
・sqlplusでネットサービス名で接続
sqlplus ユーザー名/パスワード@ネットサービス名
・sqlplusでSID接続(tnsnames.oraを使用せず接続)
sqlplus ユーザー名/パスワード@(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=接続先ホスト)(PORT=1521))(CONNECT_DATA=(SID=接続SID名)))
・sqlplusでサービス接続(tnsnames.oraを使用せず接続)
sqlplus ユーザー名/パスワード@(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=接続先ホスト)(PORT=1521))(CONNECT_DATA=(SERVICE_NAME=接続サービス名)))
 
(例)
sqlplus user/pass@MYDB
sqlplus user/pass@(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=LOCALHOST)(PORT=1521))(CONNECT_DATA=(SID=mydb)))
sqlplus user/pass@(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=192.168.1.2)(PORT=1521))(CONNECT_DATA=(SERVICE_NAME=mydb)))

ソース

//PHPのPDOでtnsnames.oraに設定されたネットサービス名で接続
$db = "oci:dbname=ネットサービス名";
$conn = new PDO($db,'ユーザー名','パスワード');
$stmt = $conn->exec("任意のSQL文");
 
//PHPのPDOでSID接続(tnsnames.oraを使用せず接続)
$tns = "oci:dbname=(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=接続先ホスト)(PORT=1521))(CONNECT_DATA=(SID=接続SID名)))";
$conn = new PDO($tns,'ユーザー名','パスワード');
$stmt = $conn->exec("任意のSQL文");
 
//PHPのPDOでサービス接続(tnsnames.oraを使用せず接続)
$tns = "oci:dbname=(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=接続先ホスト)(PORT=1521))(CONNECT_DATA=(SERVICE_NAME=接続サービス名)))";
$conn = new PDO($tns,'ユーザー名','パスワード');
$stmt = $conn->exec("任意のSQL文");

Mam's WebSite