使用连接字符串从命令行连接到SQL Plus


41

假设我有一个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)))

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

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

提前谢谢了!!


3
假设您拥有正确的主机/端口,在我看来,实例未在运行或未在侦听器中注册。
Colin't Hart 2014年

1
使用ezconnect:sqlplus x/y@c:a/b
Dieter DHoker 2014年

1
作为记录,如果我用引号将它包围起来,那么您的第二个示例(至少)对我有用。像x @“(DESCRIPTION =(地址=(协议= TCP)(HOST = c)(PORT = a))(CONNECT_DATA =(SID = b)))”
rogerdpack

在窗口开始-> oracleservicexe中打开->服务,它对我有用。
Prakash

Answers:


74

你试过了吗

sqlplus username/password@host:port/service
sqlplus x/y@c:a/b

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


2
它运行完美
Gajotres 2015年

4
哪个版本?在CentOS上对我不起作用错误:ORA-12154:TNS:无法解析指定的连接标识符
Edmondo1984年

默认端口号:1521
Ivan Chau'8

4
我有SID而不是服务,因此使用“:”代替“ /”对我有用sqlplus username / password @ host:port:sid
Pratik Goenka

1
随附的sqlplus v11.2.0.1.0不支持host:port语法。似乎11.2.0.4.0已经支持了……
Givenkoa

12

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

myDb  =
 (DESCRIPTION =
   (ADDRESS_LIST =
     (ADDRESS = (PROTOCOL = TCP)(Host = c)(Port =a))
   )
 (CONNECT_DATA =
   (SERVICE_NAME =b)
 )
)

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

sqlplus x / y @ myDb


为避免在命令行上输入密码,请参见注释中的链接:serverfault.com/a/87038/27813
rogerdpack 2015年

7

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

错误的:(您的字符串)

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

正确:

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

2

您的sqlplus行看起来正确,请验证以下内容:

  1. 您可以作为sysdba在数据库服务器本身上进行连接。
  2. 您可以在数据库服务器本身上以尝试使用的用户身份进行连接。
  3. 您可以从尝试连接的计算机ping数据库服务器。
  4. 您可以从尝试连接的计算机上监听监听器。

如果所有这些都签出了,您可能想要创建一条新的连接线以确保您没有错字。


1

也许您的数据库没有启动。如果计算机已重新启动,并且该实例未设置为自动启动(并且该实例未手动启动),则可能需要自己启动该服务。

如果可以访问“服务”屏幕,则可以从那里进行操作;或者,您可以从命令行执行此操作。

转到命令提示符,然后输入以下命令:

set oracle_sid=ORCL

net start oracleserviceORCL

第一个设置Oracle SID;第二个设置Oracle SID。第二个实际上启动了服务。


0

从sqlplus帮助中提取:

可以采用“网络服务名称”或“轻松连接”的形式。

  @[<net_service_name> | [//]Host[:Port]/<service_name>]

-2

我发现很容易进行远程桌面连接并打开命令提示符,然后按以下方式进行连接:

sqlplus sys/YourPassword as sysdba


-3

您应该启动数据库的服务。为此,转到“开始”菜单->“运行并启动”,services.msc然后在其中搜索数据库服务并启动它。之后,它将开始工作。


By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.