使用连接字符串从命令行连接到 sql plus

Edv*_*nas 54 oracle sqlplus string

假设我有一个 Oracle 数据库。我有一个用户名 = x,密码 = y,数据库 = z。我也知道端口 = a,SID = b,主机名 = c。

那么我需要如何正确连接呢?我使用了许多选项,例如:

sqlplus x/y@'(DESCRIPTION=(ADDRESS_LIST=(ADDRESS=(PROTOCOL=TCP)(HOST=c)(PORT=a))(CONNECT_DATA=(SID=z)(SERVER=DEDICATED)))'

sqlplus (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=c)(PORT=a))(CONNECT_DATA=(SID=b)))
Run Code Online (Sandbox Code Playgroud)

提交这些命令行通常会给我返回错误消息,例如:

ORA-12560:TNS:协议适配器错误
ORA-12514:TNS:侦听器当前不知道服务

提前谢谢了!!

Han*_*lin 100

你试过了吗

sqlplus username/password@host:port/service
sqlplus x/y@c:a/b
Run Code Online (Sandbox Code Playgroud)

sqlplus 的现代版本(版本 11 或更高版本)理解此语法,您不需要 tnsnames.ora 文件。

  • 哪个版本?在 CentOS 上对我不起作用 错误:ORA-12154:TNS:无法解析指定的连接标识符 (5认同)
  • 我有 SID 而不是服务,所以使用“:”而不是“/”对我有用 sqlplus username/password@host:port:sid (4认同)
  • 它完美地工作 (3认同)

小智 12

最简单的就是使用tnsnames.ora文件连接数据库。为此,对其进行编辑并添加一个新条目:该文件通常位于 $ORACLE HOME\NETWORK\ADMIN 目录中。

myDb  =
 (DESCRIPTION =
   (ADDRESS_LIST =
     (ADDRESS = (PROTOCOL = TCP)(Host = c)(Port =a))
   )
 (CONNECT_DATA =
   (SERVICE_NAME =b)
 )
)
Run Code Online (Sandbox Code Playgroud)

然后你可以连接到数据库:

sqlplus x/y@myDb


小智 10

原始海报...在第一个选项中,您错过了一个右括号

不正确:(你的字符串)

sqlplus x/y@'(DESCRIPTION=(ADDRESS_LIST=(ADDRESS=(PROTOCOL=TCP)(HOST=c)(PORT=a))(CONNECT_DATA=(SID=z)(SERVER=DEDICATED)))'
Run Code Online (Sandbox Code Playgroud)

正确的:

sqlplus x/y@'(DESCRIPTION=(ADDRESS_LIST=(ADDRESS=(PROTOCOL=TCP)(HOST=c)(PORT=a))(CONNECT_DATA=(SID=z)(SERVER=DEDICATED))))'
Run Code Online (Sandbox Code Playgroud)