oracle网络配置(以下配置文件部分只涉及动态注册)
三个配置文件 listener.ora、tnsnames.ora、sqlnet.ora(linux默认没有),都是放在$ORACLE_HOME\network\admin目录下。
listener.ora文件的说明
监听配置文件,在数据库服务端,该文件可以通过netca命令进行配置。
****************************************************************************************************************************
LISTENER =
(DESCRIPTION_LIST =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = dj)(PORT = 1521))
(ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC0))
)
)
ADR_BASE_LISTENER = /u01/app/oracle
****************************************************************************************************************************
对于LISTENER 主要是配置监听的ip地址和端口,一般通过netca配置以后就会生成一个(ADDRESS = (PROTOCOL = TCP)(HOST = hsj2)(PORT = 1521)),其中对于host建议改成对应的ip地址。
tnsnames.ora 文件的说明
这个文件用于客户端找到数据库服务器的监听,并且告诉监听需要访问的service,所以对于这个文件有三个地方的信息重要,一个是ip地址,
一个是端口号:一般都是1521,还有一个就是SERVICE_NAME。
对于这个配置文件,我们可以使用netca命令的本地命名配置进行配置,也可以只用vi编辑器直接修改
*****************************************************************************************************************************
SYD =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = dj)(PORT = 1521))
)
(CONNECT_DATA =
(SERVICE_NAME = syd)
)
)
ORCL =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = dj)(PORT = 1521))
)
(CONNECT_DATA =
(SERVICE_NAME = orcl)
)
)
******************************************************************************************************************************
sqlnet.ora文件的说明
此文件位于客户端 用于指定客户端的名称解析查询的命名方法的顺序。
位于客户端与服务端在一台机器上时 可管理数据库操作系统认证方式。
*******************************************************************************************************************************
#SQLNET.AUTHENTICATION_SERVICES= (NTS)
NAMES.DIRECTORY_PATH= (TNSNAMES,HOSTNAME)
*******************************************************************************************************************************
在windows下,SQLNET.AUTHENTICATION_SERVICES必须设置为NTS或者ALL才能使用OS认证;不设置或者设置为其他任何值都不能使用OS认证。
<Windows>
sqlnet.ora文件为空时采用Oracle密码文件验证
SQLNET.AUTHENTICATION_SERVICES= (NTS) 基于操作系统验证;
SQLNET.AUTHENTICATION_SERVICES= (NONE) 基于Oracle密码文件验证
SQLNET.AUTHENTICATION_SERVICES= (NONE,NTS) 二者并存,注意是半角,否则不识别
在linux下,在SQLNET.AUTHENTICATION_SERVICES的值设置为ALL,或者不设置的情况下,OS验证才能成功;设置为其他任何值都不能使用OS认证。
<Unix/Linux>
默认情况下Unix/Linux下的sqlnet.ora文件是没有SQLNET.AUTHENTICATION_SERVICES参数的,
此时是操作系统验证和Oracle密码验证并存,加上SQLNET.AUTHENTICATION_SERVICES这个参
数后,不管SQLNET.AUTHENTICATION_SERVICES设置为NONE还是NTS还是(NONE,NTS),都是
基于Oracle密码验证。
结论:
如果我们的客户端不能连接数据库服务器,我们可以使用以下几个步骤进行排除
如果没有启动 lnsrctl start
如果没有注册成功,手动注册命令 alter system register
c 检查客户端配置,在客户端
sqlplus system/oracle@orcl 这种方式不可以远程连接orcl数据库。
三个配置文件 listener.ora、tnsnames.ora、sqlnet.ora(linux默认没有),都是放在$ORACLE_HOME\network\admin目录下。
listener.ora文件的说明
监听配置文件,在数据库服务端,该文件可以通过netca命令进行配置。
****************************************************************************************************************************
LISTENER =
(DESCRIPTION_LIST =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = dj)(PORT = 1521))
(ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC0))
)
)
ADR_BASE_LISTENER = /u01/app/oracle
****************************************************************************************************************************
对于LISTENER 主要是配置监听的ip地址和端口,一般通过netca配置以后就会生成一个(ADDRESS = (PROTOCOL = TCP)(HOST = hsj2)(PORT = 1521)),其中对于host建议改成对应的ip地址。
tnsnames.ora 文件的说明
这个文件用于客户端找到数据库服务器的监听,并且告诉监听需要访问的service,所以对于这个文件有三个地方的信息重要,一个是ip地址,
一个是端口号:一般都是1521,还有一个就是SERVICE_NAME。
对于这个配置文件,我们可以使用netca命令的本地命名配置进行配置,也可以只用vi编辑器直接修改
*****************************************************************************************************************************
SYD =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = dj)(PORT = 1521))
)
(CONNECT_DATA =
(SERVICE_NAME = syd)
)
)
ORCL =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = dj)(PORT = 1521))
)
(CONNECT_DATA =
(SERVICE_NAME = orcl)
)
)
******************************************************************************************************************************
sqlnet.ora文件的说明
此文件位于客户端 用于指定客户端的名称解析查询的命名方法的顺序。
位于客户端与服务端在一台机器上时 可管理数据库操作系统认证方式。
*******************************************************************************************************************************
#SQLNET.AUTHENTICATION_SERVICES= (NTS)
NAMES.DIRECTORY_PATH= (TNSNAMES,HOSTNAME)
*******************************************************************************************************************************
在windows下,SQLNET.AUTHENTICATION_SERVICES必须设置为NTS或者ALL才能使用OS认证;不设置或者设置为其他任何值都不能使用OS认证。
<Windows>
sqlnet.ora文件为空时采用Oracle密码文件验证
SQLNET.AUTHENTICATION_SERVICES= (NTS) 基于操作系统验证;
SQLNET.AUTHENTICATION_SERVICES= (NONE) 基于Oracle密码文件验证
SQLNET.AUTHENTICATION_SERVICES= (NONE,NTS) 二者并存,注意是半角,否则不识别
在linux下,在SQLNET.AUTHENTICATION_SERVICES的值设置为ALL,或者不设置的情况下,OS验证才能成功;设置为其他任何值都不能使用OS认证。
<Unix/Linux>
默认情况下Unix/Linux下的sqlnet.ora文件是没有SQLNET.AUTHENTICATION_SERVICES参数的,
此时是操作系统验证和Oracle密码验证并存,加上SQLNET.AUTHENTICATION_SERVICES这个参
数后,不管SQLNET.AUTHENTICATION_SERVICES设置为NONE还是NTS还是(NONE,NTS),都是
基于Oracle密码验证。
结论:
如果我们的客户端不能连接数据库服务器,我们可以使用以下几个步骤进行排除
a 在服务器端使用本地策略连接数据库,查看数据库是否正常开启 sqlplus / as sysdba
b 查看监听程序状态是否正常,比如说没有启动监听,在监听信息中找不到对应的service和instance 。lnsrctl status如果没有启动 lnsrctl start
如果没有注册成功,手动注册命令 alter system register
c 检查客户端配置,在客户端
sqlplus system/oracle@orcl 这种方式不可以远程连接orcl数据库。
sqlplus system/oracle@192.168.100.111:1521/orcl 这种方式可以连接说明tnsnames.ora配置有问题。
客户端远程连接服务器端数据库:
服务器端的侦听器(lsnrctl)通过listener.ora文件(或不用此文件,直接用默认值)注册到服务器端已开启的实例(lsnrctl status),客户端通过读取tnsnames.ora文件里面的配置信息获取服务器的地址进而连接服务器端的数据库。