第12Oracle网络配置与管理杨进goodskyfly@163.com学习目标Oracle监听器是一个服务器端程序,用于监听所有来自客户端的请求,并为其提供数据库服务。因此对监听器的管理与维护相当重要。本章主要内容是描述对Oracle监听器的配置与管理【本章要点】•配置监听•区分独占、共享模式•区分动态、静态注册【关键术语】Listener监听Tnsname服务名DedicatedServer独占服务SharedServer共享服务要对Oracle数据库进行管理,可以在服务器或客户端进行。在服务器上进行管理,称为本地管理;在客户端上进行管理,需要进行网络连接,我们称为网络客户端管理。在客户端上管理,只需要安装客户端管理软件即可。客户端应用为了连接特定的服务器和数据库,需要对网络进行配置,通过配置可以连接到不同的Oracle数据库服务器。首先需要在数据库服务器端配置侦听程序,然后需要在客户端配置网络服务名,如图所示。只有合理地配置了侦听程序和网络服务名之后,客户端的应用程序才能通过网络访问数据库。另外,为了方便地管理同—台机器上的多个Oracle数据库实例,也应进行网络配置。当建立用户时,用户没有任何权限。为使用户可以连接到数据库并执行各种操作,必须为其授予相应的系统权限或对象权限。假定要使用户A、B、C能够连接到数据库,并具有创建表的权限和可以在SCOTT.EMP表上执行INSERT、UPDATE操作,那么需要进行12次授权操作。如图15-1所示。一、配置侦听器(LISTENER)网络配置可以使用网络配置管理器NetManager来完成。NetManager用于网络连接服务名、侦听器等的创建和设置。在同一台服务器上可以配置多个侦听器,但侦听的端口号不能相同。不同的侦听器可以侦听对同一个数据库的请求,同一个侦听器也可以侦听对不同数据库的请求。这样当一个侦听器忙时,另外的侦听器仍然可以为客户端请求提供服务,减少用户连接的等待时间。侦听器的配置信息存入对应的配置文件listener.ora(注:使用NetManager工具配置侦听器相当于修改该文件),该文件的默认路径为$Oracle_Home/network/admin,其中$Oracle_Home代表服务器软件的安装目录。另外通过设置环境变量TNS_ADMIN可以改变侦听器配置文件的位置。一、配置侦听器(LISTENER)侦听器的设置主要包括侦听位置和对应的数据库服务.侦听位置包括主机、端口和使用的通讯协议,Oracle默认的标准端口是1521,通常采用的协议是TCP/IP。【实例1-1】增加新的侦听器步骤1:启动NetManager[oracle@oracle~]$netmgr通过面板左侧的“+”、“×”按钮,可以增加和删除侦听器。步骤2:点击“+”增加一个监听器,并且输入监听名称•协议:用于指定监听程序要使用的网络协议,监听程序可以使用多种网络协议,但最常用的是“TCP/IP”协议。•主机:用于指定Oracle服务器所在机器的主机名或IP地址。因为侦听器和Oracle服务器位于同一台机器,主机名在这里也可以输入LOCALHOST。•端口号:用于指定监听程序所要使用的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可以改变该配置文件的位置。配置网络服务名也可以使用工具NetManager来完3)DBA角色DBA是在建立数据库时Oracle执行脚本SQL.BSQ自动建立的角色,该角色具有所有系统权限以及WITHADMINOPTION选项要注意的是,CONNECT、RESOURCE、DBA三种角色是为与先前版本兼容而保留的,在将来版本中可能不会自动建立。4)EXP_FULL_DATABASE角色EXP_FULL_DATABASE角色是在安装数据字典时执行CATEXP.SQL脚本建立的角色,该角色用于执行数据库的完全导出和增量导出操作,并且它包含以下一些权限和角色:系统权限SELECTANYTABLE、BACKUPANYTABLE、EXECUTEANYPROCEDURE、EXECUTEANYTYPE、ADMINISTERRESOURCEMANAGER,在表SYS.INCVID、SYS.INCFIL以及SYS.INCEXP上的INSERT、DELETE和UPDATE对象权限,以及EXECUTE_CATALOG_ROLE和SELECT_CATALOG_ROLE角色。三、关于注册1.什么是注册注册就是将数据库作为一个服务注册到监听程序。客户端不需要知道数据库名和实例名,只需要知道该数据库对外提供的服务名就可以申请连接到数据库。这个服务名可能与实例名一样,也有可能不一样。在数据库服务器启动过程中,数据库服务器会向监听程序注册相应的服务(无论何时启动一个数据库,默认地都有两条信息注册到监听器中:数据库服务器对应的实例和服务。)相当于是这样:在数据库服务器和客户端之间有一监听程序(Listener),在监听程序中,会记录相应数据库对应的服务名(一个数据库可能对应有多个服务名),当客户端需要连接数据库时,只需要提供服务名,就可以建立客户端和服务器之间的连接。2.两个参数1)instance_name:注册到监听器中的实例值从参数文件中的instance_name参数取得。如果该参数没有设定值,那么它将取参数文件中的db_name的值。如果在RAC中配置,您必须将集群中每个实例的instance_name参数设置为一个唯一的值。2)service_names:注册到监听器中的服务值从参数文件中的参数service_names取得。如果该参数没有设定值,数据库将拼接参数文件中的db_name和db_domain的值来注册自己。3.2.3分配角色分配角色是指将角色分配给某用户。在建立了角色并为其授予了权限之后,必须将该角色分配给用户,它才能起作用。分配角色与授予系统权限的命令完全相同。当将角色分配给用户时,用户将具有角色的所有系统权限和对象权限。一般情况下,分配角色是由DBA来完成的,如果要以其他用户身份分配角色,则要求该用户必须具有GRANTANYROLE系统权限或角色的WITHADMINOPTION选项。//验证能否通过orcl_s成功登录[oracle@oracleadmin]$sqlplussys/oracle@orcl_sassysdbaSQL*Plus:Release10.2.0.1.0-ProductiononSatNov917:22:052013Copyright(c)1982,2005,Oracle.Allrightsreserved.Connectedto:OracleDatabase10gEnterpriseEditionRelease10.2.0.1.0-ProductionWiththePartitioning,OLAPandDataMiningoptions//验证能否通过aaa_s成功登录[oracle@oracleadmin]$sqlplussys/oracle@aaa_sassysdbaSQL*Plus:Release10.2.0.1.0-ProductiononSatNov917:22:102013Copyright(c)1982,2005,Oracle.Allrightsreserved.Connectedto:OracleDatabase10gEnterpriseEditionRelease10.2.0.1.0-ProductionWiththePartitioning,OLAPandDataMiningoptions//验证oracle注册service_names的值SQLaltersystemsetservice_names='bbb';Systemaltered.//aaa_s无法正常连接[oracle@oracleadmin]$sqlplussys/oracle@aaa_sassysdbaSQL*Plus:Release10.2.0.1.0-ProductiononSatNov917:35:112013Copyright(c)1982,2005,Oracle.Allrightsreserved.ERROR:ORA-12514:TNS:listenerdoesnotcurrentlyknowofservicerequestedinconnectdescriptorEnteruser-name:SQLshowparameterservice//验证service_names的值为db_name+db_domainNAMETYPEVALUE-------------------------------------------------------------------service_namesstringorcl.oracle.com3.动态注册动态注册是在instance启动的时候PMON进程根据参数文件中的instance_name,service_names两个参数将实例和服务动态注册到listener中。首先要在参数文件中指定instance_name,service_names两个参数的值。在sqlplus下通过showparameterservice_names和showparameterinstance_name可以查看这两个参数的值。可选择的是,您可以在service_names参数中指定多个服务值,值之间用逗号格开,这对于共享服务器配置是很有用的动态注册默认只注册到默认的监听器上(名称是LISTENER、端口是1521、协议是TCP),因为pmon只会动态注册port等于1521的监听,否则pmon不能动态注册listener,如果需要向非默认监听注册,则需要配置local_listener参数!1)Pmon进程注册(默认端口)://为方便实验,将db_domain参数改回来SQLaltersystemsetdb_domain=''scope=spfile;Systemaltered.//重启数据库使参数生效SQLshutdownimmediateSQLstartup;//验证参数SQLshowparameterservice_namesNAMETYPEVALUE-------------------------------------------------------------service_namesstringorc//查看lis