我有的
我有一个检查与 oracle 数据库的连接的 Perl 脚本。这是我的代码
#!/usr/bin/perl
use DBI;
my $ORACLE_SID = $ENV{'ORACLE_SID'};
$\="\n";
print "exported variable=$ORACLE_SID";
print "Connecting to DB..";
my $dbh = DBI->connect('dbi:Oracle:host=oracle;sid=$ORACLE_SID;port=1521', 'books_admin/MyPassword', '',{ RaiseError => 1, AutoCommit => 0 })or die print ("could not connect! $DBI::errstr \n");
我已经导出了 ORACLE_SIDexport ORACLE_SID=ORCLCDB
这段代码的输出是
exported variable=ORCLCDB
Connecting to DB..
DBI connect('host=oracle;sid=$ORACLE_SID;port=1521','books_admin/MyPassword',...) failed: ORA-12505: TNS:listener does not currently know of SID given in connect descriptor (DBD ERROR: OCIServerAttach) at perl.pl line 8.
似乎 ORACLE_SID 被 Perl 拾取,但未在 sid=$ORACLE_SID 中使用。为什么打印功能可以使用 $ORACLE_SID 而 sid=$ORACLE_SID 无法获取值