1) INI 参数管理
- 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’);
- 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);
- 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’);
- 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);
- 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’);
- 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’);
- 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);
- 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’);
- 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’);
- 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’);
- 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);
- 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) 系统信息管理
- SP_SET_SESSION_READONLY
定义:
INT SP_SET_SESSION_READONLY (
READONLY INT)
功能说明:
设置当前会话的只读模式
参数说明:
取值 1 或 0。1 表示对数据库只读;0 表示对数据库为读写
返回值:
无。
举例说明:
设置当前会话为只读模式
SP_SET_SESSION_READONLY (1);
附录 3 系统存储过程和函数
504
- 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 SESSIONS查询,DM系统创建的内部SESSION(PORTTYPE=12,但CONNECTED=1的SESSION)也可通过VSESSIONS 查询到
参数说明:
SESSION_ID:会话 ID
举例说明:
SP_CLOSE_SESSION (510180488);
- SF_GET_CASE_SENSITIVE_FLAG/ CASE_SENSITIVE 定义:
INT
SF_GET_CASE_SENSITIVE_FLAG()
或者
INT CASE_SENSITIVE ()
功能说明:
返回大小写敏感信息
参数说明:
无
返回值:
1:敏感
0:不敏感
举例说明:
获得大小写敏感信息
SELECT SF_GET_CASE_SENSITIVE_FLAG();
- SF_GET_EXTENT_SIZE
定义:
INT
SF_GET_EXTENT_SIZE()
功能说明:
返回簇大小
参数说明:
无
返回值:
系统建库时指定的簇大小
举例说明:
获得系统建库时指定的簇大小
SELECT SF_GET_EXTENT_SIZE ();
附录 3 系统存储过程和函数
505
- SF_GET_PAGE_SIZE/PAGE
定义:
INT
SF_GET_PAGE_SIZE()
功能说明:
返回页大小
参数说明:
无
返回值:
系统建库时指定的页大小
举例说明:
获得系统建库时指定的页大小
SELECT SF_GET_PAGE_SIZE ();
补充说明:
获得系统建库时指定的页大小也可使用:
SELECT PAGE();
- 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);
- 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);
- 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);
- 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
- SF_GET_SGUID
定义:
INT
SF_GET_SGUID ()
功能说明:
返回数据库唯一标志 sguid
参数说明: 无
返回值:
返回数据库唯一标志 sguid
举例说明:
获取数据库唯一标志 sguid
SELECT SF_GET_SGUID();
- GUID()
定义:
VARCHAR
GUID ()
功能说明:
生成一个唯一编码串(32 个字符)
返回值:
返回一个唯一编码串
举例说明:
获取一个唯一编码串。
SELECT GUID();
- NEWID()
定义:
VARCHAR
NEWID ()
功能说明:
生成一个 SQLSERVER 格式的 guid 字符串 SQLSERVER 的 guid 格式
xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx
返回值:
返回一个 SQLSERVER 格式的唯一编码串
举例说明:
获取一个唯一编码串
SELECT NEWID();
- SESSID()
定义:
INT
SESSID ( )
附录 3 系统存储过程和函数
508
功能说明:
获取当前连接的 id
返回值:
返回当前连接 id
举例说明:
返回当前连接 id
SELECT SESSID ();
- 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);
- CHECK_DB_INDEX
定义:
INT CHECK_DB_INDEX ()
功能说明:
检查数据库中所有索引的合法性(正确性和有效性)。检查过程中,会使用 S+IX
锁来封锁索引对应的表对象,如果封锁失败,会忽略索引检查,并记录相关日志到
dmserver 的 log 文件中
返回值:
0:表示不合法;1:表示合法;2:表示存在未校验的索引
举例说明:
SELECT CHECK_DB_INDEX ();
- UID
附录 3 系统存储过程和函数
509
定义:
INT
UID ()
功能说明:
返回当前用户 ID
参数说明:
无
返回值:
返回当前用户 ID
举例说明:
返回当前用户 ID
SELECT UID();
- USER
定义:
CHAR*
USER ()
功能说明:
返回当前用户名
参数说明:
无
返回值:
返回当前用户名
举例说明:
返回当前用户名
SELECT USER();
- CUR_DATABASE
定义:
CHAR* CUR_DATABASE ()
功能说明:
返回数据库名
参数说明:
无
返回值:
返回数据库名
举例说明:
获取数据库名
SELECT CUR_DATABASE();
- VSIZE
定义:
INT
附录 3 系统存储过程和函数
510
VSIZE(n)
功能说明:
返回 n 的核心内部表示的字节数。如果 n 为 NULL,则返回 NULL。
参数说明:
n:待求字节数的参数,可以为任意数据类型
返回值:
n 占用的字节数
举例说明:
SELECT VSIZE(256);
查询结果:4 /整数类型/
SELECT VSIZE(‘数据库’);
查询结果:6 /中文字符/
- SP_RECLAIM_TS_FREE_EXTENTS
定义:
SP_RECLAIM_TS_FREE_EXTENTS (
tsname varchar(128)
)
功能说明:
重组表空间空闲簇
参数说明:
tsname:表空间名
返回值:
无
举例说明:
重组表空间空闲簇
CALL SP_RECLAIM_TS_FREE_EXTENTS(‘SYSTEM’);
- SP_CLEAR_PLAN_CACHE
定义:
SP_CLEAR_PLAN_CACHE()
功能说明:
清空执行缓存信息。
参数说明:
无
返回值:
无
举例说明:
清空执行缓存信息
CALL SP_CLEAR_PLAN_CACHE();
- 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);
- 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);
- 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);
- 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);
- CUR_TICK_TIME
定义:
varchar
CUR_TICK_TIME ()
功能说明:
获取系统当前时钟记数
参数说明:
无
附录 3 系统存储过程和函数
513
返回值:
时钟记数的字符串
举例说明:
获取系统当前时钟记数
SELECT CUR_TICK_TIME();
- 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);
- 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 LONGEXECSQLS动态视图中监控的最短执行时间,以毫秒为单位参数说明:无返回值:VLONG_EXEC_SQLS所监控的最短执行时间
举例说明:
查看 V$LONG_EXEC_SQLS 监控的最短执行时间
SELECT SF_GET_LONG_TIME();
- PERMANENT_MAGIC
定义:
INT
PERMANENT_MAGIC ()
功能说明:
返回数据库永久魔数
参数说明:
附录 3 系统存储过程和函数
514
无
返回值:
返回整型值:永久魔数
举例说明:
获取数据库永久魔数
SELECT PERMANENT_MAGIC();
- SP_CANCEL_SESSION_OPERATION
定义:
SP_CANCEL_SESSION_OPERATION (
session_id bigint
) 功能说明:
终止指定会话的操作
参数说明: session_id:指定会话的 id
返回值:
无
举例说明:
终止 ID 为 310509680 的会话的操作
CALL SP_CANCEL_SESSION_OPERATION (310509680);
- 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);
- 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) 备份恢复管理
- 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’);
- 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’);
- SF_BAKSET_BACKUP_DIR_REMOVE_ALL
定义:
INT
SF_BAKSET_BACKUP_DIR_REMOVE_ALL()
功能说明:
清理全部备份目录,默认备份目录除外
返回值:
1:目录全部清理成功;其它情况下报错
附录 3 系统存储过程和函数
519
举例说明:
SELECT SF_BAKSET_BACKUP_DIR_REMOVE_ALL();
- 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’);
- 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
- 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);
- 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());
- 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’);
- 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’);
- 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:定时器是否有效
返回值:
无
说明:
- type = 1 时,freq_sub_interval、freq_month_week_interval、
附录 3 系统存储过程和函数
524
freq_minute_interval、end_time、during_end_date 无效。只有
start_time,during_start_date 有意义
- 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 时,非法。
- 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 时,非法。
- 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 时,非法。
- 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 时,非法。
- 如果 no_end_date_flag = TRUE:表示永远不结束,一直存在下去。
- 如果 is_valid= TRUE:表示定时器创建时就有效。
- 总 结 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’);
- SP_OPEN_TIMER*
定义:
SP_OPEN_TIMER (
timer_name varchar(128)
)
功能说明:
打开一个定时器
参数说明:
timer_name:定时器名
返回值:
附录 3 系统存储过程和函数
526
无
举例说明:
打开定时器 TIMER1
SP_OPEN_TIMER(‘TIMER1’);
- SP_CLOSE_TIMER*
定义:
SP_CLOSE_TIMER (
timer_name varchar(128)
)
功能说明:
关闭一个定时器
参数说明:
timer_name:定时器名
返回值:无
举例说明:
关闭定时器 TIMER1
SP_CLOSE_TIMER(‘TIMER1’);
5) 数据复制管理
本小节的存储过程都与 DM 的数据复制功能相关,关于数据复制的概念和相关环境配置 与操作可以参考《DM8 系统管理员手册》相关章节。
- SP_INIT_REP_SYS*
定义:
SP_INIT_REP_SYS(
CREATE_FLAG INT
);
功能说明:
创建或删除数据复制所需的系统表
参数说明:
CREATE_FLAG:为 1 表示创建复制所需系统表;为 0 表示删除这些系统表 返回值:
无
举例说明:
创建复制所需的系统表
SP_INIT_REP_SYS(1);
- 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’,‘主从同步复制’);
- SP_RPS_DROP_GROUP
定义:
SP_RPS_DROP_GROUP(
GROUP_NAME VARCHAR(128)
);
功能说明:
删除复制组
参数说明:
GROUP_NAME:复制组名称
返回值:
无
举例说明:
删除复制组 REP_GRP_B2C
SP_RPS_DROP_GROUP (‘REP_GRP_B2C’);
- 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’);
- SP_RPS_DROP_REPLICATION
定义:
SP_RPS_DROP_REPLICATION (
REP_NAME VARCHAR(128)
);
功能说明:
删除复制关系
参数说明:
REP_NAME:复制名称
返回值:
无
举例说明:
删除复制关系
SP_RPS_DROP_REPLICATION (‘REPB2C’);
- 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);
- 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);
- 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 :定时器类型,取值如下:1:执行一次2:每日执行3:每周执行4:按月执行的第几天5:按月执行的第一周6:按月执行的第二周7:按月执行的第三周8:按月执行的第四周9:按月执行的最后一周FREQINTERVAL:间隔的月/周(调度类型决定)数FREQSUBINTERVAL:间隔天数FREQMINUTEINTERVAL:间隔的分钟数STARTTIME:开始时间ENDTIME:结束时间DURINGSTARTDATE:有效日期时间段的开始日期时间DURINGENDDATE:有效日期时间段结束日期时间NOENDDATAFLAG:结束日期是否无效标识。0表示结束日期有效;1表示无效本过程的TYPE 、 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);
- 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’);
- 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);
- 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’);
- 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);
- 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’);
- 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);
- SP_RPS_DROP_DB_MAP
定义:
SP_RPS_DROP_DB_MAP(
REP_NAME VARCHAR(128)
);
功能说明:
删除库级复制映射
参数说明:
REP_NAME:复制关系名
返回值:
无
举例说明:
删除库级复制映射
SP_RPS_DROP_DB_MAP(‘REPB2C’);
附录 3 系统存储过程和函数
534
- SP_RPS_SET_BEGIN
定义:
SP_RPS_SET_BEGIN(
GRP_NAME VARCHAR(128),
);
功能说明:
开始复制设置
参数说明:
GRP_NAME:复制组名
返回值:
无
备注:
开始对指定复制组进行属性设置。创建/删除复制关系与创建/删除复制映射
等接口都必须在此接口调用后执行,否则会报错―错误的复制设置序列‖。同一会
话中也不能同时开始多个复制设置
举例说明:
复制组 REPB2C 开始复制
SP_RPS_SET_BEGIN(’ REP_GRP_B2C’);
- SP_RPS_SET_APPLY
定义:
SP_RPS_SET_APPLY ();
功能说明:
提交复制设置,保存并提交本次设置的所有操作。如果需要继续设置,则必须
重新调用 SP_RPS_SET_BEGIN
参数说明:
无
返回值:
无
举例说明:
提交复制设置
SP_RPS_SET_APPLY ();
- SP_RPS_SET_CANCEL
定义:
SP_RPS_SET_CANCEL ();
功能说明:
放弃复制设置,放弃本次设置的所有操作。如果需要重新设置,则必须再次调
用 SP_RPS_SET_BEGIN
参数说明:
无
附录 3 系统存储过程和函数
535
返回值:
无
举例说明:
放弃复制设置
SP_RPS_SET_CANCEL();
6) 模式对象相关信息管理
-
SP_TABLEDEF
定义:
void
SP_TABLEDEF (
schname varchar(128),
tablename varchar(128)
)
功能说明:
以结果集的形式返回表的定义,当表定义过长时,会以多行返回。
参数说明:
schname:模式名
tablename:表名
返回值:
无
举例说明:
CALL SP_TABLEDEF(‘PRODUCTION’,‘PRODUCT’);
-
SP_VIEWDEF
定义:
void
SP_VIEWDEF (
schname varchar(128),
viewname varchar(128)
)
功能说明:
以结果集的形式返回视图的定义
参数说明:
schname:模式名
viewname:视图名
返回值:
无
举例说明:
CALL SP_VIEWDEF(‘PURCHASING’,‘VENDOR_EXCELLENT’);
-
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
-
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);
-
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);
-
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);
-
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’);
-
SP_REBUILD_INDEX
定义:
SP_REBUILD_INDEX (
schname varchar(128),
indexed int
)
功能说明:
重建索引。约束:1. 水平分区子表、临时表和系统表上建的索引不支持重建;
-
虚索引和聚集索引不支持重建
参数说明:
schname:模式名
indexid:索引 ID
返回值:
无
举例说明:
CREATE INDEX PRODUCT_IND ON PRODUCTION.PRODUCT(PRODUCTID);
–查询系统表得到索引 ID
SP_REBUILD_INDEX(‘SYSDBA’, 33555530);
-
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);
-
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);
-
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);
-
IDENT_CURRENT
定义:
int
IDENT_CURRENT (
fulltablename varchar(8187)
) 功能说明:
获取自增列当前值
参数说明:
fulltablename:表全名;格式为―模式名.表名‖
返回值:
自增列当前值
举例说明:
SELECT IDENT_CURRENT(‘PRODUCTION.PRODUCT’);
-
IDENT_SEED 定义:
INT
IDENT_SEED (
fulltablename varchar(8187)
)
功能说明:
获取自增列种子
参数说明:
fulltablename:表全名;格式为―模式名.表名‖
返回值:
自增列种子
举例说明: SELECT IDENT_SEED(‘PRODUCTION.PRODUCT’);
-
IDENT_INCR
定义:
INT
IDENT_INCR (
fulltablename varchar(8187)
)
功能说明:
获取自增列增量值 increment
参数说明:
fulltablename:表全名;格式为―模式名.表名‖
附录 3 系统存储过程和函数
541
返回值:
自增列增量值 increment
举例说明:
SELECT IDENT_INCR(‘PRODUCTION.PRODUCT’);
-
SCOPE_IDENTITY
定义:
INT SCOPE_IDENTITY ();
功能说明:
返回插入到同一作用域中的 identity 列内的最后一个 identity 值
返回值:
RVAL:函数返回值,长度为 8
举例说明:
详见GLOBAL_IDENTITY例子
-
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
-
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);
-
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=′TC′ANDTYPE = ‘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’;
-
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’);
-
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);
-
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);
-
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’));
-
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》相关章节。
- SP_SET_OGUID
定义:
void
SP_SET_OGUID (
oguid int
)
功能说明:
设置主备库监控组的 ID 号
参数说明:
oguid:oguid
返回值:
无
举例说明:
SP_SET_OGUID (451245);
- 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’);
- SP_SET_RT_ARCH_VALID
定义:
VOID SP_SET_RT_ARCH_VALID ()
功能说明:
设置实时归档有效。
参数说明:
无
返回值:
无
举例说明:
CALL SP_SET_RT_ARCH_VALID ();
- SP_SET_RT_ARCH_INVALID
定义:
VOID SP_SET_RT_ARCH_INVALID ()
功能说明:
设置实时归档无效。
参数说明:
无
返回值:
无
举例说明:
CALL SP_SET_RT_ARCH_INVALID ();
- SF_GET_RT_ARCH_STATUS
定义:
VARCHAR SF_GET_RT_ARCH_STATUS ()
功能说明:
获取实时归档状态。
参数说明:
无
返回值:
有效:VALID。无效:INVALID
举例说明:
SELECT SF_GET_RT_ARCH_STATUS ();
- 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);
- 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);
- SP_APPLY_KEEP_PKG
定义:
VOID SP_APPLY_KEEP_PKG()
功能说明:
APPLY 备库的 KEEP_PKG 数据。
参数说明:
无 返回值:
无
举例说明:
CALL SP_APPLY_KEEP_PKG();
- SP_DISCARD_KEEP_PKG
附录 3 系统存储过程和函数
548
定义:
VOID SP_DISCARD_KEEP_PKG()
功能说明:
丢弃备库的 KEEP_PKG 数据。
参数说明:
无
返回值:
无
举例说明:
CALL SP_DISCARD_KEEP_PKG();
- 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’);
- SP_CLEAR_RAPPLY_STAT
定义:
VOID SP_CLEAR_RAPPLY_STAT()
功能说明:
此系统函数在备库上执行有效,用于清理此备库最近 N 次的日志重演信息。
N 值为 V$RAPPLY_STAT 中的 RECNT_APPLY_NUM 值。
参数说明:
无
返回值:
无
举例说明:
CALL SP_CLEAR_RAPPLY_STAT();
- 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’);
- 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);
- 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);
- SF_MAL_CONFIG_APPLY
定义:
VOID
SF_MAL_CONFIG_APPLY()
功能说明:
将 MAL 配置生效
参数说明: 无
举例说明:
SF_MAL_CONFIG_APPLY();
8) MPP 管理
- 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);
- 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();
- 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);
- 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;
- SF_GET_SELF_EP_SEQNO
定义:
INT
SF_GET_SELF_EP_SEQNO ()
功能说明:
附录 3 系统存储过程和函数
552
获取本会话连接的 EP 站点序号
参数说明:
无
返回值:
获取本会话连接的 EP 站点序号
举例说明:
SELECT SF_GET_SELF_EP_SEQNO();
- 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’);
- 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’);
- SF_MPP_INST_REMOVE
定义:
VOID
SF_MPP_INST_REMOVE(
INST_NAME VARCHAR,
)
附录 3 系统存储过程和函数
553
功能说明:
删除 MPP 实例。
参数说明:
INST_NAME:实例名
举例说明:
SF_MPP_INST_REMOVE(‘EP03’);
9) 日志与检查点管理
- CHECKPOINT
定义:
INT
CHECKPOINT (
rate int
)
功能说明: 设置检查点。需要注意的是:在 DSC 环境下,OK 节点个数大于 1 时,MOUNT
状态下调用该函数不会生效。 参数说明:
rate:刷脏页百分比,取值范围:1~100
返回值:
检查点是否成功,0 表示成功,非 0 表示失败
举例说明:
设置刷脏页百分比为 30%的检查点
SELECT CHECKPOINT(30);
- SF_ARCHIVELOG_DELETE_BEFORE_TIME
定义:INT
SF_ARCHIVELOG_DELETE_BEFORE_TIME (
time datetime
)
功能说明: 数据库以归档模式打开的情况下,删除指定时间之前的归档日志文件。待删除
的文件必须处于未被使用状态
参数说明:
time:指定删除的最大关闭时间,若大于当前使用归档日志文件的创建时间, 则从当前使用归档文件之前的归档日志文件开始删除
返回值:
删除归档日志文件数,-1 表示出错
举例说明:
删除三天之前的归档日志
SELECT SF_ARCHIVELOG_DELETE_BEFORE_TIME(SYSDATE - 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
等列类型。
- 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
- SP_DB_STAT_INIT*
定义:
SP_DB_STAT_INIT (
)
功能说明:
对库上所有模式下的所有用户表以及表上的所有索引生成统计信息
举例说明:
对库上所有模式下的所有用户表以及表上的所有索引生成统计信息
CALL SP_DB_STAT_INIT ();
- SP_INDEX_STAT_INIT*
定义:
SP_INDEX_STAT_INIT (
schname varchar(128),
indexname varchar(128)
)
功能说明:
对指定的索引生成统计信息
参数说明:
schname:模式名
indexname:索引名
举例说明:
对指定的索引 IND 生成统计信息
CALL SP_INDEX_STAT_INIT (‘SYSDBA’, ‘IND’);
- 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
- 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’);
- 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);
- 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’);
- 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’);
- SP_INDEX_STAT_DEINIT*
定义:
SP_INDEX_STAT_DEINIT (
schname varchar(128),
indexname varchar(128)
)
功能说明:
清空指定索引的统计信息
参数说明:
schname:模式名
indexname:索引名
举例说明:
清空索引 IND 的统计信息
CALL SP_INDEX_STAT_DEINIT (‘SYSDBA’, ‘IND’);
- 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’);
- 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’);
- 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’);
- 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) 资源监测
- SP_CHECK_IDLE_MEM
定义:
SP_CHECK_IDLE_MEM (
)
功能说明:
对 可用内 存 空 间 进 行 检 测 , 并 在 低 于阈值( 对 应 INI 参 数
IDLE_MEM_THRESHOLD)的情况下打印报警记录到日志,同时报内存不足的异常。
举例说明:
监测当前系统的内存空间是否低于阀值
CALL SP_CHECK_IDLE_MEM ();
- 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’);
- 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();
- SF_GET_TRX_RESPONSE_TIME
定义:
SF_GET_TRX_RESPONSE_TIME()
功能说明:
查看事务的平均响应时间
返回值:
事务的平均响应时间,单位秒
举例说明:
在 dm.ini 中 ENABLE_MONITOR 取值不为 0 的前提下执行
SELECT SYS.SF_GET_TRX_RESPONSE_TIME();
- 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();
- 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
- 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
- USER_USED_SPACE
定义:
BIGINT
USER_USED_SPACE ( username varchar(256)
)
功能说明:
获取指定用户所占用的页数,不包括用户占用的 HUGE 表页数
参数说明:
username:用户名
返回值:
用户所占用的页数
举例说明:
查看 SYSDBA 的所占用的页数
SELECT USER_USED_SPACE (‘SYSDBA’);
查询结果:
64
附录 3 系统存储过程和函数
- TS_USED_SPACE
定义:
BIGINT
TS_USED_SPACE (
tsname varchar(256)
)
功能说明:
获取指定表空间所有文件所占用的页数之和。RLOG 和 ROLL 表空间不支持
参数说明:
tsname:表空间名
返回值:
表空间占用的页数
举例说明:
查看 MAIN 表空间所有文件占用的页数之和。
SELECT TS_USED_SPACE (‘MAIN’);
查询结果:
16384
- DB_USED_SPACE
定义:
BIGINT
DB_USED_SPACE ()
功能说明:
获取整个数据库占用的页数
返回值:
整个数据库占用的页数
举例说明:
查看数据库所占用的页数
SELECT DB_USED_SPACE ();
查询结果:
19712
- INDEX_USED_SPACE
定义:BIGINT
INDEX_USED_SPACE (
indexid int
)
功能说明:
根据索引 ID,获取指定索引所占用的页数
参数说明:
indexid:索引 ID
返回值:
索引占用的页数
565
附录 3 系统存储过程和函数
566
举例说明:
查看索引号为 33554540 的索引所占用的页数
SELECT INDEX_USED_SPACE (33554540);
查询结果:
32
- 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
- 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
- INDEX_USED_PAGES
定义:
BIGINT
INDEX_USED_PAGES (
indexid int
) 功能说明:
根据索引 id,获取指定索引已使用的页数
参数说明:
indexid:索引 ID
返回值:
索引已使用的页数
举例说明:
查看索引号为 33554540 的索引已使用的页数
SELECT INDEX_USED_PAGES (33554540);
查询结果:
14
- 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
- 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
- TABLE_USED_PAGES
定义:BIGINT
TABLE_USED_PAGES (
schname varchar(256);
tabname varchar(256)
) 功能说明:
获取指定表已使用的页数
参数说明:
schname:模式名
tabname:表名
返回值:
表已使用的页数
举例说明:
查看 SYSOJBECTS 已使用的页数
SELECT TABLE_USED_PAGES(‘SYS’,‘SYSOBJECTS’);
查询结果:
14
- 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
- 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
- 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
- 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
- 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
- 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’);
- 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);
- 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’);
- 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);
- 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
程序中使用。
- SP_INIT_DTYPE_SYS*
定义:
SP_INIT_DTYPE_SYS (
create_flag int
)
功能说明:
初始化或清除类型别名运行环境
参数说明:
create_flag:1 表示创建,0 表示删除
返回值:
无
举例说明:
初始化类型别名运行环境
CALL SP_INIT_DTYPE_SYS(1);
- SF_CHECK_DTYPE_SYS
定义:
int
SF_CHECK_DTYPE_SYS ()
功能说明:
系统类型别名系统的启用状态检测
返回值:
0:未启用;1:已启用
举例说明:
获得系统类型别名系统的启用状态
SELECT SF_CHECK_DTYPE_SYS;
- 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);
- SP_DTYPE_DELETE*
定义:
SP_DTYPE_DELETE (
name varchar(32)
)
功能说明:
删除一个类型别名
参数说明:
name:类型别名的名称
返回值:
无
举例说明:
删除类型别名‗STR‘
CALL SP_DTYPE_DELETE(‘STR’);
14) 杂类函数
- 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
- 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
- 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
- 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
- SP_CREATE_SYSTEM_VIEWS*
定义
int
SP_CREATE_SYSTEM_VIEWS (
CREATE_FLAG int
)
功能说明:
创建或删除系统视图。详细的系统视图请参考《DM8 系统管理员手册》附录 3。
参数说明:
CREATE_FLAG:为 1 时表示创建视图;为 0 表示删除视图
返回值:
无
举例说明:
创建系统视图
SP_CREATE_SYSTEM_VIEWS(1);
- SF_CHECK_SYSTEM_VIEWS
定义:
int
SF_CHECK_SYSTEM_VIEWS()
功能说明:
系统视图的启用状态检测。
返回值:
0:未启用;1:已启用
举例说明:
获得系统视图的启用状态
SELECT SF_CHECK_SYSTEM_VIEWS;
- 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 SQLHISTORY的历史数据SPDYNAMICVIEWDATACLEAR(′VSQL_HISTORY’);
附录 3 系统存储过程和函数
578
- 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);
- SF_CHECK_DBG_SYS
定义:
int
SF_CHECK_DBG_SYS ()
功能说明:
系统的 DBG 系统包启用状态检测
返回值:
0:未启用;1:已启用
举例说明:
获得 DBG 系统包的启用状态
SELECT SF_CHECK_DBG_SYS;
- 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);
- SF_CHECK_GEO_SYS
定义:
int
SF_CHECK_GEO_SYS ()
功能说明:
系统的 GEO 系统包启用状态检测
返回值:
0:未启用;1:已启用
举例说明:
获得 GEO 系统包的启用状态
SELECT SF_CHECK_GEO_SYS;
- 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);
- 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’);
- SF_CHECK_SYSTEM_PACKAGES
定义:
int
SF_CHECK_SYSTEM_PACKAGES()
功能说明:
系统包的启用状态检测
返回值:
0:未启用;1:已启用
举例说明:
获得系统包的启用状态
SELECT SF_CHECK_SYSTEM_PACKAGES;
- SP_INIT_INFOSCH*
定义:
void
SP_INIT_INFOSCH (
CREATE_FLAG int
)
功能说明:
创建或删除信息模式
参数说明:
CREATE_FLAG:为 1 时表示创建信息模式;为 0 表示删除信息模式
举例说明:
创建信息模式
SP_INIT_INFOSCH (1);
- SF_CHECK_INFOSCH
定义:
int
SF_CHECK_INFOSCH ()
附录 3 系统存储过程和函数
581
功能说明:
系统的信息模式启用状态检测
返回值:
0:未启用;1:已启用
举例说明:
获得系统信息模式的启用状态
SELECT SF_CHECK_INFOSCH;
- SP_INIT_CPT_SYS
定义:
int
SP_INIT_CPT_SYS (
FLAG int
)
功能说明:
初始化数据捕获环境
参数说明:
FLAG: 1 表示初始化环境;0 表示删除环境
举例说明:
初始化数据捕获环境
SP_INIT_CPT_SYS(1);
- SF_CHECK_CPT_SYS
定义:
int
SF_CHECK_CPT_SYS ()
功能说明:
系统的数据捕获环境启用状态检测
返回值:
0:未启用;1:已启用
举例说明:
获得系统数据捕获环境的启用状态
SELECT SF_CHECK_CPT_SYS;
- SF_SI
定义:
CHAR*
SF_SI(
index_sql varchar(8188)
)
功能说明:
输入索引创建语句,查看预计的执行信息
返回值:
索引创建的统计信息,排序区大小的建议值
附录 3 系统存储过程和函数
582
举例说明:
SELECT SF_SI(‘create index idx_t1 on t1(c1,c2);’);
- 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’);
- 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
- 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’);
- SP_CLOSE_DBLINK
定义:
void
SP_CLOSE_DBLINK(
DBLINK varchar(128)
)
功能说明:
关闭系统缓冲区中指定的空闲的外部链接,若指定的外部链接不处于空闲状态
(可通过 V$DBLINK 查询),则不关闭。
参数说明:
DBLINK:指定的待关闭的外部链接名
返回值:
无
举例说明:
关闭之前创建的外部链接 LINK1。
SP_CLOSE_DBLINK(‘LINK1’);
- 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 表示提交
返回值:
无
- GETUTCDATE
定义:
datetime
GETUTCDATE ()
功能说明:
获取当前 UTC 时间
返回值:
当前 UTC 时间
举例说明:
获取当前 UTC 时间
SELECT GETUTCDATE();
- SLEEP
定义:
VOID
SLEEP(time dec)
功能说明:
表示让一个线程进入睡眠状态,等待一段时间 time 之后,该线程自动醒来进
入到可运行状态。
参数说明:
time:睡眠时间,单位:秒
返回值:
无
举例说明:
让一个线程睡眠 1 秒钟之后,再醒过来继续运行
sleep(1);
- 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) 编目函数调用的系统函数
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- SF_GET_TABLES_TYPE
定义:
SF_GET_TABLES_TYPE(
type varchar
)
参数说明:
type:表的类型名,数据类型为 VARCHAR
功能说明:
返回表类型名 返回值:
表类型名,数据类型为 VARCHAR
举例说明:
SELECT SF_GET_TABLES_TYPE(‘UTAB’);
查询结果:
TABLE
- CURRENT_SCHID
定义:
CURRENT_SCHID()
参数说明:
无
功能说明:
返回当前会话的当前模式 ID
返回值:
当前会话的当前模式 ID
举例说明:
SELECT CURRENT_SCHID();
查询结果:
150994945
- 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
- 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 --聚集索引
- 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
- 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
- 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
- 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
- SF_GET_OLEDB_TYPE
定义:
SF_GET_OLEDB_TYPE(
name varchar
)
参数说明:
name:类型名,数据类型为 VARCHAR
功能说明:
获得 OLEDB 的数据类型长度
返回值:
数据类型值,数据类型为 INT
举例说明:
SELECT SF_GET_OLEDB_TYPE(‘INT’);
593
附录 3 系统存储过程和函数
查询结果: 3
- 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
- SP_GET_TABLE_COUNT 定义:
SP_GET_TABLE_COUNT(
table_id int )
参数说明:
table_id:类型长度,数据类型为 INT
功能说明:
获得表行数
返回值:
表的行数,数据类型为 INT
举例说明:
SELECT SP_GET_TABLE_COUNT(1097);
查询结果:
69
- 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
- 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
- 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
- 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
- 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
- BFILENAME
定义:
BFILE
BFILENAME(
dir VARCHAR,
filename VARCHAR
)
参数说明:
dir:数据库的目录对象名,字符串中不能包含―:‖
filename:操作系统文件名,字符串中不能包含―:‖
功能说明:
生成一个 BFILE 类型数据
附录 3 系统存储过程和函数
597
返回值:
BFILE 数据类型对象
17) 定制会话级 INI 参数
提供用户定制会话级 ini 参数默认值的功能。定制以后,当用户再次登录时无需复杂
的设置就可以在当前会话中使用定制的会话级 ini 参数,并且使无法设置参数的 B/S 或者
C/S 应用也能使用特定的会话级 ini 参数。
定制后的 ini 参数值可以通过数据字典 SYSUSERINI 查看。
使用时有以下限制:
- 用户对会话级参数的定制和取消对于当前会话不会立刻生效,也不会影响当前已经
连接的该用户的其他会话。该用户新登录的会话会使用定制的值作为默认值。
- MPP 环境下,参数的定制在整个 MPP 环境所有的服务器节点生效。
- 对于一个会话级 ini 参数,其取值优先级顺序为: 会话中设置的值 > 用户定制
的值 > INI 文件中匹配的值。
- DBA 用户拥有定制、查询和删除所有用户 ini 的权限;普通用户拥有定制、查询
和删除自身 ini 的权限。
对于不同数据类型的参数要使用不同的系统过程。ini参数的VALUE有三种类型:INT、
VARCHAR 和 DOUBLE,分别对应三个系统过程:
- 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’);
- 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 类型参数值
- 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’);
- 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 运行语句的相关功能。
使用时有以下限制:
- INI 参数 ENABLE_INJECT_HINT 需设置为 1;
- SQL 只能是语法正确的增删改查语句;
- SQL 会经过系统格式化,格式化之后的 SQL 和指定的规则名称必须全局唯一;
附录 3 系统存储过程和函数
599
- HINT 一指定,则全局生效;
- 系统检查 SQL 匹配时,必须是整条语句完全匹配,不能是语句中子查询匹配;
- 可通过 SYSINJECTHINT 视图查看已指定的 SQL 语句和对应的 HINT。
- 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);
- SF_DEINJECT_HINT
定义:
INT
SF_DEINJECT_HINT (
NAME VARCHAR(128)
) 功能说明:
对指定 SQL 撤回已增加的 HINT
参数说明:
NAME: 要删除的规则名称
返回值:
执行成功返回 0,执行失败返回错误码
举例说明:
为 SQL 撤回已指定的 HINT:
附录 3 系统存储过程和函数
600
SF_DEINJECT_HINT(‘TEST_INJECT’);
- 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) 时区设置
本小节的过程与函数都是用来设置时区相关信息。
- 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
- 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
- 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
- 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。
- SF_XMLQUERY
定义:clob
SF_XMLQUERY(
xmldata clob,
xpath clob
)
功能说明:
解析 xmldata 并查询指定路径 xpath 下的数据。
参数说明:
xmldata:待解析的 XML 数据
xpath:指定的解析路径
返回值:
解析得到的 XML 数据。
举例说明:
SELECT SF_XMLQUERY(‘b’, ‘/a’);
查询结果:
b
- XMLQUERY
定义:
clob
XMLQUERY(
xmldata clob,
xpath varchar2(8188)
)
附录 3 系统存储过程和函数
603
功能说明:
解析 xmldata 并查询指定路径 xpath 下的数据。 参数说明:
xmldata:待解析的 XML 数据
xpath:指定的解析路径
返回值:
解析得到的 XML 数据。
举例说明:
SELECT XMLQUERY(‘b’, ‘/a’);
查询结果:
b
- 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
- EXTRACTVALUE
定义:
varchar2
EXTRACTVALUE(
xmldata clob,
xpath varchar2(8188)
)
功能说明:
获取 xmldata 中指定路径下的结点值,若路径下不止一个结点,或者结点不是叶
子结点,将报错处理。 参数说明:
xmldata:待解析的 XML 数据
附录 3 系统存储过程和函数
604
xpath:指定的路径
返回值:
获取的节点值。
举例说明:
SELECT EXTRACTVALUE(‘b’, ‘/a/b’);
查询结果: b
- 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
- XMLPARSE
语法格式:
XMLPARSE(DOCUMENT [WELLFORMED])
图例: value_expr XMLPARSE ( ) WELLFORMED DOCUMENT
功能说明:
XMLPARSE 用于解析 XMLTYPE 类型数据,亦即 value_expr 的值。若指定了
WELLFORMED 参数,则不对 XML 内容进行检查,否则会对内容的合法性进行检查,内
容不合法则报错。
举例说明:
附录 3 系统存储过程和函数
605
SELECT XMLPARSE(DOCUMENT ‘good’ WELLFORMED);
查询结果:
good
- 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
- 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