oracle网络配置主要包括两部分,服务器端配置和客户端配置。在服务端通过配置服务端监听程序(listener.ora)来支持远程连接数据库。客户端配置(tnsnames.ora)来连接远程数据库。
服务端可以通过oracle自带工具Net Manager来配置,其实也是修改listener.ora。系统启动监听是就是读取listener.ora的信息来配置监听程序。所以也可以直接编写listener.ora。这个文件在$ORACLE_HOME\NETWORK\ADMIN\下,$ORACLE_HOME就是oracle的主目录,我的是D:\Oracle\product\11.2.0\dbhome_1。listener.ora的代码如下:
# listener.ora Network Configuration File: D:\Oracle\product\11.2.0\dbhome_1\\network\admin\listener.ora
# Generated by Oracle configuration tools.
SID_LIST_LISTENER =
(SID_LIST =
(SID_DESC =
(SID_NAME = PLSExtProc)
(ORACLE_HOME = D:\Oracle\product\11.2.0\dbhome_1)
(PROGRAM = extproc)
)
(SID_DESC =
(SID_NAME = blackhaha)
(ORACLE_HOME = D:\Oracle\product\11.2.0\dbhome_1)
(GLOBAL_DBNAME = blackhah)
)
)
LISTENER =
(DESCRIPTION_LIST =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = localhost)(PORT = 1521))
)
)
ADR_BASE_LISTENER = D:\Oracle
其中要注意oracle的数据库名的字符数不能大于8,sid可以(如上红色标记);
客户端配置可以通过net configuration Assistant的来配置,其实也是工具也是通过修改tnsnames.ora来配置,所以也可以直接编辑tnsnames.ora文件;
tnsnames.ora的代码如下:
# tnsnames.ora Network Configuration File: D:\Oracle\product\11.2.0\dbhome_1\network\admin\tnsnames.ora
# Generated by Oracle configuration tools.
BLACKHAHA =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = localhost)(PORT = 1521))
(CONNECT_DATA =
(SERVICE_NAME = blackhaha)
(SID_NAME = blackhaha)
)
)
最后要说明的是在服务器上同时有listener.ora和tnsnames.ora,当在同一来机子上通过监听来访问数据库,如em管理器来访问数据库,就用这两个文件。而要是远程登入的话是通过远程的tnsnames.ora来和服务端的listener.ora来通信。
配置完后进入cmd界面运行lsnrctl进入LSNRCTL,执行start就启动监听。启动成功会显示命令运行成功。通过执行status来查看状态。在cmd下tnsping blackhaha来测试连接有没成功。blackhaha是tnsnames.ora设置的服务名。成功会显示ok。
远程登入数据库方法:在命令行执行sqlplus进入sqlplus环境,输入用户名system@blackhaha,blackhaha是tnsnames.ora设置的服务名,再输入密码验证是否连接成功。
要是启动错误就查看数据库名和sid设置有没问题。