通过 SQLPLUS 连接 Oracle 数据库

Posted

技术标签:

【中文标题】通过 SQLPLUS 连接 Oracle 数据库【英文标题】:Oracle Database connection via SQLPLUS 【发布时间】:2014-03-05 10:37:58 【问题描述】:

我正在尝试从 SQLPlus 连接到我的 Oracle 数据库,但无法连接。

我的机器上有 Oracle 客户端 (10g)。以下是我能够从我的 Java 应用程序连接的详细信息。

connect('dbi:Oracle://IP/wborcle', 'username', 'pwd'));

通过 SQLPLUS 连接时主机字符串是什么?

【问题讨论】:

您遇到了什么错误? ORA : 12154 TNS : 无法解析指定的连接标识符 您是否 100% 确定您使用的是 Java? DBI 是一个用于连接到 Oracle 的 Perl 库。 【参考方案1】:

试试

sqlplus username/password@host:port/service

sqlplus system/system@localhost:1521/xe

复制自 https://dba.stackexchange.com/questions/65032/connect-to-sql-plus-from-command-line-using-connection-string

【讨论】:

此方法连接Oracle数据库链接失败【参考方案2】:

当您尝试连接数据库时,Oracle 提供了几种不同的方法来查找数据库:

tnsnames.ora 条目 LDAP EZConnect ...

最常见的方法是将您要连接的数据库放入您的tnsnames.ora;通常,您的客户端安装包含一个您可以修改的示例 tnsnames.ora 文件。

最简单的方法可能是使用 EZConnect。 EZConnect 字符串的构建方式类似于

<username>/<password>@<hostname>:<port>/SID

所以在你的情况下,它(可能)会像

sqlplus scott/tiger@localhost:1521/wborcle

【讨论】:

【参考方案3】:
 sqlplus user/pass@(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(Host=hostname.network)(Port=1521))(CONNECT_DATA=(SID=remote_SID)))

也许,这可能取决于您使用的命令行环境,您需要引用字符串,例如

sqlplus "user/pass@(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(Host=hostname.network)(Port=1521))(CONNECT_DATA=(SID=remote_SID)))"

 sqlplus 'user/pass@(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(Host=hostname.network)(Port=1521))(CONNECT_DATA=(SID=remote_SID)))'

【讨论】:

您好 Mariano,您能解释一下吗?我无法理解这一点。 “你 100% 确定你在使用 Java 吗?DBI 是一个用于连接到 Oracle 的 Perl 库。”【参考方案4】: sqlplus 用户名/密码@(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(Host=hostname)(Port=1521))(CONNECT_DATA=(SID=sidname)))

【讨论】:

【参考方案5】:

如果使用标准客户端,为了使用 ezconnect 语法,您可能必须在客户端的 network/admin 目录中的 sqlnet.ora 文件中设置它

names.directory_path=(tnsnames,ezconnect)

【讨论】:

以上是关于通过 SQLPLUS 连接 Oracle 数据库的主要内容,如果未能解决你的问题,请参考以下文章

oracle连接数

Oracle连接数过多释放机制

oracle sqlplus命令和常用函数

无法通过服务名使用 SQLPLUS 连接到 oracle 数据库

用sqlplus连接数据库时,为啥会出Oracle not available错误?

sqlplus如何连接oracle数据库?