Oracle 网络配置与管理
【学习目标】
Oracle 监听器是一个服务器端程序,用于监听所有来自客户端的请求,并为其提供数
据库服务。因此对监听器的管理与维护相当重要。
本章主要内容是描述对Oracle 监听器的配置与管理。
【本章要点】
• 配置监听
• 区分独占、共享模式
• 区分动态、静态注册
【关键术语】
Listener 监听Tnsname 服务名
Dedicated Server 独占服务Shared Server 共享服务
为了方便对Oracle 数据库进行管理,一般以下情况应该对Oracle进行网络配置。
• 在客户端对服务器端数据库进行管理(网络客户端管理)
• 在一台服务器上管理多个数据库(本地管理)
在客户端上管理,只需要安装客户端管理软件即可。客户端为了连接特定的服务器和数
据库,需要对网络进行配置,通过网络可以连接到不同的Oracle 数据库服务器。
如图1-1所示,首先需要在数据库服务器端配置侦听程序,然后需要在客户端配置网络
服务名。
一、原理解析
这里我们借腾讯软件来打个比方。
二、配置侦听器(LISTENER)
网络配置可以使用网络配置管理器Net Manager 来完成。Net Manager 用于网络连接 服务名、侦听器等的创建和设置。
在同一台服务器上可以配置多个侦听器,但侦听的端口号不能相同。不同的侦听器可以 侦听对同一个数据库的请求,同一个侦听器也可以侦听对不同数据库的请求。这样当一个侦 听器忙时,另外的侦听器仍然可以为客户端请求提供服务,减少用户连接的等待时间。 侦听器的配置信息存入对应的配置文件listener.ora(注:使用Net Manager工具配置侦 听器相当于修改该文件),该文件的默认路径为$ORACLE_HOME/network/admin,其中 $ORACLE_HOME代表服务器软件的安装目录。另外通过设置环境变量TNS_ADMIN可以改 变侦听器配置文件的位置(.bash_profile文件中设置)。 侦听器的设置主要包括侦听位置和对应的数据库服务,侦听位置包括主机、端口和使用 的通讯协议,Oracle 默认的标准端口是1521,通常采用的协议是TCP/IP。1. 启动Net Manager
2 [oracle@oracle ~]$ netmgr
2. 通过面板左侧的“+”、“×”按钮,可以增加和删除侦听器。
3. 点击“+”增加一个监听器,并且输入监听名称。
- • 协议:用于指定监听程序要使用的网络协议,监听程序可以使用多种网络协议,但 最常用的是“TCP/IP”协议。
• 主机:用于指定Oracle 服务器所在机器的主机名或IP 地址。因为侦听器和Oracle 服务器位于同一台机器,主机名在这里也可以输入LOCALHOST。//和/etc/hosts保持一致。
• 端口号:用于指定监听程序所要使用的TCP/IP 端口号,默认监听端口号为1521。
如果要指定其他端口号,则必须是操作系统未占用的端口。
为了区别于LISTENER与LISTENER1,将LISTENER1 端口号改为1522。
注意:如果网络客户端想要通过LISTENER1 连接数据库,其用于连接数据库的网络服 务名配置,也要使用同样的端口号。
- • 全局数据库名:一般设置为DB_NAME.DB_DOMAIN(DB_NAME 和DB_DOMAIN为 初始化参数),这里设为orcl。
• Oracle 主目录:应该设置为Oracle 软件的安装路径。
• SID:设置为数据库的SID,这里设置为orcl。
三、配置客户端网络服务名
通过客户端访问服务器端的数据库,就需要进行网络配置。客户端通过提供必要的参数, 包括要连接的服务器名称、连接的端口号、使用的通讯协议等连接到服务器端。 对于普通用户,这些参数不便于理解和记忆。通过网络配置,可以把网络服务名同配置 联系起来,一旦配置完成,以后就可以使用该网络服务名进行数据库的连接,使连接过程得 到简化。
当安装Oracle 数据库产品时,系统会自动在服务器端为数据库配置相应的网络服务名, 默认网络服务名与实例标识(SID)相同。为了便于访问同一台服务器上的多个Oracle 数据 库,应该为新数据库配置相应的网络服务名。
网络服务名对应的配置文件名称为tnsnames.ora,该文件的默认路径为 $ORACLE_HOME/network/admin。同样,通过设置环境变量TNS_ADMIN可以改变该配置 文件的位置。
配置网络服务名也可以使用工具Net Manager 来完成。1. 填写客户端网络服务名
2. 选择协议
3. 填写主机名
4. 填写数据库的服务名(Service_names)
5. 点击“Finish”完成配置
四、关于注册
1. 什么是注册
注册就是将数据库作为一个服务注册到监听程序。客户端不需要知道数据库名和实例 名,只需要知道该数据库对外提供的服务名就可以申请连接到数据库。这个服务名可能与实例名一样,也有可能不一样。
在数据库服务器启动过程中,数据库服务器会向监听程序注册相应的服务(无论何时启 动一个数据库,默认地都有两条信息注册到监听器中:数据库服务器对应的实例和服务。) 相当于是这样:在数据库服务器和客户端之间有一监听程序(Listener),在监听程序 中,会记录相应数据库对应的服务名(一个数据库可能对应有多个服务名),当客户端需要 连接数据库时,只需要提供服务名,就可以建立客户端和服务器之间的连接。2. 两个参数
1) instance_name:
注册到监听器中的实例值从参数文件中的instance_name 参数取得。如果该参数没有设 定值,那么它将取参数文件中的db_name 的值。如果在RAC 中配置,您必须将集群中每个 实例的instance_name 参数设置为一个唯一的值。2) service_names:
注册到监听器中的服务值从参数文件中的参数service_names 取得。如果该参数没有设 定值,数据库将拼接参数文件中的db_name 和db_domain 的值来注册自己。
1 --//修改参数service_names 2 SQL> alter system set service_names='orcl,aaa'; 3 System altered. 4 SQL> show parameter service_names; 5 NAME TYPE VALUE 6 ---------------------------------- ------- ---------------- 7 service_names string orcl,aaa 8 --//查看监听状态 9 [oracle@oracle admin]$ lsnrctl stat 10 LSNRCTL for Linux: Version 10.2.0.1.0 - Production on 09-NOV-2013 17:23:10 11 Copyright (c) 1991, 2005, Oracle. All rights reserved. 12 Connecting to 13 (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=oracle.example.com) 14 (PORT=1521))) 15 STATUS of the LISTENER19 Alias LISTENER 20 Version TNSLSNR for Linux: Version 10.2.0.1.0 - Production 21 Start Date 09-NOV-2013 16:46:42 22 Uptime 0 days 0 hr. 36 min. 28 sec 23 Trace Level off 24 Security ON: Local OS Authentication 25 SNMP OFF 26 Listener Parameter File 27 /u01/app/oracle/product/10.2.0/db_1/network/admin/listener.ora 28 Listener Log File 29 /u01/app/oracle/product/10.2.0/db_1/network/log/listener.log 30 Listening Endpoints Summary... 31 (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=oracle.example.com)(PORT 32 =1521))) 33 Services Summary... 34 Service "aaa" has 1 instance(s). 35 Instance "orcl", status READY, has 1 handler(s) for this service... 36 Service "orcl" has 1 instance(s). 37 Instance "orcl", status READY, has 1 handler(s) for this service... 38 Service "orclXDB" has 1 instance(s). 39 Instance "orcl", status READY, has 1 handler(s) for this service... 40 Service "orcl_XPT" has 1 instance(s). 41 Instance "orcl", status READY, has 1 handler(s) for this service... 42 The command completed successfully 43 --//查看listener.ora 内容 44 [oracle@oracle admin]$ more listener.ora 45 # listener.ora Network Configuration File: /u01/app/oracle/product/10.2.0/db_1/network/admin/listener.ora 47 # Generated by Oracle configuration tools. 48 LISTENER = 49 (DESCRIPTION = 50 (ADDRESS = (PROTOCOL = TCP)(HOST = oracle.example.com)(PORT = 1521)) 52 ) 53 --//没有写list,动态注册 54 55 56 --//查看tnsnames.ora 内容 57 [oracle@oracle admin]$ more tnsnames.ora 58 ORCL_S = 59 (DESCRIPTION = 60 (ADDRESS_LIST = 61 (ADDRESS = (PROTOCOL = TCP)(HOST = oracle.example.com)(PORT = 1521)) ) 64 (CONNECT_DATA = (SERVICE_NAME = orcl) ) 67 ) 68 AAA_S = 69 (DESCRIPTION = 70 (ADDRESS_LIST = 71 (ADDRESS = (PROTOCOL = TCP)(HOST = oracle.example.com)(PORT = 1521)) ) 74 (CONNECT_DATA = 75 (SERVICE_NAME = aaa) 76 ) 77 ) 78 --//验证能否通过orcl_s 成功登录 79 [oracle@oracle admin]$ sqlplus sys/oracle@orcl_s as sysdba 80 SQL*Plus: Release 10.2.0.1.0 - Production on Sat Nov 9 17:22:05 2013 81 Copyright (c) 1982, 2005, Oracle. All rights reserved. 82 Connected to: 83 Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 - Production 84 With the Partitioning, OLAP and Data Mining options 85 --//验证能否通过aaa_s 成功登录 86 [oracle@oracle admin]$ sqlplus sys/oracle@aaa_s as sysdba 87 SQL*Plus: Release 10.2.0.1.0 - Production on Sat Nov 9 17:22:10 2013 88 Copyright (c) 1982, 2005, Oracle. All rights reserved. 89 Connected to: 90 Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 - Production 91 With the Partitioning, OLAP and Data Mining options 92 93 --//验证oracle 注册service_names 的值 94 SQL> alter system set service_names='bbb'; 95 System altered. 96 --//aaa_s 无法正常连接 97 [oracle@oracle admin]$ sqlplus sys/oracle@aaa_s as sysdba 98 SQL*Plus: Release 10.2.0.1.0 - Production on Sat Nov 9 17:35:11 2013 99 Copyright (c) 1982, 2005, Oracle. All rights reserved. 100 ERROR: 101 ORA-12514: TNS:listener does not currently know of service requested in connect 102 descriptor 103 Enter user-name: 104 --//orcl_s 仍然可以正常连接(oracle 会自动注册) 105 [oracle@oracle admin]$ sqlplus sys/oracle@orcl_s as sysdba 106 SQL*Plus: Release 10.2.0.1.0 - Production on Sat Nov 9 17:41:10 2013 107 Copyright (c) 1982, 2005, Oracle. All rights reserved. 108 Connected to: 109 Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 - Production 110 With the Partitioning, OLAP and Data Mining options 111 --//测试service_names 参数的值 112 SQL> show parameter db_name 113 NAME TYPE VALUE 114 ------------------------------------ ----------- ----------- 115 db_name string orcl 116 --//当前db_domain 的值为空 117 SQL> show parameter domain 118 NAME TYPE VALUE 119 ------------------------------------ ----------- ------------ 120 db_domain string 121 --//当前servcie_names 的值为非默认值 122 SQL> show parameter service_names 123 NAME TYPE VALUE 124 ------------------------------------ ----------- ----------- 125 db_name string bbb 126 --//定义db_domain 的值 127 SQL> alter system set db_domain='oracle.com' scope=spfile; 128 System altered. 129 --//重置service_names 的值 130 SQL> alter system reset service_names scope=spfile sid='*'; 131 System altered. 132 133 134 --//重启数据库 135 SQL> shutdown immediate; 136 Database closed. 137 Database dismounted. 138 ORACLE instance shut down. 139 SQL> startup; 140 ORACLE instance started. 141 Total System Global Area 285212672 bytes 142 Fixed Size 1218992 bytes 143 Variable Size 92276304 bytes 144 Database Buffers 188743680 bytes 145 Redo Buffers 2973696 bytes 146 Database mounted. 147 Database opened. 148 SQL> show parameter domain 149 NAME TYPE VALUE 150 ------------------------------------ ----------- --------------- 151 db_domain string oracle.com 152 SQL> show parameter service 153 --//验证service_names 的值为db_name+db_domain 154 NAME TYPE VALUE 155 ------------------------------------ ----------- -------------------- 156 service_names string orcl.oracle.com3. 动态注册
动态注册是在instance 启动的时候PMON 进程根据参数文件中的instance_name, service_names 两个参数将实例和服务动态注册到listener 中。
首先要在参数文件中指定instance_name,service_names 两个参数的值。在sqlplus 下 通过show parameter service_names 和show parameter instance_name 可以查看这两个 参数的值。 可选择的是,您可以在service_names 参数中指定多个服务值,值之间用逗号格开, 这对于共享服务器配置是很有用的。 动态注册默认只注册到默认的监听器上(名称是LISTENER、端口是1521、协议是 TCP),因为pmon 只会动态注册port 等于1521的监听,否则pmon 不能动态注册listener, 如果需要向非默认监听注册,则需要配置local_listener 参数!1) Pmon 进程注册(默认端口):
1 //为方便实验,将db_domain 参数改回来 2 SQL> alter system set db_domain='' scope=spfile; 3 System altered. 4 //重启数据库使参数生效 5 SQL> shutdown immediate; 6 Database closed. 7 Database dismounted. 8 ORACLE instance shut down. 9 SQL> startup; 10 ORACLE instance started. 11 Total System Global Area 285212672 bytes 12 Fixed Size 1218992 bytes 13 Variable Size 92276304 bytes 14 Database Buffers 188743680 bytes 15 Redo Buffers 2973696 bytes 16 Database mounted. 17 Database opened. 18 //验证参数 19 SQL> show parameter service_names 20 NAME TYPE VALUE 21 ------------------------------------ ----------- -------------- 22 service_names string orcl 23 //查看listener.ora 24 [oracle@oracle admin]$ more listener.ora 25 # listener.ora Network Configuration File: /u01/app/oracle/product/10.2.0/db_1/n 26 etwork/admin/listener.ora 27 # Generated by Oracle configuration tools. 28 LISTENER = 29 (DESCRIPTION = 30 (ADDRESS = (PROTOCOL = TCP)(HOST = oracle.example.com)(PORT = 31 1521)) 32 ) 33 //查看监听器状态 34 [oracle@oracle admin]$ lsnrctl stat 35 LSNRCTL for Linux: Version 10.2.0.1.0 - Production on 09-NOV-2013 18:20:37 36 Copyright (c) 1991, 2005, Oracle. All rights reserved. 37 Connecting to 38 (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=oracle.example.com)(PORT=15 39 21))) 40 42 STATUS of the LISTENER 43 ------------------------ 44 Alias LISTENER 45 Version TNSLSNR for Linux: Version 10.2.0.1.0 - 46 Production 47 Start Date 09-NOV-2013 16:46:42 48 Uptime 0 days 1 hr. 33 min. 54 sec 49 Trace Level off 50 Security ON: Local OS Authentication 51 SNMP OFF 52 Listener Parameter File 53 /u01/app/oracle/product/10.2.0/db_1/network/admin/listener.ora 54 Listener Log File 55 /u01/app/oracle/product/10.2.0/db_1/network/log/listener.log 56 Listening Endpoints Summary... 57 (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=oracle.example.com)(POR 58 T=1521))) 59 Services Summary... 60 Service "orcl" has 1 instance(s). 61 Instance "orcl", status READY, has 1 handler(s) for this service... 62 Service "orclXDB" has 1 instance(s). 63 Instance "orcl", status READY, has 1 handler(s) for this service... 64 Service "orcl_XPT" has 1 instance(s). 65 Instance "orcl", status READY, has 1 handler(s) for this service... 66 The command completed successfully 67 //查看tnsnames.ora 68 [oracle@oracle admin]$ more tnsnames.ora 69 ORCL_S = 70 (DESCRIPTION = 71 (ADDRESS_LIST = 72 (ADDRESS = (PROTOCOL = TCP)(HOST = oracle.example.com)(PORT 73 = 1521)) 74 ) 75 (CONNECT_DATA = 76 (SERVICE_NAME = orcl) 77 ) 78 ) 79 81 //尝试连接 82 [oracle@oracle admin]$ sqlplus sys/oracle@orcl_s as sysdba 83 SQL*Plus: Release 10.2.0.1.0 - Production on Sat Nov 9 18:09:52 2013 84 Copyright (c) 1982, 2005, Oracle. All rights reserved. 85 Connected to: 86 Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 - Production 87 With the Partitioning, OLAP and Data Mining options2) 修改参数注册(非默认端口):
1 //查看listener.ora 2 [oracle@oracle admin]$ more listener.ora 3 # listener.ora Network Configuration File: /u01/app/oracle/product/10.2.0/db_1/n 4 etwork/admin/listener.ora 5 # Generated by Oracle configuration tools. 6 LISTENER = 7 (DESCRIPTION = 8 (ADDRESS = (PROTOCOL = TCP)(HOST = oracle.example.com)(PORT = 9 1521)) 10 ) 11 LISTENER1 = 12 (DESCRIPTION = 13 (ADDRESS = (PROTOCOL = TCP)(HOST = oracle.example.com)(PORT = 14 1522)) 15 ) 16 //查看tnsnames.ora 17 [oracle@oracle admin]$ more tnsnames.ora 18 # tnsnames.ora Network Configuration File: /u01/app/oracle/product/10.2.0/db_1/n 19 etwork/admin/tnsnames.ora 20 ORCL_S = 21 (DESCRIPTION = 22 (ADDRESS_LIST = 23 (ADDRESS = (PROTOCOL = TCP)(HOST = oracle.example.com)(PORT = 24 1521)) 25 ) 26 (CONNECT_DATA = 27 (SERVICE_NAME = orcl) 28 ) 29 ) 30 31 ORCL_S1 = 32 (DESCRIPTION = 33 (ADDRESS_LIST = 34 (ADDRESS = (PROTOCOL = TCP)(HOST = oracle.example.com)(PORT = 35 1522)) 36 ) 37 (CONNECT_DATA = 38 (SERVICE_NAME = orcl) 39 ) 40 ) 41 //修改参数 42 [oracle@oracle admin]$ sqlplus / as sysdba 43 SQL*Plus: Release 10.2.0.1.0 - Production on Sat Nov 9 18:05:21 2013 44 Copyright (c) 1982, 2005, Oracle. All rights reserved. 45 Connected to: 46 Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 - Production 47 With the Partitioning, OLAP and Data Mining options 48 SQL> show parameter local 49 NAME TYPE VALUE 50 ------------------------------------ ----------- ------------------------------ 51 local_listener string 52 SQL> alter system set local_listener='orcl_s1'; 53 System altered. 54 SQL> alter system register; 55 System altered. 56 SQL> exit 57 Disconnected from Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 - 58 Production 59 With the Partitioning, OLAP and Data Mining options 60 //测试连接 61 [oracle@oracle admin]$ sqlplus sys/oracle@orcl_s1 as sysdba 62 SQL*Plus: Release 10.2.0.1.0 - Production on Sat Nov 9 18:09:52 2013 63 Copyright (c) 1982, 2005, Oracle. All rights reserved. 64 Connected to: 65 Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 - Production 66 With the Partitioning, OLAP and Data Mining options 67 //或者 68 SQL> alter system set LOCAL_LISTENER='(ADDRESS = (PROTOCOL = 69 TCP)(HOST = oracle.example.com)(PORT = 1522))';4. 静态注册
静态注册就是实例启动时读取listener.ora 文件中实例和服务的配置,将实例和服务注 册到监听程序。1 --示例: 2 SID_LIST_LISTENER = 3 (SID_LIST = 4 (SID_DESC = 5 (GLOBAL_DBNAME = orcl) 6 (ORACLE_HOME = /u01/app/oracle/product/11.2.0/db_1) 7 (SID_NAME = orcl) 8 ) 9 (SID_DESC = 10 (GLOBAL_DBNAME = emrep) 11 (ORACLE_HOME = /u01/app/oracle/product/11.2.0/db_1) 12 (SID_NAME = emrep) 13 ) 14 ) 15 --List 列表中的即是需要静态注册的服务
五、查询某服务是静态还是动态注册
可以使用命令lsnrctl status 来查看某服务是静态注册还是动态注册。
• 实例状态为UNKNOWN 值时表明此服务是静态注册的。这时监听器用来表明它不 知道关于该实例的任何信息,只有当客户发出连接请求时,才检查该实例是否存在。
• 实例状态为READY 或BLOCKED(数据库nomount 时)表明是此服务是动态注 册的。
学问:纸上得来终觉浅,绝知此事要躬行
为事:工欲善其事,必先利其器。
态度:道阻且长,行则将至;行而不辍,未来可期
.....................................................................
------- 桃之夭夭,灼灼其华。之子于归,宜其室家。 ---------------
------- 桃之夭夭,有蕡其实。之子于归,宜其家室。 ---------------
------- 桃之夭夭,其叶蓁蓁。之子于归,宜其家人。 ---------------
=====================================================================
* 博客文章部分截图及内容来自于学习的书本及相应培训课程以及网络其他博客,仅做学习讨论之用,不做商业用途。
* 如有侵权,马上联系我,我立马删除对应链接。 * @author Alan -liu * @Email no008@foxmail.com
转载请标注出处! ✧*꧁一品堂.技术学习笔记꧂*✧. ---> https://www.cnblogs.com/ios9/