[ oracle 学习 ] 网络配置_yanisin_yang的博客-爱代码爱编程
Linux调用监听器配置:netmgr
Windows调用监听器配置:netca.dat
协议: 用于指定监听程序要使用的网络协议, 监听程序可以使用多种网络协议, 但 最常用的是“TCP/IP” 协议。
主机: 用于指定 Oracle 服务器所在机器的主机名或 IP 地址。 因为侦听器和 Oracle 服务器位于同一台机器, 主机名在这里也可以输入 LOCALHOST。 //和/etc/hosts 保持一致。
端口号: 用于指定监听程序所要使用的 TCP/IP 端口号, 默认监听端口号为 1521。
全局数据库名: 一般设置为 DB_NAME.DB_DOMAIN(DB_NAME 和 DB_DOMAIN 为 初始化参数)
Oracle 主目录: 应该设置为 Oracle 软件的安装路径。
SID: 设置为数据库的 SID
配置网络服务名
通过客户端访问服务器端的数据库,就需要进行网络配置。客户端通过提供必要的参数,包括要连接的服务器名称、 连接的端口号、 使用的通讯协议等连接到服务器端。 对于普通用户, 这些参数不便于理解和记忆。 通过网络配置, 可以把网络服务名同配置联系起来,一旦配置完成,以后就可以使用该网络服务名进行数据库的连接, 使连接过程得到简化。
当安装 Oracle 数据库产品时, 系统会自动在服务器端为数据库配置相应的网络服务名, 默认网络服务名不实例标识(SID)相同。 为了便于访问同一台服务器上的多个 Oracle数据库, 应该为新数据库配置相应的网络服务名。
网络服务名对应的配置文件名称为 tnsnames.ora , 该文件的默认路径为$ORACLE_HOME/network/admin。同样,通过设置环境变量 TNS_ADMIN 可以改变该配置文件的位置。
监听维护命令
[oracle@oracle ~]$ lsnrctl
监听连接
简易连接
[oracle@oracle ~]$ sqlplus sys/123456@127.0.0.1:1521/orcl as sysdba
tnsname 连接
[oracle@oracle ~]$ sqlplus sys/123456@orcl as sysdba
测试连通性
[oracle@oracle ~]$ tnsping orcl
注册就是将数据库作为一个服务注册到监听程序。 客户端不需要知道数据库名和实例名, 只需要知道该数据库对外提供的服务名就可以申请连接到数据库。在数据库服务器启动过程中, 数据库服务器会向监听程序注册相应的服务(无论何时启动一个数据库, 默认地都有两条信息注册到监听器中: 数据库服务器对应的实例和服务。 )
1) instance_name: 注册到监听器中的实例值从参数文件中的 instance_name 参数取得。如果该参数没有设定值, 那么它将取参数文件中的 db_name 的值。 如果在 RAC 中配置,必须将集群中每个 实例的 instance_name 参数设置为一个唯一的值
2) service_names: 注册到监听器中的服务值从参数文件中的参数 service_names 取得。 如果该参数没有设定值, 数据库将拼接参数文件中的 db_name 和 db_domain 的值来注册自己。
alter system set service_names='orcl,aaa';
aaa =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = oracle)(PORT = 1521))
)
(CONNECT_DATA =
(SERVICE_NAME = aaa)
)
)
验证是否能够登录
[oracle@oracle admin]$ sqlplus sys/123456@aaa as sysdba
动态注册是在 instance 启动的时候 LREG 进程根据参数文件中的 instance_name,service_names 两个参数将实例和服务动态注册到 listener 中。
首先要在参数文件中指定 instance_name,service_names 两 个 参 数 的 值 。
①动态注册默认只注册到默认的监听器上(名称是 LISTENER、 端口是 1521、协议是 TCP), 因为 LREG 只会劢态注册 port 等于 1521 的监听, 否则 LREG 不能动态注册 listener, 如果需要向非默认监听注册, 则需要配置 local_listener 参数。
②静态注册就是实例启动时读取 listener.ora 文件中实例和服务的配置, 将实例和服务注册到监听程序
可以使用命令 lsnrctl status 来查看某服务是静态注册还是动态注册。
• 实例状态为 UNKNOWN 值时表明此服务是静态注册的。 这时监听器用来表明它不知道关于该实例的任何信息, 只有当客户发出连接请求时, 才检查该实例是否存在。
• 实例状态为 READY 或 BLOCKED(数据库 nomount 时) 表明是此服务是动态
一、 动态注册
1、 默认端口动态注册 1521
2、 非默认端口动态注册(需要设置 local_listener)
二、 静态注册
1、 默认端口的静态注册
2、 非默认端口的静态注册(不需要设置 local_listener)
三、 不同容器配置不同的监听(不同端口)
1、 动态注册(需要设置 local_listener)
2、 静态注册(不需要设置 local_listener)
3、listener_networks 设置
alter system set listener_networks='((NAME=net1)(LOCAL_LISTENER=cdb1,pdb1))';