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


提交这些命令行通常会给我返回错误消息,例如: :TNS:协议适配器错误
ORA-12514:TNS:侦听器当前不了解服务


非常感谢!!

评论

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

使用ezconnect:sqlplus x / y @ c:a / b

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

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

#1 楼

您是否尝试过

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


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

评论


它完美地工作

– Gajotres
15年1月22日在13:53

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

– Edmondo1984
16年6月23日在11:35

默认端口号:1521

–周星驰
16年8月31日在7:28

我有SID而不是服务,所以使用“:”代替“ /”对我有用sqlplus username / password @ host:host:port:sid

– Pratik Goenka
17 Mar 27 '17 9:04



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

– gavenkoa
19年1月20日在18:59

#2 楼

最简单的方法是使用tnsnames.ora文件连接到数据库。为此,请对其进行编辑并添加一个新条目:
该文件通常位于$ ORACLE HOME \ NETWORK \ ADMIN目录中。 br />
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
15年2月18日在21:06

#3 楼

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

错误:(您的字符串)

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))))'


#4 楼

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


您可以在数据库服务器本身上以sysdba的身份进行连接。服务器本身。
您可以从尝试连接的计算机上ping数据库服务器。
您可以从试图连接的计算机上监听监听器。

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

#5 楼

也许您的数据库没有启动。如果计算机已重新启动,并且该实例未设置为自动启动(并且该实例未手动启动),则可能需要自己启动该服务。从那里做;或者,您可以从命令行中进行操作。

转到命令提示符并输入以下命令:

set oracle_sid=ORCL

net start oracleserviceORCL


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

#6 楼

可以从sqlplus帮助中提取:

可以采用网络服务名称
或Easy Connect的形式。

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


#7 楼

SQL * Plus 19.9.0.0显示了这种语法在第二个提示上输入它。这样,它是不可见的。而且,对于Ora19,这是我能够成功使用的连接语法,而无需tnsnames
Usage: CONN[ECT] [{logon|/|proxy} 
    [AS {SYSDBA|SYSOPER|SYSASM|SYSBACKUP|SYSDG|SYSKM|SYSRAC}] [edition=value]]
where <logon> ::= <username>[/<password>][@<connect_identifier>]
  <proxy> ::= <proxyuser>[<username>][/<password>][@<connect_identifier>]


#8 楼

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

sqlplus sys/YourPassword as sysdba

#9 楼

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

#10 楼

这对我适用于Oracle 11G

sqlplus orcl_usr/orcl_usr_pass@host/sid