Oracle Net服务
网络设计考虑事项
网络配置在设计一个Oracle基础结构时,可以从3种基本类型的网络配置中挑选
Oracle Net特性综述Oracle Net是把Oracle网络粘合起来的粘合剂。它负责处理客户到服务器和服务器到客户通信,并且能够多在客户、中间层应用、WEB服务器和ORACLE服务器上配置。连接性可管理性
可缩放性
安全高级安全(Oracle Advanced Security) -- 支持各种加密、检验和身份验证机制
防火墙ORACLE与以下两类防火墙开发商合作,ORACLE提供Oracle Net Application Proxy Kit给开发商,使数据库信息包顺利通过防火墙的同时保持高安全度
可访问性允许访问非ORACLE数据库,甚至是非数据库的数据源
在服务器上Oracle NetOracle 监听器是主要的Oracle服务器端网络构件,它是数据库实例监听连接请求的大耳朵。监听由listener.ora文件集中控制,但一个服务器上可以有多个监听器。监听器响应连接请求的方式有以下四种
通常发生在监听器和数据库存在于同一服务器上,服务器被配置为专用服务器的情况下
通常发生在监听器和数据库不在同一服务器上,服务器被配置为专用服务器的情况下
通常发生在监听器和数据库存在于同一服务器上,服务器被配置为Oracle Shared Server的情况下
通常发生在监听器和数据库不在同一服务器上,服务器被配置为Oracle Shared Server的情况下
管理ORACLE监听器用Oracle Net Manager管理监听器windows下启动它的方法是:start->Program->Oracle 10g Programs->configuration and migration tools->Oracle net Managerunix启动方法是:$oracle_home/bin目录中运行"./netmgr" 用Oracle Net Manager配置监听服务在Oracle Net Manager的树形结构中各个图标对应的配置文件如下
创建监听器首次安装ORACLE时,ORACLE创建一个名为listener的监听器。它的默认设置如下
listener.ora文件的监听器位置配置段中的参数如下
手工添加上面的参数时,必需把监听器的名称附在后面。如设置默认监听器的STARTUP_WAIT_TIME,则被创建的参数应该是:STARTUP_WAIT_TIME_LISTENER
用lsnrctl管理监听器lsnrctl命令综述
动态注册服务所有在监听器中手工添加的数据库服务称为静态注册服务。相对地,Oracle10g数据库能自动向一个现有监听器注册它们的出场性---我们称该特性为“动态注册服务”。通过它管理员能利用一些特性,如负荷均衡和自动故障切换。PMON负责向监听器注册这些信息。使用该特性的步骤:
使用多个监听器时的附加配置连接时故障切换特性此特性允许客户在TNSNAMES。ORA中指定多个监听器,如果连接到第一个监听器失败,则尝试连接下一个监听器。TNSNAMES.ORA示例如下: RCL =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP) ( HOST = DBPROD ) ( PROT = 1521 ))
(ADDRESS = (PROTOCOL = TCP) ( HOST = DBFAIL ) ( PROT = 1521 )) ##多了一个监听器地址
)
(CONNECT_DATA = (SERVICE_NAME = PROD ) ( SERVER = DECIATED)
)
)
透明应用故障切换(Transparent Application Failover)特性它用于高可用性环境,它允许客户应用软件在当前连接出现故障时,自动重新连接到数据库,而且可选的继续执行一条已在运行的 SQL语句。PROD的数据库在DBPROD和DBFAIL这两个服务器上必须相同,本例才能工作。具体示例如下: RCL =
(DESCRIPTION =
(FAILOVER = ON
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP) (HOST=DBPROD) (PORT = 1521))
(ADDRESS = (PROTOCOL = TCP ) ( HOST = DBFAIL) (PORT = 1521))
)
(CONNECT_DATA= (SERVICE_NAME = PROD) (SERVER = DEDICATED)
(FAILOVER_MODE= (TYPE=SELECT) ( METHOD = BASICE))
)
)
客户负载平衡(Client Load Balancing)该特性允许客户从一个监听器列表中随机地挑选,以达到平衡连接请求的效果。该用特性需要添加LOAD_BALANCE参数,具体示例如下 RCL =
(DESCRIPTION =
(LOAD_BALANCE= ON)
)
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP) (HOST = MWEISHAN-DELL) (PORT=1522))
)
(ADDRESS = (PROTOCOL = TCP) (HOST = MWEISHAN-DELL) (PROT=1521)) (CONNECT_DATA =
(SERVICE_NAME=ORCL)
)
诊断服务器端连接问题无法连接服务的可能原因有很多,但是原理诊断一般的网络问题差不多服务器端计算机与数据库检查 检查服务器计算机确保服务器计算机是活动的,并且网络是通的。 在TCP网络上,我们可使用PING。以下结果显示网络正常D:/Documents and Settings/gdy>ping netplus Pinging netplus [192.168.1.1] with 32 bytes of data: Reply from 192.168.1.1: bytes=32 time<1ms ttl="128"> Reply from 192.168.1.1: bytes=32 time<1ms ttl="128"> Reply from 192.168.1.1: bytes=32 time<1ms ttl="128"> Reply from 192.168.1.1: bytes=32 time<1ms ttl="128"> Ping statistics for 192.168.1.1: Packets: Sent = 4, Received = 4, Lost = 0 (0% loss), Approximate round trip times in milli-seconds: Minimum = 0ms, Maximum = 0ms, Average = 0ms D:/Documents and Settings/gdy> 检查数据库 <-这个方法好像不行确 保数据正在运行。使用SQL*PLUS进行本地连接,这类连接不使用 ORACLE监听器。方法是定义环境变量ORACLE_SID成想连接的那个实例,然后尝试连接。如果得到ORA-01034错误指ORACLE实例没有 运行,ORA-27101指当然无实例可供指定ORACLE_SID连接到。 检查数据库对所有用户是开放的数据库管理员可以用限制模式打开一个数据库,没有相应授权的用户将无法连接。ORA-01035指示没有限制模式访问权限。 检查用户权限确保正尝试连接的用户有CREATE SESSION权限。ORA-01045指未没有create session权限。解决方法是:grant create session to user_nmae服务器端网络检查检查监听器使用 lsnrctl status检查监听器工作正常,并且相应的ORACLE服务工作正常监听.检查GLOBA_DBNAME如果客户正在使用主机命名方法,确保 GLOBAL_DBNAME参数被设置成计算机的主机名。这个参数在 listener.ora中检查监听协议检查网络协议工作正常。如果使用TCP/IP协议,可以使用 PING命令 测试检查服务器协议适配器大多数平台下可用Oracle Universal Install检查已安装协议的列表。UNIX下可以用 $ORACLE_HOME/BIN/adapters工具检查连接超时设置如果收到ORA-12535或ORA-12547,那么可能客户在一个有效连接建成以前已经超时。如果正在使用慢速网络,可以尝试给listener.ora文件中的INBOUND_CONNECT_TIMEOUT参数设置更大值服务器上ORACLE NET日志和跟踪unix系统listener日志文件位置默认在$ORACLE_HOME/network/logwindows系统listener日志文件位置默认在%ORACLE_HOME%/network/log 服务器跟踪文件通常位于%ORACLE_HOME%/NETWORK/TRACE.跟踪可以被设置成OFF、USER、ADMIN或SUPPORT几个级表。跟踪中有一些代码对比表,具体如下
包关键字 包类型
NSPTAC ACCEPT[接受] NSPTRF REFUSE[拒绝] NSPTRS RESEND[重发] NSPDA Data [数据] NSPCNL Control [控制] NSPTMK marker [标记符]
代码 包类型
1 Connect [连接] 2 Accept [接受] 3 Acknowledge [收到通知] 4 Refuse [拒绝] 5 Redirect [重定向] 6 Data [数据] 7 Null [即空数据] 9 Abort [异常终止] 11 Resend [重发] 12 Marker [标记符] 13 Attention [注意信号] 14 Control information [控制信息] 配置客户的ORACLE NET客 户连接一个ORACLE时必需提供“用户ID”、“密码”和“网络服务名称“,网络服务名称用于在网络在查找ORACLE服务。网络服务名称解析有五种 方法:Oracle Internet Directory、Extername Naming、主机命名(Host-name method)、Oracle Easy Connect以及本地命名(localnaming method)。主机命名方法使用该方法有四条件
# sqlnet.ora Network Configuration File: D:/oracle/product/10.2.0/db_1/network/admin/sqlnet.ora # Generated by Oracle configuration tools. # This file is actually generated by netca. But if customers choose to # install " SoftwareOnly", this file wont exist and without the native # authentication, they will not be able to connect to the database on NT. SQLNET.AUTHENTICATION_SERVICES= (NTS) NAMES.DIRECTORY_PATH= (HOSTNAME,TNSNAMES, EZCONNECT) NAMES.DEFAULT_DOMAIN = gdy.vicp.net 使用主机命名方法配置同一主机上多个服务方法如下:
Oracle Easy Connect Naming方法这是10G新引进的特性,,增加了端口和服务名称指定的需要的参数。使用它需要满足一些条件:
语法构件 描述
// 可选:在通过一个URL或JDBC建立连接时使用 主机 必需:要连接到的主机或IP地址 端口 可选:要连接到的端口,默认值是1521 服务名称 代表数据库的服务名称。默认设置是数据库所在计算机的主机名,如果数据库服务名与主机名不同,则输入服务名。 本地命名方法(localnaming method)该 方法使用tnsname.ora文件配置.它通常位于%ORACLE_HOME%/NETWORK/ADMIN目录下。如果想改变它的位置,可以通过设 置TNS_ADMIN环境变量,该变量在Hkey_local_machine/software/oracle有可能找得到,呵呵,just有可能。该方法只要明白原理,其实很简单,所以我们只要解释一下几个名词 网络服务名(Net Service Name) -- 它代表着你想连接到的数据库服务,当你在连接描述符中输入数据库服务名就是它了。 主机名 -- 这个都不会你就不要学电脑了,它代表数据库服务器的主机名或IP地址。有一点要注意,由于主机名称的解释是那么的差的不稳定,我建议使用IP地址(作者本人,而不是ORACLE公司) 服务器(service name) -- 可以是SID或是全局数据库名 诊断并解决客户端连接问题请按以下方向检查
检查客户/服务器联系PING吧,不用多说了确定客户正用来到达服务器的网络路由TRACERT命令检查客户/监听器联系使用 TNSPING,它会尝试联系一个ORACLE监听器。它证实客户能联系监听器,但不证实能实际连接到ORACLE服务器。该工具还能显示联系监听器所花费的时间。在后面跟一个数字可以告诉它尝试连接的次数。如:tnsping orcl 3检查本地命名配置文件检查客户网络配置文件通常客户只有网络文件(比如tnsnames.ora和sqlnet.ora)的一个副本,但是如果机器上装了很多ORACLE的软件,有可能有多个网络文件在工作,需要确保这些文件是一致的,以免产生意想不到的效果。检查网络文件位置如果网络文件不在TNS_ADMIN环境变量指定的目录下,则ORACLE会找不到这些文件检查NAMES.DIRECTORY_PATH检查SQLNET.ORA文件中该参数设置值正确,并且名称解释的优先顺序正确.检查NAMES.DEFAULT_DOMAIN如果该参数被设置,如"vicp.net",当输入sqlplus sys/sys@prod时,命名会被附加上默认域名,变成"sqlplus sys/sys@prod.vicp.net"。 如果正确服务名称只是prod,那当然不可能正确解释了。检查客户协议适配器检查客户端代码以下是常见代码
总结:这一章废话很多,以我认为想速成只需理解以下几句。监听器是数据库对外服务的大耳朵,客户通过它联系数据库。客户进行服务名称解释的可选方法有 五种方法:Oracle Internet Directory、Extername Naming、主机命名(Host-name method)、Oracle Easy Connect以及本地命名(localnaming method)。常用的包括主机命名(Host-name method)、Oracle Easy Connect以及本地命名(localnaming method)。附录:超级无聊而且重复的数据库命名大清理
|