龙空技术网

Oracle 体系结构篇 之网络配置

一山丘一只羊 345

前言:

此时你们对“oracle10修改端口”大致比较关心,同学们都想要剖析一些“oracle10修改端口”的相关资讯。那么小编在网摘上收集了一些对于“oracle10修改端口””的相关内容,希望小伙伴们能喜欢,朋友们快快来了解一下吧!

【关键术语】

Listener 监听

Tnsname 服务名

Dedicated Server 独占服务

Shared Server 共享服务

为了方便对Oracle 数据库进行管理,一般以下情况应该对Oracle进行网络配置。

• 在客户端对服务器端数据库进行管理(网络客户端管理)

• 在一台服务器上管理多个数据库(本地管理)

在客户端上管理,只需要安装客户端管理软件即可。客户端为了连接特定的服务器和数据库,需要对网络进行配置,通过网络可以连接到不同的Oracle 数据库服务器。

如图P1-1所示,首先需要在数据库服务器端配置侦听程序,然后需要在客户端配置网络服务名。

P1-1:客户端通过网络连接服务器示意

一、原理解析

这里我们借腾讯软件来打个比方

左边:数据库服务器端,有两台主机,分别创建两个监听,一个四个。其中,四个监听都服务区 QQ,2 号主机上的 1522 端口也服务于微信。监听程序接收到客户端的信息并发出响应。如果用户发出错误的申请,比如前三个不支持微信的监听收到来自微信的请求,也不会做出响应。

右边:客户端。用户不需要知道主机名、协议、端口号。只需要点“登录”。 连接服务器信息被封装(相当于 ORACLE 的客户端网络服务名),自动进行连接。 根据客户端网络服务名中记录的主机、协议、端口连接到服务器端,服务器端的监听程序接收到客户端信息并发出响应。

二、配置侦听器(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

[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 的值来注册自己/

/修改参数 service_namesSQL> alter system set service_names='orcl,aaa';System altered.SQL> show parameter service_names;NAME TYPE VALUE---------------------------------- ------- ---------------- service_names string orcl,aaa//查看监听状态[oracle@oracle admin]$ lsnrctl statLSNRCTL for Linux: Version 10.2.0.1.0 - Production on 09-NOV-2013 17:23:1Copyright (c) 1991, 2005, Oracle. All rights reserved.Connecting to(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=oracle.example.com)(PORT=1521)))STATUS of the LISTENER------------------------ Alias LISTENERVersion TNSLSNR for Linux: Version 10.2.0.1.0 - ProductionStart Date 09-NOV-2013 16:46:42Uptime 0 days 0 hr. 36 min. 28 secTrace Level offSecurity ON: Local OS AuthenticationSNMP OFFListener Parameter File/u01/app/oracle/product/10.2.0/db_1/network/admin/listener.oraListener Log File/u01/app/oracle/product/10.2.0/db_1/network/log/listener.logListening Endpoints Summary...(DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=oracle.example.com)(PORT=1521)))Services Summary...Service "aaa" has 1 instance(s).Instance "orcl", status READY, has 1 handler(s) for this service..Service "orcl" has 1 instance(s).Instance "orcl", status READY, has 1 handler(s) for this service..Service "orclXDB" has 1 instance(s).Instance "orcl", status READY, has 1 handler(s) for this service..Service "orcl_XPT" has 1 instance(s).Instance "orcl", status READY, has 1 handler(s) for this service..The command completed successfully//查看 listener.ora 内容[oracle@oracle admin]$ more listener.ora# listener.ora Network Configuration File: /u01/app/oracle/product/10.2.0/db_1/network/admin/listener.ora# Generated by Oracle configuration tools.LISTENER =(DESCRIPTION =(ADDRESS = (PROTOCOL = TCP)(HOST = oracle.example.com)(PORT =1521)))//没有写 list,动态注册//查看 tnsnames.ora 内容[oracle@oracle admin]$ more tnsnames.oraORCL_S =(DESCRIPTION =	(ADDRESS_LIST =		(ADDRESS = (PROTOCOL = TCP)(HOST = oracle.example.com)(PORT =1521))	)			(CONNECT_DATA =	(SERVICE_NAME = orcl)	) )AAA_S =(DESCRIPTION =	(ADDRESS_LIST =		(ADDRESS = (PROTOCOL = TCP)(HOST = oracle.example.com)(PORT =1521))	)	(CONNECT_DATA =		(SERVICE_NAME = aaa)	) )//验证能否通过 orcl_s 成功登录[oracle@oracle admin]$ sqlplus sys/oracle@orcl_s as sysdbSQL*Plus: Release 10.2.0.1.0 - Production on Sat Nov 9 17:22:05 201Copyright (c) 1982, 2005, Oracle. All rights reserved.Connected to:Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 - ProductionWith the Partitioning, OLAP and Data Mining options//验证能否通过 aaa_s 成功登录[oracle@oracle admin]$ sqlplus sys/oracle@aaa_s as sysdbaSQL*Plus: Release 10.2.0.1.0 - Production on Sat Nov 9 17:22:10 201Copyright (c) 1982, 2005, Oracle. All rights reserved.Connected to:Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 - ProductionWith the Partitioning, OLAP and Data Mining options//验证 oracle 注册 service_names 的值SQL> alter system set service_names='bbb';System altered.//aaa_s 无法正常连接[oracle@oracle admin]$ sqlplus sys/oracle@aaa_s as sysdbaSQL*Plus: Release 10.2.0.1.0 - Production on Sat Nov 9 17:35:11 2013Copyright (c) 1982, 2005, Oracle. All rights reserved.ERROR:ORA-12514: TNS:listener does not currently know of service requested in connecdescriptorEnter user-name://orcl_s 仍然可以正常连接(oracle 会自动注册)[oracle@oracle admin]$ sqlplus sys/oracle@orcl_s as sysdbSQL*Plus: Release 10.2.0.1.0 - Production on Sat Nov 9 17:41:10 201Copyright (c) 1982, 2005, Oracle. All rights reserved.Connected to:Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 - ProductionWith the Partitioning, OLAP and Data Mining options//测试 service_names 参数的值SQL> show parameter db_nameNAME TYPE VALUE------------------------------------ ----------- ----------- db_name string orcl//当前 db_domain 的值为空SQL> show parameter domainNAME TYPE VALUE------------------------------------ ----------- ------------ db_domain string//当前 servcie_names 的值为非默认值SQL> show parameter service_namesNAME TYPE VALUE------------------------------------ ----------- ----------- db_name string bbb//定义 db_domain 的值SQL> alter system set db_domain='oracle.com' scope=spfile;System altered.//重置 service_names 的值SQL> alter system reset service_names scope=spfile sid='*';System altered.//重启数据库SQL> shutdown immediate;Database closed.Database dismounted.ORACLE instance shut down.SQL> startup;ORACLE instance started.Total System Global Area 285212672 bytesFixed Size 1218992 bytesVariable Size 92276304 bytesDatabase Buffers 188743680 bytesRedo Buffers 2973696 bytesDatabase mounted.Database opened.SQL> show parameter domainNAME TYPE VALUE------------------------------------ ----------- --------------- db_domain string oracle.comSQL> show parameter service//验证 service_names 的值为 db_name+db_domainNAME TYPE VALUE------------------------------------ ----------- -------------------- service_names string orcl.oracle.com
3. 动态注册

动态注册是在 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 进程注册(默认端口):

//为方便实验,将 db_domain 参数改回来SQL> alter system set db_domain='' scope=spfile;System altered.//重启数据库使参数生效SQL> shutdown immediate;Database closed.Database dismounted.ORACLE instance shut down.SQL> startup;ORACLE instance started.Total System Global Area 285212672 bytesFixed Size 1218992 bytesVariable Size 92276304 bytesDatabase Buffers 188743680 bytesRedo Buffers 2973696 bytesDatabase mounted.Database opened.//验证参数SQL> show parameter service_namesNAME TYPE VALUE------------------------------------ ----------- -------------- service_names string orcl//查看 listener.ora[oracle@oracle admin]$ more listener.ora# listener.ora Network Configuration File: /u01/app/oracle/product/10.2.0/db_1/network/admin/listener.ora# Generated by Oracle configuration tools.LISTENER =(DESCRIPTION =(ADDRESS = (PROTOCOL = TCP)(HOST = oracle.example.com)(PORT =1521)))//查看监听器状态[oracle@oracle admin]$ lsnrctl statLSNRCTL for Linux: Version 10.2.0.1.0 - Production on 09-NOV-2013 18:20:37Copyright (c) 1991, 2005, Oracle. All rights reserved.Connecting to(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=oracle.example.com)(PORT=1521)))STATUS of the LISTENER------------------------ Alias LISTENERVersion TNSLSNR for Linux: Version 10.2.0.1.0 - ProductionStart Date 09-NOV-2013 16:46:42Uptime 0 days 1 hr. 33 min. 54 secTrace Level offSecurity ON: Local OS AuthenticationSNMP OFFListener Parameter File/u01/app/oracle/product/10.2.0/db_1/network/admin/listener.oraListener Log File/u01/app/oracle/product/10.2.0/db_1/network/log/listener.logListening Endpoints Summary...(DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=oracle.example.com)(PORT=1521)))Services Summary...Service "orcl" has 1 instance(s).Instance "orcl", status READY, has 1 handler(s) for this service...Service "orclXDB" has 1 instance(s).Instance "orcl", status READY, has 1 handler(s) for this service...Service "orcl_XPT" has 1 instance(s).Instance "orcl", status READY, has 1 handler(s) for this service...The command completed successfully//查看 tnsnames.ora[oracle@oracle admin]$ more tnsnames.oraORCL_S =(DESCRIPTION =(ADDRESS_LIST =(ADDRESS = (PROTOCOL = TCP)(HOST = oracle.example.com)(PORT= 1521)))(CONNECT_DATA =(SERVICE_NAME = orcl)) )//尝试连接[oracle@oracle admin]$ sqlplus sys/oracle@orcl_s as sysdbSQL*Plus: Release 10.2.0.1.0 - Production on Sat Nov 9 18:09:52 201Copyright (c) 1982, 2005, Oracle. All rights reserved.Connected to:Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 - ProductionWith the Partitioning, OLAP and Data Mining options
2) 修改参数注册(非默认端口):
//查看 listener.ora[oracle@oracle admin]$ more listener.ora# listener.ora Network Configuration File: /u01/app/oracle/product/10.2.0/db_1/network/admin/listener.ora# Generated by Oracle configuration tools.LISTENER =(DESCRIPTION =(ADDRESS = (PROTOCOL = TCP)(HOST = oracle.example.com)(PORT =1521)))LISTENER1 =(DESCRIPTION =(ADDRESS = (PROTOCOL = TCP)(HOST = oracle.example.com)(PORT =1522)))//查看 tnsnames.ora[oracle@oracle admin]$ more tnsnames.ora# tnsnames.ora Network Configuration File: /u01/app/oracle/product/10.2.0/db_1/network/admin/tnsnames.oraORCL_S =(DESCRIPTION =(ADDRESS_LIST =(ADDRESS = (PROTOCOL = TCP)(HOST = oracle.example.com)(PORT =1521)))(CONNECT_DATA =(SERVICE_NAME = orcl)) )ORCL_S1 =(DESCRIPTION =(ADDRESS_LIST =(ADDRESS = (PROTOCOL = TCP)(HOST = oracle.example.com)(PORT =1522)))(CONNECT_DATA =(SERVICE_NAME = orcl)) )//修改参数[oracle@oracle admin]$ sqlplus / as sysdbaSQL*Plus: Release 10.2.0.1.0 - Production on Sat Nov 9 18:05:21 201Copyright (c) 1982, 2005, Oracle. All rights reserved.Connected to:Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 - ProductionWith the Partitioning, OLAP and Data Mining optionsSQL> show parameter localNAME TYPE VALUE------------------------------------ ----------- ------------------------------local_listener stringSQL> alter system set local_listener='orcl_s1';System altered.SQL> alter system register;System altered.SQL> exitDisconnected from Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 - ProductionWith the Partitioning, OLAP and Data Mining options//测试连接[oracle@oracle admin]$ sqlplus sys/oracle@orcl_s1 as sysdbaSQL*Plus: Release 10.2.0.1.0 - Production on Sat Nov 9 18:09:52 201Copyright (c) 1982, 2005, Oracle. All rights reserved.Connected to:Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 - ProductionWith the Partitioning, OLAP and Data Mining options//或者SQL> alter system set LOCAL_LISTENER='(ADDRESS = (PROTOCOL TCP)(HOST = oracle.example.com)(PORT = 1522))';
4. 静态注册

静态注册就是实例启动时读取 listener.ora 文件中实例和服务的配置,将实例和服务注册到监听程序。

示例:SID_LIST_LISTENER =	(SID_LIST =		(SID_DESC =		(GLOBAL_DBNAME = orcl)		(ORACLE_HOME = /u01/app/oracle/product/11.2.0/db_1)		(SID_NAME = orcl)	)	(SID_DESC =	(GLOBAL_DBNAME = emrep)	(ORACLE_HOME = /u01/app/oracle/product/11.2.0/db_1)	(SID_NAME = emrep)	) )

List 列表中的即是需要静态注册的服务。

五、查询某服务是静态还是动态注册

可以使用命令 lsnrctl status 来查看某服务是静态注册还是动态注册。

• 实例状态为 UNKNOWN 值时表明此服务是静态注册的。这时监听器用来表明它不知道关于该实例的任何信息,只有当客户发出连接请求时,才检查该实例是否存在

• 实例状态为 READY 或 BLOCKED(数据库 nomount 时)表明是此服务是动态注册的。

写在最后的话

感谢各位的支持与阅读,后续会继续推送相关知识和交流,欢迎交流、转发和关注,感谢!

标签: #oracle10修改端口 #oracle错误12514 #oracle的配置指什么意思 #oracle11默认端口