在 Oracle 中如何配置和运行外部存储过程

存储 存储软件 Oracle
Oracle 数据库的外部存储过程特性提供了在 C 语言(或能通过 C 调用的其他语言)中实现代码逻辑然后在数据库中通过 PLSQL 运行的功能。

 概述

Oracle 数据库的外部存储过程特性提供了在 C 语言(或能通过 C 调用的其他语言)中实现代码逻辑然后在数据库中通过 PLSQL 运行的功能。

怎样来做?

首先,C 代码需要编译,然后需要从它创建共享库文件(.so)或动态链接库(DLL)(在使用 Windows 的情况下)。需要在数据库中创建一个 library 对象才能从 PLSQL 代码引用这个共享库文件或 DLL。该 Library 需要通过调用规范发布,使用特殊语法,例如 CREATE OR REPLACE 语句的 IS|AS LANGUAGE 子句。换言之,这只是一个 PLSQL 封装器(也称为外部过程)单元,它告诉什么库需要被调用和库中的哪个函数需要运行。

[[233402]]

Oracle 数据库提供了一个"extproc"代理,来帮助 Oracle 和共享库之间的通信。这个代理装载 library,传递任何(如果有的话)参数到这个 library,运行它并且返回结果到调用会话。

extproc 代理如何配置?

有几个方法可以配置 extproc 代理。

使用默认配置,Oracle 数据库每当调用一个外部存储过程时创建一个代理。

编辑 listener.ora 和 tnsnames.ora 来创建一个监听配置覆盖掉默认的配置。在这种情况下,extproc 在每次调用外部存储过程时由 listener 创建。

当使用多线程 extproc agent 或使用 AGENT IN 语句来定义 library 时,必须使用 listener 创建的代理。Oracle 数据库和 listener 创建的代理都是独立的代理。换言之,Oracle 数据库和 listener 创建的都是独立的代理,如果外部存储过程使用得很多,就会影响性能。这可以通过配置多线程代理来解决(MTA)。

MTA 模式

在 MTA 模式中,可以指定在任何给定时间点运行的 extproc 代理的***数量。 请求由多线程代理根据负载来进行提取和服务。MTA可以使用"agtctl"工具来配置。

责任编辑:武晓燕 来源: 搜狐
相关推荐

2010-04-30 08:47:22

Oracle分页存储

2010-05-10 14:16:50

Oracle树结构

2011-04-15 10:56:22

2009-07-08 17:42:33

JDBC存储过程

2011-05-20 15:59:06

Oracle存储Sql语句

2010-04-29 17:31:56

Oracle存储过程

2010-04-26 10:09:22

Oracle存储过程

2010-04-15 17:45:26

Oracle存储过程

2010-03-30 13:19:57

Oracle存储

2010-11-29 11:27:08

oracle创建存储过

2011-04-12 11:12:20

Oracle存储过程

2011-04-11 17:28:50

oracle存储select语句

2018-03-16 08:41:16

Oracle存储函数

2010-04-16 11:03:02

Oracle存储过程

2010-05-10 10:46:07

Oracle存储过程

2010-09-01 16:35:12

SQL删除存储过程

2010-03-30 16:22:55

Oracle不同版本

2010-05-05 17:19:32

Oracle存储过程

2010-04-16 10:11:20

Oracle存储过程

2010-11-19 11:32:25

Oracle存储过程
点赞
收藏

51CTO技术栈公众号