Oracle

Oracle:與 sqlplus 連接,但不是來自 perl

  • January 21, 2020

我需要從 perl 腳本連接到 Oracle 數據庫,它在我的測試和使用 sqlplus 時有效,但在生產中無效。這是情況的總結:

Oracle 11g XE (11.2.0.2.0) : (Test environment)
  sqlplus : OK
  perl    : OK

Oracle 11g    (11.2.0.4.0) : (Production environment)
  sqlplus : OK
  perl    : ERROR

報告的錯誤是:Connect failed because target host or object does not exist

我已經三次檢查了連接設置並且沒有弄錯。

規格:

  • 測試伺服器:Windows Server 2012
  • 生產伺服器:Windows Server(未知版本)
  • 客戶端:Ubuntu 18.04 x64
  • Perl:5.26.1
  • SQL*Plus:12.2.0.1.0

SQL*Plus 命令:

sqlplus64 user/password@192.168.0.1/db_sid

Perl 腳本:

#!/usr/bin/perl
use DBI;
$driver = "Oracle";
$sid    = "db_sid";
$host   = "192.168.0.1";
$dsn    = "DBI:$driver:sid=$sid;host=$host";
$dbh    = DBI->connect($dsn, "user", "password");

注意:直到下個月,我才能在生產環境中測試或執行任何東西。

可能是什麼問題?

連接字元串格式錯誤。採用

$dsn = "DBI:$driver:$host/$sid";

引用自:https://dba.stackexchange.com/questions/256148