赞
踩
目录
在WINDOWS下,安装完Oracle会自动完成好网络配置实现网络连接,但是在Linux下,得自己手动配置才行。客户端有tnsnames.ora的配置文件来配置网络服务名,如服务器地址,监听端口,数据库SID等。而服务器端有listener.ora配置文件来配置监听器,如监听协议、地址及其他信息。从本地访问数据库服务器,首先要开启OracleServiceORCL服务,如果是通过网络访问数据库服务器,还要启动OracleOraDb11g_home1TNSListener服务。
lsnrctl [status/start/stop]
在WINDOWS和Linux下都可以用上面的命令来查看/开启/停止监听服务,当然如果是在WINDOWS下还可以在控制面板的服务里通过可视化界面直接 查看/开启/停止服务。
主要文件有三个,都位于 $ORACLE_HOME\NETWORK\ADMIN路径下的 sqlnet.ora 、listener.ora、tnsnames.ora.我的这三个文件在D:\oracle\product\11.2.0\dbhome_3\NETWORK\ADMIN。直接可以用可视界面进行修改参数,或者用vim编辑。
2.1 打开sqlnet.ora 里面有这一句话:SQLNET.AUTHENTICATION_SERVICES= (NTS) 这是基于操作系统的验证方式。这可以让你在以管理员身份登录操作系统时,可以无需输入用户密码就可以以SYSDBA角色直接登录上,如下图所示。如果把NTS改成NONE,那么就是以口令形式进行登录,此时就不可以无密码直接登录了。
sqlnet.ora 里面有还有一句话:NAMES.DIRECTORY_PATH= (TNSNAMES, EZCONNECT) , 这个是连接方式。默认是先按照tnsnmanes.ora文件里指定的连接方式,如果在文件里查无相应记录则会用简单连接的方式尝试连接。想要用什么连接方式连接往括号里面加参数就行,不想用该连接方式就删除对应参数即可。参数有TNSNAMES,ONAMES,HOSTNAME,EZCONNECT。越前面的参数的越先用对应的方式尝试连接。
- sqlplus user/password@IP:端口/orcl --在cmd窗口下
- conn user/password@IP:端口orcl --在SQLPLUS窗口下
- 例如:
- sqlplus voapd/voapd@hu-PC/orcl
像这种方式就是简单连接,如果出现oracle中监听程序当前无法识别连接描述符中请求服务的错误,可以参考
https://www.cnblogs.com/telwanggs/p/10935367.html 的解决方案。
2.2listener.ora文件里有(ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1521)) ,这个是调用外部过程的监听,比如调用C++/JAVA等一些高级语言的方法程序来完成相应的任务,如果把这行删了,就无法调用外部过程了.
GLOBAL_DBNAME :全局数据库名。通过select * from global_name; 查询得出 。
PROTOCOL:监听协议,一般都使用TCP
LISTENER :监听名称,可以配置多个监听。
GLOBAL_DBNAME:全局数据库名
SID_NAME:服务名,通常和全局数据库名一致。
我的配置如图:
2.3.在客户端没有tsnames.ora文件时,除了复制别人的,还可以用netca进行可视化配置。没有tsnames,ora文件也就无法按照tnsnmanes.ora文件里指定的连接方式进行连接了。
打头的左对齐的变量就是服务名(SID),例如上文的ORCL、ORACLR_CONNECTION_DATA。
其中在ADDRESS 写上要连接服务器的端的信息,连接方式TCP,主机为hu-PC端口为1521,当然HOST也可以是IP地址、域名等.
可以在 cmd窗口中 输入 tnsping [服务名] 来看能不能ping通服务,而这里的服务名就是tsnames.ora里的SID来查找的。
3.1 在listener.ora里如果有类型下面的语句就是静态注册,指明了全局数据库名,服务名,Oracle主目录等。
- SID_LIST_LISTENER =
- (SID_LIST =
- (SID_DESC =
- (SID_NAME = CLRExtProc)
- (ORACLE_HOME = D:\oracle\product\11.2.0\dbhome_3)
- (PROGRAM = extproc)
- (ENVS = "EXTPROC_DLLS=ONLY:D:\oracle\product\11.2.0\dbhome_3\bin\oraclr11.dll")
- )
- (SID_DESC =
- (GLOBAL_DBNAME = ORCL)
- (ORACLE_HOME = D:\oracle\product\11.2.0\dbhome_3)
- (SID_NAME = ORCL)
- )
- )
3.2 在listener.ora里如果有类型下面的语句就是动态注册
- LISTENER =
- (DESCRIPTION_LIST =
- (DESCRIPTION =
- (ADDRESS = (PROTOCOL = TCP)(HOST = hu-PC)(PORT = 1521))
- (ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1521))
- )
- )
在cmd中输入lsnrctl status 如果状态为UNKNOWN就是静态注册,如果是READY就是动态注册.动态注册可以不需要listener.ora文件。在启动监听服务时需要读取listener.ora文件内容,如果没有listener.ora文件时,默认情况PMON会向LSNTCTL动态注册协议为TCP/IP,端口为1521注册到监听器。
lsnrctl status 来查看我监听状态
想要静态注册和动态注册之间转化,就需要把listener.ora的静态注册的部分给删掉,或者把listener.ora给删除。重启服务如图所示。在读listener.ora文件内容里要是没有相应的静态注册信息,待PMON进程重启后会对监听器进行动态注册。
由于PMON后台进程是随着数据库打开才会打开的,动态注册大概需要1分钟才能完成。
以管理员的身份启动cmd,输入netca会有一个界面,如图,这是一个对参数文件进行修改的可视化界面,要比上面操作文件来改参数要方便得多。监听程序配置实际上就是配置listener.ora配置文件的可视化界面。命名方法配置是配sql,ora的,本地网络服务配置tsnames.ora的。
在WIN菜单下搜索net Manageer打开,这里面可以进行静态注册,选择添加数据库,写入相应的信息,Oracle主目录就是ORACLE_HOME.
添加完数据库后,重启lsnrctl服务等待1分钟。
可以重新查看listener.ora文件,发现静态注册信息又添加上去了。
注意:不建议直接手动操作配置文件,尽量采用可视化管理工具来操作。如果出现TNS监听异常,或者服务无法打开,尝试把listener.ora备份后删除,在重新用可视化工具进行配置。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。