Oracle NET
1.客户端通过@ora10g的名字去tnsname.ora文件获取服务器的具体连接信息
2.客户端通过tnsname.ora中的描述向服务器发出链接请求服务器端
3.服务器的监听器接收到连接请求后,验证请求的服务的有效性
4.服务器端产生一个服务进程和客户端进程建立连接
查看会话建立过程:
$ netstat -tlnp | grep 1521
$ sqlplus sys/password@orcl as sysdba
$ netstat -tnp | grep sqlplus
$ kill -9 1234 杀死维护sqlplus的进程
监听的配置
配置文件:
$ vi $ORACLE_HOME/network/admin/listener.ora
通过netca添加新的监听服务Listener15210,端口使用15210
$ vi listener.ora
$ netstat -tln|grep 1521
$ lsnrctl status listener15210
通过netmgr配置高级选项
通过lsnrctl命令来启动/停止/查看/重载监听器/服务
lsnrctl start|stop|status|reload|service
指定监听的名称:
$ lsnrctl status listener15210
网络环境变化,需要检查listener.ora和/etc/hosts文件
netca删除Listener15210
实例的配置
静态注册和动态注册
什么是静态注册
就是监听器的配置文件中写明了监听哪个实例 需要配置SID_DESC字段
定位实例的方式可以使用SID_NAME或者SERVICE_NAME来定位
什么是动态注册
就是监听器的配置文件中没写明监听哪个实例
要通过PMON告知监听器要监听的具体实例
PMON是将SERVER_NAME告诉给监听器 这个过程就是注册
默认一分钟PMON注册一次 也就是说启动监听 还没注册时 是无法连接的
添加3种方式,后面的删掉,用文档改写
区分静态注册和动态注册
lsnrctl status
是 ready 就是动态
是 unknow 就是静态
静态注册listener.ora文件信息:
$ vi listener.ora
SID_LIST_LISTENER =
(SID_LIST =
(SID_DESC =
(ORACLE_HOME = /u01/app/oracle/product/11.2.0/db_1)
(SID_NAME =ora11g)
)
)
$ lsnrctl reload
.....
Services Summary...
Service "ora11g" has 1 instance(s).
Instance "ora11g", status UNKNOWN, has 1 handler(s) for this service...
状态总是显示未知的,当有请求时,监听器才去确认数据是否存在
动态注册
Oracle9i起实例使用动态服务注册来通知监听程序有关其数据库服务的信息。
服务注册依赖PMON 进程向监听程序注册实例信息 注册间隔为1分钟左右
手动注册命令 alter system register;
无需在listener.ora 文件中设置任何信息 此文件可以不存在
3种注册方式:
本地默认端口监听
本地非默认端口监听
远程监听
---------------------------------------------------------------------------------
创建本地非默认端口:
netca创建listener15210,使用15210端口
$ netstat -tlnp | grep 15210
写入监听的别名:
$ cd $ORACLE_HOME/network/admin
$ vi tnsnames.ora 本地命名文件
listener15210 =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = node1.test.com)(PORT = 15210))
)
修改参数:
SQL> ALTER SYSTEM SET LOCAL_LISTENER=listener15210;
SQL> ALTER SYSTEM register; 立即注册(可选)
服务信息已添加到新的监听中:
$ lsnrctl status listener15210
客户端指定新端口连接:
$ sqlplus sys/password@192.168.0.1:1521/orcl as sysdba 报错
$ sqlplus sys/password@192.168.0.1:15210/orcl as sysdba
删除配置:
SQL> ALTER SYSTEM SET LOCAL_LISTENER='';
SQL> ALTER SYSTEM register;
$ vi tnsnames.ora 删除listener15210别名
netca删除15210端口的监听
客户端配置
轻松连接:
$ sqlplus sys/password@192.168.0.1:1521/orcl as sysdba
适用于临时性的连接
本地命名:
查看现有的主机连接字符串
$ cd $ORACLE_HOME/network/admin
$ vi tnsnames.ora
$ sqlplus sys/password@orcl as sysdba
使用netca添加新的主机连接字符串orcl192 第三项
$ sqlplus sys/password@orcl192 as sysdba
SQL> select name from v$database;
tnsping测试,不需要用户名和口令:
$ tnsping 192.168.0.1:1521/orcl
$ tnsping orcl192
解析方法的顺序:
$ vi sqlnet.ora
netca可以修改 第二项
恢复默认设置:
SQL> alter system set local_listener='';
SQL> alter sytem register;
netca删除不需要的监听和连接配置