从事Oracle相关工作的人,每天都会使用各种工具连接到Oracle数据库,比如:SQL*Plus、PL/SQL、TOAD、SQLDeveloper等等,下面就列举了几种连接到Oracle的方式,本例中使用的是SQL*Plus为例。

1、Easy Connect命名方式

这种方式是一种很简单的方式,它不需要去访问tnsnames.ora文件,而去直接连接数据库。

语法:

CONNECT username@[//]host[:port][/[service_name][:server]][/instance_name]]
Enter password: password

使用示例:

[oracle@rhel6 admin]$ sqlplus /nolog

SQL*Plus: Release 11.2.0.1.0 Production on Thu Jun 1 15:34:21 2017

Copyright (c) 1982, 2009, Oracle. All rights reserved.

idle>conn zx@192.168.56.2:1522/orcl
ERROR:
ORA-12504: TNS:listener was not given the SERVICE_NAME in CONNECT_DATA

idle>conn zx@'192.168.56.2:1522/orcl'
Enter password:
Connected.
zx@ORCL>conn zx/zx@'192.168.56.2:1522/orcl'
Connected.
zx@ORCL>conn zx/zx@192.168.56.2:1522/orcl
Connected.
zx@ORCL>conn zx@192.168.56.2:1522/orcl
ERROR:
ORA-12504: TNS:listener was not given the SERVICE_NAME in CONNECT_DATA


Warning: You are no longer connected to ORACLE.

从上面的例子中可以看到在Linux平台上使用Easy Connect连接时,如果连接串中没有密码,则需要把连接串使用引号引起来,否则会报错ORA-12504。而连接串中包含密码时则不需要使用引号引起来。

这是一种很简单的连接数据库的方法,不需要配置任何文件。

更详细的信息参考:​​http://docs.oracle.com/cd/E11882_01/network.112/e41945/naming.htm#NETAG255​

2、Local命名方式

Local命名方式需要把网络服务名添加到tnsnames.ora文件中,每个网络服务器对应一个连接描述符。这种方法也是工作中最常会用到的方法。

下面是一个连接描述符的例子:

orcl=
(DESCRIPTION=
(ADDRESS=(PROTOCOL=tcp)(HOST=192.168.56.2)(PORT=1522))
(CONNECT_DATA=
(SERVICE_NAME=orcl)))

tnsnames.ora文件一般存放在$ORACLE_HOME/network/admin目录下。

使用语法:

CONNECT username@net_service_name
Enter password: password

连接示例:

[oracle@rhel6 admin]$ sqlplus /nolog

SQL*Plus: Release 11.2.0.1.0 Production on Thu Jun 1 15:49:55 2017

Copyright (c) 1982, 2009, Oracle. All rights reserved.

idle>conn zx@orcl
Enter password:
Connected.
zx@ORCL>

从上面的例子中可以看到,在连接串中只需要指定对应的连接服务名就可以连接到对应的数据库。

可以使用OEM、netmgr、netca对tnsnames.ora进行配置。

tnsnames.ora中各参数的含义详细描述详见:​​http://docs.oracle.com/cd/E11882_01/network.112/e10835/tnsnames.htm#NETRF007​

3、Directory命名方式

详细参考:​​http://docs.oracle.com/cd/E11882_01/network.112/e41945/naming.htm#NETAG265​

4、External命名方式

详细参考:​​http://docs.oracle.com/cd/E11882_01/network.112/e41945/naming.htm#NETAG277​