Oracle 10g 的神奇之旅开放你的服务大门(oracle10g服务号)
Oracle 10g的神奇之旅:开放你的服务大门
Oracle 10g是Oracel公司推出的一款高性能、高可用、高安全的数据库管理系统。它是Oracle数据库家族最为出色的一个版本,被广泛运用于企业级应用系统的建设中。本文主要介绍Oracle 10g数据库的一项重要特性——服务(Service)管理,并通过实际案例演示如何开放你的服务大门,让其它系统接入Oracle 10g数据库中所提供的服务。
服务的概念
在Oracle 10g数据库中,服务是一个很重要的概念。服务就是Oracle数据库提供给外界的一种访问方式,通过服务,可以将数据库中的特定功能和操作暴露给其他系统使用,以满足不同运维需求。例如,一个Oracle数据库可以提供不止一个服务,每个服务都会对应一个唯一的服务名称,也被称为服务标识符(Service Name)。在服务的实现上,Oracle 10g支持两种不同的方式:静态服务和动态服务。
静态服务
静态服务在Oracle 10g中也叫做基于TCP/IP的服务。实际上,所有的服务都是围绕着TCP/IP协议展开的。静态服务需要通过在数据库中创建一个监听器(Listener)来实现。这个监听器可以监听一个或多个端口号,并提供服务名到监听器端口的映射,这样在客户端访问服务时,客户端通过服务名可以找到监听器所在的端口号。建立静态服务有下面的代码:
“`PL/SQL
listener.ora文件中的配置信息:
LISTENER =
(DESCRIPTION_LIST =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = localhost)(PORT = 1521))
)
)
tnsnames.ora文件中的配置信息:
MYDB =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = localhost)(PORT = 1521))
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = mydb)
)
)
sqlnet.ora文件中的配置信息:
NAMES.DEFAULT_DOMN = mydb.com
动态服务
动态服务也叫做基于HTTP的服务,它将数据库服务封装成HTTP请求,并借助Oracel HTTP Server(OHS)将请求转发到Oracle数据库中的PL/SQL程序。这种服务方式的好处在于可以通过Web方式访问数据库中的服务,同时也可以将PL/SQL程序通过Web方式发布,使得应用程序更加易用。与静态服务不同,动态服务并不需要监听器,而是将TCP/IP部分交给了OHS处理。建立动态服务也有相应的代码:
```PL/SQLBEGIN
DBMS_EPG.drop_dad('mydad');DBMS_EPG.create_dad('mydad',17781);
END;
服务应用实例
本节通过实际案例演示如何在Oracle 10g中开放你的服务大门。
案例1:利用静态服务实现跨网络共享
假设有两个Oracle数据库实例,一个在A服务器上,一个在B服务器上,现在要在A服务器上为B服务器上的Oracle数据库开放服务。则需要在A服务器上创建一个监听器,并指向B服务器上的服务。具体操作如下:
1. 在B服务器上的listener.ora文件中添加如下配置:
“`PL/SQL
SID_LIST_LISTENER =
(SID_LIST =
(SID_DESC =
(SID_NAME = mydb)
(ORACLE_HOME = /u01/app/oracle/product/10.2.0/db_1)
)
)
2.在B服务器上的tnsnames.ora文件中添加如下配置:
```PL/SQLmydb =
(DESCRIPTION =(ADDRESS = (PROTOCOL = TCP)(HOST = BServer)(PORT = 1521))
(CONNECT_DATA =(SERVER = DEDICATED)
(SID = mydb))
)
3. 在A服务器上的listener.ora文件中添加如下配置:
“`PL/SQL
SID_LIST_LISTENER =
(SID_LIST =
(SID_DESC =
(SID_NAME = mydb)
(ORACLE_HOME = /u01/app/oracle/product/10.2.0/db_1)
(GLOBAL_DBNAME = BServer)
)
)
4.在A服务器上的tnsnames.ora文件中添加如下配置:
```PL/SQLmydb =
(DESCRIPTION =(ADDRESS = (PROTOCOL = TCP)(HOST = AServer)(PORT = 1521))
(CONNECT_DATA =(SERVER = DEDICATED)
(SERVICE_NAME = mydb))
)
5. 在A服务器上的sqlnet.ora文件中添加如下配置:
“`PL/SQL
NAMES.DEFAULT_DOMN = mydb.com
完成上述配置后,B服务器上的Oracle数据库上有了一个服务名为mydb,便可以在A服务器上通过mydb服务访问B服务器上的Oracle数据库了。
案例2:利用动态服务实现Web方式访问
假设有一个通过Oracle数据库实现的客户管理系统,现在需要将客户信息以Web方式访问。具体操作如下:
1. 在Oracle 10g数据库中创建一个PL/SQL程序,代码如下:
```PL/SQLCREATE OR REPLACE PROCEDURE get_customer_info(P_ID NUMBER, P_NAME OUT VARCHAR2) AS
BEGINSELECT CUSTOMER_NAME INTO P_NAME FROM CUSTOMER WHERE CUSTOMER_ID = P_ID;
END;
2. 在Oracle 10g数据库中创建一个动态服务,命名为mydad,端口号为17781,代码如下:
“`PL/SQL
BEGIN
DBMS_EPG.drop_dad(’mydad’);
DBMS_EPG.create_dad(’mydad’,17781);
END;
3. 在Oracle 10g数据库中创建一个服务,将get_customer_info PL/SQL程序封装成服务,在动态服务中显示该服务,代码如下:
```PL/SQLBEGIN
DBMS_SERVICE.create_service(’get_customer_info’, ‘SYS.ANONYMOUS_BLOCK’, ‘pls=’ || DBMS_METADATA.CURSOR_TO_XML(DBMS_METADATA.OPEN(DBMS_METADATA.PARAMETER_TRANSFORM(DBMS_METADATA.DATA_OBJECT,’SYS.ANONYMOUS_BLOCK’))), ‘get_customer_info’);DBMS_SERVICE.show_service_status(’get_customer_info’);
END;
结果如下:
——————————————————————————–Service : get_customer_info
Edition : Execution Mode : ROUND-ROBIN
Flover Method : NONE Flover Type : NONE
Preferred Instance : Avlable Instances : PL/SQL Service
Execution Type : STATELESS Preferred Instances :
Maximum Retries : 0 Sessions : UNLIMITED
Importance : MEDIUM DTP : OFF
AQ Avlable : OFF
State : RUNNING Status : OK
Metadata Objective : PL/SQL ServiceDatabase User : SYS
Service Created date : 2007-03-23 06:05:50Service Last Modified date : 2007-03-23 06:05:50
End Point : http://localhost:7777/pls/get_customer_info/get_customer_info
4. 在Oracle HTTP Server(OHS)中创建一个虚拟主机,将请求转发到Oracle 10g数据库中,代码如下:
“`XML
ServerName localhost
RewriteEngine on
RewriteRule ^/get_customer_info/(.*) http://localhost:17781/$1 [P,L]
ErrorLog logs/myerror_car.log
CustomLog logs/myaccess_car.log combined
完成上述步骤后,客户管理系统便可以通过Web方式通过刚刚创建的动态服务获取客户信息了。
结论
服务是Oracle 10g的一项重要特性,拥有了服务的管理能力,可以大大提高应用系统的灵活性、可维护性和安全性。通过本文案例的演示,我们可以看到,服务也是Oracle 10g中一个非常有力的功能,允许用户非常容易地开发和部署应用程序,从而为企业提供更为便捷的管理方式和更加出色的应用性能。
编辑:一起学习网
标签:器上,数据库中,监听器,数据库,方式