- 三个重要文件
- 基于服务端的Listener.ora
- 基于客户端的Tnsnames.ora
- 基于服务端或客户端(两端)的Sqlnet.ora(可选)
- 注:Linux环境下,安装后默认没有此三类文件,需要通过工具或手工编辑进行建立。默认的存储位置:$ORACLE_HOME/network/adminw
- Listener.ora
- 监听文件---在客户端上不起作用,在服务端上用来监听来自客户端的会话
- 监听能不能起来,和有没有Listener.ora没有关系,但是官方建议有。在默认没有Listener.ora文件的前提下,客户端也是可以连接到服务端的。
- 创建的三种方式:
- NETMGR-----此工具中的两个文件夹,代表含义如下:
- Service Naming----对应的就是$ORACLE_HOME/network/admin/tnsnames.ora
- Listeners----对应的就是$ORACLE_HOME/network/admin/listener.ora
- NETCA
- 手工编辑
- 监听状态
- lsnrctl status ----查看监听状态
- lsnrctl start [LISTENER] 启动监听 lsnrctl start xxxx;
- lsnrctl stop [LISTNER] 关闭监听
- 监听注册(实例注册)
- 动态监听注册
- Oracle默认是动态监听注册,60s轮询一次,在60s内动态完成注册。如果不想等待60s,则可以运行 alter system register 命令,则实例会立马注册成功。
- ORA报错
- ORA-012541: 无监听程序-----查看监听是否启动
- ORA-012514:监听程序当前无法识别连接描述符中的请求服务------第一想到的是实例有没有注册上
- 数据库默认的动态监听注册是往LISTENER上注册。但是通过修改参数 Local_listner,可以实现动态注册到不同的端口号监听中。
- alter system set local_listener=' ';-----即使将此参数设置为空,默认也会动态注册到LISTENER上。如果改成其他的端口,则就会往该端口上注册
- 总结:
- 默认情况下,LREG会将实例信息动态的注册到LISTENER监听上(默认端口1521);
- 如果有新的监听LSNR2(新端口号1888),要让LREG动态的将实例信息注册到LISTENER和LSNR2上,那么需要修改local_listener参数,把他们都添加进来。修改格式:SQL> alter system set local_listener='(ADDRESS=(PROTOCOL=tcp)(HOST=henry)(PORT=1521))','(ADDRESS=(PROTOCOL=tcp)(HOST=henry)(PORT=1888))' ;
- 如果所有的端口号都在LISTENER监听上(因为是默认的),所以可以将local_listener参数置空,这时在LISTENER上的所有端口,都将被动态注册实例信息。
- 静态监听注册
- 怎样辨别是动态注册还是静态注册?
- status= UNKONWN ----- 静态监听注册
- status= READY -----动态监听注册
- SID_name=‘大小写敏感’
- 在Listener.ora中添加一段代码就是静态监听注册
SID_LIST_LSNR2 =
(SID_LIST=
(SID_DESC=
(GLOBAL_DBNAME = memeda)
(ORACLE_HOME = /u01/app/oracle/product/11.2.0/dbhome_1)
(SID_NAME =CDB1) )
)
- 动态注册和静态注册的区别:在数据库关闭后,动态注册是不能远程到数据库的,但静态注册可以远程到数据库,对数据库进行远程启动。
- Tnsnames.ora
- 主要配置在客户端上,主要作用是用来提供名称解析。
- Linux可以直接使用NETMGR命令进行图形化配置
- 连接方式
- EZ connect:sqlplus scott/tiger@192.168.59.135/PROD1
- SQL*PLUS工具:输入用户名和密码即可
- CMD窗口登录
- SQL Developer:Oracle自己的工具
- PL/SQL Developer :一个三方工具
- Sqlnet.ora
- 作用:
- 指定客户端名称解析的顺序(NAMES.DIRECTORY_PATH)
- 认证方式的限制(SQLNET.AUTHENTICATION_SERVICES)
- DB Link
- 用于查询不用数据库之间的数据,有公有和私有之分
- 创建语句(在PROD1上查询PROD2的数据,则可以在PROD1上创建DBLINK)
SQL> create database link link_henry connect to soctt identified by tiger using 'PROD2'; ---后面的USING 'PROD2',这个需要在本机查找Tnsnames.ora文件中的别名 PROD2
- DBLink 和Tnsname.ora都配置好了,启动监听,就可以执行语句进行不同数据库之间的数据查询。