系统存储过程和函数DM8 SQL
Posted yangeoooo
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了系统存储过程和函数DM8 SQL相关的知识,希望对你有一定的参考价值。
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) 当0<freq_minute_interval <=2460时,表示当天从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以上是关于系统存储过程和函数DM8 SQL的主要内容,如果未能解决你的问题,请参考以下文章