zoukankan      html  css  js  c++  java
  • 管理外部程序的流程

    本部分包含:

    • 关于外部程序
    • DBA任务来启用外部过程调用

    关于外部程序


    外部程序是用C,C ++,Java或其他语言编写的程序,编译并存储在数据库之外,然后由用户会话调用。例如,PL / SQL程序单元可以调用执行特殊用途处理所需的一个或多个C例程。

    这些可调用的例程存储在动态链接库(DLL)中,或者在Java类方法的情况下存储在libunit中,并且使用基本语言进行注册。 Oracle数据库提供了一个特殊用途界面,即调用规范(调用规范),使用户可以用其他语言调用外部过程。

    当用户会话调用外部过程时,数据库会启动数据库主机上的外部过程代理。代理的默认名称是extproc。每个会话都有自己的专用代理。当会话终止时,数据库终止其代理。

    用户应用程序将外部过程代理传递给DLL或libunit的名称,外部过程的名称以及任何相关参数。然后,外部过程代理加载DLL或libunit,运行外部过程,并将外部过程返回的任何值传回应用程序。

    Oracle数据库高级应用程序开发人员指南“中有关外部过程的信息

    DBA任务来启用外部过程调用


    启用外部过程调用可能涉及以下DBA任务:

    • 配置侦听器以启动extproc代理
      默认情况下,数据库启动extproc进程。在以下情况下,您必须更改此默认配置,以便侦听器启动extproc进程:
      。你想使用多线程的extproc代理
      。数据库在Windows上以共享服务器模式运行
      。LIBRARY规范中的AGENT子句或PROCEDURE或FUNCTION规范中的AGENT IN子句将外部过程重定向到不同的extproc代理
      有关更改默认配置的说明,请参见“Oracle数据库高级应用程序开发人员指南”的“使用多种编程语言开发应用程序”一章中标题为“设置环境”的小节。
    • 管理库或授予与管理库有关的特权
      数据库要求通过名为库的模式对象访问DLL。出于安全目的,默认情况下,只有具有DBA角色的用户才能创建和管理库。因此,您可能会被要求:
      。使用CREATE LIBRARY语句来创建开发人员需要的库对象。
      。将以下权限授予开发人员:CREATE LIBRARY,CREATE ANY LIBRARY,ALTER ANTER LIBRARY,EXECUTE ANY LIBRARY,and EXECUTE ON library_name。
      只能将这些特权明确授予受信任的用户,而不能授予PUBLIC角色。如果您打算创建PL / SQL接口到库,那么只需授予PL / SQL接口的EXECUTE特权。不要在底层库上授予EXECUTE。您必须具有库的EXECUTE对象特权才能创建PL / SQL接口。但是,用户在他们自己的模式中自动拥有此权限。很少需要显式授予库上的EXECUTE对象权限。

     Oracle数据库PL / SQL语言参考了解有关CREATE LIBRARY语句的信息

    参考资料


    https://docs.oracle.com/cd/E11882_01/server.112/e25494/manproc.htm#ADMIN00501

  • 相关阅读:
    MySQL性能优化
    mysql中OPTIMIZE TABLE的作用
    Linux中/usr与/var目录详解
    Mysql之EXPLAIN显示using filesort
    MySQL ALTER语法的运用方法 && 操作索引和字段
    NoSQL数据库的分布式算法&&memcache集群的实现
    linux用户权限
    hdoj1241 Oil Deposits
    ny42 一笔画问题
    ny20 吝啬的国度
  • 原文地址:https://www.cnblogs.com/ZeroTiny/p/9046304.html
Copyright © 2011-2022 走看看