系统存储过程和函数DM8 SQL

1) INI 参数管理

  1. SF_GET_PARA_VALUE
    定义:
    int
    SF_GET_PARA_VALUE (
    scope int,
    ini_param_name varchar(256) )
    功能说明:
    返回 dm.ini 文件中非浮点和字符串类型的参数值
    参数说明:
    scope: 取值为 1、2 。 1 表示从 dm.ini 文件中读取;2 表示从内存中读
    取。当取值为 1,且 dm.ini 文件中该参数值设置为非法值时,若设置值与参
    数类型不兼容,则返回默认值;若设置值小于参数取值范围的最小值,则返回
    最小值;若设置值大于参数取值范围的最大值,则返回最大值
    ini_param_name:dm.ini 文件中的参数名
    返回值:
    当前 INI 文件中对应的参数值
    举例说明:
    获得 dm.ini 文件中 BUFFER 参数值
    SELECT SF_GET_PARA_VALUE (1, ‘BUFFER’);
  2. SP_SET_PARA_VALUE*
    定义:
    void
    SP_SET_PARA_VALUE (
    scope int,
    ini_param_name varchar(256)
    value bigint
    )
    附录 3 系统存储过程和函数
    499
    功能说明:
    设置 dm.ini 文件中非浮点和字符串类型的参数值
    参数说明:
    scope:取值为 1、2 。1 表示 dm.ini 文件和内存参数都修改,不需要重
    启服务器;2 表示只修改 dm.ini 文件,服务器重启后生效。
    ini_param_name:dm.ini 文件中的参数名。
    value:设置的值。
    返回值:

    举例说明:
    将 dm.ini 文件中 HFS_CACHE_SIZE 参数值设置为 320 SP_SET_PARA_VALUE (1,‘HFS_CACHE_SIZE’,320);
  3. SF_GET_PARA_DOUBLE_VALUE
    定义:
    double
    SF_GET_PARA_DOUBLE_VALUE (
    scope int,
    ini_param_name varchar(256)
    )
    功能说明:
    返回dm.ini文件中参数中浮点型的参数值
    参数说明:
    scope:取值为1、2 。1表示从dm.ini文件中读取;2表示从内存中读取;
    ini_param_name:dm.ini文件中的参数名。
    返回值:
    当前INI文件中对应的参数值
    举例说明:
    获得dm.ini中SEL_RATE_EQU参数值
    SELECT SF_GET_PARA_DOUBLE_VALUE (1, ‘CKPT_FLUSH_RATE’);
    SELECT SF_GET_PARA_DOUBLE_VALUE (2, ‘CKPT_FLUSH_RATE’);
  4. SP_SET_PARA_DOUBLE_VALUE*
    定义:
    void
    SP_SET_PARA_DOUBLE_VALUE (
    scope int,
    ini_param_name varchar(256),
    value double
    )
    功能说明:
    设置dm.ini参数中浮点型的参数值
    参数说明:
    附录 3 系统存储过程和函数
    500
    scope:取值为 1、2。1 表示 dm.ini 文件和内存参数都修改,不需要重启
    服务器;2 表示只可修改 dm.ini 文件,服务器重启后生效。
    ini_param_name:dm.ini文件中的参数名。
    value:设置的值。
    返回值:

    举例说明:
    将dm.ini文件中SEL_RATE_EQU参数值设置为0.3
    SP_SET_PARA_DOUBLE_VALUE(1, ‘SEL_RATE_EQU’, 0.3);
  5. SF_GET_PARA_STRING_VALUE
    定义:
    char*
    SF_GET_PARA_STRING_VALUE (
    scope int,
    ini_param_name varchar(256)
    )
    功能说明:
    返回 dm.ini 文件中字符串类型的参数值
    参数说明:
    scope: 取值为1、2 。 1表示从dm.ini文件中读取;2表示从内存中读取; ini_param_name:dm.ini文件中的参数名
    返回值:
    当前 INI 文件中对应的参数值
    举例说明:
    获得dm.ini文件中TEMP_PATH参数值
    SELECT SF_GET_PARA_STRING_VALUE (1, ‘TEMP_PATH’);
  6. SP_SET_PARA_STRING_VALUE*
    定义:
    void
    SP_SET_PARA_STRING_VALUE (
    scope int,
    ini_param_name varchar(256) , value varchar(8187)
    ) 功能说明:
    设置 dm.ini 文件中的字符串型参数值
    参数说明:
    scope:取值为 1、2 。1 表示 dm.ini 文件和内存参数都修改,不需要重
    启服务器;2 表示只修改 dm.ini 文件,服务器重启后生效。
    ini_param_name:dm.ini 文件中的参数名。
    value:设置的字符串的值。
    附录 3 系统存储过程和函数
    501
    返回值:

    举例说明:
    将 dm.ini 文件中 SQL_TRACE_MASK 参数值设置为 1 SP_SET_PARA_STRING_VALUE(1, ‘SQL_TRACE_MASK’,‘1’);
  7. SF_SET_SESSION_PARA_VALUE*
    定义:
    void
    SF_SET_SESSION_PARA_VALUE (
    paraname varchar(8187),
    value bigint
    )
    功能说明:
    设置会话级 INI 参数的值
    参数说明:
    paraname: 会话级 INI 参数的参数名
    value:要设置的新值
    返回值:无
    举例说明:
    设置会话级 ini 参数 JOIN_HASH_SIZE 的值为 2000
    SF_SET_SESSION_PARA_VALUE (‘JOIN_HASH_SIZE’, 2000);
  8. SP_RESET_SESSION_PARA_VALUE*
    定义:
    void
    SP_RESET_SESSION_PARA_VALUE (
    paraname varchar(8187) )
    功能说明:
    重置会话级 INI 参数的值,使得参数的值和系统级一致。
    参数说明:
    paraname:会话级 INI 参数的参数名。
    返回值:

    举例说明:
    重置会话级 INI 参数 JOIN_HASH_SIZE 的值
    SP_RESET_SESSION_PARA_VALUE (‘JOIN_HASH_SIZE’);
  9. SF_GET_SESSION_PARA_VALUE
    定义:
    int
    附录 3 系统存储过程和函数
    502
    SF_GET_SESSION_PARA_VALUE (
    paraname varchar(8187)
    )
    功能说明:
    获得整数类型的会话级 INI 参数的值。
    参数说明:
    paraname:会话级 INI 参数的参数名。
    返回值:
    整数类型的会话级 INI 参数的值
    举例说明:
    获取会话级 INI 参数 JOIN_HASH_SIZE 的值:
    SELECT SF_GET_SESSION_PARA_VALUE (‘JOIN_HASH_SIZE’);
  10. SF_GET_SESSION_PARA_DOUBLE_VALUE
    定义:
    double
    SF_GET_SESSION_PARA_DOUBLE_VALUE (
    paraname varchar(8187) )
    功能说明:
    获得浮点型的会话级 INI 参数的值。
    参数说明:
    paraname:会话级 INI 参数的参数名。
    返回值:
    浮点型会话级 INI 参数的值
    举例说明:
    获取会话级 INI 参数 SEL_RATE_SINGLE 的值:
    SELECT SF_GET_SESSION_PARA_DOUBLE_VALUE (‘SEL_RATE_SINGLE’);
  11. SF_SET_SYSTEM_PARA_VALUE*
    定义:
    void
    SF_SET_SYSTEM_PARA_VALUE (
    paraname varchar(256),
    value bigint\double\varchar(256), deferred int,
    scope int)
    功能说明:
    修改系统整型、double、varchar 的静态配置参数或动态配置参数。
    参数说明:
    paraname:ini 参数的参数名。
    value:要设置的新值。
    deferred:是否立即生效。为 0 表示当前 session 修改的参数立即生效;
    附录 3 系统存储过程和函数
    503
    1 表示当前 session 不生效,后续再生效。默认为 0。
    scope:取值为 0、1、2 。0 表示修改内存中的动态的配置参数值;1 表示
    修改内存和 INI 文件中动态的配置参数值;2 表示修改 INI 文件中的静态配置参
    数值和动态配置参数值。
    返回值:

    举例说明:
    修改 INI 参数 JOIN_HASH_SIZE 的值:
    SF_SET_SYSTEM_PARA_VALUE (‘JOIN_HASH_SIZE’,50,1,1);
  12. SF_SET_SQL_LOG
    定义:
    INT
    SF_SET_SQL_LOG (
    svrlog int,
    svrmsk varchar(1000)
    )
    功能说明:
    设置服务器日志相关 INI 参数 SVR_LOG 和 SQL_TRACE_MASK
    参数说明:
    svrlog:INI 参数 SVR_LOG 的设置值
    svrmsk:INI 参数 SQL_TRACE_MASK 的设置值
    返回值:
    是否成功
    举例说明:
    设置服务器日志相关 INI 参数
    SELECT SF_SET_SQL_LOG(1, ‘3:5:7’);

2) 系统信息管理

  1. SP_SET_SESSION_READONLY
    定义:
    INT SP_SET_SESSION_READONLY (
    READONLY INT)
    功能说明:
    设置当前会话的只读模式
    参数说明:
    取值 1 或 0。1 表示对数据库只读;0 表示对数据库为读写
    返回值:
    无。
    举例说明:
    设置当前会话为只读模式
    SP_SET_SESSION_READONLY (1);
    附录 3 系统存储过程和函数
    504
  2. SP_CLOSE_SESSION
    定义:
    VOID SP_CLOSE_SESSION (
    SESSION_ID INT)
    功能说明:
    停止一个活动的会话,会话 ID 可通过 V S E S S I O N S 查 询 , D M 系 统 创 建 的 内 部 S E S S I O N ( P O R T T Y P E = 12 , 但 C O N N E C T E D = 1 的 S E S S I O N ) 也 可 通 过 V SESSIONS 查询,DM 系统创建的内 部 SESSION(PORT_TYPE = 12,但 CONNECTED = 1 的 SESSION)也可通过 V SESSIONSDMSESSIONPORTTYPE=12CONNECTED=1SESSIONVSESSIONS 查询到
    参数说明:
    SESSION_ID:会话 ID
    举例说明:
    SP_CLOSE_SESSION (510180488);
  3. SF_GET_CASE_SENSITIVE_FLAG/ CASE_SENSITIVE 定义:
    INT
    SF_GET_CASE_SENSITIVE_FLAG()
    或者
    INT CASE_SENSITIVE ()
    功能说明:
    返回大小写敏感信息
    参数说明:

    返回值:
    1:敏感
    0:不敏感
    举例说明:
    获得大小写敏感信息
    SELECT SF_GET_CASE_SENSITIVE_FLAG();
  4. SF_GET_EXTENT_SIZE
    定义:
    INT
    SF_GET_EXTENT_SIZE()
    功能说明:
    返回簇大小
    参数说明:

    返回值:
    系统建库时指定的簇大小
    举例说明:
    获得系统建库时指定的簇大小
    SELECT SF_GET_EXTENT_SIZE ();
    附录 3 系统存储过程和函数
    505
  5. SF_GET_PAGE_SIZE/PAGE
    定义:
    INT
    SF_GET_PAGE_SIZE()
    功能说明:
    返回页大小
    参数说明:

    返回值:
    系统建库时指定的页大小
    举例说明:
    获得系统建库时指定的页大小
    SELECT SF_GET_PAGE_SIZE ();
    补充说明:
    获得系统建库时指定的页大小也可使用:
    SELECT PAGE();
  6. SF_PAGE_GET_SEGID
    定义:
    INTEGER
    SF_PAGE_GET_SEGID(
    ts_id int,
    file_id int,
    page_no int
    ) 功能说明:
    获取目标页所在的段号
    参数说明:
    ts_id:指定目标页的表空间,如果表空间不存在,报错
    file_id: 指定目标页的文件,如果文件不存在,报错
    page_no: 指定目标页的编号,如果编号超出文件范围,报错
    返回值:
    页所在的段号。如果返回 0,表示该页是描述页,不属于任何段。
    举例说明:
    SELECT SF_PAGE_GET_SEGID(4, 0, 2000);
  7. SF_PAGE_GET_PAGE_TYPE
    定义:
    VARCHAR
    SF_PAGE_GET_PAGE_TYPE(
    ts_id int,
    file_id int,
    page_no int
    )
    附录 3 系统存储过程和函数
    506
    功能说明:
    获取目标页的类型
    参数说明:
    ts_id:指定目标页的表空间,如果表空间不存在,报错
    file_id: 指定目标页的文件,如果文件不存在,报错
    page_no: 指定目标页的编号,如果编号超出文件范围,报错
    返回值:
    页的类型,没有使用的页,返回"PAGE_NOUSE",保留页,返回"RESERVED"
    举例说明:
    SELECT SF_PAGE_GET_PAGE_TYPE(4, 0, 2000);
  8. SF_GET_FILE_BYTES_SIZE
    定义:
    int
    SF_GET_FILE_BYTES_SIZE (
    GROUPID int,
    FILEID int
    )
    功能说明:
    获取文件字节长度
    参数说明:
    GROUPID:所属的表空间 ID
    FILEID:数据库文件 ID
    返回值:
    文件字节长度
    举例说明:
    获取 0 号文件组中 0 号文件的字节长度
    SELECT SF_GET_FILE_BYTES_SIZE (0,0);
  9. SF_GET_UNICODE_FLAG/UNICODE
    定义:
    INT
    SF_GET_UNICODE_FLAG()
    或者
    INT UNICODE ()
    功能说明:
    返回建库时指定的字符集
    参数说明:

    返回值:
    0 表示 GB18030,1 表示 UTF-8,2 表示 EUC-KR
    举例说明:
    获得系统建库时指定字符集
    SELECT SF_GET_UNICODE_FLAG ();
    附录 3 系统存储过程和函数
    507
  10. SF_GET_SGUID
    定义:
    INT
    SF_GET_SGUID ()
    功能说明:
    返回数据库唯一标志 sguid
    参数说明: 无
    返回值:
    返回数据库唯一标志 sguid
    举例说明:
    获取数据库唯一标志 sguid
    SELECT SF_GET_SGUID();
  11. GUID()
    定义:
    VARCHAR
    GUID ()
    功能说明:
    生成一个唯一编码串(32 个字符)
    返回值:
    返回一个唯一编码串
    举例说明:
    获取一个唯一编码串。
    SELECT GUID();
  12. NEWID()
    定义:
    VARCHAR
    NEWID ()
    功能说明:
    生成一个 SQLSERVER 格式的 guid 字符串 SQLSERVER 的 guid 格式
    xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx
    返回值:
    返回一个 SQLSERVER 格式的唯一编码串
    举例说明:
    获取一个唯一编码串
    SELECT NEWID();
  13. SESSID()
    定义:
    INT
    SESSID ( )
    附录 3 系统存储过程和函数
    508
    功能说明:
    获取当前连接的 id
    返回值:
    返回当前连接 id
    举例说明:
    返回当前连接 id
    SELECT SESSID ();
  14. CHECK_INDEX
    定义:
    INT
    CHECK_INDEX (
    schname varchar,
    indexid int )
    功能说明:
    检查一个索引的合法性(正确性和有效性)。检查过程中,会使用 S+IX 锁来
    封锁索引对应的表对象,如果封锁失败,会忽略索引检查,并记录相关日志到
    dmserver 的 log 文件中
    参数说明:
    schname:模式名
    indexid:索引 id
    返回值:
    0:表示不合法;1:表示合法;2:表示存在未校验的索引
    举例说明:
    CREATE INDEX PRODUCT_IND ON PRODUCTION.PRODUCT(PRODUCTID);
    –查询系统表得到索引 ID
    select name, id from sysobjects where name=‘PRODUCT_IND’ and
    subtype$=‘INDEX’;
    select CHECK_INDEX (‘PRODUCTION’,33555531);
  15. CHECK_DB_INDEX
    定义:
    INT CHECK_DB_INDEX ()
    功能说明:
    检查数据库中所有索引的合法性(正确性和有效性)。检查过程中,会使用 S+IX
    锁来封锁索引对应的表对象,如果封锁失败,会忽略索引检查,并记录相关日志到
    dmserver 的 log 文件中
    返回值:
    0:表示不合法;1:表示合法;2:表示存在未校验的索引
    举例说明:
    SELECT CHECK_DB_INDEX ();
  16. UID
    附录 3 系统存储过程和函数
    509
    定义:
    INT
    UID ()
    功能说明:
    返回当前用户 ID
    参数说明:

    返回值:
    返回当前用户 ID
    举例说明:
    返回当前用户 ID
    SELECT UID();
  17. USER
    定义:
    CHAR*
    USER ()
    功能说明:
    返回当前用户名
    参数说明:

    返回值:
    返回当前用户名
    举例说明:
    返回当前用户名
    SELECT USER();
  18. CUR_DATABASE
    定义:
    CHAR* CUR_DATABASE ()
    功能说明:
    返回数据库名
    参数说明:

    返回值:
    返回数据库名
    举例说明:
    获取数据库名
    SELECT CUR_DATABASE();
  19. VSIZE
    定义:
    INT
    附录 3 系统存储过程和函数
    510
    VSIZE(n)
    功能说明:
    返回 n 的核心内部表示的字节数。如果 n 为 NULL,则返回 NULL。
    参数说明:
    n:待求字节数的参数,可以为任意数据类型
    返回值:
    n 占用的字节数
    举例说明:
    SELECT VSIZE(256);
    查询结果:4 /整数类型/
    SELECT VSIZE(‘数据库’);
    查询结果:6 /中文字符/
  20. SP_RECLAIM_TS_FREE_EXTENTS
    定义:
    SP_RECLAIM_TS_FREE_EXTENTS (
    tsname varchar(128)
    )
    功能说明:
    重组表空间空闲簇
    参数说明:
    tsname:表空间名
    返回值:

    举例说明:
    重组表空间空闲簇
    CALL SP_RECLAIM_TS_FREE_EXTENTS(‘SYSTEM’);
  21. SP_CLEAR_PLAN_CACHE
    定义:
    SP_CLEAR_PLAN_CACHE()
    功能说明:
    清空执行缓存信息。
    参数说明:

    返回值:

    举例说明:
    清空执行缓存信息
    CALL SP_CLEAR_PLAN_CACHE();
  22. SP_SET_PLN_RS_CACHE
    定义:
    SP_SET_PLN_RS_CACHE(
    附录 3 系统存储过程和函数
    511
    plan_id bigint,
    to_cache int )
    功能说明:
    强制设置指定计划结果集缓存的生效及失效
    参数说明:
    plan_id : 指 定 计 划 ID , 其 值 可 以 从 动 态 视 图 V$CACHEPLN 中 的
    CACHE_ITEM 列获得
    to_cache:指定缓存与否,0:不缓存;1:缓存
    返回值:

    举例说明:
    设置计划 ID 为 473546872 的计划结果集缓存生效
    CALL SP_SET_PLN_RS_CACHE(473546872, 1);
  23. SP_CLEAR_PLAN_CACHE
    定义:
    SP_CLEAR_PLAN_CACHE(
    plan_id bigint
    )
    功能说明:
    清空指定的执行缓存信息
    参数说明:
    plan_id : 指 定 计 划 ID , 其 值 可 以 从 动 态 视 图 V$CACHEPLN 中 的
    CACHE_ITEM 列获得
    返回值:无
    举例说明:
    清空 ID 为 473546872 的执行缓存信息
    CALL SP_CLEAR_PLAN_CACHE(473546872);
  24. SF_CHECK_USER_TABLE_PRIV
    定义:
    int
    SF_CHECK_USER_TABLE_PRIV(
    schema_name varchar(128),
    table_name varchar(128),
    user_name varchar(128),
    priv_code int
    )
    功能说明:
    返回用户对表是否具有某种权限
    参数说明:
    schema_name: 模式名;
    附录 3 系统存储过程和函数
    512
    table_name:表名;
    user_name:用户名;
    priv_code:权限代码,0=SELECT, 1=INSERT, 2=DELETE, 3=UPDATE,
    4=REFERENCE
    返回值:
    0:用户不具备相应权限;1:用户具备相应权限
    举例说明:
    获得用户 SYSDBA 对表 SYS.SYSOBJECTS 的查询权限
    SELECT SF_CHECK_USER_TABLE_PRIV (‘SYS’, ‘SYSOBJECTS’, ‘SYSDBA’, 0);
  25. SF_CHECK_USER_TABLE_COL_PRIV
    定义:
    int
    SF_CHECK_USER_TABLE_COL_PRIV(
    schema_name varchar(128),
    table_name varchar(128),
    col_name varchar(128),
    user_name varchar(128),
    priv_code int
    ) 功能说明:
    返回用户对表中某列是否具有某种权限
    参数说明:
    schema_name:模式名;
    table_name:表名;
    col_name:列名;
    user_name:用户名;
    priv_code:权限代码,0=SELECT, 1=INSERT, 2=DELETE, 3=UPDATE,
    4=REFERENCE
    返回值:
    0:用户不具备相应权限;1:用户具备相应权限
    举例说明:
    获得用户 SYSDBA 对表 SYS.SYSOBJECTS 的 ID 列的查询权限
    SELECT SF_CHECK_USER_TABLE_COL_PRIV (‘SYS’, ‘SYSOBJECTS’, ‘ID’ ,
    ‘SYSDBA’, 0);
  26. CUR_TICK_TIME
    定义:
    varchar
    CUR_TICK_TIME ()
    功能说明:
    获取系统当前时钟记数
    参数说明:

    附录 3 系统存储过程和函数
    513
    返回值:
    时钟记数的字符串
    举例说明:
    获取系统当前时钟记数
    SELECT CUR_TICK_TIME();
  27. SP_SET_LONG_TIME
    定义:
    SP_SET_LONG_TIME (
    long_exec_time int
    )
    功能说明:
    设置 V$LOG_EXEC_SQLS_TIME 动态视图中监控 SQL 语句的最短执行时间,
    以毫秒为单位,有效范围 50~3600000。仅 INI 参数 ENABLE_MONITOR 值大于
    1 时设置有效
    参数说明:

    返回值:

    举例说明:
    监控执行时间超过 5 秒的 SQL 语句
    CALL SP_SET_LONG_TIME(5000);
  28. SF_GET_LONG_TIME
    定义:
    int
    SF_GET_LONG_TIME ()
    功能说明:
    返回 V L O N G E X E C S Q L S 动 态 视 图 中 监 控 的 最 短 执 行 时 间 , 以 毫 秒 为 单 位 参 数 说 明 : 无 返 回 值 : V LONG_EXEC_SQLS 动态视图中监控的最短执行时间,以毫秒为单位 参数说明: 无 返回值: V LONGEXECSQLSVLONG_EXEC_SQLS所监控的最短执行时间
    举例说明:
    查看 V$LONG_EXEC_SQLS 监控的最短执行时间
    SELECT SF_GET_LONG_TIME();
  29. PERMANENT_MAGIC
    定义:
    INT
    PERMANENT_MAGIC ()
    功能说明:
    返回数据库永久魔数
    参数说明:
    附录 3 系统存储过程和函数
    514

    返回值:
    返回整型值:永久魔数
    举例说明:
    获取数据库永久魔数
    SELECT PERMANENT_MAGIC();
  30. SP_CANCEL_SESSION_OPERATION
    定义:
    SP_CANCEL_SESSION_OPERATION (
    session_id bigint
    ) 功能说明:
    终止指定会话的操作
    参数说明: session_id:指定会话的 id
    返回值:

    举例说明:
    终止 ID 为 310509680 的会话的操作
    CALL SP_CANCEL_SESSION_OPERATION (310509680);
  31. SP_TRUNC_TS_FILE
    定义:
    SP_TRUNC_TS_FILE (
    ts_id int,
    file_id int,
    to_size int
    )
    功能说明:
    将临时表空间文件截断到指定的大小,仅能截断文件空闲未使用的部分,如果
    在指定 to_size 后存在已使用数据页,则实际截断大小会大于 to_size
    参数说明: ts_id:指定截断文件的临时表空间 ID
    file_id:指定截断文件的文件 ID
    to_size:指定将文件截断至多大,以 M 为单位;to_size 大小换算成页数
    后,值必须在 4096 到 2G 之间
    返回值:

    举例说明:
    将临时表空间文件号为 0 的文件截断到 32M 大小,库的页大小为 8K
    CALL SP_TRUNC_TS_FILE (3, 0, 32);
  32. SF_GET_SESSION_SQL
    附录 3 系统存储过程和函数
    515
    定义:
    CLOB
    SF_GET_SESSION_SQL (
    sess_id bigint
    )
    功能说明:
    返回指定会话上最近处理的完整的 SQL 语句
    参数说明:
    sess_id:指定会话的会话 ID,对应 V$SESSIONS 视图的 SESS_ID 字段
    返回值:
    指定会话上最近处理的完整的 SQL 语句
    举例说明:
    在 ID 为 96710784 的会话上执行如下语句:
    CREATE OR REPLACE PROCEDURE xx AS
    BEGIN
    SELECT SF_GET_SESSION_SQL(96710784);
    EXCEPTION
    WHEN OTHERS THEN NULL;
    END;
    /
    重新打开一个会话,调用 xx 过程。可以查看到 ID 为 96710784 的会话上的
    最后一次执行的 SQL 语句。
    SQL> call xx;
    执行结果为:
    行号 SF_GET_SESSION_SQL(96710784)

1 CREATE OR REPLACE PROCEDURE xx AS
BEGIN
SELECT SF_GET_SESSION_SQL(96710784);
EXCEPTION
WHEN OTHERS THEN NULL;
END;
33) SF_CLOB_LEN_IS_VALID
定义:
SF_CLOB_LEN_IS_VALID (
clob
)
功能说明:
检查系统存储的 clob 字符长度是否正常
参数说明:
clob:clob 对象
返回值:
0:不正常,1:正常
附录 3 系统存储过程和函数
举例说明:
select SF_CLOB_LEN_IS_VALID (‘PRODUCTION.PRODUCT.DESCRIPTION’);
34) SP_VALIDATE_CLOB_LEN
定义:
SP_VALIDATE_CLOB_LEN(
clob
)
功能说明:
修复系统存储的 clob 字符长度
参数说明:
clob:clob 对象
举例说明:
SP_VALIDATE_CLOB_LEN (‘PRODUCTION.PRODUCT.DESCRIPTION’);
35) CHECK_INDEX_PAGE_USED
定义:
CHECK_INDEX_PAGE_USED (
indexid int
)
功能说明:
检查 ID 为 indexid 的索引数据页(包含 BLOB 字段)分配是否与对应的簇
分配情况一致
参数说明:
Indexid:索引 ID,如果不是数据库中的索引 ID 或者为空,则报错
返回值:
1:一致
0:不一致
举例说明:
DROP TABLE T1_CHECK;
CREATE TABLE T1_CHECK(c1 INT);
SELECT CHECK_INDEX_PAGE_USED(a.id) FROM sysobjects a WHERE
a.subtype$=‘INDEX’ AND a.pid IN(SELECT id FROM sysobjects WHERE name =
‘T1_CHECK’);
36) SF_FILE_SYS_CHECK_REPORT
定义:
INTEGER
SF_FILE_SYS_CHECK_REPORT(
ts_id int
)
功能说明:
校验检查指定表空间的簇是否正常
516
附录 3 系统存储过程和函数
517
参数说明:
ts_id:指定检测的表空间,如果表空间不存在则返回 0
返回值:
1:表示表空间的簇都是正常的
0:表空间中存在检验不通过的簇,问题的详细描述输出到服务器的运行日志
中。
举例说明:
SELECT SF_FILE_SYS_CHECK_REPORT(4);
37) SP_LOAD_LIC_INFO()
定义:
VOID
SP_LOAD_LIC_INFO()
功能说明:
进行 DM 服务器的 LICENSE 校验。检查 LICENSE 与当前 DM 版本及系统运行
环境是否一致,如果有不一致则 DM 服务器主动退出
参数说明:
无 返回值:无
举例说明:
SP_LOAD_LIC_INFO();
38) SP_CREATE_DYNAMIC_TABLES()
定义:
VOID
SP_CREATE_DYNAMIC_TABLES (
flag int
)
功能说明:
创建或删除所有动态视图及其同义词
参数说明:
flag:0 表示删除所有动态视图及其同义词;1 表示创建所有动态视图及其
同义词,并授权
返回值:

举例说明:
SP_CREATE_DYNAMIC_TABLES(1);

3) 备份恢复管理

  1. SF_BAKSET_BACKUP_DIR_ADD
    定义:
    INT
    附录 3 系统存储过程和函数
    518
    SF_BAKSET_BACKUP_DIR_ADD(
    device_type varchar,
    backup_dir varchar(256)
    )
    功能说明:
    添加备份目录。若添加目录已经存在或者为库默认备份路径,则认为已经存在,
    系统不添加但也不报错
    参数说明:
    device_type:待添加的备份目录对应存储介质类型,DISK 或者 TAPE。目
    前,无论指定介质类型为 DISK 或者 TAPE,都会同时搜索两种类型的备份集
    backup_dir:待添加的备份目录
    返回值:1:目录添加成功;其它情况下报错
    举例说明:
    SELECT SF_BAKSET_BACKUP_DIR_ADD(‘DISK’,’/home/dm_bak’);
  2. SF_BAKSET_BACKUP_DIR_REMOVE
    定义:
    INT
    SF_BAKSET_BACKUP_DIR_REMOVE (
    device_type varchar,
    backup_dir varchar(256)
    )
    功能说明:
    删除备份目录。若删除目录为库默认备份路径,不进行删除,认为删除失败。
    若指定目录存在于记录的合法目录中,则删除;不存在或者为空则跳过,正常返回
    参数说明:
    device_type:待删除的备份目录对应存储介质类型。待删除的备份目录对
    应存储介质类型,DISK 或者 TAPE
    backup_dir:待删除的备份目录
    返回值:
    1:目录删除成功、目录不存在或者目录为空;0:目录为库默认备份路径;
    其他情况报错
    举例说明:
    SELECT SF_BAKSET_BACKUP_DIR_REMOVE(‘DISK’,’/home/dm_bak’);
  3. SF_BAKSET_BACKUP_DIR_REMOVE_ALL
    定义:
    INT
    SF_BAKSET_BACKUP_DIR_REMOVE_ALL()
    功能说明:
    清理全部备份目录,默认备份目录除外
    返回值:
    1:目录全部清理成功;其它情况下报错
    附录 3 系统存储过程和函数
    519
    举例说明:
    SELECT SF_BAKSET_BACKUP_DIR_REMOVE_ALL();
  4. SF_BAKSET_CHECK
    定义:
    INT
    SF_BAKSET_CHECK(
    device_type varchar,
    bakset_pathvarchar(256)
    )
    功能说明:
    对备份集进行校验
    参数说明:
    device_type:设备类型,disk 或 tape
    bakset_path:待校验的备份集目录
    返回值:
    1:备份集目录存在且合法;否则报错
    举例说明:
    BACKUP DATABASE FULL BACKUPSET ‘/home/dm_bak/db_bak_for_check’;
    SELECT SF_BAKSET_CHECK(‘DISK’,’/home/dm_bak/ db_bak_for_check’);
  5. SF_BAKSET_REMOVE
    定义:
    INT
    SF_BAKSET_REMOVE (
    device_type varchar,
    backsetpath varchar(256),
    option integer
    )
    功能说明:
    删除指定设备类型和指定备份集目录的备份集。一次只检查一个合法.meta
    文件,然后删除对应备份集;若存在非法或非正常备份的.meta 文件,则报错或
    直接返回,不会接着检查下一个.meta 文件;若同一个备份集下还存在其它备份
    文件或备份集,则只删除备份文件,不会删除整个备份集
    参数说明:
    device_type:设备类型,disk 或 tape
    backsetpath:待删除的备份集目录
    Option:删除备份集选项,0 默认删除,1 级联删除。可选参数。并行备份集
    中子备份集不允许单独删除;目标备份集被其他备份集引用为基备份的,默认删除,
    报错;级联删除情况下,会递归将相关的增量备份也删除
    返回值:
    1:备份集目录删除成功;其它情况下报错
    举例说明:
    BACKUP DATABASE FULL BACKUPSET ‘/home/dm_bak/db_bak_for_remove’;
    附录 3 系统存储过程和函数
    520
    BACKUP DATABASE INCREMENT BACKUPSET
    ‘/home/dm_bak/db_bak_for_remove_incr’;
    SELECT SF_BAKSET_REMOVE(‘DISK’,’/home/dm_bak/db_bak_for_remove’);
    执行结果 [-8202]:[/home/dm_bak/db_bak_for_remove_incr]的基备份,不能删除. SELECT SF_BAKSET_REMOVE(‘DISK’,’/home/dm_bak/db_bak_for_remove’,1);
    执行结果
    1
  6. SF_BAKSET_REMOVE_BATCH
    定义:
    INT
    SF_BAKSET_REMOVE_BATCH (
    device_type varchar,
    end_time datetime,
    range int,
    obj_name varchar(257)
    )
    功能说明:
    批量删除满足指定条件的所有备份集
    参数说明:
    device_type:设备类型,disk 或 tape。指定 NULL,则忽略存储设备的
    区分
    end_time:删除备份集生成的结束时间,仅删除 end_time 之前的备份集,
    必须指定
    range:指定删除备份的级别。1 代表库级;2 代表表空间级;3 代表表级; 4 代表归档备份。若指定 NULL,则忽略备份集备份级别的区分
    obj_name:待删除备份集中备份对象的名称,仅表空间级和表级有效。若为
    表级备份删除,则需指定完整的表名(模式.表名)。否则,将认为删除会话当前
    模式下的表备份。若指定为 NULL,则忽略备份集中备份对象名称区分
    返回值:
    1:备份集目录删除成功;其它情况下报错
    举例说明:
    BACKUP DATABASE FULL BACKUPSET ‘/home/dm_bak/db_bak_for_remove’;
    BACKUP TABLESPACEMAIN FULL BACKUPSET
    ‘/home/dm_bak/ts_bak_for_remove’;
    SELECT SF_BAKSET_REMOVE_BATCH (‘DISK’, now(), NULL, NULL);
  7. SP_DB_BAKSET_REMOVE_BATCH
    定义:
    SP_DB_BAKSET_REMOVE_BATCH (
    device_type varchar,
    end_time datetime
    附录 3 系统存储过程和函数
    521
    )
    功能说明:
    批量删除指定时间之前的数据库备份集。使用该方法前,需要先使用
    SF_BAKSET_BACKUP_DIR_ADD 添加将要删除的备份集目录,否则只删除默认备
    份路径下的备份集
    参数说明:
    device_type:设备类型,disk 或 tape。指定 NULL,则忽略存储设备的
    区分
    end_time:删除备份集生成的结束时间,仅删除 end_time 之前的备份集,
    必须指定
    举例说明:
    BACKUP DATABASE FULL BACKUPSET ‘/home/dm_bak/db_bak_for_batch_del’;
    SELECT SF_BAKSET_BACKUP_DIR_ADD(‘DISK’,’/home/dm_bak’);
    CALL SP_DB_BAKSET_REMOVE_BATCH(‘DISK’, NOW());
  8. SP_TS_BAKSET_REMOVE_BATCH
    定义:
    SP_TS_BAKSET_REMOVE_BATCH (
    device_type varchar,
    end_time datetime,
    ts_name varchar(128)
    )
    功能说明:
    批量删除指定表空间对象及指定时间之前的表空间备份集。使用该方法前,需
    要先使用 SF_BAKSET_BACKUP_DIR_ADD 添加将要删除的备份集目录,否则只删
    除默认备份路径下的备份集
    参数说明:
    device_type:设备类型,disk 或 tape。指定 NULL,则忽略存储设备的
    区分
    end_time:删除备份集生成的结束时间,仅删除 end_time 之前的备份集,
    必须指定
    ts_name:表空间名,若未指定,则认为删除所有满足条件的表空间备份集
    举例说明:
    BACKUP TABLESPACE MAIN BACKUPSET
    ‘/home/dm_bak/ts_bak_for_batch_del’;
    SELECT SF_BAKSET_BACKUP_DIR_ADD(‘DISK’,’/home/dm_bak’);
    CALL SP_TS_BAKSET_REMOVE_BATCH(‘DISK’,NOW(),‘MAIN’);
  9. SP_TAB_BAKSET_REMOVE_BATCH
    定义:
    SP_TAB_BAKSET_REMOVE_BATCH (
    device_type varchar,
    end_time datetime,
    sch_name varchar(128),
    附录 3 系统存储过程和函数
    tab_name varchar(128)
    )
    功能说明:
    批量删除指定表对象及指定时间之前的表备份集。使用该方法前,需要先使用
    SF_BAKSET_BACKUP_DIR_ADD 添加将要删除的备份集目录,否则只删除默认备
    份路径下的备份集
    参数说明:
    device_type:设备类型,disk 或 tape。指定 NULL,则忽略存储设备的
    区分
    end_time:删除备份集生成的结束时间,仅删除 end_time 之前的备份集,
    必须指定
    sch_name:表所属的模式名
    tab_name:表名,只要模式名和表名有一个指定,就认为需要匹配目标;若
    均指定为 NULL,则认为删除满足条件的所有表备份
    举例说明:
    CREATE TABLE TAB_FOR_BATCH_DEL(C1 INT);
    BACKUP TABLE TAB_FOR_BATCH_DEL
    BACKUPSET’/home/dm_bak/tab_bak_for_batch_del’;
    SELECT SF_BAKSET_BACKUP_DIR_ADD(‘DISK’,’/home/dm_bak’);
    CALL
    SP_TAB_BAKSET_REMOVE_BATCH(‘DISK’,NOW(),‘SYSDBA’,‘TAB_FOR_BATCH_DEL’);
  10. SP_ARCH_BAKSET_REMOVE_BATCH
    定义:
    SP_ARCH_BAKSET_REMOVE_BATCH (
    device_type varchar,
    end_time datetime
    )
    功能说明:
    批量删除指定时间之前的归档备 份集。使用该方法前,需要先使用
    SF_BAKSET_BACKUP_DIR_ADD 添加将要删除的备份集目录,否则只删除默认备
    份路径下的备份集
    参数说明:
    device_type:设备类型,disk 或 tape。指定 NULL,则忽略存储设备的
    区分
    end_time:删除备份集生成的结束时间,仅删除 end_time 之前的备份集,
    必须指定
    举例说明:
    BACKUP ARCHIVELOG BACKUPSET ‘/home/dm_bak/arch_bak_for_batch_del’;
    SELECT SF_BAKSET_BACKUP_DIR_ADD(‘DISK’,’/home/dm_bak’);
    CALL SP_ARCH_BAKSET_REMOVE_BATCH(‘DISK’, NOW());

4) 定时器管理

本小节中的定时器管理相关系统存储过程都必须在系统处于 MOUNT 状态时执行。
1.SP_ADD_TIMER*
定义:
SP_ADD_TIMER(
TIMER_NAME VARCHAR(128),
TYPE INT,
FREQ_MONTH_WEEK_INTERVAL INT,
FREQ_SUB_INTERVAL INT,
FREQ_MINUTE_INTERVAL INT,
START_TIME TIME,
END_TIME TIME,
DURING_START_DATE DATETIME,
DURING_END_DATE DATETIME,
NO_END_DATE_FLAG BOOL
DESCRIBE VARCHAR(128), IS_VALID BOOL
)
功能说明:
创建一个定时器
参数说明:
timer_name:定时器名称,应使用普通标识符,包含特殊符号可能导致无法
正常使用
type:定时器调度类型,取值为:1:执行一次;2:按日执行;3:按周执
行;4:按月执行的第几天;5:按月执行的第一周;6:按月执行的第二周;7:
按月执行的第三周;8:按月执行的第四周; 9:按月执行的最后一周
freq_month_week_interval:间隔的月/周/天(调度类型决定)数
freq_sub_interval:第几天/星期几/一个星期中的某些天
freq_minute_interval:间隔的分钟数
start_time:开始时间
end_time:结束时间
during_start_date:有效日期时间段的开始日期时间。只有当前时间大
于该字段时,该定时器才有效
during_end_date:有效日期时间段的结束日期时间
no_end_date_flag:是否有结束日期(0:有结束日期;1:没有结束日期)
describe:描述
is_valid:定时器是否有效
返回值:

说明:

  1. type = 1 时,freq_sub_interval、freq_month_week_interval、
    附录 3 系统存储过程和函数
    524
    freq_minute_interval、end_time、during_end_date 无效。只有
    start_time,during_start_date 有意义
  2. type = 2 时,freq_month_week_interval 有效,表示相隔几天,取值
    范围为 1-100;freq_sub_interval 无效;freq_minute_interval
    <=24* 60 有效
    a) 当 freq_minute_interval = 0 时,当天只执行一次。end_time 无
    效。
    b) 当060时,表示当天从start_time
    时间开始,每隔 freq_minute_interval 分钟执行一次。
    c) 当 freq_minute_interval > 24 60 时,非法。
  3. type = 3 时,意思是每隔多少周开始工作(从开始日期算起)。计算方法为:
    (当前日期和开始日期的天数之差/7)% freq_month_week_interval =0
    且当前是星期 freq_sub_interval,其中 freq_sub_interval 的八位
    如下表所示:
    8 7 6 5 4 3 2 1 1-7 位分别代表星期天,星期一、星期二…、星期六,第 8 位无意义。这几位
    为 1 表示满足条件,为 0 表示不满足条件。
    a) 1<=freq_month_week_interval<=100,代表每隔多少周
    b) 1<=freq_sub_interval<=127 代表星期中的某些天
    c) freq_minute_interval 代表分钟数。
    当 freq_minute_interval = 0 时,当天只执行一次。end_time 无 效;当 freq_minute_interval > 0 且,表示当天可执行多次;当
    freq_minute_interval > 24* 60 时,非法。
  4. type = 4 时 , 每 freq_month_week_interval 个 月 的 第
    freq_sub_interval 日 开 始 工 作 。 其 中 , 是 否 满 足
    freq_month_week_interval 个月的判断条件是:(月份的差 + (日期的 差>=15||日期的差<= -15)?1:0 ) % freq_month_week_interval =
    0 且当前是当月的 freq_sub_interval 日,表示满足条件;否则不满足。
    其中,“月份的差” 和 “日期的差”分别指的是系统当前时间和字段
    “during_start_date”中的月份差值和日期差值。
    a) 1<=freq_sub_interval<31,代表第几日;
    b) 1<=freq_month_week_interval<100,代表每隔多少个月;
    c) freq_minute_interval 代表分钟数。
    当 freq_minute_interval = 0 时,当天只执行一次。end_time
    无效;当 freq_minute_interval > 0 且,表示当天可执行多次;当
    freq_minute_interval >24* 60 时,非法。
  5. type = 5,6,7,8,9 时,每 freq_month_week_interval 个月的第
    type-4 周的周 freq_sub_interval 开 始 工 作 。 其 中 , 是 否 满 足
    freq_month_week_interval 个月的判断条件是:(月份的差 + 日期的差
    /15) % freq_month_week_interval = 0 且当前是当月的第 type-4
    周的周 freq_sub_interval,表示满足条件;否则不满足。
    a) 1<=freq_sub_interval<=7,代表星期天到星期六(星期天是一个星
    期的第一天);
    b) freq_month_week_interval<100,代表每隔多少个月;
    附录 3 系统存储过程和函数
    525
    c) freq_minute_interval 代表分钟数。
    当 freq_minute_interval = 0 时,当天只执行一次。end_time 无 效;当 freq_minute_interval > 0 且,表示当天可执行多次;当
    freq_minute_interval > 24* 60 时,非法。
  6. 如果 no_end_date_flag = TRUE:表示永远不结束,一直存在下去。
  7. 如果 is_valid= TRUE:表示定时器创建时就有效。
  8. 总 结 freq_sub_interval , freq_month_week_interval 和
    freq_minute_interval 的取值范围如下表所示。
    type 1 2 3 4 5,6,7,8,9
    max min max min max min max min max min
    freq_sub_interval 0 0 0 0 127 1 31 1 7 1
    freq_month_week_interval 0 0 100 1 100 1 100 1 100 1
    freq_minute_interval 0 0 1440 0 1440 0 1440 0 1440 0
    举例说明:
    创建一个定时器,每天 02:00 进行调度,开始日期:2011-02-01,结束日期:
    2011-09-01,间隔天数 1 天,每隔一分钟循环执行。
    CALL SP_ADD_TIMER(‘TIMER1’, 2, 1, 0, 1, ‘02:00:00’, ‘20:00:00’, ‘2011-02-01
    14:30:34’, ‘2011-09-01’, 0, ‘每天凌晨两点进行调度’, 1);
    2.SP_DROP_TIMER* 定义: SP_DROP_TIMER (
    timer_name varchar(128)
    )
    功能说明:
    删除一个定时器
    参数说明:
    timer_name:定时器名
    返回值:

    举例说明:
    删除定时器 TIMER1
    CALL SP_DROP_TIMER(‘TIMER1’);
  9. SP_OPEN_TIMER*
    定义:
    SP_OPEN_TIMER (
    timer_name varchar(128)
    )
    功能说明:
    打开一个定时器
    参数说明:
    timer_name:定时器名
    返回值:
    附录 3 系统存储过程和函数
    526

    举例说明:
    打开定时器 TIMER1
    SP_OPEN_TIMER(‘TIMER1’);
  10. SP_CLOSE_TIMER*
    定义:
    SP_CLOSE_TIMER (
    timer_name varchar(128)
    )
    功能说明:
    关闭一个定时器
    参数说明:
    timer_name:定时器名
    返回值:无
    举例说明:
    关闭定时器 TIMER1
    SP_CLOSE_TIMER(‘TIMER1’);

5) 数据复制管理

本小节的存储过程都与 DM 的数据复制功能相关,关于数据复制的概念和相关环境配置 与操作可以参考《DM8 系统管理员手册》相关章节。

  1. SP_INIT_REP_SYS*
    定义:
    SP_INIT_REP_SYS(
    CREATE_FLAG INT
    );
    功能说明:
    创建或删除数据复制所需的系统表
    参数说明:
    CREATE_FLAG:为 1 表示创建复制所需系统表;为 0 表示删除这些系统表 返回值:

    举例说明:
    创建复制所需的系统表
    SP_INIT_REP_SYS(1);
  2. SP_RPS_ADD_GROUP
    定义:
    SP_RPS_ADD_GROUP(
    GROUP_NAME VARCHAR(128),
    附录 3 系统存储过程和函数
    527
    GROUP_DESC VARCHAR(1000)
    );
    功能说明:
    创建复制组
    参数说明:
    GROUP_NAME:创建的复制组名称
    GROUP_DESC:复制组描述
    返回值:

    备注:
    指示 RPS 创建一个新的复制组。如果已存在同名复制组则报错
    举例说明:
    创建复制组 REP_GRP_B2C
    SP_RPS_ADD_GROUP(‘REP_GRP_B2C’,‘主从同步复制’);
  3. SP_RPS_DROP_GROUP
    定义:
    SP_RPS_DROP_GROUP(
    GROUP_NAME VARCHAR(128)
    );
    功能说明:
    删除复制组
    参数说明:
    GROUP_NAME:复制组名称
    返回值:

    举例说明:
    删除复制组 REP_GRP_B2C
    SP_RPS_DROP_GROUP (‘REP_GRP_B2C’);
  4. SP_RPS_ADD_REPLICATION
    定义:
    SP_RPS_ADD_REPLICATION(
    GRP_NAME VARCHAR(128),
    REP_NAME VARCHAR(128),
    REP_DESC VARCHAR(1000),
    MINSTANCE VARCHAR(128),
    SINSTANCE VARCHAR(128),
    REP_TIMER VARCHAR(128),
    ARCH_PATH VARCHAR(256)
    );
    附录 3 系统存储过程和函数
    528
    功能说明:
    创建复制关系
    参数说明:
    GRP_NAME:复制组名
    REP_NAME:复制名,必须在 RPS 上唯一 REP_DESC:复制描述
    MINSTANCE:主节点实例名,必须在 RPS 的 MAL 中已配置
    SINSTANCE:从节点实例名,必须在 RPS 的 MAL 中已配置
    REP_TIMER:复制定时器名。借助定时器,可以设置复制数据的同步时机。
    如果是同步复制则为 NULL
    ARCH_PATH:主服务器上逻辑日志的完整归档路径
    返回值:

    举例说明:
    创建复制关系
    SP_RPS_ADD_REPLICATION (‘REP_GRP_B2C’, ‘REPB2C’, ‘B 到 C 的同步复制’, ‘B’, ‘C’, NULL, ‘{ DEFARCHPATH}\REPB2C’);
  5. SP_RPS_DROP_REPLICATION
    定义:
    SP_RPS_DROP_REPLICATION (
    REP_NAME VARCHAR(128)
    );
    功能说明:
    删除复制关系
    参数说明:
    REP_NAME:复制名称
    返回值:

    举例说明:
    删除复制关系
    SP_RPS_DROP_REPLICATION (‘REPB2C’);
  6. SP_RPS_SET_ROUTE_FAULT_TIMEOUT
    定义:
    SP_RPS_SET_ROUTE_FAULT_TIMEOUT (
    REP_NAME VARCHAR(128),
    TIMEOUTS INT
    );
    功能说明:
    设置复制路径故障超时
    参数说明:
    REP_NAME:复制关系名
    附录 3 系统存储过程和函数
    529
    TIMEOUTS:故障超时值,以秒为单位。0 为立即超时;-1 表示无超时限制
    返回值:无
    备注:
    该接口用于设置复制路径故障处理策略。设置后,RPS 如检测到复制路径产生
    故障,且故障持续超过设定的超时值后,则需要取消故障的复制关系
    举例说明:
    设置复制路径故障超时
    SP_RPS_SET_ROUTE_FAULT_TIMEOUT (‘REPB2C’,10);
  7. SP_RPS_SET_INST_FAULT_TIMEOUT
    定义:
    SP_RPS_SET_INST_FAULT_TIMEOUT (
    INST_NAME VARCHAR(128),
    TIMEOUTS INT
    );
    功能说明:
    设置复制节点故障超时
    参数说明:
    INST_NAME:复制节点实例名
    TIMEOUTS:故障超时值,以秒为单位。0 为立即超时;-1 表示无超时限制
    返回值:

    举例说明:
    设置复制节点故障超时
    SP_RPS_SET_INST_FAULT_TIMEOUT (‘B’,10);
  8. SP_RPS_ADD_TIMER
    定义:
    SP_RPS_ADD_TIMER(
    TIMER_NAME VARCHAR(128),
    TIMER_DESC VARCHAR(1000),
    TYPE$ INT,
    FERQ_INTERVAL INT,
    FREQ_SUB_INTERVAL INT,
    FREQ_MINUTE_INTERVAL INT,
    START_TIME TIME,
    END_TIME TIME,
    DURING_START_DATE DATETIME,
    DURING_END_DATE DATETIME,
    NO_END_DATA_FLAG INT
    );
    功能说明:
    附录 3 系统存储过程和函数
    530
    设置复制关系的定时器
    参数说明:
    TIMER_NAME:定时器名
    TIMER_DESC:定时器描述
    TYPE : 定 时 器 类 型 , 取 值 如 下 : 1 : 执 行 一 次 2 : 每 日 执 行 3 : 每 周 执 行 4 : 按 月 执 行 的 第 几 天 5 : 按 月 执 行 的 第 一 周 6 : 按 月 执 行 的 第 二 周 7 : 按 月 执 行 的 第 三 周 8 : 按 月 执 行 的 第 四 周 9 : 按 月 执 行 的 最 后 一 周 F R E Q I N T E R V A L : 间 隔 的 月 / 周 ( 调 度 类 型 决 定 ) 数 F R E Q S U B I N T E R V A L : 间 隔 天 数 F R E Q M I N U T E I N T E R V A L : 间 隔 的 分 钟 数 S T A R T T I M E : 开 始 时 间 E N D T I M E : 结 束 时 间 D U R I N G S T A R T D A T E : 有 效 日 期 时 间 段 的 开 始 日 期 时 间 D U R I N G E N D D A T E : 有 效 日 期 时 间 段 结 束 日 期 时 间 N O E N D D A T A F L A G : 结 束 日 期 是 否 无 效 标 识 。 0 表 示 结 束 日 期 有 效 ; 1 表 示 无 效 本 过 程 的 T Y P E :定时器类型,取值如下: 1:执行一次 2:每日执行 3:每周执行 4:按月执行的第几天 5:按月执行的第一周 6:按月执行的第二周 7:按月执行的第三周 8:按月执行的第四周 9:按月执行的最后一周 FREQ_INTERVAL:间隔的月/周(调度类型决定)数 FREQ_SUB_INTERVAL: 间隔天数 FREQ_MINUTE_INTERVAL:间隔的分钟数 START_TIME:开始时间 END_TIME:结束时间 DURING_START_DATE:有效日期时间段的开始日期时间 DURING_END_DATE:有效日期时间段结束日期时间 NO_END_DATA_FLAG:结束日期是否无效标识。0 表示结束日期有效;1 表 示无效 本 过 程 的 TYPE 123456789FREQINTERVAL/FREQSUBINTERVALFREQMINUTEINTERVALSTARTTIMEENDTIMEDURINGSTARTDATEDURINGENDDATENOENDDATAFLAG01TYPE 、 FERQ_INTERVAL 、 FREQ_SUB_INTERVAL 、
    FREQ_MINUTE_INTERVAL、START_TIME、END_TIME、DURING_START_DATE、
    DURING_END_DATE 和 NO_END_DATA_FLAG 分别与过程 SP_ADD_TIMER 的参数
    TYPE 、 FREQ_MONTH_WEEK_INTERVAL 、 FREQ_SUB_INTERVAL 、
    FREQ_MINUTE_INTERVAL、START_TIME、END_TIME、DURING_START_DATE、
    DURING_END_DATE 和 NO_END_DATE_FLAG 对 应 , 其 具 体 说 明 可 参 考 过 程
    SP_ADD_TIMER 的说明。
    返回值:

    举例说明:
    设置复制关系的定时器
    SP_RPS_ADD_TIMER (‘TIMER1’,‘按天计算’, 1, 1, 0, 1, CURTIME, ‘23:59:59’,
    NOW, NULL, 1);
  9. SP_RPS_REP_RESET_TIMER
    定义:
    SP_RPS_REP_RESET_TIMER(
    REP_NAME VARCHAR(128),
    TIMER_NAME VARCHAR(128)
    );
    功能说明:
    附录 3 系统存储过程和函数
    531
    重新设置复制关系的定时器
    参数说明:
    REP_NAME:复制名
    TIMER_NAME:新的定时器名
    返回值:

    举例说明:
    重新设置复制关系的定时器
    SP_RPS_REP_RESET_TIMER (‘REPB2C’, ‘TIMER1’);
  10. SP_RPS_ADD_TAB_MAP
    定义:
    SP_RPS_ADD_TAB_MAP(
    REP_NAME VARCHAR(128),
    MTAB_SCHEMA VARCHAR(128),
    MTAB_NAME VARCHAR(128),
    STAB_SCHEMA VARCHAR(128),
    STAB_NAME VARCHAR(128),
    READ_ONLY_MODE INT
    );
    功能说明:
    添加表级复制映射
    参数说明:
    REP_NAME:复制关系名
    MTAB_SCHEMA:主表模式名
    MTAB_NAME:主表名
    STAB_SCHEMA:从表模式名
    STAB_NAME:从表名
    READ_ONLY_MODE:只读复制模式。1 表示只读模式,从表只接受复制更新; 0 表示非只读模式
    返回值:

    举例说明:
    添加复制映射
    SP_RPS_ADD_TAB_MAP(‘REPB2C’, ‘USER1’, ‘T1’, ‘USER2’, ‘T2’, 0);
  11. SP_RPS_DROP_TAB_MAP
    定义:
    SP_RPS_DROP_TAB_MAP(
    REP_NAME VARCHAR(128),
    MTAB_SCHEMA VARCHAR(128),
    MTAB_NAME VARCHAR(128),
    STAB_SCHEMA VARCHAR(128),
    STAB_NAME VARCHAR(128),
    附录 3 系统存储过程和函数
    532
    );
    功能说明:
    删除表级复制映射
    参数说明:
    REP_NAME:复制关系名
    MTAB_SCHEMA:主表模式名
    MTAB_NAME:主表名
    STAB_SCHEMA:从表模式名
    STAB_NAME:从表名
    返回值:

    举例说明:
    删除表级复制映射
    SP_RPS_DROP_TAB_MAP(‘REPB2C’, ‘USER1’, ‘T1’, ‘USER2’, ‘T2’);
  12. SP_RPS_ADD_SCH_MAP
    定义:
    SP_RPS_ADD_SCH_MAP(
    REP_NAME VARCHAR(128),
    MSCH VARCHAR(128),
    SSCH VARCHAR(128),
    READ_ONLY_MODE INT
    ); 功能说明:
    添加模式级复制映射
    参数说明:
    REP_NAME:复制关系名
    MSCH:主模式名
    SSCH: 从表模式名
    READ_ONLY_MODE:只读复制模式。1 表示只读模式,从表只接受复制更新; 0 表示非只读模式
    返回值:

    举例说明:
    添加复制映射
    SP_RPS_ADD_SCH_MAP(‘REPB2C’, ‘USER1’, ‘USER2’, 0);
  13. SP_RPS_DROP_SCH_MAP
    定义:
    SP_RPS_DROP_SCH_MAP(
    REP_NAME VARCHAR(128),
    MSCH VARCHAR(128),
    SSCH VARCHAR(128)
    );
    附录 3 系统存储过程和函数
    533
    功能说明:
    删除模式级复制映射
    参数说明:
    REP_NAME:复制关系名
    MSCH:主模式名
    SSCH:从模式名
    返回值:

    举例说明:
    删除模式级复制映射
    SP_RPS_DROP_SCH_MAP(‘REPB2C’, ‘USER1’, ‘USER2’);
  14. SP_RPS_ADD_DB_MAP
    定义:
    SP_RPS_ADD_DB_MAP(
    REP_NAME VARCHAR(128),
    READ_ONLY_MODE INT
    );
    功能说明:
    添加库级复制映射
    参数说明:
    REP_NAME:复制关系名
    READ_ONLY_MODE:只读复制模式,1 表示只读模式,从表只接受复制更新,
    0 表示非只读模式
    返回值:

    举例说明:
    添加库级复制映射
    SP_RPS_ADD_DB_MAP(‘REPB2C’, 0);
  15. SP_RPS_DROP_DB_MAP
    定义:
    SP_RPS_DROP_DB_MAP(
    REP_NAME VARCHAR(128)
    );
    功能说明:
    删除库级复制映射
    参数说明:
    REP_NAME:复制关系名
    返回值:

    举例说明:
    删除库级复制映射
    SP_RPS_DROP_DB_MAP(‘REPB2C’);
    附录 3 系统存储过程和函数
    534
  16. SP_RPS_SET_BEGIN
    定义:
    SP_RPS_SET_BEGIN(
    GRP_NAME VARCHAR(128),
    );
    功能说明:
    开始复制设置
    参数说明:
    GRP_NAME:复制组名
    返回值:

    备注:
    开始对指定复制组进行属性设置。创建/删除复制关系与创建/删除复制映射
    等接口都必须在此接口调用后执行,否则会报错―错误的复制设置序列‖。同一会
    话中也不能同时开始多个复制设置
    举例说明:
    复制组 REPB2C 开始复制
    SP_RPS_SET_BEGIN(’ REP_GRP_B2C’);
  17. SP_RPS_SET_APPLY
    定义:
    SP_RPS_SET_APPLY ();
    功能说明:
    提交复制设置,保存并提交本次设置的所有操作。如果需要继续设置,则必须
    重新调用 SP_RPS_SET_BEGIN
    参数说明:

    返回值:

    举例说明:
    提交复制设置
    SP_RPS_SET_APPLY ();
  18. SP_RPS_SET_CANCEL
    定义:
    SP_RPS_SET_CANCEL ();
    功能说明:
    放弃复制设置,放弃本次设置的所有操作。如果需要重新设置,则必须再次调
    用 SP_RPS_SET_BEGIN
    参数说明:

    附录 3 系统存储过程和函数
    535
    返回值:

    举例说明:
    放弃复制设置
    SP_RPS_SET_CANCEL();

6) 模式对象相关信息管理

  1. SP_TABLEDEF
    定义:
    void
    SP_TABLEDEF (
    schname varchar(128),
    tablename varchar(128)
    )
    功能说明:
    以结果集的形式返回表的定义,当表定义过长时,会以多行返回。
    参数说明:
    schname:模式名
    tablename:表名
    返回值:

    举例说明:
    CALL SP_TABLEDEF(‘PRODUCTION’,‘PRODUCT’);

  2. SP_VIEWDEF
    定义:
    void
    SP_VIEWDEF (
    schname varchar(128),
    viewname varchar(128)
    )
    功能说明:
    以结果集的形式返回视图的定义
    参数说明:
    schname:模式名
    viewname:视图名
    返回值:

    举例说明:
    CALL SP_VIEWDEF(‘PURCHASING’,‘VENDOR_EXCELLENT’);

  3. SF_VIEW_EXPIRED
    定义:
    附录 3 系统存储过程和函数
    536
    INI*
    SF_VIEW_EXPIRED(
    SCHNAME varchar(128),
    VIEWNAME varchar(128) ) 功能说明:
    检查当前系统表中视图列定义是否有效
    返回值:
    返回 0 或 1。0 表示有效;1 表示无效
    举例说明:
    CREATE TABLE T_01_VIEW_DEFINE_00(C1 INT,C2 INT);
    CREATE VIEW TEST_T_01_VIEW_DEFINE_00 AS SELECT* FROM
    T_01_VIEW_DEFINE_00;
    SELECT SF_VIEW_EXPIRED(‘SYSDBA’,‘TEST_T_01_VIEW_DEFINE_00’);
    –查询结果为 0
    ALTER TABLE T_01_VIEW_DEFINE_00 DROP COLUMN C1 CASCADE ;
    SELECT SF_VIEW_EXPIRED(‘SYSDBA’,‘TEST_T_01_VIEW_DEFINE_00’);
    –查询结果为 1

  4. CHECKDEF
    定义:
    CHAR *
    CHECKDEF (
    consid int,
    preflag int
    ) 功能说明:
    获得 check 约束的定义
    参数说明:
    consid:check 约束 id 号
    preflag:对象前缀个数。1 表示导出模式名;0 表示只导出对象名
    返回值:
    check 约束的定义
    举例说明:
    CREATE TABLE TEST_CHECKDEF(C1 INT CHECK(C1>10));
    通过查询系统表
    SELECT A.name, A.ID FROM SYSOBJECTS A, SYSOBJECTS B WHERE
    B.NAME=‘TEST_CHECKDEF’ AND A.PID=B.ID AND A.SUBTYPE$=‘CONS’;
    –得到约束 ID 为 134217770
    SELECT CHECKDEF(134217770,1);

  5. CONSDEF
    定义:
    CHAR * CONSDEF (
    indexid int,
    附录 3 系统存储过程和函数
    537
    preflag int
    )
    功能说明:
    获取 unique 约束的定义
    参数说明:
    indexid:索引号数字字符串
    preflag:对象前缀个数。1 表示导出模式名;0 表示只导出对象名
    返回值:
    unique 约束的定义
    举例说明:
    CREATE TABLE TEST_CONSDEF(C1 INT PRIMARY KEY,C2 INT, CONSTRAINT CONS1
    UNIQUE(C2));
    –通过查询系统表 SELECT C.INDEXID FROM SYSOBJECTS O,SYSCONS C WHERE O.NAME=‘CONS1’ AND
    O.ID=C.ID;
    –系统生成 C2 上的 INDEX 为 33555481
    SELECT CONSDEF(33555481,1);

  6. INDEXDEF
    定义:
    CHAR *
    INDEXDEF (
    indexid int,
    preflag int
    )
    功能说明:
    获取 index 的创建定义
    参数说明:
    indexid:索引 ID
    preflag:对象前缀个数。1 表示导出模式名;0 表示只导出对象名
    返回值:
    索引的创建定义
    举例说明:
    CREATE INDEX PRODUCT_IND ON PRODUCTION.PRODUCT(PRODUCTID);
    –查询系统表得到索引 ID
    SELECT NAME, ID FROM SYSOBJECTS WHERE NAME=‘PRODUCT_IND’ AND
    SUBTYPE$=‘INDEX’;
    SELECT indexdef(33555530,1);

  7. SP_REORGANIZE_INDEX
    定义:
    SP_REORGANIZE_INDEX (
    schname varchar(128),
    indexname varchar(128)
    附录 3 系统存储过程和函数
    538
    )
    功能说明:
    对指定索引进行空间整理
    参数说明:
    schname:模式名
    indexname:索引名
    返回值:

    举例说明:
    CREATE INDEX PRODUCT_IND ON PRODUCTION.PRODUCT(PRODUCTID);
    CALL SP_REORGANIZE_INDEX(‘PRODUCTION’,‘PRODUCT_IND’);

  8. SP_REBUILD_INDEX
    定义:
    SP_REBUILD_INDEX (
    schname varchar(128),
    indexed int
    )
    功能说明:
    重建索引。约束:1. 水平分区子表、临时表和系统表上建的索引不支持重建;

  9. 虚索引和聚集索引不支持重建
    参数说明:
    schname:模式名
    indexid:索引 ID
    返回值:

    举例说明:
    CREATE INDEX PRODUCT_IND ON PRODUCTION.PRODUCT(PRODUCTID);
    –查询系统表得到索引 ID
    SP_REBUILD_INDEX(‘SYSDBA’, 33555530);

  10. CONTEXT_INDEX_DEF
    定义:
    CHAR *
    CONTEXT_INDEX_DEF (
    indexed int,
    preflag int
    )
    功能说明:
    获取 context_index 的创建定义
    参数说明:
    indexid:索引 ID
    preflag:对象前缀个数。1 表示导出模式名;0 表示只导出对象名
    返回值:
    附录 3 系统存储过程和函数
    539
    索引的创建定义
    举例说明:
    CREATE CONTEXT INDEX PRODUCT_CIND ON PRODUCTION.PRODUCT(NAME) LEXER
    DEFAULT_LEXER;
    –查询系统表得到全文索引 ID
    SELECT NAME, ID FROM SYSOBJECTS WHERE NAME=‘PRODUCT_CIND’;
    SELECT CONTEXT_INDEX_DEF(33555531, 1);

  11. SYNONYMDEF
    定义:
    CHAR * SYNONYMDEF (
    username varchar(128),
    synname varchar(128),
    type int,
    preflag int
    )
    功能说明:
    获取同义词的创建定义
    参数说明:
    username:用户名
    synname:同义词名
    type:同义词类型。 0,public 1,user
    preflag:对象前缀个数。1 表示导出模式名;0 表示只导出对象名
    返回值:
    同义词的创建定义
    举例说明:
    SELECT SYNONYMDEF(‘SYSDBA’, ‘SYSOBJECTS’,0,1);

  12. SEQDEF
    定义:
    CHAR *
    SEQDEF (
    seqid int,
    preflag int
    )
    功能说明:
    获取序列的创建定义
    参数说明:
    seqid:序列 id 号
    preflag:对象前缀个数。1 表示导出模式名;0 表示只导出对象名
    返回值:
    序列的创建定义
    举例说明:
    附录 3 系统存储过程和函数
    540
    CREATE SEQUENCE SEQ1;
    SELECT ID FROM SYSOBJECTS WHERE NAME=‘SEQ1’; --查出 id 为 167772160
    SELECT SEQDEF(167772160, 1);

  13. IDENT_CURRENT
    定义:
    int
    IDENT_CURRENT (
    fulltablename varchar(8187)
    ) 功能说明:
    获取自增列当前值
    参数说明:
    fulltablename:表全名;格式为―模式名.表名‖
    返回值:
    自增列当前值
    举例说明:
    SELECT IDENT_CURRENT(‘PRODUCTION.PRODUCT’);

  14. IDENT_SEED 定义:
    INT
    IDENT_SEED (
    fulltablename varchar(8187)
    )
    功能说明:
    获取自增列种子
    参数说明:
    fulltablename:表全名;格式为―模式名.表名‖
    返回值:
    自增列种子
    举例说明: SELECT IDENT_SEED(‘PRODUCTION.PRODUCT’);

  15. IDENT_INCR
    定义:
    INT
    IDENT_INCR (
    fulltablename varchar(8187)
    )
    功能说明:
    获取自增列增量值 increment
    参数说明:
    fulltablename:表全名;格式为―模式名.表名‖
    附录 3 系统存储过程和函数
    541
    返回值:
    自增列增量值 increment
    举例说明:
    SELECT IDENT_INCR(‘PRODUCTION.PRODUCT’);

  16. SCOPE_IDENTITY
    定义:
    INT SCOPE_IDENTITY ();
    功能说明:
    返回插入到同一作用域中的 identity 列内的最后一个 identity 值
    返回值:
    RVAL:函数返回值,长度为 8
    举例说明:
    详见GLOBAL_IDENTITY例子

  17. GLOBAL_IDENTITY
    定义:
    INT GLOBAL_IDENTITY();
    功能说明:
    返回在当前会话中的任何表内所生成的最后一个标识值,不受限于特定的作用
    域。一个作用域就是一个模块:存储过程、触发器、函数或批处理,若两个语句处
    于同一个存储过程、函数或批处理中,则它们位于相同的作用域中
    返回值:
    RVAL:函数返回值,长度为 8
    举例说明:
    DROP TABLE T1;
    DROP TABLE T2;
    CREATE TABLE T1(C1 INT IDENTITY(1,1), C2 CHAR); CREATE TABLE T2(C1 INT IDENTITY(1,1), C2 CHAR);
    INSERT INTO T1(C2) VALUES(‘a’);
    INSERT INTO T1(C2) VALUES(‘b’);
    INSERT INTO T1(C2) VALUES(‘c’);
    COMMIT;
    SELECT SCOPE_IDENTITY();
    –返回值:3
    SELECT GLOBAL_IDENTITY();
    –返回值:3
    CREATE OR REPLACE TRIGGER TRI1 AFTER INSERT ON T1
    BEGIN
    INSERT INTO T2(C2) VALUES(‘a’);
    END;
    INSERT INTO T1(C2) VALUES(‘d’);
    COMMIT;
    SELECT SCOPE_IDENTITY();
    –返回值:4
    SELECT GLOBAL_IDENTITY();
    –返回值:1

  18. SF_CUR_SQL_STR
    定义:
    附录 3 系统存储过程和函数
    542
    clob
    SF_CUR_SQL_STR (
    IS_TOP INT )
    功能说明:
    用于并行环境中,获取当前执行的 SQL 语句
    参数说明:
    IS_TOP:取 0 时返回当前层计划执行的语句;取 1 时返回顶层计划语句
    返回值:
    sql 语句
    举例说明:
    SELECT SF_CUR_SQL_STR(0);

  19. SF_COL_IS_CHECK_KEY 定义:
    INT
    SF_COL_IS_CHECK_KEY (
    key_num int,
    key_info varchar(8187),
    col_id int
    )
    功能说明:
    判断一个列是否为CHECK约束列
    参数说明:
    key_num:约束列总数
    key_info:约束列信息
    col_id:列id 返回值:
    返回1表示该列是check约束列,否则返回0
    举例说明:
    CREATE TABLE TC (C1 INT, C2 DOUBLE, C3 DATE, C4 VARCHAR, CHECK(C1 <
    100 AND C4 IS NOT NULL));
    SELECT TBLS.NAME, COLS.NAME, COLS.COLID, COLS.TYPE , C O L S . L E N G T H , COLS.LENGTH ,COLS.LENGTH,
    COLS.SCALE, COLS.NULLABLE , C O L S . D E F V A L F R O M ( S E L E C T I D , N A M E F R O M S Y S . S Y S O B J E C T S W H E R E N A M E = ′ T C ′ A N D T Y P E , COLS.DEFVAL FROM (SELECT ID, NAME FROM SYS.SYSOBJECTS WHERE NAME = 'TC' AND TYPE ,COLS.DEFVALFROM(SELECTID,NAMEFROMSYS.SYSOBJECTSWHERENAME=TCANDTYPE = ‘SCHOBJ’ AND SUBTYPE$ = ‘UTAB’ AND SCHID = (SELECT ID FROM SYS.SYSOBJECTS
    WHERE NAME = ‘SYSDBA’ AND TYPE$ = ‘SCH’)) AS TBLS,
    (SELECT ID, PID, INFO1, INFO6 FROM SYS.SYSOBJECTS WHERE TYPE$ =
    ‘TABOBJ’ AND SUBTYPE$ = ‘CONS’) AS CONS_OBJ,SYS.SYSCOLUMNS AS COLS,SYS.SYSCONS
    AS CONS WHERE TBLS.ID = CONS_OBJ.PID AND TBLS.ID = COLS.ID AND
    SF_COL_IS_CHECK_KEY(CONS_OBJ.INFO1, CONS_OBJ.INFO6, COLS.COLID) = 1 AND
    CONS.TABLEID = TBLS.ID AND CONS.TYPE$ = ‘C’;

  20. SF_REPAIR_HFS_TABLE
    附录 3 系统存储过程和函数
    543
    定义:
    SF_REPAIR_HFS_TABLE (
    SCHNAME VARCHAR(128),
    TABNAME VARCHAR(128)
    )
    功能说明:
    HUGE表日志属性为LOG NONE时,如果系统出现故障,导致该表数据不一致,
    则通过该函数修复表数据,保证数据的一致性
    参数说明:
    SCHNAME:模式名
    TABNAME:表名
    返回值:
    成功返回0,否则报错
    举例说明:
    CREATE HUGE TABLE T_DM(C1 INT, C2 VARCHAR(20)) LOG NONE;
    INSERT INTO T_DM VALUES(99, ‘DM8’);
    COMMIT;
    UPDATE T_DM SET C1 = 100;–系统故障
    SF_REPAIR_HFS_TABLE(‘SYSDBA’,‘T_DM’);

  21. SP_ENABLE_EVT_TRIGGER
    定义:
    SP_ENABLE_EVT_TRIGGER (
    SCHNAME varchar(128),
    TRINAME varchar(128),
    ENABLE BOOL
    )
    功能说明:
    禁用/启用指定的事件触发器。
    参数说明:
    SCHNAME:模式名;
    TABNAME:触发器名;
    ENABLE: 1 表示启用,0 表示禁用。
    返回值:
    成功返回0,否则报错。
    举例说明:
    SP_ENABLE_EVT_TRIGGER(‘SYSDBA’, ‘TRI_1’, 1);
    SP_ENABLE_EVT_TRIGGER(‘SYSDBA’, ‘TRI_1’, 0);

  22. SP_ENABLE_ALL_EVT_TRIGGER
    定义:
    SP_ENABLE_ALL_EVT_TRIGGER (
    enable bool
    )
    附录 3 系统存储过程和函数
    544
    功能说明:
    禁用/启用数据库上的所有事件触发器。
    参数说明:
    ENABLE:1 表示启用,0 表示禁用。
    返回值:
    成功返回0,否则报错。
    举例说明:
    SP_ENABLE_ALL_EVT_TRIGGER(1);
    SP_ENABLE_ALL_EVT_TRIGGER(0);

  23. SF_GET_TRIG_DEPENDS
    定义:
    SF_GET_TRIG_DEPENDS(
    TRIGID int
    )
    功能说明:
    查看触发器的依赖项。
    参数说明:
    TRIGID:触发器id。
    返回值:
    触发器的依赖项。
    举例说明:
    CREATE TABLE T1_TRI_10000(OBJECTTYPE VARCHAR);
    CREATE TRIGGER TRI1_TRI_10000 BEFORE CREATE ON DATABASE BEGIN INSERT INTO
    T1_TRI_10000 VALUES(:EVENTINFO.OBJECTTYPE); END;
    SELECT SF_GET_TRIG_DEPENDS((SELECT ID FROM SYSOBJECTS WHERE NAME LIKE
    ‘TRI1_TRI_10000’));

  24. SF_GET_PROC_DEPENDS
    定义:
    SF_GET_PROC_DEPENDS(
    PROCID
    int
    )
    功能说明:
    查看过程/函数的依赖项。
    参数说明:
    PROCID:过程/函数id。
    返回值:
    过程/函数的依赖项。
    举例说明:
    CREATE OR REPLACE FUNCTION FUN1 (A INT) RETURN INT AS
    S INT;
    BEGIN
    S:=A*A;
    RETURN S;
    附录 3 系统存储过程和函数
    545
    EXCEPTION
    WHEN OTHERS THEN NULL; END;
    /
    CREATE OR REPLACE FUNCTION FUN2 (A INT, B INT) RETURN INT AS
    S INT;
    BEGIN
    S:=A+B+FUN1(A);
    RETURN S;
    EXCEPTION
    WHEN OTHERS THEN NULL;
    END;
    /
    SELECT SF_GET_PROC_DEPENDS((SELECT ID FROM SYSOBJECTS WHERE NAME LIKE
    ‘FUN2’));

7) 数据守护管理

本小节的存储过程都与 DM 的数据守护功能相关,关于数据守护的概念和相关环境配置
与操作可以参考《DM8 数据守护与读写分离集群 V4.0》相关章节。

  1. SP_SET_OGUID
    定义:
    void
    SP_SET_OGUID (
    oguid int
    )
    功能说明:
    设置主备库监控组的 ID 号
    参数说明:
    oguid:oguid
    返回值:

    举例说明:
    SP_SET_OGUID (451245);
  2. SF_GET_BROADCAST_ADDRESS
    定义:
    VARCHAR
    SF_GET_BROADCAST_ADDRESS (
    IP_ADDR VARCHAR,
    SUBNET_MASK VARCHAR
    )
    功能说明:
    根据 IPv4 的 IP 地址以及子网掩码计算广播地址
    参数说明:
    IP_ADDR:输入的 IP 地址
    SUBNET_MASK:子网掩码地址
    附录 3 系统存储过程和函数
    546
    返回值:
    广播地址
    示例:
    SELECT SF_GET_BROADCAST_ADDRESS(‘15.16.193.6’,‘255.255.248.0’);
  3. SP_SET_RT_ARCH_VALID
    定义:
    VOID SP_SET_RT_ARCH_VALID ()
    功能说明:
    设置实时归档有效。
    参数说明:

    返回值:

    举例说明:
    CALL SP_SET_RT_ARCH_VALID ();
  4. SP_SET_RT_ARCH_INVALID
    定义:
    VOID SP_SET_RT_ARCH_INVALID ()
    功能说明:
    设置实时归档无效。
    参数说明:

    返回值:

    举例说明:
    CALL SP_SET_RT_ARCH_INVALID ();
  5. SF_GET_RT_ARCH_STATUS
    定义:
    VARCHAR SF_GET_RT_ARCH_STATUS ()
    功能说明:
    获取实时归档状态。
    参数说明:

    返回值:
    有效:VALID。无效:INVALID
    举例说明:
    SELECT SF_GET_RT_ARCH_STATUS ();
  6. SP_SET_ARCH_STATUS
    定义:
    VOID
    附录 3 系统存储过程和函数
    547
    SP_SET_ARCH_STATUS (
    ARCH_DEST VARCHAR,
    ARCH_STATUS INT
    )
    功能说明:
    设置指定归档目标的归档状态 参数说明:
    ARCH_DEST:归档目标名称。
    ARCH_STATUS:要设置的归档状态,取值 0 或 1,0 表示有效状态,1 表示
    无效状态。
    返回值:

    举例说明:
    CALL SP_SET_ARCH_STATUS(‘DM1’, 1);
  7. SP_SET_ALL_ARCH_STATUS
    定义:
    VOID
    SP_SET_ALL_ARCH_STATUS (
    ARCH_STATUS INT
    )
    功能说明:
    设置所有归档目标的归档状态
    参数说明:
    ARCH_STATUS:要设置的归档状态,取值 0 或 1,0 表示有效状态,1 表示无
    效状态。
    返回值:

    举例说明:
    CALL SP_SET_ALL_ARCH_STATUS(1);
  8. SP_APPLY_KEEP_PKG
    定义:
    VOID SP_APPLY_KEEP_PKG()
    功能说明:
    APPLY 备库的 KEEP_PKG 数据。
    参数说明:
    无 返回值:

    举例说明:
    CALL SP_APPLY_KEEP_PKG();
  9. SP_DISCARD_KEEP_PKG
    附录 3 系统存储过程和函数
    548
    定义:
    VOID SP_DISCARD_KEEP_PKG()
    功能说明:
    丢弃备库的 KEEP_PKG 数据。
    参数说明:

    返回值:

    举例说明:
    CALL SP_DISCARD_KEEP_PKG();
  10. SP_CLEAR_ARCH_SEND_INFO
    定义:
    VOID SP_CLEAR_ARCH_SEND_INFO()
    VOID SP_CLEAR_ARCH_SEND_INFO(INST_NAMEVARCHAR)
    功能说明:
    此系统函数在主库上执行有效,用于清理到备库最近 N 次的归档发送信息。
    如果不指定 INST_NAME,则清理所有备库最近 N 次的归档发送信息。
    N 值为 V$ARCH_SEND_INFO 中的 RECNT_SEND_CNT 值。
    参数说明:
    INST_NAME:备库实例名
    返回值:

    举例说明:
    CALL SP_CLEAR_ARCH_SEND_INFO();
    CALL SP_CLEAR_ARCH_SEND_INFO(‘GRP1_RWW_02’);
  11. SP_CLEAR_RAPPLY_STAT
    定义:
    VOID SP_CLEAR_RAPPLY_STAT()
    功能说明:
    此系统函数在备库上执行有效,用于清理此备库最近 N 次的日志重演信息。
    N 值为 V$RAPPLY_STAT 中的 RECNT_APPLY_NUM 值。
    参数说明:

    返回值:

    举例说明:
    CALL SP_CLEAR_RAPPLY_STAT();
  12. SP_ADD_TIMELY_ARCH(
    定义:
    VOID SP_ADD_TIMELY_ARCH(
    INST_NAME VARCHAR
    附录 3 系统存储过程和函数
    549
    )
    功能说明:
    OPEN 状态下动态扩展 TIMELY 归档。
    参数说明:
    INST_NAME:TIMELY 归档的目标实例名
    返回值:

    举例说明:
    CALL SP_ADD_TIMELY_ARCH(‘DB3’);
  13. SF_MAL_CONFIG
    定义:
    VOID
    SF_MAL_CONFIG(
    CFG_FLAG INT,
    BRO_FLAG INT
    )
    功能说明:
    设置 MAL 配置状态。
    参数说明:
    CFG_FLAG:1,设置配置状态;0 取消配置状态
    BRO_FLAG:1,多节点广播设置;0 本地设置
    返回值:

    举例说明:
    SF_MAL_CONFIG(1,0);
  14. SF_MAL_INST_ADD
    定义:
    VOID
    SF_MAL_INST_ADD(
    ITEM_NAME VARCHAR,
    INST_NAME VARCHAR,
    MAL_IP VARCHAR,
    MAL_PORT INT,
    MAL_INST_IP VARCHAR,
    MAL_INST_PORT INT
    ) 功能说明:
    增加 MAL 配置项
    参数说明:
    ITEM_NAME: 配置项名称
    INST_NAME: 实例名
    MAL_IP: MAL IP 地址
    附录 3 系统存储过程和函数
    550
    MAL_PORT: MAL 端口
    MAL_INST_IP 实例 IP 地址
    MAL_INST_PORT 实例端口
    举例说明:
    SF_MAL_INST_ADD(‘MAL_INST3’,‘EP03’,‘192.168.0.14’, 5378,
    ‘192.168.0.14’,5238);
  15. SF_MAL_CONFIG_APPLY
    定义:
    VOID
    SF_MAL_CONFIG_APPLY()
    功能说明:
    将 MAL 配置生效
    参数说明: 无
    举例说明:
    SF_MAL_CONFIG_APPLY();

8) MPP 管理

  1. SP_SET_SESSION_MPP_SELECT_LOCAL
    定义:
    VOID
    SP_SET_SESSION_MPP_SELECT_LOCAL (
    local_flag int
    )
    功能说明:
    MPP 系统下设置当前会话是否只查询本节点数据。如果不设置,表示可以查询
    全部节点数据
    参数说明:
    local_flag: 设置标记。1 代表只查询本节点数据;0 代表查询全部节点数 据 返回值:

    举例说明:
    SP_SET_SESSION_MPP_SELECT_LOCAL(1);
  2. SF_GET_SESSION_MPP_SELECT_LOCAL
    定义:
    INT SF_GET_SESSION_MPP_SELECT_LOCAL ()
    功能说明:
    查询 MPP 系统下当前会话是否只查询本节点数据
    参数说明:

    附录 3 系统存储过程和函数
    551
    返回值:
    1 代表只查询本节点数据,0 查询全部节点数据
    举例说明:
    SELECT SF_GET_SESSION_MPP_SELECT_LOCAL();
  3. SP_SET_SESSION_LOCAL_TYPE
    定义:
    void
    SP_SET_SESSION_LOCAL_TYPE (
    DDL_FLAG int
    )
    功能说明:
    MPP 下本地登录时,设置本会话上是否允许 DDL 操作。本地登录默认不允许
    DDL 操作
    参数说明:
    DDL_FLAG:为 1 时表示允许当前本地会话执行 DDL 操作,为 0 时则不允许
    返回值:

    举例说明:
    MPP 下本地登录会话
    SP_SET_SESSION_LOCAL_TYPE (1);
    CREATE TABLE TEST(C1 INT);
    SP_SET_SESSION_LOCAL_TYPE (0);
  4. SF_GET_EP_SEQNO
    定义:
    INT
    SF_GET_EP_SEQNO (
    rowid bigint
    )
    功能说明:
    根据查询出的行数据的 ROWID 获取本条数据来自哪个 EP 站点
    参数说明:
    rowid:行数据的 ROWID
    返回值:
    MPP 系统内 EP 站点序号
    举例说明:
    SELECT SF_GET_EP_SEQNO(ROWID) FROM V$INSTANCE;
  5. SF_GET_SELF_EP_SEQNO
    定义:
    INT
    SF_GET_SELF_EP_SEQNO ()
    功能说明:
    附录 3 系统存储过程和函数
    552
    获取本会话连接的 EP 站点序号
    参数说明:

    返回值:
    获取本会话连接的 EP 站点序号
    举例说明:
    SELECT SF_GET_SELF_EP_SEQNO();
  6. SP_GET_EP_COUNT
    定义:
    INT
    SP_GET_EP_COUNT (
    SCH_NAME VARCHAR(128),
    TAB_NAME VARCHAR(128)
    );
    功能说明:
    统计 MPP 环境下表在各个站点的数据行数
    参数说明:
    SCH_NAME:表所在模式名
    TAB_NAME:表名
    举例说明:
    SP_GET_EP_COUNT(‘SYSDBA’,‘T’);
  7. SF_MPP_INST_ADD
    定义:
    VOID
    SF_MPP_INST_ADD(
    ITEM_NAME VARCHAR,
    INST_NAME VARCHAR,
    )
    功能说明:
    增加 MPP 实例配置。
    参数说明:
    ITEM_NAME:配置项名称
    INST_NAME:实例名 举例说明:
    SF_MPP_INST_ADD(’ SERVICE_NAME3’, ‘EP03’);
  8. SF_MPP_INST_REMOVE
    定义:
    VOID
    SF_MPP_INST_REMOVE(
    INST_NAME VARCHAR,
    )
    附录 3 系统存储过程和函数
    553
    功能说明:
    删除 MPP 实例。
    参数说明:
    INST_NAME:实例名
    举例说明:
    SF_MPP_INST_REMOVE(‘EP03’);

9) 日志与检查点管理

  1. CHECKPOINT
    定义:
    INT
    CHECKPOINT (
    rate int
    )
    功能说明: 设置检查点。需要注意的是:在 DSC 环境下,OK 节点个数大于 1 时,MOUNT
    状态下调用该函数不会生效。 参数说明:
    rate:刷脏页百分比,取值范围:1~100
    返回值:
    检查点是否成功,0 表示成功,非 0 表示失败
    举例说明:
    设置刷脏页百分比为 30%的检查点
    SELECT CHECKPOINT(30);
  2. SF_ARCHIVELOG_DELETE_BEFORE_TIME
    定义:INT
    SF_ARCHIVELOG_DELETE_BEFORE_TIME (
    time datetime
    )
    功能说明: 数据库以归档模式打开的情况下,删除指定时间之前的归档日志文件。待删除
    的文件必须处于未被使用状态
    参数说明:
    time:指定删除的最大关闭时间,若大于当前使用归档日志文件的创建时间, 则从当前使用归档文件之前的归档日志文件开始删除
    返回值:
    删除归档日志文件数,-1 表示出错
    举例说明:
    删除三天之前的归档日志
    SELECT SF_ARCHIVELOG_DELETE_BEFORE_TIME(SYSDATE - 3);
    附录 3 系统存储过程和函数
  3. SF_ARCHIVELOG_DELETE_BEFORE_LSN
    定义:
    INT
    SF_ARCHIVELOG_DELETE_BEFORE_LSN (
    lsn bigint
    )
    功能说明:
    数据库以归档模式打开的情况下,删除小于指定 LSN 值的归档日志文件。待
    删除的文件必须处于未被使用状态
    参数说明:
    lsn:指定删除的最大 LSN 值文件,若指定 lsn 值大于当前正在使用归档日
    志的起始 LSN(arch_lsn),则从当前使用归档文件之前的文件开始删除
    返回值:
    删除归档日志文件数,-1 表示出错
    举例说明:
    删除 LSN 值小于 95560 的归档日志文件
    SELECT SF_ARCHIVELOG_DELETE_BEFORE_LSN(95560);

10) 数据库重演

1.SP_START_CAPTURE
定义:
SP_START_CAPTURE(
path varchar(256),
duration int
)
功能说明:
手工设置负载捕获开始
参数说明:
path:捕获文件保存的绝对路径
duration:捕获持续的时间,如果设置为-1 秒,表示需要手动停止捕获,
或者磁盘空间满了自动停止
返回值:
无 2.SP_STOP_CAPTURE
定义:SP_STOP_CAPTURE()
功能说明:
手工停止数据库重演捕获
参数说明:

返回值:

554
附录 3 系统存储过程和函数
555
举例说明:
首先对数据库进行备份,然后调用 SP_START_CAPTURE,创建一张表,插入 3 条数据,最后调用 SP_STOP_CAPTURE。利用重演工具 dreplay 进行数据库重
演CALL SP_START_CAPTURE(‘D:\dmdbms\data’, -1);
CREATE TABLE “SYSDBA”.“TEST4REPLAY”
(
C1 INT,
C2 VARCHAR(64)
);INSERT INTO “SYSDBA”.“TEST4REPLAY” VALUES(1, ‘A’);
INSERT INTO “SYSDBA”.“TEST4REPLAY” VALUES(2, ‘B’);
INSERT INTO “SYSDBA”.“TEST4REPLAY” VALUES(3, ‘C’);
COMMIT;
CALL SP_STOP_CAPTURE();
–然后利用 dreplay 工具进行数据库重演:
dreplay SERVER=localhost:5236 FILE=D:\dmdbms\data

11) 统计信息

以下对象不支持统计信息:1. 外部表、DBLINK 远程表、动态视图、记录类型数组所
用的临时表;2. 所在表空间为 OFFLINE 的对象;3. 位图索引,位图连接索引、虚索引、 无效的索引、全文索引;4. BLOB、IMAGE、LONGVARBINARY、CLOB、TEXT、LONGVARCHAR
等列类型。

  1. SP_TAB_INDEX_STAT_INIT*
    定义:
    SP_TAB_INDEX_STAT_INIT (
    schname varchar(128),
    tablename varchar(128)
    )
    功能说明:
    对表上所有的索引生成统计信息
    参数说明:
    schname:模式名
    tablename:表名
    举例说明:
    对 SYSOBJECTS 表上所有的索引生成统计信息
    CALL SP_TAB_INDEX_STAT_INIT (‘SYS’, ‘SYSOBJECTS’);
    附录 3 系统存储过程和函数
    556
  2. SP_DB_STAT_INIT*
    定义:
    SP_DB_STAT_INIT (
    )
    功能说明:
    对库上所有模式下的所有用户表以及表上的所有索引生成统计信息
    举例说明:
    对库上所有模式下的所有用户表以及表上的所有索引生成统计信息
    CALL SP_DB_STAT_INIT ();
  3. SP_INDEX_STAT_INIT*
    定义:
    SP_INDEX_STAT_INIT (
    schname varchar(128),
    indexname varchar(128)
    )
    功能说明:
    对指定的索引生成统计信息
    参数说明:
    schname:模式名
    indexname:索引名
    举例说明:
    对指定的索引 IND 生成统计信息
    CALL SP_INDEX_STAT_INIT (‘SYSDBA’, ‘IND’);
  4. SP_COL_STAT_INIT*
    定义:
    SP_COL_STAT_INIT (
    schname varchar(128),
    tablename varchar(128),
    colname varchar(128)
    ) 功能说明:
    对指定的列生成统计信息,不支持大字段列和虚拟列
    参数说明:
    schname:模式名
    tablename:表名
    colname:列名
    举例说明:
    对表 SYSOBJECTS 的 ID 列生成统计信息
    CALL SP_COL_STAT_INIT (‘SYS’, ‘SYSOBJECTS’, ‘ID’);
    附录 3 系统存储过程和函数
    557
  5. SP_TAB_COL_STAT_INIT*
    定义:
    SP_TAB_COL_STAT_INIT (
    schname varchar(128),
    tablename varchar(128)
    )
    功能说明:
    对某个表上所有的列生成统计信息
    参数说明:
    schname:模式名
    tablename:表名
    举例说明:
    对’SYSOBJECTS’表上所有的列生成统计信息
    CALL SP_TAB_COL_STAT_INIT (‘SYS’, ‘SYSOBJECTS’);
  6. SP_STAT_ON_TABLE_COLS
    定义:
    SP_STAT_ON_TABLE_COLS(
    SCHEMA_NAME VARCHAR(128),
    TABLE_NAME VARCHAR(128),
    E_PERCENT INT
    ) 功能说明:
    对某个表上所有的列,按照指定的采样率生成统计信息
    参数说明:
    schname:模式名
    tablename:表名
    E_PERCENT:采样率(0-100]
    举例说明:
    对’SYSOBJECTS’表上所有的列生成统计信息,采样率 90
    CALL SP_STAT_ON_TABLE_COLS (‘SYS’,‘SYSOBJECTS’,90);
  7. SP_TAB_STAT_INIT*
    定义:
    SP_TAB_STAT_INIT (
    schname varchar(128),
    tablename varchar(128)
    )
    功能说明:
    对某张表或某个索引生成统计信息
    参数说明:
    附录 3 系统存储过程和函数
    558
    schname:模式名
    tablename:表名或索引名
    举例说明:
    对表 SYSOBECTS 生成统计信息
    CALL SP_TAB_STAT_INIT (‘SYS’, ‘SYSOBJECTS’);
  8. SP_SQL_STAT_INIT*
    定义:
    SP_SQL_STAT_INIT (
    sql varchar(8187)
    )
    功能说明:
    对某个 SQL 查询语句中涉及的所有表和过滤条件中的列(不包括大字段、
    ROWID)生成统计信息。
    可能返回的错误提示:
    1) 语法分析出错,sql 语句语法错误
    2) 对象不支持统计信息,统计的表或者列不存在,或者不允许被统计
    参数说明:
    sql:sql 语句
    举例说明:
    对’SELECT * FROM SYSOBJECTS’语句涉及的所有表生成统计信息
    CALL SP_SQL_STAT_INIT (‘SELECT * FROM SYSOBJECTS’);
  9. SP_INDEX_STAT_DEINIT*
    定义:
    SP_INDEX_STAT_DEINIT (
    schname varchar(128),
    indexname varchar(128)
    )
    功能说明:
    清空指定索引的统计信息
    参数说明:
    schname:模式名
    indexname:索引名
    举例说明:
    清空索引 IND 的统计信息
    CALL SP_INDEX_STAT_DEINIT (‘SYSDBA’, ‘IND’);
  10. SP_COL_STAT_DEINIT*
    定义:
    SP_COL_STAT_DEINIT (
    附录 3 系统存储过程和函数
    559
    schname varchar(128),
    tabname varchar(128),
    colname varchar(128)
    )
    功能说明:
    删除指定列的统计信息
    参数说明:
    schname:模式名
    tabname:表名
    colname:列名
    举例说明:
    删除 SYSOBJECTS 的 ID 列的统计信息
    CALL SP_COL_STAT_DEINIT (‘SYS’, ‘SYSOBJECTS’, ‘ID’);
  11. SP_TAB_COL_STAT_DEINIT*
    定义:
    SP_TAB_COL_STAT_DEINIT (
    schname varchar(128),
    tablename varchar(128)
    )
    功能说明:
    删除表上所有列的统计信息
    参数说明:
    schname:模式名
    tablename:表名
    举例说明:
    删除 SYSOBJECTS 表上所有列的统计信息
    CALL SP_TAB_COL_STAT_DEINIT (‘SYS’, ‘SYSOBJECTS’);
  12. SP_TAB_STAT_DEINIT*
    定义:
    SP_TAB_STAT_DEINIT (
    schname varchar(128),
    tablename varchar(128) )
    功能说明:
    删除某张表的统计信息
    参数说明:
    schname:模式名
    tablename:表名
    举例说明:
    删除表 SYSOBECTS 的统计信息
    附录 3 系统存储过程和函数
    560
    CALL SP_TAB_STAT_DEINIT (‘SYS’, ‘SYSOBJECTS’);
  13. ET
    定义:
    ET(
    ID_IN INT
    );
    功能说明:
    统计执行 ID 为 ID_IN 的所有操作符的执行时间。需设置 INI 参数
    ENABLE_MONITOR=1、MONITOR_TIME=1 和 MONITOR_SQL_EXEC=1。
    参数说明:
    ID_IN:SQL 语句的执行 ID
    举例说明:
    select count() from sysobjects where name=‘SYSDBA’;
    行号 COUNT(
    )

1 2
已用时间: 14.641(毫秒). 执行号:26.
可以得到执行号为 26。
et(26);
得到结果:
OP TIME(US) PERCENT RANK SEQ N_ENTER


DLCK 4 0.14% 6 0 2
PRJT2 15 0.53% 5 2 4
AAGR2 78 2.74% 4 3 5
NSET2 128 4.49% 3 1 3
SLCT2 465 16.32% 2 4 7
SSCN 2160 75.79% 1 5 4
结果中每一行对应一个操作符,每一列对应的解释如下: 列名 含义
OP 操作符名称
TIME(US) 执行耗时,以微秒为单位
PERCENT RANK 在整个计划中用时占比
SEQ 计划中的序号
N_ENTER 操作符进入的次数
如果某些操作符并没有真正执行或者耗时很短,则不会在 ET 中显示。另外,
结果中出现了 EXPLAIN 计划中没有的 DLCK 操作符,它是用来对字典对象的上锁
处理,通常情况下可以忽略。
14. SP_UPDATE_SYSSTATS
定义:
SP_UPDATE_SYSSTATS(
附录 3 系统存储过程和函数
561
flag int ) 功能说明:
用以升级及迁移统计信息。7.1.5.173 及之后的版本支持该功能。
参数说明:
flag:标记,取值 0、1、2、3、4、99。 0:回退版本;1:创建统计信息升级
辅助表; 2:升级 SYS.SYSSTATS 表结构; 3:导入 SYS.SYSSTATS 表数据; 4:
删除升级辅助表;参数 99:理想状态下使用,集合了参数 1、2、3、4 的功能。
举例说明:
如果想要将老库升级,需要手动升级,升级步骤如下:
SP_UPDATE_SYSSTATS(99);
或者
SP_UPDATE_SYSSTATS(1);
SP_UPDATE_SYSSTATS(2);
SP_UPDATE_SYSSTATS(3);
SP_UPDATE_SYSSTATS(4);
如果想使用老库,且使用了之前的加列版本服务器且升级失败,那么需要先回退版
本,再升级:
SP_UPDATE_SYSSTATS(0);
SP_UPDATE_SYSSTATS(99);
15. SP_TAB_MSTAT_DEINIT
定义:
SP_TAB_MSTAT_DEINIT(
schname varchar(128),
tablename varchar(128) )
功能说明:
删除一个表的多维统计信息。
参数说明:
schname:模式名
tablename:表名
举例说明:
删除表 SYSDBA.L1 上所有的多维统计信息
CALL SP_TAB_MSTAT_DEINIT(‘SYSDBA’,‘L1’);
16. SF_GET_MD_COL_STR
定义:
SF_GET_MD_COL_STR( tabid int,
col_info varbinary(4096),
col_num int
)
功能说明:
附录 3 系统存储过程和函数
562
获取表上建多维统计信息的列信息。
参数说明:
tabid:表 id
col_info:多维的维度信息
col_num: 维度
返回值是:多维统计信息的列信息
举例说明:
获取表 L1 上建的多维统计信息的列信息
SELECT SF_GET_MD_COL_STR(ID, MCOLID, N_DIMENSION) FROM SYS.SYSMSTATS
WHERE ID IN (SELECT ID FROM SYSOBJECTS WHERE NAME=‘L1’);

12) 资源监测

  1. SP_CHECK_IDLE_MEM
    定义:
    SP_CHECK_IDLE_MEM (

    功能说明:
    对 可用内 存 空 间 进 行 检 测 , 并 在 低 于阈值( 对 应 INI 参 数
    IDLE_MEM_THRESHOLD)的情况下打印报警记录到日志,同时报内存不足的异常。
    举例说明:
    监测当前系统的内存空间是否低于阀值
    CALL SP_CHECK_IDLE_MEM ();
  2. SP_CHECK_IDLE_DISK
    定义:
    SP_CHECK_IDLE_DISK (
    path varchar(256)

    功能说明:
    对指定位置 的磁盘空间进行检测,并在低于阈值(对应 INI 参数
    IDLE_DISK_THRESHOLD)的情况下打印报警记录到日志,同时报磁盘空间不足
    的异常。
    参数说明:
    path:监测的路径
    举例说明:
    监测 d:\data 路径下的磁盘空间是否低于阀值
    CALL SP_CHECK_IDLE_DISK (‘d:\data’);
  3. SF_GET_CMD_RESPONSE_TIME
    定义:
    SF_GET_CMD_RESPONSE_TIME()
    功能说明:
    查看 DM 服务器对用户命令的平均响应时间
    附录 3 系统存储过程和函数
    563
    返回值:
    命令的平均响应时间,单位秒
    举例说明:
    在 dm.ini 中 ENABLE_MONITOR 取值不小于 2 的前提下执行
    SELECT SYS.SF_GET_CMD_RESPONSE_TIME();
  4. SF_GET_TRX_RESPONSE_TIME
    定义:
    SF_GET_TRX_RESPONSE_TIME()
    功能说明:
    查看事务的平均响应时间
    返回值:
    事务的平均响应时间,单位秒
    举例说明:
    在 dm.ini 中 ENABLE_MONITOR 取值不为 0 的前提下执行
    SELECT SYS.SF_GET_TRX_RESPONSE_TIME();
  5. SF_GET_DATABASE_TIME_PER_SEC
    定义:
    SF_GET_DATABASE_TIME_PER_SEC()
    功能说明:
    查看数据库中用户态时间占总处理时间的比值
    返回值:
    用户态时间占总处理时间的比值,该比值越大表明用于 IO、事务等待等耗费的
    时间越少
    举例说明:
    在 dm.ini 中 ENABLE_MONITOR 取值不小于 2 的前提下执行
    SELECT SYS.SF_GET_DATABASE_TIME_PER_SEC();
  6. TABLE_USED_SPACE
    定义:
    BIGINT
    TABLE_USED_SPACE (
    schname varchar(256);
    tabname varchar(256)
    )
    功能说明:
    获取指定表所占用的页数
    参数说明:
    schname:模式名,必须大写
    tabname:表名,必须大写
    返回值:
    表所占用的页数
    举例说明:
    附录 3 系统存储过程和函数
    564
    查看 SYSOJBECTS 的所占用的页数
    SELECT TABLE_USED_SPACE (‘SYS’,‘SYSOBJECTS’);
    查询结果:
    32
  7. HUGE_TABLE_USED_SPACE
    定义:
    BIGINT
    HUGE_TABLE_USED_SPACE (
    schname varchar(256);
    tabname varchar(256)
    )
    功能说明:
    获取指定 HUGE 表所占用的大小
    参数说明:
    schname:模式名,必须大写
    tabname:huge 表名,必须大写
    返回值:
    HUGE 表所占用的大小,单位:M
    举例说明:
    查看 huge 表 test 所占用的大小
    CREATE HUGE TABLE TEST(A INT);
    SELECT HUGE_TABLE_USED_SPACE (‘SYSDBA’,‘TEST’);
    查询结果:
    64
  8. USER_USED_SPACE
    定义:
    BIGINT
    USER_USED_SPACE ( username varchar(256)
    )
    功能说明:
    获取指定用户所占用的页数,不包括用户占用的 HUGE 表页数
    参数说明:
    username:用户名
    返回值:
    用户所占用的页数
    举例说明:
    查看 SYSDBA 的所占用的页数
    SELECT USER_USED_SPACE (‘SYSDBA’);
    查询结果:
    64
    附录 3 系统存储过程和函数
  9. TS_USED_SPACE
    定义:
    BIGINT
    TS_USED_SPACE (
    tsname varchar(256)

    功能说明:
    获取指定表空间所有文件所占用的页数之和。RLOG 和 ROLL 表空间不支持
    参数说明:
    tsname:表空间名
    返回值:
    表空间占用的页数
    举例说明:
    查看 MAIN 表空间所有文件占用的页数之和。
    SELECT TS_USED_SPACE (‘MAIN’);
    查询结果:
    16384
  10. DB_USED_SPACE
    定义:
    BIGINT
    DB_USED_SPACE ()
    功能说明:
    获取整个数据库占用的页数
    返回值:
    整个数据库占用的页数
    举例说明:
    查看数据库所占用的页数
    SELECT DB_USED_SPACE ();
    查询结果:
    19712
  11. INDEX_USED_SPACE
    定义:BIGINT
    INDEX_USED_SPACE (
    indexid int

    功能说明:
    根据索引 ID,获取指定索引所占用的页数
    参数说明:
    indexid:索引 ID
    返回值:
    索引占用的页数
    565
    附录 3 系统存储过程和函数
    566
    举例说明:
    查看索引号为 33554540 的索引所占用的页数
    SELECT INDEX_USED_SPACE (33554540);
    查询结果:
    32
  12. INDEX_USED_SPACE
    定义:
    BIGINT
    INDEX_USED_SPACE (
    schname varchar(256),
    indexname varchar(256)

    功能说明:
    根据索引名获取指定索引占用的页数
    参数说明:
    schname:模式名
    indexname:索引名
    返回值:
    索引占用的页数
    举例说明:
    查看 SYSDBA 模式下索引名为 INDEX_TEST 的索引占用的页数
    SELECT INDEX_USED_SPACE (‘SYSDBA’, ‘INDEX_TEST’);
    查询结果:
    14
  13. INDEX_USED_SPACE
    定义:
    BIGINT
    INDEX_USED_SPACE (
    schname varchar(256),
    tablename varchar(256),
    nth_index int

    功能说明:
    获取表指定序号的索引占用的页数
    参数说明:
    schname:模式名
    tablename:表名
    nth_index:要获取表的第几个索引
    返回值:
    索引占用的页数
    举例说明:
    查看 SYSDBA 模式下,TEST 表的第二个索引占用的页数
    附录 3 系统存储过程和函数
    567
    SELECT INDEX_USED_SAPCE (‘SYSDBA’, ‘TEST’, 2);
    查询结果:
    14
  14. INDEX_USED_PAGES
    定义:
    BIGINT
    INDEX_USED_PAGES (
    indexid int
    ) 功能说明:
    根据索引 id,获取指定索引已使用的页数
    参数说明:
    indexid:索引 ID
    返回值:
    索引已使用的页数
    举例说明:
    查看索引号为 33554540 的索引已使用的页数
    SELECT INDEX_USED_PAGES (33554540);
    查询结果:
    14
  15. INDEX_USED_PAGES
    定义:
    BIGINT
    INDEX_USED_PAGES (
    schname varchar(256),
    indexname varchar(256)

    功能说明:
    根据索引名,获取指定索引已使用的页数
    参数说明:
    schname:模式名
    indexname:索引名
    返回值:
    索引占用的页数
    举例说明:
    查看 SYSDBA 模式下索引名为 INDEX_TEST 的索引已使用的页数
    SELECT INDEX_USED_PAGES (‘SYSDBA’, ‘INDEX_TEST’);
    查询结果: 14
  16. INDEX_USED_PAGES
    定义:
    附录 3 系统存储过程和函数
    568
    BIGINT
    INDEX_USED_PAGES (
    schname varchar(256),
    tablename varchar(256),
    nth_index int )
    功能说明:
    根据表的索引序号,获取指定索引已使用的页数
    参数说明:
    schname:模式名
    tablename:表名
    nth_index:要获取表的第几个索引
    返回值:
    索引占用的页数
    举例说明:
    查看 SYSDBA 模式下,TEST 表的第二个索引已使用的页数
    SELECT INDEX_USED_PAGES (‘SYSDBA’, ‘TEST’, 2);
    查询结果:
    14
  17. TABLE_USED_PAGES
    定义:BIGINT
    TABLE_USED_PAGES (
    schname varchar(256);
    tabname varchar(256)
    ) 功能说明:
    获取指定表已使用的页数
    参数说明:
    schname:模式名
    tabname:表名
    返回值:
    表已使用的页数
    举例说明:
    查看 SYSOJBECTS 已使用的页数
    SELECT TABLE_USED_PAGES(‘SYS’,‘SYSOBJECTS’);
    查询结果:
    14
  18. TS_FREE_SPACE
    定义:
    INT
    TS_FREE_SPACE (
    附录 3 系统存储过程和函数
    569
    tsname varchar(256)

    功能说明:
    获取指定表空间可分配的空闲页数。RLOG 和 ROLL 表空间不支持
    参数说明:
    tsname:表空间名
    返回值:
    表空间可分配的空闲页数,包含 TS_RESERVED_SPACE()的预留页数
    举例说明:
    查看 MAIN 表空间可分配的空闲页数
    SELECT TS_FREE_SPACE (‘MAIN’);
    查询结果:
    8192
  19. TS_RESERVED_SPACE
    定义:
    INT TS_RESERVED_SPACE (
    tsname varchar(256)

    功能说明:
    获取指定表空间系统预留的页数。RLOG 和 ROLL 表空间不支持。系统启动时
    根 据 dm.ini 参 数 TS_RESERVED_EXTENTS 预留部 分 空 间 , 避 免
    ROLLBACK/PURGE 等操作过程中分配数据页失败,这些预留空间用户无法使用
    参数说明:
    tsname:表空间名
    返回值:
    表空间系统预留的页数
    举例说明:
    查看 MAIN 表空间系统预留的页数
    SELECT TS_RESERVED_SPACE (‘MAIN’);
    查询结果:
    512
  20. TS_FREE_SPACE_CALC
    定义:
    INT
    TS_FREE_SPACE_CALC (
    tsname varchar(256)

    功能说明:
    重新计算指定表空间可分配的空闲页数。RLOG 和 ROLL 表空间不支持
    参数说明:
    tsname:表空间名
    附录 3 系统存储过程和函数
    570
    返回值:
    表空间可分配的空闲页数,包含 TS_RESERVED_SPACE 的预留页数
    举例说明:
    重新计算 MAIN 表空间可分配的空闲页数
    SELECT TS_FREE_SPACE_CALC(‘MAIN’);
    查询结果:
    8192
  21. TABLE_USED_LOB_PAGES
    定义:
    BIGINT
    TABLE_USED_LOB_PAGES (
    schname varchar(256);
    tabname varchar(256)
    )
    功能说明:
    获取指定表已使用的 lob 页数,包括大字段列使用的行外数据 lob 页和指定
    了 USING LONG ROW 存储选项时变长字符串列使用的行外数据 lob 页
    参数说明:
    schname:模式名
    tabname:表名
    返回值:
    表已使用的 lob 页数
    举例说明:
    查看 SYS.SYSTEXTS 表已使用的 lob 页数
    SELECT TABLE_USED_LOB_PAGES(‘SYS’,‘SYSTEXTS’);
    查询结果:
    139
  22. TABLE_FREE_LOB_PAGES
    定义:
    BIGINT
    TABLE_FREE_LOB_PAGES(
    SCHEMA_NAME IN VARCHAR,
    TABLE_NAME IN VARCHAR
    )
    功能说明:
    获取指定表的大字段的段首页登记的空闲页个数
    参数说明:
    SCHEMA_NME:表所在模式名。
    TABLE_NME:表名。
    返回值:
    失败则报错,成功返回空闲页个数。
    举例说明:
    查询 T_CLOB 表的大字段的段首页登记的空闲页个数
    SELECT TABLE_FREE_LOB_PAGES(‘SYSDBA’,‘T_CLOB’);
    附录 3 系统存储过程和函数
    571
  23. SP_TABLE_LOB_RECLAIM
    定义:
    VOID
    SP_TABLE_LOB_RECLAIM(
    SCHEMA_NAME IN VARCHAR,
    TABLE_NAME IN VARCHAR
    )
    功能说明:
    清理指定表的大字段的段首页登记的空闲页
    参数说明:
    SCHEMA_NME:表所在模式名
    TABLE_NME:表名
    返回值:
    无。失败则报错。
    举例说明:
    清理表 T_CLOB 的大字段的段首页登记的空闲页
    SP_TABLE_LOB_RECLAIM(‘SYSDBA’,‘T_CLOB’);
  24. SP_SET_SQL_STAT_THRESHOLD
    定义:
    SP_SET_SQL_STAT_THRESHOLD(
    name VARCHAR,
    val INT64)
    功能说明:
    设置语句级资源监控,SQL 监控项生成的条件阀值,当资源大于设置的阀值时
    才生成统计项。可以设置的监控项为 V S Q L S T A T / V SQL_STAT/V SQLSTAT/VSQL_STAT_HISTORY 视图
    中的 5~58 列。该过程只有 DBA 权限才能执行
    参数说明:
    name:允许为 NULL。需要设置阀值的监控项名字,可选名字为
    V S Q L S T A T / V SQL_STAT/V SQLSTAT/VSQL_STAT_HISTORY 视图中第 5~58 列的列名。当 name 为
    NULL 时,val 只能设置为 0 或者-1。0 表示无条件生成历史监控项,-1 表示不
    生成历史监控项
    val:不允许为 NULL 且必须大于等于 0。表示需要设置的阀值
    返回值:

    举例说明:
    SP_SET_SQL_STAT_THRESHOLD(‘INS_IN_PL_CNT’, 60000);
  25. INDEX_USED_PAGES
    定义:
    BIGINT
    INDEX_USED_PAGES (
    schema_name varchar(128),
    index_name varchar(128)
    )
    功能说明:
    附录 3 系统存储过程和函数
    572
    根据模式下的索引名获取指定索引已使用的页数
    参数说明:
    schema_name:模式名
    index_name:索引名
    返回值:
    指定索引已使用的页数
    举例说明:
    查看模式 SYSDBA 下索引名为 IDX1 的索引已使用的页数
    SELECT INDEX_USED_PAGES(‘SYSDBA’,‘IDX1’);
  26. INDEX_USED_PAGES
    定义:
    BIGINT
    INDEX_USED_PAGES (
    schema_name varchar(128),
    table_name varchar(128),
    index_no int )
    功能说明:
    根据模式下的指定表的第 index_no 个索引获取该索引使用的页数
    参数说明:
    schema_name:模式名
    table_name:表名
    index_no:索引序号(从 1 开始)
    返回值:
    指定索引已使用的页数 举例说明:
    查看模式 SYSDBA 下表名为 TAB1 的第一个索引已使用的页数
    SELECT INDEX_USED_PAGES(‘SYSDBA’,‘TAB1’,1);
  27. TABLE_ROWCOUNT
    定义:
    INT
    TABLE_ROWCOUNT (
    schema_name varchar(128),
    table_name varchar(128)
    )
    功能说明:
    获取指定模式下指定表的总行数
    参数说明:
    schema_name:模式名
    table_name:表名
    返回值:
    指定表的总行数
    举例说明:
    查看模式 SYSDBA 下表 TAB1 的总行数
    附录 3 系统存储过程和函数
    573
    SELECT TABLE_ROWCOUNT(‘SYSDBA’,‘TAB1’);

13) 类型别名

DM 支持用户对各种基础数据类型定义类型别名,定义的别名可以在 SQL 语句和 DMSQL
程序中使用。

  1. SP_INIT_DTYPE_SYS*
    定义:
    SP_INIT_DTYPE_SYS (
    create_flag int
    )
    功能说明:
    初始化或清除类型别名运行环境
    参数说明:
    create_flag:1 表示创建,0 表示删除
    返回值:

    举例说明:
    初始化类型别名运行环境
    CALL SP_INIT_DTYPE_SYS(1);
  2. SF_CHECK_DTYPE_SYS
    定义:
    int
    SF_CHECK_DTYPE_SYS ()
    功能说明:
    系统类型别名系统的启用状态检测
    返回值:
    0:未启用;1:已启用
    举例说明:
    获得系统类型别名系统的启用状态
    SELECT SF_CHECK_DTYPE_SYS;
  3. SP_DTYPE_CREATE*
    定义:
    SP_DTYPE_CREATE (
    name varchar(32),
    base_name varchar(32),
    len int,
    scale int
    ) 功能说明:
    附录 3 系统存储过程和函数
    574
    创建一个类型别名。最多只能创建 100 个类型别名
    参数说明:
    name:类型别名的名称
    base_name:基础数据类型名
    len:基础数据类型长度,当为固定精度类型时,应该设置为 NULL
    scale:基础数据类型刻度
    返回值:

    举例说明:
    创建 VARCHAR(100)的类型别名‗STR‘
    CALL SP_DTYPE_CREATE(‘STR’, ‘VARCHAR’, 100, NULL);
  4. SP_DTYPE_DELETE*
    定义:
    SP_DTYPE_DELETE (
    name varchar(32)
    )
    功能说明:
    删除一个类型别名
    参数说明:
    name:类型别名的名称
    返回值:

    举例说明:
    删除类型别名‗STR‘
    CALL SP_DTYPE_DELETE(‘STR’);

14) 杂类函数

  1. TO_DATETIME
    定义:
    CHAR *
    TO_DATETIME(
    year int,
    month int,
    day int,
    hour int,
    minute int

    功能说明:
    将 int 类型值组合并转换成日期时间类型
    参数说明:
    附录 3 系统存储过程和函数
    575
    year:年份,必须介于-4713 和+9999 之间,且不为 0
    month:月份
    day:日
    hour:小时
    minute:分钟
    返回值:
    日期时间值
    举例说明:
    将整型数 2010,2,2,5,5 转换成日期时间类型
    SELECT TO_DATETIME (2010,2,2,5,5);
    查询结果:
    2010-02-02 05:05:00.000000
  2. ROWIDTOCHAR
    定义:
    VARCHAR(18)
    ROWIDTOCHAR ( ROWID bigint )
    功能说明:
    将 bigint 类型的 ROWID 值转换成定长 18 字节的 varchar 类型
    参数说明:
    ROWID:bigint 类型的 ROWID 值
    返回值:
    定长 18 字节的 varchar 类型的 ROWID,以 16 进制输出
    举例说明:
    查询 TEST 表中的 ROWIDTOCHAR(ROWID)和 ROWID。
    SELECT ROWIDTOCHAR(ROWID),ROWID FROM TEST;
    查询结果:
    ROWIDTOCHAR(ROWID) ROWID 000000000000000009 9 00000000000000000A 10 00000000000000000B 11 00000000000000000C 12 00000000000000000D 13 00000000000000000E 14
  3. CHARTOROWID
    定义:BIGINT CHARTOROWID ( C1 varchar(18) )
    功能说明:
    附录 3 系统存储过程和函数
    576
    将最大 18 字节的十六进制字符串转换成 bigint 类型的 ROWID 值
    参数说明:
    C1:最大 18 字节的十六进制字符串,可为 NULL 或空串
    返回值:
    bigint 类型的 ROWID 值,参数为 NULL 或空串时返回 NULL
    举例说明:
    将十六进制的 varchar 类型的 ROWID 值转换成 bigint 类型的 ROWID 值。
    CREATE TABLE T1(C1 INT); CREATE TABLE T2(D1 BIGINT,D2 VARCHAR(18));
    INSERT INTO T1 SELECT LEVEL FROM DUAL CONNECT BY LEVEL<=10;
    INSERT INTO T2(D1,D2) SELECT ROWID,ROWIDTOCHAR(ROWID) FROM T1;
    SELECT D1,D2,CHARTOROWID(D2) FROM T2;
    查询结果:
    D1 D2 CHARTOROWID(D2) 1 000000000000000001 1 2 000000000000000002 2 3 000000000000000003 3 4 000000000000000004 4 5 000000000000000005 5 6 000000000000000006 6 7 000000000000000007 7 8 000000000000000008 8 9 000000000000000009 9 10 00000000000000000A 10
  4. SP_SET_ROLE*
    定义:
    int
    SP_SET_ROLE (
    ROLE_NAME varchar(128),
    ENABLE int
    )
    功能说明:
    设置角色启用禁用
    参数说明:
    ROLE_NAME: 角色名。
    ENABLE:0/1 (0:禁用 1:启用)
    返回值:无
    举例说明:
    禁用角色 ROLE1
    SP_SET_ROLE ( ‘ROLE1’, 0);
    附录 3 系统存储过程和函数
    577
  5. SP_CREATE_SYSTEM_VIEWS*
    定义
    int
    SP_CREATE_SYSTEM_VIEWS (
    CREATE_FLAG int
    )
    功能说明:
    创建或删除系统视图。详细的系统视图请参考《DM8 系统管理员手册》附录 3。
    参数说明:
    CREATE_FLAG:为 1 时表示创建视图;为 0 表示删除视图
    返回值:

    举例说明:
    创建系统视图
    SP_CREATE_SYSTEM_VIEWS(1);
  6. SF_CHECK_SYSTEM_VIEWS
    定义:
    int
    SF_CHECK_SYSTEM_VIEWS()
    功能说明:
    系统视图的启用状态检测。
    返回值:
    0:未启用;1:已启用
    举例说明:
    获得系统视图的启用状态
    SELECT SF_CHECK_SYSTEM_VIEWS;
  7. SP_DYNAMIC_VIEW_DATA_CLEAR
    定义:
    void
    SP_DYNAMIC_VIEW_DATA_CLEAR (
    VIEW_NAME varchar(128)
    )
    功能说明:
    清空动态性能视图的历史数据,仅对存放历史记录的动态视图起作用。
    参数说明:
    VIEW_NAME:动态性能视图名
    返回值:无
    举例说明:
    清空动态性能视图 V S Q L H I S T O R Y 的 历 史 数 据 S P D Y N A M I C V I E W D A T A C L E A R ( ′ V SQL_HISTORY 的历史数据 SP_DYNAMIC_VIEW_DATA_CLEAR('V SQLHISTORYSPDYNAMICVIEWDATACLEAR(VSQL_HISTORY’);
    附录 3 系统存储过程和函数
    578
  8. SP_INIT_DBG_SYS*
    定义:
    void
    SP_INIT_DBG_SYS(
    CREATE_FLAG int
    )
    功能说明:
    创建或删除 DBMS_DBG 系统包
    参数说明:
    CREATE_FLAG:为 1 时表示创建 DBMS_DBG 包;为 0 表示删除该系统包
    返回值:

    举例说明:
    创建 DBMS_DBG 系统包
    SP_INIT_DBG_SYS(1);
  9. SF_CHECK_DBG_SYS
    定义:
    int
    SF_CHECK_DBG_SYS ()
    功能说明:
    系统的 DBG 系统包启用状态检测
    返回值:
    0:未启用;1:已启用
    举例说明:
    获得 DBG 系统包的启用状态
    SELECT SF_CHECK_DBG_SYS;
  10. SP_INIT_GEO_SYS*
    定义:
    void
    SP_INIT_GEO_SYS(
    CREATE_FLAG int
    )
    功能说明:
    创建或删除 DMGEO 系统包
    参数说明:
    CREATE_FLAG:为 1 时表示创建 DMGEO 包;为 0 表示删除该系统包
    返回值:

    举例说明:
    附录 3 系统存储过程和函数
    579
    创建 DMGEO 系统包
    SP_INIT_GEO_SYS(1);
  11. SF_CHECK_GEO_SYS
    定义:
    int
    SF_CHECK_GEO_SYS ()
    功能说明:
    系统的 GEO 系统包启用状态检测
    返回值:
    0:未启用;1:已启用
    举例说明:
    获得 GEO 系统包的启用状态
    SELECT SF_CHECK_GEO_SYS;
  12. SP_CREATE_SYSTEM_PACKAGES*
    定义:
    void
    SP_CREATE_SYSTEM_PACKAGES (
    CREATE_FLAG int
    )
    功能说明:
    创建或删除除了 DMGEO、DBMS_JOB 和 DBMS_WORKLOAD_REPOSITORY 以
    外的所有系统包。若在创建过程中某个系统包由于特定原因未能创建成功,会跳过
    继续创建后续的系统包。
    参数说明:
    CREATE_FLAG : 为 1 时 表 示 创 建 除 了 DMGEO 、 DBMS_JOB 和 DBMS_WORKLOAD_REPOSITORY 以外的所有系统包;为 0 表示删除这些系统包
    返回值:

    举例说明:
    创建除了 DMGEO、DBMS_JOB 和 DBMS_WORKLOAD_REPOSITORY 以外的所
    有系统包
    SP_CREATE_SYSTEM_PACKAGES (1);
  13. SP_CREATE_SYSTEM_PACKAGES* 定义:
    void
    SP_CREATE_SYSTEM_PACKAGES (
    CREATE_FLAG int,
    PKGNAME varchar(128)
    )
    附录 3 系统存储过程和函数
    580
    功能说明:
    创建或删除除了 DMGEO、DBMS_JOB 和 DBMS_WORKLOAD_REPOSITORY 以
    外的指定名字的系统包
    参数说明:
    CREATE_FLAG:为 1 时表示创建指定的系统包;为 0 表示删除这个系统包
    PKGNAME:指定的除 DMGEO、DBMS_JOB 和 DBMS_WORKLOAD_REPOSITORY
    以外的系统包名
    返回值:
    无 举例说明: 创建 DBMS_LOB 系统包
    SP_CREATE_SYSTEM_PACKAGES(1, ‘DBMS_LOB’);
  14. SF_CHECK_SYSTEM_PACKAGES
    定义:
    int
    SF_CHECK_SYSTEM_PACKAGES()
    功能说明:
    系统包的启用状态检测
    返回值:
    0:未启用;1:已启用
    举例说明:
    获得系统包的启用状态
    SELECT SF_CHECK_SYSTEM_PACKAGES;
  15. SP_INIT_INFOSCH*
    定义:
    void
    SP_INIT_INFOSCH (
    CREATE_FLAG int
    )
    功能说明:
    创建或删除信息模式
    参数说明:
    CREATE_FLAG:为 1 时表示创建信息模式;为 0 表示删除信息模式
    举例说明:
    创建信息模式
    SP_INIT_INFOSCH (1);
  16. SF_CHECK_INFOSCH
    定义:
    int
    SF_CHECK_INFOSCH ()
    附录 3 系统存储过程和函数
    581
    功能说明:
    系统的信息模式启用状态检测
    返回值:
    0:未启用;1:已启用
    举例说明:
    获得系统信息模式的启用状态
    SELECT SF_CHECK_INFOSCH;
  17. SP_INIT_CPT_SYS
    定义:
    int
    SP_INIT_CPT_SYS (
    FLAG int
    )
    功能说明:
    初始化数据捕获环境
    参数说明:
    FLAG: 1 表示初始化环境;0 表示删除环境
    举例说明:
    初始化数据捕获环境
    SP_INIT_CPT_SYS(1);
  18. SF_CHECK_CPT_SYS
    定义:
    int
    SF_CHECK_CPT_SYS ()
    功能说明:
    系统的数据捕获环境启用状态检测
    返回值:
    0:未启用;1:已启用
    举例说明:
    获得系统数据捕获环境的启用状态
    SELECT SF_CHECK_CPT_SYS;
  19. SF_SI
    定义:
    CHAR*
    SF_SI(
    index_sql varchar(8188)
    )
    功能说明:
    输入索引创建语句,查看预计的执行信息
    返回值:
    索引创建的统计信息,排序区大小的建议值
    附录 3 系统存储过程和函数
    582
    举例说明:
    SELECT SF_SI(‘create index idx_t1 on t1(c1,c2);’);
  20. SP_UNLOCK_USER
    语法:
    SP_UNLOCK_USER(
    USER_NAME varchar(128) not null
    );
    参数说明:
    USER_NAME:需要解锁的用户名
    功能说明: 为指定的用户解锁
    举例说明:
    CREATE USER USER123 IDENTIFIED BY USER123456;
    –错误登录 3 次,导致用户被锁
    SQL>LOGIN
    服务名:
    用户名:USER123456
    密码:
    端口号:
    SSL 路径: SSL 密码:
    UKEY 名称:
    UKEY PIN 码:
    MPP 类型: [-2501]:用户名或密码错误. --解锁
    –SYSDBA 用户登录:
    call SP_UNLOCK_USER(‘USER123’);
  21. DUMP 函数
    定义:
    CHAR*
    DUMP(
    Exp INT/BIGINT/DEC/DOUBLE/FLOAT/VARBINARY/
    VARCHAR/DATE/TIME/DATETIME/TIME WITH TIME ZONE/TIMESTAMP WITH
    TIME ZONE/INTERVAL YEAR/INTERVAL DAY/BLOB/CLOB ,
    Fmt INT,
    Start INT,
    Len INT

    功能说明:
    获得表达式的内部存储字节
    附录 3 系统存储过程和函数
    参数说明:
    Exp:输入参数(必选),可以是任何基本数据类型
    Fmt:输出格式进制,大于 1000 的情况下显示字符串的字符集、17 表示以
    字符显示
    Start:开始进行返回的字节的位置
    Len:需要返回的字节长度
    返回值:
    依次是数据类型、字节长度:内部存储字节(符号位、指数位、……)。对于大字段
    类型行内数据,字节长度为头长度+行内数据长度,内部存储字节只返回大字段头+行
    内数据的全部字节。行外数据的字节长度为头长度,内部存储字节只返回大字段头。
    举例说明:
    例 1 查询字符串‘an‘的存储字节,显示字符集,显示成字符
    select dump(‘an’,1017); 查询结果:
    Typ=2 Len=2 CharacterSet=GBK: a,n
    例 2 查询日期类型’2005-01-01’的默认字节,默认进制显示
    select dump(date ‘2005-01-01’ ) ;
    查询结果:
    Typ=14 Len=12: 213,7,1,1,0,0,0,0,0,0,232,3
    例 3 查询数字 123 的从第 2 个字节开始的 4 个字节,以 16 进制显示
    select dump(1234567890,16,2,4);
    查询结果:
    Typ=7 Len=4: 2,96,49
    例 4 查询 clob 类型的默认字节,默认进制显示。
    1)行内数据:
    create table testdump(c1 clob);
    insert into testdump values(‘adbca’);
    insert into testdump values(‘1.曹雪芹,是中国文学史上最伟大也是最复杂的作家,
    《红楼梦》也是中国文学史上最伟大而又最复杂的作品。《红楼梦》写的是封建贵族的青年贾宝玉、林黛王、
    薛宝钗之间的恋爱和婚姻悲剧,而且以此为中心,写出了当时具有代表性的贾、王、史、薛四大家族的兴
    衰,其中又以贾府为中心,揭露了封建社会后期的种种黑暗和罪恶,及其不可克服的内在矛盾,对腐朽的
    封建统治阶级和行将崩溃的封建制度作了有力的批判,使读者预感到它必然要走向覆灭的命运。本书是一
    部具有高度思想性和高度艺术性的伟大作品,从本书反映的思想倾向来看,作者具有初步的民主主义思想,
    他对现实社会包括宫廷及官场的黑暗,封建贵族阶级及其家庭的腐朽,封建的科举制度、婚姻制度、奴婢
    制度、等级制度,以及与此相适应的社会统治思想即孔孟之道和程朱理学、社会道德观念等等,都进行了
    深刻的批判并且提出了朦胧的带有初步民主主义性质的理想和主张。这些理想和主张正是当时正在滋长的
    资本主义经济萌芽因素的曲折反映。2.曹雪芹,是中国文学史上最伟大也是最复杂的作家,《红楼梦》也
    是中国文学史上最伟大而又最复杂的作品。《红楼梦》写的是封建贵族的青年贾宝玉、林黛王、薛宝钗之间
    的恋爱和婚姻悲剧,而且以此为中心,写出了当时具有代表性的贾、王、史、薛四大家族的兴衰,其中又
    以贾府为中心,揭露了封建社会后期的种种黑暗和罪恶,及其不可克服的内在矛盾,对腐朽的封建统治阶
    级和行将崩溃的封建制度作了有力的批判,使读者预感到它必然要走向覆灭的命运。本书是一部具有高度
    思想性和高度艺术性的伟大作品,从本书反映的思想倾向来看,作者具有初步的民主主义思想,他对现实
    社会包括宫廷及官场的黑暗,封建贵族阶级及其家庭的腐朽,封建的科举制度、婚姻制度、奴婢制度、等
    级制度,以及与此相适应的社会统治思想即孔孟之道和程朱理学、社会道德观念等等,都进行了深刻的批
    583
    附录 3 系统存储过程和函数
    判并且提出了朦胧的带有初步民主主义性质的理想和主张。这些理想和主张正是当时正在滋长的资本主义
    经济萌芽因素的曲折反映。’);
    select dump(c1) from testdump;
    查询结果:
    Typ=19 Len=48:
    1,6,2,0,0,0,0,0,0,5,0,0,0,0,0,0,0,0,0,0,0,5,5,0,0,0,0,1,0,0,0,0,0,0,0,4,0
    ,0,0,224,0,0,0,97,100,98,99,97
    具体说明如下:
    Len=48: 大字段头 43 个字节 + 实际内容 5 个字节
    1, 大字段行内行外标记:行内
    6, 0,0,0,0,0,0,0,大字段 id
    5,0,0,0,大字段长度
    0,0, 行外大字段的表空间 id
    0,0, 行外大字段的文件 id
    0,0,0,0, 行外大字段的页 id
    5,5,0,0, 表 id
    0,0,列 id
    1,0,0,0,0,0,0,0, rowid
    4,0, 记录所在表空间号
    0,0, 记录所在文件号
    224,0,0,0, 记录所在页号
    97,100,98,99,97 实际内容 5 个字节
    2)行外数据:
    可以使用 DM 数据库的各种编程接口插入 CLOB 列的行外数据,此处就不给出具体
    插入数据的例子,仅就查询结果各字节所表示的意义进行说明。
    Typ=19 Len=43:
    2,7,2,0,0,0,0,0,0,108,6,0,0,4,0,0,0,209,0,0,0,5,5,0,0,0,0,2,0,0,0,0,0,0,0
    ,4,0,0,0,224,0,0,0
    具体说明如下:
    Len=43: 大字段头 43 个字节 + 实际内容 5 个字节
    2,大字段行内行外标记:行外
    7,2,0,0,0,0,0,0, 大字段 id
    108,6,0,0, 大字段长度
    4,0, 行外大字段的表空间 id
    0,0, 行外大字段的文件 id
    209,0,0,0, 行外大字段的页 id
    5,5,0,0, 表 id
    0,0, 列 id 2,0,0,0,0,0,0,0, rowid
    4,0, 行外大字段对应表记录所在表空间号
    0,0, 行外大字段对应表记录所在文件号
    224,0,0,0 行外大字段对应表记录所在页号
    584
    附录 3 系统存储过程和函数
    585
  22. SP_CREATE_SYSTEM_PACKAGES
    定义:
    void
    SP_CREATE_SYSTEM_PACKAGES (
    CREATE_FLAG int,
    PKGNAME varchar(128)
    )
    功能说明:
    单独创建或删除除了 DBMS_DBG、DMGEO 和 DBMS_JOB 以外的系统包
    参数说明:
    CREATE_FLAG:为 1 时表示创建除了 DBMS_DBG、DMGEO 和 DBMS_JOB 以
    外的指定系统包;为 0 时表示删除指定系统包
    PKGNAME: 指定创建或删除的包名
    返回值:

    举例说明:
    创建系统包 DBMS_SQL
    SP_CREATE_SYSTEM_PACKAGES (1, ‘DBMS_SQL’);
    删除系统包 DBMS_SQL
    SP_CREATE_SYSTEM_PACKAGES (0, ‘DBMS_SQL’);
  23. SP_CLOSE_DBLINK
    定义:
    void
    SP_CLOSE_DBLINK(
    DBLINK varchar(128)
    )
    功能说明:
    关闭系统缓冲区中指定的空闲的外部链接,若指定的外部链接不处于空闲状态
    (可通过 V$DBLINK 查询),则不关闭。
    参数说明:
    DBLINK:指定的待关闭的外部链接名
    返回值:

    举例说明:
    关闭之前创建的外部链接 LINK1。
    SP_CLOSE_DBLINK(‘LINK1’);
  24. SP_XA_TRX_PROCESS
    定义:
    void
    SP_XA_TRX_PROCESS(
    TRXID bigint,
    FLAG boolean )
    功能说明:
    附录 3 系统存储过程和函数
    586
    指定提交或回滚 TRXID 对应的 XA TRX。指定的 TRXID 对应的 TRX 必须是
    XA TRX,且已经通过接口执行过 xa_end 或 xa_prepare 操作,否则报错。
    TRXID 可通过 V$TRX 中的 ID 查询。
    参数说明:
    TRXID:事务的 ID 号 FLAG:false 表示回滚,true 表示提交
    返回值:
  25. GETUTCDATE
    定义:
    datetime
    GETUTCDATE ()
    功能说明:
    获取当前 UTC 时间
    返回值:
    当前 UTC 时间
    举例说明:
    获取当前 UTC 时间
    SELECT GETUTCDATE();
  26. SLEEP
    定义:
    VOID
    SLEEP(time dec)
    功能说明:
    表示让一个线程进入睡眠状态,等待一段时间 time 之后,该线程自动醒来进
    入到可运行状态。
    参数说明:
    time:睡眠时间,单位:秒
    返回值:

    举例说明:
    让一个线程睡眠 1 秒钟之后,再醒过来继续运行
    sleep(1);
  27. SF_GET_TRIG_EP_SEQ
    定义:
    int
    SF_GET_TRIG_EP_SEQ(id int)
    功能说明:
    获取 DMDSC 环境下时间触发器执行节点号。
    参数说明:
    id:时间触发器 id
    返回值:
    执行节点号
    举例说明:
    附录 3 系统存储过程和函数
    587
    SELECT SF_GET_TRIG_EP_SEQ(117440523);

15) 编目函数调用的系统函数

  1. SF_GET_BUFFER_LEN
    定义:
    SF_GET_BUFFER_LEN(
    name varchar,
    length int,
    scale int
    )
    参数说明:
    name:某列数据类型名,数据类型为 VARCHAR
    length:列的精度,INT 类型
    scale:列的刻度,INT 类型
    功能说明:
    根据某列数据类型名 name 和列的精度 length 刻度 scale 获取该列存贮在硬盘
    上的长度
    返回值:
    列存贮长度,数据类型为 INT
    举例说明:
    SELECT SF_GET_BUFFER_LEN(‘VARCHAR’,3,2);
    查询结果:
    3
  2. SF_GET_DATA_TYPE
    定义:
    SF_GET_DATA_TYPE(
    name varchar,
    scale int,
    version int
    )
    参数说明:
    name:某列数据类型名,数据类型为 VARCHAR
    scale:时间间隔类型刻度,INT 类型
    version:版本号,INT 类型
    功能说明:
    根据数据类型关键字获取对应的 SQL 数据类型
    返回值:
    数据类型值,数据类型为 INT
    举例说明:
    SELECT SF_GET_DATA_TYPE(‘VARCHAR’,3,2);
    查询结果:
    12
    附录 3 系统存储过程和函数
    588
  3. SF_GET_DATE_TIME_SUB
    定义:
    SF_GET_DATE_TIME_SUB(
    name varchar,
    scale int )
    参数说明:
    name:某列数据类型名,数据类型为 VARCHAR
    scale:类型刻度,INT 类型
    功能说明:
    获得时间类型的子类型
    返回值:
    时间类型子类型值,数据类型为 INT
    举例说明:
    SELECT SF_GET_DATE_TIME_SUB(‘datetime’,2);
    查询结果:
    3
  4. SF_GET_DECIMAL_DIGITS
    定义:
    SF_GET_DECIMAL_DIGITS(
    name varchar,
    scale int
    )
    参数说明:
    name:某列数据类型名,数据类型为 VARCHAR
    scale:预期类型刻度,INT 类型
    功能说明:
    根据某数据类型名和预期的刻度获取该数据类型的实际刻度
    返回值:
    类型实际刻度值,数据类型为 INT
    举例说明:
    SELECT SF_GET_DECIMAL_DIGITS(‘INT’,2);
    查询结果:
    0
  5. SF_GET_SQL_DATA_TYPE
    定义:
    SF_GET_SQL_DATA_TYPE(
    name varchar
    )
    参数说明:
    name:某列数据类型名,数据类型为 VARCHAR
    附录 3 系统存储过程和函数
    589
    功能说明:
    根据某数据类型名返回该数据类型的 SQL 数据类型值
    返回值:
    SQL 数据类型值,数据类型为 INT
    举例说明:
    SELECT SF_GET_SQL_DATA_TYPE(‘INT’);
    查询结果:
    4
  6. SF_GET_SYS_PRIV
    定义:
    SF_GET_SYS_PRIV(
    privid int
    )
    参数说明:
    privid:数据类型为 INT。取值范围:数据库权限 4096-4244,对象权限
    8192-8198。除了 4123、4204 和 4205
    功能说明:
    获得 privid 所代表的权限操作
    返回值:前导字符串,数据类型为 VARCHAR
    举例说明:
    SELECT SF_GET_SYS_PRIV(4096);
    SELECT SF_GET_SYS_PRIV(4099);
    查询结果:
    CREATE DATABASE
    CREATE LOGIN
  7. SF_GET_OCT_LENGTH
    定义:
    SF_GET_OCT_LENGTH(
    name varchar,
    length int
    )
    参数说明:
    name:数据类型名,数据类型为 VARCHAR
    length:类型长度,INT 类型 功能说明:
    返回变长数据类型的长度
    返回值:
    类型长度,数据类型为 INT
    举例说明:
    SELECT SF_GET_OCT_LENGTH(‘VARCHAR’,3);
    查询结果:
    附录 3 系统存储过程和函数
    3
  8. SF_GET_TABLES_TYPE
    定义:
    SF_GET_TABLES_TYPE(
    type varchar
    )
    参数说明:
    type:表的类型名,数据类型为 VARCHAR
    功能说明:
    返回表类型名 返回值:
    表类型名,数据类型为 VARCHAR
    举例说明:
    SELECT SF_GET_TABLES_TYPE(‘UTAB’);
    查询结果:
    TABLE
  9. CURRENT_SCHID
    定义:
    CURRENT_SCHID()
    参数说明:

    功能说明:
    返回当前会话的当前模式 ID
    返回值:
    当前会话的当前模式 ID
    举例说明:
    SELECT CURRENT_SCHID();
    查询结果:
    150994945
  10. SF_GET_SCHEMA_NAME_BY_ID
    定义:
    SF_GET_SCHEMA_NAME_BY_ID(
    schid int
    )
    参数说明:
    schid:模式 ID,INT 类型
    功能说明:
    根据模式 ID 返回模式名
    返回值:
    模式名,数据类型为 VARCHAR
    举例说明:
    590
    附录 3 系统存储过程和函数
    591
    SELECT SF_GET_SCHEMA_NAME_BY_ID(150994945);
    查询结果:
    SYSDBA
  11. SF_COL_IS_IDX_KEY
    定义:
    SF_COL_IS_IDX_KEY(
    key_num int,
    key_info varbinary,
    col_id int
    )
    参数说明:
    key_num:键值个数,数据类型为 INT
    key_info:键值信息,数据类型为 VARBINARY
    col_id:列 ID,INT 类型
    功能说明:
    判断所给的 colid 是否是 index key
    返回值:
    是否索引键,数据类型为 INT
    举例说明:
    CREATE TABLE TT1(C1 INT);
    CREATE INDEX ID1 ON TT1(C1);
    SELECT ID FROM SYSOBJECTS WHERE NAME LIKE ‘TT1’;//1334
    SELECT INDS.KEYNUM, INDS.KEYINFO, SF_COL_IS_IDX_KEY(INDS.KEYNUM,
    INDS.KEYINFO, COLS.COLID) FROM (SELECT ID,PID,NAME FROM SYSOBJECTS WHERE
    SUBTYPE$=‘INDEX’) AS OBJ_INDS, SYSCOLUMNS AS COLS, SYSINDEXES AS INDS WHERE
    COLS.ID = 1334 AND OBJ_INDS.PID = 1334 AND INDS.ID = OBJ_INDS.ID;
    查询结果:
    1 000041 1 --ID1
    0 0 --聚集索引
  12. SF_GET_INDEX_KEY_ORDER
    定义:
    SF_GET_INDEX_KEY_ORDER(
    key_num int,
    key_info varbinary,
    col_id int )
    参数说明:
    key_num:索引键个数,数据类型为 INT
    key_info:键值信息,数据类型为 VARBINARY
    col_id:列 ID,INT 类型
    功能说明:
    获得当前 column 的 key 的排序
    附录 3 系统存储过程和函数
    592
    返回值:
    类型长度,数据类型为 VARCHAR
    举例说明:
    CREATE TABLE TT1(C1 INT);
    CREATE INDEX ID1 ON TT1(C1);
    SELECT ID FROM SYSOBJECTS WHERE NAME LIKE ‘TT1’;//1135
    SELECT SF_GET_INDEX_KEY_ORDER(INDS.KEYNUM, INDS.KEYINFO, COLS.COLID)
    FROM (SELECT ID,PID,NAME FROM SYSOBJECTS WHERE SUBTYPE$=‘INDEX’) AS OBJ_INDS,
    SYSCOLUMNS AS COLS, SYSINDEXES AS INDS WHERE COLS.ID = 1135 AND OBJ_INDS.PID =
    1135 AND INDS.ID = OBJ_INDS.ID;
    查询结果:
    ANULL
  13. SF_GET_INDEX_KEY_SEQ
    定义:
    SF_GET_INDEX_KEY_SEQ(
    key_num int,
    key_info varbinary,
    col_id int
    )
    参数说明:
    key_num:索引键个数,数据类型为 INT
    key_info:键值信息,数据类型为 VARBINARY
    col_id:列 ID,INT 类型
    功能说明:
    获得当前 column 所在的 key 序号
    返回值:
    当前列 KEY 序号,数据类型为 INT
    举例说明:
    CREATE TABLE TT1(C1 INT);
    CREATE INDEX ID1 ON TT1(C1);
    SELECT ID FROM SYSOBJECTS WHERE NAME LIKE ‘TT1’;//1135
    SELECT SF_GET_INDEX_KEY_SEQ(INDS.KEYNUM, INDS.KEYINFO, COLS.COLID) FROM
    (SELECT ID,PID,NAME FROM SYSOBJECTS WHERE SUBTYPE$=‘INDEX’) AS OBJ_INDS,
    SYSCOLUMNS AS COLS, SYSINDEXES AS INDS WHERE COLS.ID = 1135 AND OBJ_INDS.PID =
    1135 AND INDS.ID = OBJ_INDS.ID;
    查询结果:
    1-1
  14. SF_GET_UPD_RULE
    定义:
    SF_GET_UPD_RULE(
    附录 3 系统存储过程和函数
    rule varchar(2)
    )
    参数说明:
    rule:规则名,数据类型为 VARCHAR。rule 参数只会用到 rule[0],取值
    为‘‘/‘C‘/‘N‘/‘D‘,分别表示 no act/cascade/set null/set default
    功能说明:
    解析在 SYSCONS 中 faction 中保存的外键更新规则
    返回值:
    外键更新规则值,数据类型为 INT
    举例说明:
    SELECT SF_GET_UPD_RULE(‘C’);
    查询结果:
    0
  15. SF_GET_DEL_RULE
    定义:
    SF_GET_DEL_RULE(
    rule varchar(2) )
    参数说明:
    rule:规则名,数据类型为 VARCHAR,rule 参数只会用到 rule[1],取值
    为‘‘/‘C‘/‘N‘/‘D‘,分别表示 no act/cascade/set null/set default。
    功能说明:
    解析在 SYSCONS 中 faction 中保存的外键删除规则
    返回值:
    外键删除规则值,数据类型为 INT
    举例说明:
    SELECT SF_GET_DEL_RULE(‘AC’); 查询结果:
    0
  16. SF_GET_OLEDB_TYPE
    定义:
    SF_GET_OLEDB_TYPE(
    name varchar
    )
    参数说明:
    name:类型名,数据类型为 VARCHAR
    功能说明:
    获得 OLEDB 的数据类型长度
    返回值:
    数据类型值,数据类型为 INT
    举例说明:
    SELECT SF_GET_OLEDB_TYPE(‘INT’);
    593
    附录 3 系统存储过程和函数
    查询结果: 3
  17. SF_GET_OLEDB_TYPE_PREC
    定义:
    SF_GET_OLEDB_TYPE_PREC(
    name varchar,
    length int )
    参数说明:
    name:类型名,数据类型为 VARCHAR
    length:类型长度,数据类型为 INT
    功能说明:
    获得 OLEDB 的数据类型的精度
    返回值:
    数据类型的精度值,数据类型为 INT
    举例说明:
    SELECT SF_GET_OLEDB_TYPE_PREC(‘INT’,2);
    查询结果:
    10
  18. SP_GET_TABLE_COUNT 定义:
    SP_GET_TABLE_COUNT(
    table_id int )
    参数说明:
    table_id:类型长度,数据类型为 INT
    功能说明:
    获得表行数
    返回值:
    表的行数,数据类型为 INT
    举例说明:
    SELECT SP_GET_TABLE_COUNT(1097);
    查询结果:
    69
  19. SF_OLEDB_TYPE_IS_LONG
    定义:
    SF_OLEDB_TYPE_IS_LONG(
    typename varchar )
    参数说明:
    typename:类型名,数据类型为 VARCHAR 功能说明:
    判断类型是否较长
    返回值:
    594
    附录 3 系统存储过程和函数
    0 或者 1,数据类型为 INT
    举例说明:
    SELECT SF_OLEDB_TYPE_IS_LONG(‘IMAGE’);
    SELECT SF_OLEDB_TYPE_IS_LONG(‘INT’);
    查询结果:
    10
  20. SF_OLEDB_TYPE_IS_BESTMATCH
    定义:
    SF_OLEDB_TYPE_IS_BESTMATCH(
    typename varchar
    )
    参数说明:
    typename:类型名,数据类型为 VARCHAR
    功能说明:
    判断类型是否精确匹配类型
    返回值:
    0 或者 1,数据类型为 INT
    举例说明:
    SELECT SF_OLEDB_TYPE_IS_BESTMATCH(‘INT’);
    SELECT SF_OLEDB_TYPE_IS_BESTMATCH(‘IMAGE’);
    查询结果:
    10
  21. SF_OLEDB_TYPE_IS_FIXEDLEN
    定义:
    SF_OLEDB_TYPE_IS_FIXEDLEN(
    typename varchar )
    参数说明:
    typename:类型名,数据类型为 VARCHAR
    功能说明:
    判断类型是否为定长类型
    返回值:
    0 或者 1,数据类型为 INT
    举例说明:
    SELECT SF_OLEDB_TYPE_IS_FIXEDLEN(‘INT’);
    SELECT SF_OLEDB_TYPE_IS_FIXEDLEN(‘IMAGE’);
    查询结果: 10
  22. SF_GET_TABLE_COUNT
    595
    附录 3 系统存储过程和函数
    596
    定义:
    SP_GET_TABLE_COUNT(
    table_id int )
    参数说明:
    table_id:类型长度,数据类型为 INT
    功能说明:
    获得表行数。功能和 SP_GET_TABLE_COUNT 一样
    返回值:
    表的行数,数据类型为 INT
    举例说明:
    SELECT SP_GET_TABLE_COUNT(1097);
    查询结果:
    69
  23. SF_GET_TABLE_COUNT
    定义:
    SP_GET_TABLE_COUNT(
    schema_name varchar(128),
    table_name varchar(128))
    参数说明:
    schema_name:模式名,数据类型为 varchar
    功能说明:
    获得表行数。功能和 SP_GET_TABLE_COUNT 一样
    返回值:
    表的行数,数据类型为 INT
    举例说明:
    SELECT SP_GET_TABLE_COUNT(‗SYSDBA‘,‘T‘);
    查询结果:
    69

16) BFILE

  1. BFILENAME
    定义:
    BFILE
    BFILENAME(
    dir VARCHAR,
    filename VARCHAR
    )
    参数说明:
    dir:数据库的目录对象名,字符串中不能包含―:‖
    filename:操作系统文件名,字符串中不能包含―:‖
    功能说明:
    生成一个 BFILE 类型数据
    附录 3 系统存储过程和函数
    597
    返回值:
    BFILE 数据类型对象

17) 定制会话级 INI 参数

提供用户定制会话级 ini 参数默认值的功能。定制以后,当用户再次登录时无需复杂
的设置就可以在当前会话中使用定制的会话级 ini 参数,并且使无法设置参数的 B/S 或者
C/S 应用也能使用特定的会话级 ini 参数。
定制后的 ini 参数值可以通过数据字典 SYSUSERINI 查看。
使用时有以下限制:

  1. 用户对会话级参数的定制和取消对于当前会话不会立刻生效,也不会影响当前已经
    连接的该用户的其他会话。该用户新登录的会话会使用定制的值作为默认值。
  2. MPP 环境下,参数的定制在整个 MPP 环境所有的服务器节点生效。
  3. 对于一个会话级 ini 参数,其取值优先级顺序为: 会话中设置的值 > 用户定制
    的值 > INI 文件中匹配的值。
  4. DBA 用户拥有定制、查询和删除所有用户 ini 的权限;普通用户拥有定制、查询
    和删除自身 ini 的权限。
    对于不同数据类型的参数要使用不同的系统过程。ini参数的VALUE有三种类型:INT、
    VARCHAR 和 DOUBLE,分别对应三个系统过程:
  1. SP_SET_USER_INI
    定义:
    SP_SET_USER_INI(
    USER VARCHAR,
    PARA_NAME VARCHAR,
    VALUE INT
    );
    功能说明:
    定制 INT 类型的 ini 参数
    参数说明:
    USER:用户名
    PARA_NAME:参数名
    VALUE:INT 类型参数值
    举例说明:
    SP_SET_USER_INI(‘USER1’,‘SORT_BUF_SIZE’,‘1234’);
  2. SP_SET_USER_STRING_INI
    定义:
    SP_SET_USER_STRING_INI(
    USER VARCHAR,
    PARA_NAME VARCHAR,
    VALUE VARCHAR
    );
    功能说明:
    附录 3 系统存储过程和函数
    598
    定制 VARCHAR 类型的 ini 参数。
    参数说明:
    USER:用户名
    PARA_NAME:参数名
    VALUE:VARCHAR 类型参数值
  3. SP_SET_USER_DOUBLE_INI
    定义
    SP_SET_USER_STRING_INI(
    USER VARCHAR,
    PARA_NAME VARCHAR,
    VALUE VARCHAR
    ); 功能说明:
    定制 DOUBLE 类型的 ini 参数。
    参数说明:
    USER:用户名
    PARA_NAME:参数名
    VALUE:DOUBLE 类型参数值
    举例:
    SP_SET_USER_DOUBLE_INI(‘USER2’,‘INDEX_SKIP_SCAN_RATE’,‘0.0035’);
  4. SP_CLEAR_USER_INI
    定义
    SP_CLEAR_USER_INI(
    USER VARCHAR,
    PARA_NAME VARCHAR
    );
    功能说明:
    清除用户 USER 的 PARA_NAME 的参数定制。当 USER 和 PARA_NAME 都等于 NULL
    时,表示清除所有用户的所有定制;当 PARA_NAME 为 NULL 时,表示清除用户 USER
    的所有定制。不支持 USER 为 NULL,PARA_NAME 不为 NULL 的情况。
    参数说明:
    USER:用户名
    PARA_NAME:参数名
    举例说明: SP_CLEAR_USER_INI(‘USER2’,NULL);

18) 为 SQL 指定 HINT

提供无需修改 SQL 语句但依然能按照指定的 HINT 运行语句的相关功能。
使用时有以下限制:

  1. INI 参数 ENABLE_INJECT_HINT 需设置为 1;
  2. SQL 只能是语法正确的增删改查语句;
  3. SQL 会经过系统格式化,格式化之后的 SQL 和指定的规则名称必须全局唯一;
    附录 3 系统存储过程和函数
    599
  4. HINT 一指定,则全局生效;
  5. 系统检查 SQL 匹配时,必须是整条语句完全匹配,不能是语句中子查询匹配;
  6. 可通过 SYSINJECTHINT 视图查看已指定的 SQL 语句和对应的 HINT。
  1. SF_INJECT_HINT
    定义
    VARCHAR
    SF_INJECT_HINT (
    SQL_TEXT TEXT, HINT_TEXT TEXT,
    NAME VARCHAR(128),
    DESCRIPTION VARCHAR(256),
    VALIDATE BOOLEAN
    )
    功能说明:
    对指定 SQL 增加 HINT。
    参数说明:
    SQL_TEXT: 要指定 HINT 的 SQL 语句
    HINT_TEXT:要为 SQL 指定的 HINT
    NAME:可以指定名称,或者设为 NULL 让系统自动创建名称
    DESCRIPTION:对规则的详细描述,可为 NULL
    VALIDATA:规则是否生效,可为 NULL,则为默认值 TRUE
    返回值:执行成功返回名称,执行失败报错误信息
    举例说明:
    为以下语句指定 HINT 为 MMT_SIZE = 4: SF_INJECT_HINT(‘SELECT * FROM A;’, ‘MMT_SIZE(4)’, ‘TEST_INJECT’, ‘to test
    function of injecting hint’, TRUE);
  2. SF_DEINJECT_HINT
    定义:
    INT
    SF_DEINJECT_HINT (
    NAME VARCHAR(128)
    ) 功能说明:
    对指定 SQL 撤回已增加的 HINT
    参数说明:
    NAME: 要删除的规则名称
    返回值:
    执行成功返回 0,执行失败返回错误码
    举例说明:
    为 SQL 撤回已指定的 HINT:
    附录 3 系统存储过程和函数
    600
    SF_DEINJECT_HINT(‘TEST_INJECT’);
  3. SF_ALTER_HINT 定义:
    INT
    SF_ALTER_HINT (
    NAME VARCHAR(128),
    ATTRIBUTE_NAME VARCHAR(12),
    ATTRIBUTE_VALUE VARCHAR(256)
    )
    功能说明:
    修改已指定 HINT 的规则属性
    参数说明:
    NAME: 要修改的规则名称
    ATTRIBUTE_NAME:要修改的属性名
    STATUS:规则是否生效,取值 ENABLED/DISABLED
    NAME:规则名称
    DESCRIPTION:规则的详细描述
    ATTRIBUTE_VALUE:设置的属性值
    返回值:
    执行成功返回 0,执行失败返回错误码
    举例说明:
    让已指定的 HINT 的规则失效:
    SF_ALTER_HINT(‘TEST_INJECT’, ‘STATUS’, ‘DISABLED’);

19) 时区设置

本小节的过程与函数都是用来设置时区相关信息。

  1. SP_SET_TIME_ZONE
    定义:
    VOID SP_SET_TIME_ZONE(interval day) VOID SP_SET_TIME_ZONE(interval day to hour)
    VOID SP_SET_TIME_ZONE(interval day to minute)
    VOID SP_SET_TIME_ZONE(interval day to second)
    VOID SP_SET_TIME_ZONE(interval hour)
    VOID SP_SET_TIME_ZONE(interval hour to minute)
    SP_SET_TIME_ZONE(interval hour to second)
    功能说明:
    设置时区为标准时区加上 interval day 中的小时和分钟。
    返回值:
    无。
    举例说明:
    SP_SET_TIME_ZONE(INTERVAL ‘12 3:9’ hour to second);
    drop table ttime;
    附录 3 系统存储过程和函数
    601
    create table ttime (c2 timestamp with time zone);
    insert into ttime values(‘1977-01-10 8:0:0’);
    select * from ttime;
    查询结果:
    1977-01-10 08:00:00.000000 +12:03
  2. SP_SET_TIME_ZONE_STRING
    定义:
    VOID SP_SET_TIME_ZONE_STRING(
    VARCHAR
    )
    功能说明:
    设置时区为标准时区加上 varchar 的 interval hour。varchar 只能是
    interval hour 或 hour to minute。
    返回值:
    无。 举例说明:
    SP_SET_TIME_ZONE_string(‘7 3’);
    drop table ttime;
    create table ttime (c2 timestamp with local time zone);
    insert into ttime values(‘1977-01-10 8:0:0 +4:00’);
    select * from ttime;
    查询结果:
    1977-01-10 11:03:00.000000
  3. SP_SET_TIME_ZONE_LOCAL
    定义:
    VOID SP_SET_TIME_ZONE_LOCAL()
    功能说明:
    设置时区为当前服务器的时区。
    返回值:
    无。
    举例说明:
    SP_SET_TIME_ZONE_LOCAL();
    drop table ttime;
    create table ttime (c2 timestamp with local time zone);
    insert into ttime values(‘1977-01-10 8:0:0 +3:00’);
    select * from ttime;
    查询结果:
    1977-01-10 13:00:00.000000
  4. SF_TIME_ADD_TIME_ZONE_INTERVAL/
    SF_DATETIME_ADD_TIME_ZONE_INTERVAL
    定义:
    附录 3 系统存储过程和函数
    602
    VOID SF_TIME_ADD_TIME_ZONE_INTERVAL(time) 或
    VOID SF_TIME_ADD_TIME_ZONE_INTERVAL(datetime)
    功能说明:
    将指定时间加上 LOCAL 时区时间。
    返回值:
    无。
    举例说明:
    select SF_TIME_ADD_TIME_ZONE_INTERVAL(‘1988-01-01 2:00’); 或
    select SF_DATETIME_ADD_TIME_ZONE_INTERVAL(‘1988-01-01 2:00:36’);
    查询结果:
    1988-01-01 10:00:00 或
    1988-01-01 10:00:36

20) XML

本小节的过程与函数都是用来解析和查询 XML 数据的,目前 DM 支持解析的 XML 数据
大小不得超过 500M。

  1. SF_XMLQUERY
    定义:clob
    SF_XMLQUERY(
    xmldata clob,
    xpath clob
    )
    功能说明:
    解析 xmldata 并查询指定路径 xpath 下的数据。
    参数说明:
    xmldata:待解析的 XML 数据
    xpath:指定的解析路径
    返回值:
    解析得到的 XML 数据。
    举例说明:
    SELECT SF_XMLQUERY(‘b’, ‘/a’);
    查询结果:
    b
  2. XMLQUERY
    定义:
    clob
    XMLQUERY(
    xmldata clob,
    xpath varchar2(8188)
    )
    附录 3 系统存储过程和函数
    603
    功能说明:
    解析 xmldata 并查询指定路径 xpath 下的数据。 参数说明:
    xmldata:待解析的 XML 数据
    xpath:指定的解析路径
    返回值:
    解析得到的 XML 数据。
    举例说明:
    SELECT XMLQUERY(‘b’, ‘/a’);
    查询结果:
    b
  3. EXISTSNODE
    定义:
    int
    EXISTSNODE(
    xmldata clob,
    xpath varchar2(8188)
    )
    功能说明:
    xmldata 中是否存在指定的路径节点,若存在则返回 1,不存在返回 0。xmldata
    或 xpath 为 NULL 或者空串的情况下一律返回 0。
    参数说明:
    xmldata:待解析的 XML 数据
    xpath:指定的路径节点
    返回值:
    1 代表节点存在,0 代表节点不存在。
    举例说明:
    SELECT EXISTSNODE(‘b’, ‘/a’);
    查询结果: 1
  4. EXTRACTVALUE
    定义:
    varchar2
    EXTRACTVALUE(
    xmldata clob,
    xpath varchar2(8188)
    )
    功能说明:
    获取 xmldata 中指定路径下的结点值,若路径下不止一个结点,或者结点不是叶
    子结点,将报错处理。 参数说明:
    xmldata:待解析的 XML 数据
    附录 3 系统存储过程和函数
    604
    xpath:指定的路径
    返回值:
    获取的节点值。
    举例说明:
    SELECT EXTRACTVALUE(‘b’, ‘/a/b’);
    查询结果: b
  5. APPENDCHILDXML
    定义:
    clob
    APPENDCHILDXML(
    xmldata clob,
    xpath varchar2(8188),
    child clob
    )
    功能说明:
    将 child 结点插入到 xmldata 的 xpath 下的结点中,并将插入结点后的新
    xmldata 返回。若 xmldata 为 NULL 或空串,函数将报错;若 xpath 为 NULL 或空
    串,函数将返回 NULL;若 child 为 NULL 或者空串,函数将返回 xmldata 原串内容。
    参数说明:
    xmldata:源 XML 数据
    xpath:指定的插入节点路径
    child:指定的待插入节点
    返回值:
    插入节点后的新 XML 数据。
    举例说明:
    SELECT APPENDCHILDXML(‘b’, ‘/a’, ‘xxx’);
    查询结果:
    bxxx
  6. XMLPARSE
    语法格式:
    XMLPARSE(DOCUMENT [WELLFORMED])
    图例: value_expr XMLPARSE ( ) WELLFORMED DOCUMENT
    功能说明:
    XMLPARSE 用于解析 XMLTYPE 类型数据,亦即 value_expr 的值。若指定了
    WELLFORMED 参数,则不对 XML 内容进行检查,否则会对内容的合法性进行检查,内
    容不合法则报错。
    举例说明:
    附录 3 系统存储过程和函数
    605
    SELECT XMLPARSE(DOCUMENT ‘good’ WELLFORMED);
    查询结果:
    good
  7. XMLTABLE
    语法格式:
    XMLTABLE( PASSING [COLUMNS ])
    图例: XMLTABLE ( xmlpath PASSING xmldata COLUMNS ) xmlcoldef_lst
    功能说明:
    查询 XML 数据的子选项。
    参数说明:
    xmlpath:XML 数据的路径
    xmldata:XMLTYPE 类型数据
    xmlcoldef_lst:列定义列表
    举例说明:
    CREATE TABLE T3(C1 VARCHAR2);
    SF_SET_SESSION_PARA_VALUE(‘ENABLE_TABLE_EXP_REF_FLAG’, 1); --开启同层
    列引用参数。SELECT 语句中 T3.C 引用了同层表 T3 的列。
    INSERT INTO T3 VALUES(’<标签 属性=“属性名”>HELLO’);
    SELECT X1,X2 FROM T3, XMLTABLE(’/A/ 标 签 ’ PASSING T3.C1 COLUMNS X1
    VARCHAR2(12) PATH ‘@属性’, X2 VARCHAR2(12) PATH ‘text()’);
    查询结果:
    行号 X1 X2 ------- ------ -----
    1 属性名 HELLO
  8. XMLSEQUENCE
    语法格式:
    XMLSEQUENCE (EXTRACT ( , ) )
    图例:
    xmldata xmlpath XMLSEQUENCE EXTRACT ( ( ) ) ,
    功能说明:
    XMLSEQUENCE 用于获取 xmlpath 路径下 xmldata 中不同节点的数据,并将各
    结点数据按数组表的形式展示出来。
    举例说明:
    SELECT * FROM
    TABLE(XMLSEQUENCE(EXTRACT(‘shanghaidameng’,’/a/b’)));
    查询结果:
    附录 3 系统存储过程和函数
    606
    行号 COLUMN_VALUE

1 shanghai
2 dameng
9. XMLELEMENT
语法格式:
XMLELEMENT(, )
图例:
identifier exp XMLELEMENT ( ) ,
功能说明:
XMLELEMENT 用于将 exp 构建成 xml 数据类型元素,返回 xmltype 类型数据。
参数说明:
identifier:标识符
exp:字符串类型的数据
举例说明:
SELECT XMLELEMENT(DM, ‘TXT’) FROM DUAL;
查询结果:
行号 XMLELEMENT(DM,‘TXT’)


1 TXT
10. XMLAGG
语法格式:
XMLAGG([])
图例:
XMLdata XMLAGG ( )
ORDER BY 子句
功能说明:
XMLAGG 函数,拼接 xml 数据。
参数说明: XMLdata:待拼接的数据
ORDER BY 子句:请参考第 4 章
举例说明:
create table X (A varchar(10),B int);
insert into X values(‘aaa’,3);
insert into X values(‘bb’,2);
insert into X values(‘c’,1);
select XMLAGG(XMLPARSE(content A WELLFORMED) order by B) from X;
查询结果:
cbbaaa

你可能感兴趣的:(达梦体系结构)