概述

DM 在新建库第一次启动服务器时会自动创建除了 DMGEO、DBMS_JOB、DBMS_WORKLOAD_REPOSITORY 和 DBMS_SCHEDULER 之外的所有系统包。

1 概述

1.1 系统包创建、删除语句

DM 在新建库第一次启动服务器时会自动创建除了 DMGEO、DBMS_JOB、DBMS_WORKLOAD_REPOSITORY 和 DBMS_SCHEDULER 之外的所有系统包。

用户也可以通过调用系统过程来创建、删除指定系统包:

SP_CREATE_SYSTEM_PACKAGES(create_flag,pkgname)创建或删除指定的包;SP_CREATE_SYSTEM_PACKAGES(create_flag)一次性创建或删除除了 DMGEO、DBMS_JOB、DBMS_WORKLOAD_REPOSITORY 和 DBMS_SCHEDULER 之外的所有系统包。此外,还可以使用 SF_CHECK_SYSTEM_PACKAGES()来检测系统包启用状态。

DMGEO 包、DBMS_JOB 包、DBMS_WORKLOAD_REPOSITORY 包和 DBMS_SCHEDULER 包的创建方式比较特殊,请参考具体章节。没有特别说明的,创建和删除方式都请参考此处。

注意

SP_CREATE_SYSTEM_PACKAGES(create_flag, pkgname)和SP_CREATE_SYSTEM_PACKAGES(create_flag)使用限制
1、不能在MPP全局模式下的存储过程中直接调用,在MPP LOCAL模式下可在存储过程中直接调用;
2、不能在存储过程中带参数进行动态调用

1.1.1 创建指定的包

SP_CREATE_SYSTEM_PACKAGES 用来创建或删除指定的系统包,除了 DMGEO、DBMS_JOB、DBMS_WORKLOAD_REPOSITORY 和 DBMS_SCHEDULER 以外。

语法如下:

void

SP_CREATE_SYSTEM_PACKAGES (

  CREATE_FLAG int,

  PKGNAME varchar(128)

)

参数详解

  • CREATE_FLAG

为 1 时表示创建指定的系统包;为 0 表示删除这个系统包。

  • PKGNAME

指定要创建的包名。除了 DMGEO、DBMS_JOB、DBMS_WORKLOAD_REPOSITORY 和 DBMS_SCHEDULER 以外的系统包。

返回值

举例说明

例 创建 DBMS_LOB 系统包。

SP_CREATE_SYSTEM_PACKAGES(

   1, 'DBMS_LOB'
   
 );

1.1.2 创建所有系统包

SP_CREATE_SYSTEM_PACKAGES,用来创建或删除除了 DMGEO、DBMS_JOB、DBMS_WORKLOAD_REPOSITORY 和 DBMS_SCHEDULER 以外的所有系统包。若在创建过程中某个系统包由于特定原因未能创建成功,会跳过继续创建后续的系统包。

语法如下:

void

SP_CREATE_SYSTEM_PACKAGES (

  CREATE_FLAG int

)

参数详解

  • CREATE_FLAG

为 1 时表示创建除了 DMGEO、DBMS_JOB、DBMS_WORKLOAD_REPOSITORY 和 DBMS_SCHEDULER 以外的所有系统包;为 0 表示删除这些系统包。

返回值

举例说明

例 创建除了 DMGEO、DBMS_JOB、DBMS_WORKLOAD_REPOSITORY 和 DBMS_SCHEDULER 以外的所有系统包。

SP_CREATE_SYSTEM_PACKAGES (1);

1.1.3 检测系统包是否启用

  1. SF_CHECK_SYSTEM_PACKAGES

SF_CHECK_SYSTEM_PACKAGES 用来检测系统包的启用状态。是否启用系统包,由是否执行过 SP_CREATE_SYSTEM_PACKAGES(1);语句决定,执行过,表示已启用。

语法如下:

int

SF_CHECK_SYSTEM_PACKAGES()

返回值

0:未启用;1:已启用

举例说明

获得系统包的启用状态。

SELECT SF_CHECK_SYSTEM_PACKAGES;
  1. SF_CHECK_SYSTEM_PACKAGE(<PACKAGE_NAME>)

SF_CHECK_SYSTEM_PACKAGE(<PACKAGE_NAME>)可用来检查某个特定的系统包是否启用。

语法如下:

int

SF_CHECK_SYSTEM_PACKAGES(

   PACKAGE_NAME VARCHAR

)

返回值

0:未启用;1:已启用

举例说明

例 获得系统包 DBMS_SCHEDULER 的启用状态。

SELECT SF_CHECK_SYSTEM_PACKAGE('DBMS_SCHEDULER');

1.1.4 包间依赖关系

部分系统包之间有依赖关系。被依赖包一旦被删除,依赖包就会失效。

针对以下存在依赖关系的系统包,当用户创建这些系统包时,系统会自动创建它们所依赖的包:

  • DBMS_ALERT 依赖 DBMS_LOCK 和 DBMS_UTILITY
  • DBMS_WORKLOAD_REPOSITORY 依赖 UTL_FILE
  • DBMS_METADATA 依赖 DBMS_LOB 和 UTL_RAW
  • DBMS_LOB 依赖 UTL_RAW

针对以下存在依赖关系的系统包,用户需要先手动创建它们所依赖的包,然后才能成功创建这些系统包:

  • DBMS_PIPE 依赖 DBMS_XMLGEN
  • DBMS_XMLGEN 依赖 DBMS_LOB
  • DBMS_SPACE 依赖 DBMS_PAGE
  • DBMS_PAGE 依赖 DBMS_BINARY
  • UTL_I18N 依赖 UTL_RAW
  • DBMS_AQ 依赖 DBMS_AQADM 和 DBMS_RANDOM
微信扫码
分享文档
扫一扫
联系客服