附录

附录 1 关键字和保留字

以下不带*号的为关键字, 带*号的为系统保留字。

DM 还将保留字进一步划分为 SQL 保留字、DMSQL 程序保留字、模式保留字、变量保留字和别名保留字。对于关键字和保留字的详细信息请查询系统视图 V$RESERVED_WORDS。

注意:关键字 ROWID、TRXID、VERSIONS_STARTTIME、VERSIONS_ENDTIME、VERSIONS_STARTTRXID、VERSIONS_ENDTRXID 和 VERSIONS_OPERATION 不能作为表的列名,即使加上双引号也不行。

A

ABORT、* ABSOLUTE、* ABSTRACT、ACCESSED、ACCOUNT、ACROSS、ACTION、* ADD、* ADMIN、ADVANCED、AFTER、AGGREGATE、* ALL、ALLOW_DATETIME、ALLOW_IP、* ALTER、ANALYZE、* AND、* ANY、APR、ARCHIVE、ARCHIVEDIR、ARCHIVELOG、ARCHIVESTYLE、* ARRAY、* ARRAYLEN、* AS、* ASC、ASCII、ASENSITIVE、* ASSIGN、ASYNCHRONOUS、AT、ATTACH、* AUDIT、AUG、AUTHID、* AUTHORIZATION、AUTO、AUTOEXTEND、AUTONOMOUS_TRANSACTION、AVG

B

BACKED、BACKUP、BACKUPDIR、BACKUPINFO、BACKUPSET、BADFILE、BAKFILE、BASE、BEFORE、* BEGIN、* BETWEEN、* BIGDATEDIFF、BIGINT、BINARY、BIT、BITMAP、BLOB、BLOCK、* BOOL、BOOLEAN、* BOTH、BRANCH、BREADTH、* BREAK、* BSTRING、BTREE、BUFFER、BUILD、BULK、* BY、BYDAY、BYHOUR、BYMINUTE、BYMONTH、BYMONTHDAY、BYSECOND、* BYTE、BYWEEKNO、BYYEARDAY

C

CACHE、CALCULATE、* CALL、CASCADE、CASCADED、* CASE、* CAST、CATALOG、* CATCH、CHAIN、* CHAR、CHARACTER、CHARACTERISTICS、* CHECK、CIPHER、* CLASS、CLOB、CLOSE、* CLUSTER、* CLUSTERBTR、COLLATE、* COLLATION、COLLECT、* COLUMN、COLUMNS、* COMMENT、* COMMIT、COMMITTED、* COMMITWORK、COMPILE、COMPLETE、COMPRESS、COMPRESSED、CONDITIONAL、* CONNECT、CONNECT_BY_ISCYCLE、CONNECT_BY_ISLEAF、* CONNECT_BY_ROOT、CONNECT_IDLE_TIME、CONNECT_TIME、* CONST、CONSTANT、* CONSTRAINT、CONSTRAINTS、CONSTRUCTOR、* CONTAINS、* CONTEXT、* CONTINUE、* CONVERT、COPY、* CORRESPONDING、CORRUPT、COUNT、COUNTER、CPU_PER_CALL、CPU_PER_SESSION、* CREATE、* CROSS、* CRYPTO、CTLFILE、* CUBE、CUMULATIVE、* CURRENT、CURRENT_SCHEMA、CURRENT_USER、* CURSOR、CYCLE

D

DAILY、DANGLING、DATA、DATABASE、DATAFILE、DATE、* DATEADD、* DATEDIFF、* DATEPART、DATETIME、DAY、DBFILE、DDL、DDL_CLONE、DEBUG、DEC、* DECIMAL、* DECLARE、* DECODE、* DEFAULT、DEFERRABLE、DEFERRED、DEFINER、* DELETE、DELETING、DELIMITED、DELTA、DEMAND、DENSE_RANK、DEPTH、DEREF、* DESC、DETACH、DETERMINISTIC、DEVICE、DIAGNOSTICS、DICTIONARY、DIRECTORY、* DISABLE、DISCONNECT、* DISKSPACE、* DISTINCT、* DISTRIBUTED、* DO、* DOMAIN、* DOUBLE、DOWN、* DROP、DUMP

E

EACH、* ELSE、* ELSEIF、* ELSIF、EMPTY、* ENABLE、ENCRYPT、ENCRYPTION、* END、* EQU、ERROR、ERRORS、ESCAPE、EVENTINFO、EVENTS、EXCEPT、EXCEPTION、EXCEPTIONS、EXCEPTION_INIT、* EXCHANGE、EXCLUDE、EXCLUDING、EXCLUSIVE、* EXEC、* EXECUTE、* EXISTS、* EXIT、* EXPLAIN、EXTENDS、* EXTERN、EXTERNAL、EXTERNALLY、* EXTRACT

F

FAILED_LOGIN_ATTEMPS、FAST、FEB、* FETCH、FIELDS、FILE、FILEGROUP、FILESIZE、FILLFACTOR、* FINAL、* FINALLY、* FIRST、* FLOAT、FOLLOWING、* FOR、FORALL、FORCE、* FOREIGN、FORMAT、FREQ、FREQUENCE、FRI、* FROM、* FULL、* FULLY、* FUNCTION

G

* GET、GLOBAL、GLOBALLY、* GOTO、* GRANT、* GROUP、* GROUPING

H

HASH、HASHPARTMAP、* HAVING、HEXTORAW、HOLD、HOUR、HOURLY、HUGE

I

IDENTIFIED、* IDENTITY、IDENTITY_INSERT、* IF、IMAGE、* IMMEDIATE、* IN、INCLUDE、INCLUDING、INCREASE、INCREMENT、* INDEX、INDEXES、INDICES、INITIAL、INITIALIZED、INITIALLY、* INLINE、* INNER、INNERID、INPUT、INSENSITIVE、* INSERT、INSERTING、INSTANCE、INSTANTIABLE、INSTEAD、* INT、INTEGER、INTENT、* INTERSECT、* INTERVAL、* INTO、INVISIBLE、* IS、ISOLATION

J

JAN、* JAVA、JOB、* JOIN、JSON、JUL、JUN

K

* KEEP、KEY、KEYS

L

LABEL、LARGE、LAST、LAX、* LEADING、* LEFT、LESS、LEVEL、LEXER、* LIKE、LIMIT、LINK、* LIST、* LNNVL、LOB、LOCAL、LOCAL_OBJECT、LOCALLY、LOCATION、LOCK、LOCKED、LOG、LOGFILE、LOGGING、* LOGIN、LOGOFF、LOGON、LOGOUT、LONG、LONGVARBINARY、LONGVARCHAR、* LOOP、LSN

M

MANUAL、MAP、MAPPED、MAR、MATCH、MATCHED、MATERIALIZED、MAX、MAXPIECESIZE、MAXSIZE、MAXVALUE、MAX_RUN_DURATION、MAY、* MEMBER、MEMORY、MEM_SPACE、MERGE、MIN、MINEXTENTS、* MINUS、MINUTE、MINUTELY、MINVALUE、MIRROR、MOD、MODE、MODIFY、MON、MONEY、MONITORING、MONTH、MONTHLY、MOUNT、MOVEMENT、* MULTISET

N

NATIONAL、* NATURAL、NCHAR、NCHARACTER、NEVER、* NEW、* NEXT、NO、NOARCHIVELOG、NOAUDIT、NOBRANCH、NOCACHE、* NOCOPY、* NOCYCLE、NODE、NOLOGGING、NOMAXVALUE、NOMINVALUE、NOMONITORING、NONE、NOORDER、NORMAL、NOROWDEPENDENCIES、NOSORT、* NOT、NOT_ALLOW_DATETIME、NOT_ALLOW_IP、NOV、NOWAIT、* NULL、NULLS、NUMBER、NUMERIC

O

* OBJECT、OCT、* OF、OFF、OFFLINE、OFFSET、OLD、* ON、ONCE、ONLINE、ONLY、OPEN、OPTIMIZE、OPTION、* OR、* ORDER、* OUT、OUTER、* OVER、OVERLAPS、* OVERLAY、* OVERRIDE、OVERRIDING

P

PACKAGE、PAD、PAGE、PARALLEL、PARALLEL_ENABLE、PARMS、PARTIAL、* PARTITION、PARTITIONS、PASSING、PASSWORD_GRACE_TIME、PASSWORD_LIFE_TIME、PASSWORD_LOCK_TIME、PASSWORD_POLICY、PASSWORD_REUSE_MAX、PASSWORD_REUSE_TIME、PATH、* PENDANT、* PERCENT、PIPE、PIPELINED、PIVOT、PLACING、PLS_INTEGER、PRAGMA、PRECEDING、PRECISION、PRESERVE、PRETTY、* PRIMARY、* PRINT、* PRIOR、* PRIVATE、PRIVILEGE、* PRIVILEGES、* PROCEDURE、* PROTECTED、* PUBLIC、PURGE

Q

QUERY_REWRITE_INTEGRITY

R

* RAISE、RANDOMLY、RANGE、RAWTOHEX、READ、READONLY、READ_PER_CALL、READ_PER_SESSION、REAL、REBUILD、* RECORD、RECORDS、* REF、* REFERENCE、* REFERENCES、* REFERENCING、REFRESH、RELATED、* RELATIVE、RENAME、* REPEAT、REPEATABLE、REPLACE、REPLAY、* REPLICATE、RESIZE、RESTORE、RESTRICT、RESULT、RESULT_CACHE、* RETURN、* RETURNING、* REVERSE、* REVOKE、* RIGHT、ROLE、* ROLLBACK、ROLLFILE、* ROLLUP、ROOT、* ROW、ROWCOUNT、ROWDEPENDENCIES、ROWID、* ROWNUM、* ROWS、RULE

S

SALT、SAMPLE、SAT、SAVE、* SAVEPOINT、* SBYTE、* SCHEMA、SCOPE、SCROLL、* SEALED、SEARCH、SECOND、SECONDLY、* SECTION、SEED、* SELECT、SELF、SENSITIVE、SEP、SEQUENCE、SERERR、SERIALIZABLE、SERVER、SESSION、SESSION_PER_USER、* SET、* SETS、SHARE、* SHORT、SHUTDOWN、SIBLINGS、SIMPLE、SINCE、SIZE、* SIZEOF、SKIP、SMALLINT、SNAPSHOT、* SOME、SOUND、SPACE、SPAN、SPATIAL、SPFILE、SPLIT、SQL、STANDBY、STARTUP、STAT、STATEMENT、* STATIC、STDDEV、STOP、STORAGE、STORE、STRICT、STRING、* STRUCT、STYLE、* SUBPARTITION、SUBPARTITIONS、SUBSTRING、SUBTYPE、SUCCESSFUL、SUM、SUN、SUSPEND、* SWITCH、SYNC、SYNCHRONOUS、* SYNONYM、SYSTEM、SYS_CONNECT_BY_PATH

T

* TABLE、TABLESPACE、TASK、TEMPLATE、TEMPORARY、TEXT、THAN、THEN、THREAD、* THROW、THU、TIES、TIME、TIMER、TIMES、TIMESTAMP、* TIMESTAMPADD、* TIMESTAMPDIFF、TIME_ZONE、TINYINT、* TO、* TOP、TRACE、* TRAILING、TRANSACTION、TRANSACTIONAL、* TRIGGER、TRIGGERS、* TRIM、* TRUNCATE、TRUNCSIZE、TRXID、* TRY、TUE、TYPE、* TYPEDEF、* TYPEOF

U

* UINT、* ULONG、UNBOUNDED、UNCOMMITTED、UNCONDITIONAL、UNDER、* UNION、* UNIQUE、UNLIMITED、UNLOCK、UNPIVOT、* UNTIL、UNUSABLE、UP、* UPDATE、UPDATING、USAGE、* USER、USE_HASH、USE_MERGE、USE_NL、USE_NL_WITH_INDEX、* USHORT、* USING、VALUE、* VALUES、VARBINARY、VARCHAR、VARCHAR2、VARIANCE

V

* VARRAY、VARYING、* VERIFY、VERSIONS、VERSIONS_ENDTIME、VERSIONS_ENDTRXID、VERSIONS_OPERATION、VERSIONS_STARTTIME、VERSIONS_STARTTRXID、VERTICAL、* VIEW、* VIRTUAL、* VISIBLE、* VOID、VSIZE

W

WAIT、WED、WEEK、WEEKLY、* WHEN、* WHENEVER、* WHERE、* WHILE、* WITH、*WITHIN、WITHOUT、WORK、WRAPPED、WRAPPER、WRITE

X

XML、* XMLPARSE、* XMLTABLE

Y

YEAR、YEARLY

Z

ZONE

附录 2 SQL 语法书写规则

< > 表示一个语法对象,但是小括号本身不能出现在语句中。

::= 定义符,用来定义一个语法对象。定义符左边为语法对象,右边为相应的语法描述。

| 或者符,或者符限定的语法选项在实际的语句中只能出现一个。

{ } 大括号指明大括号内的语法选项在实际的语句中可以出现 0…N 次(N 为大于 0 的自然数),但是大括号本身不能出现在语句中。

[ ] 中括号指明中括号内的语法选项在实际的语句中可以出现 0…1 次,但是中括号本身不能出现在语句中。

关键字 关键字在 DM_SQL 语言中具有特殊意义,在 SQL 语法描述中,关键字以大写形式出现。但在实际书写 SQL 语句时,关键字可以为大写也可以为小写。

SQL 语法图的说明

SQL 语法图是用来帮助用户正确地理解和使用 DM SQL 语法的图形。阅读语法图时,请按照从上到下,从左到右的方式,依箭头所指方向进行阅读。

SQL 命令、语法关键字等终结符以全大写方式在长方形框内显示,使用时直接输入这些内容;语法参数或语法子句等非终结符的名称以全小写方式在圆角框内显示;各类标点符号显示在圆圈之中。注:如果小写参数中不带下划线_,则表示是由用户输入的参数,带下划线则表示是还需要进一步解释的子句或语法对象,如果在前面已解释过,则未重复列出。

1.必须关键字和参数

  1. 必须关键字和参数出现在语法参考图的主干路径上,也就是说,出现在当前阅读的水平线上。

例 以用户删除语句为例。DROP、USER、< 用户名 > 和;为必选内容。

用户删除语句语法:

  DROP USER <用户名> [RESTRICT | CASCADE];

用户删除语句语法图:

DROPUSER 的语法图

这里 DROP、USER、username 和;都是语句必须的。

  1. 如果多个关键字或参数并行地出现在从主路径延伸出的多条可选路径中,则只选择其中的一个即可。

例 以 <GROUP BY 子句 > 为例。<group_by 项 > 有四种形式,可以任选一种。如果存在 GROUP BY 子句,则必须从 <group_by 项 > 中选择一种。

<GROUP BY 子句 > 语法:

  <GROUP BY 子句> ::= GROUP BY <分组项> | <ROLLUP项> | <CUBE项> | <GROUPING SETS项>

<GROUP BY 子句 > 语法图:

GROUPBY 的语法图

2.可选关键字和参数

如果关键字或参数并行地出现在主路径下方,而主路径是一条直线,则这些关键字和参数是可选的。

例 1 以用户删除语句为例。IF EXISTS、RESTRICT、CASCADE 均是可选项。IF EXISTS 和主干道是二选一的关系;RESTRICT、CASCADE 和主干道是三选一的关系。

用户删除语句语法:

DROP USER <用户名> [RESTRICT | CASCADE];

用户删除语句语法图:

DROPUSER 的语法图

例 2 以 < 分析子句 > 为例。<PARTITION BY 项 >、<ORDER BY 项 > 和 < 窗口子句 > 都是可选的,但出现的前后顺序不能颠倒。

分析函数的 < 分析子句 > 语法:

  <分析子句> ::= [<PARTITION BY项>] [<ORDER BY项> ] [<窗口子句>]

用语法图表示 < 分析子句 >:

分析函数的语法图

3.多条路径

如果一张语法参考图有一条以上的路径,可以从任意一条路径进行阅读。如果可以选择多个关键字、操作符、参数或者语法子句,这些选项将被并行地列出。

例 以 < 引用动作 > 为例。引用动作可以选择这四条路径的任一种。

< 引用动作 > 语法:

  <引用动作> ::= [CASCADE] | [SET NULL] | [SET DEFAULT] | [NO ACTION]

< 引用动作 > 语法图:

多条路径的语法图

从语法图可以看出,引用动作可以选择这四种的任一种。

4.循环语法

循环语法表示可以按照需要,使用循环内的语法一次或者多次。

例 以 < 回滚文件子句 > 为例。通过逗号隔开,可以重复语法对象 ‘filepath’ SIZE filesize 多个。

< 回滚文件子句 > 语法:

  <回滚文件子句> ::= ROLLFILE <文件说明子句>,{<文件说明子句>}

  <文件说明子句> ::= <文件路径> SIZE <文件大小>

< 回滚文件子句 > 语法图:

循环语句的语法图

5.多行语法图

由于有些 SQL 语句的语法十分复杂,生成的语法参考图无法完整地显示在一行之内,于是将其分行显示。阅读此类图形时,请从上至下,从左至右地进行。

例 以索引定义语句为例。索引定义的语法被分成了两行显示。

索引定义语句语法:

  CREATE [OR REPLACE] [UNIQUE | BITMAP | CLUSTER] INDEX <索引名>

  ON [<模式名>.]<表名>(<列名>{,<列名>}) [<STORAGE子句>];

索引定义语句语法图:

多行语法图

附录 3 系统存储过程和函数

以下为达梦数据库所用到的系统存储过程和函数。

注:函数名右上角有“*”标记的,表示此过程/函数的使用有下面两点限制:

  1. 此过程/函数不能在 MPP 全局模式下的存储过程中直接调用,在 MPP LOCAL 模式下可在存储过程中直接调用;
  2. 此过程/函数不能在存储过程中带参数进行动态调用。

1. INI 参数管理

  1. SF_GET_PARA_VALUE

定义:

int

SF_GET_PARA_VALUE (

ini_param_name varchar(256)

scope int,

)

功能说明:

返回 DM.INI 文件中整型的参数值

参数说明:

scope: 取值为 1、2 。 1 表示从 DM.INI 文件中读取;2 表示从内存中读取。当取值为 1,且 DM.INI 文件中该参数值设置为非法值时,若设置值与参数类型不兼容,则返回默认值;若设置值小于参数取值范围的最小值,则返回最小值;若设置值大于参数取值范围的最大值,则返回最大值

ini_param_name:DM.INI 文件中的参数名

返回值:

当前 DM.INI 文件中对应的参数值

举例说明:

获得 DM.INI 文件中 BUFFER 参数值

SELECT SF_GET_PARA_VALUE (1, 'BUFFER');
  1. SP_SET_PARA_VALUE*****

定义:

void

SP_SET_PARA_VALUE (

scope int,

ini_param_name varchar(256)

value bigint

)

功能说明:

设置 DM.INI 文件中整型的参数值。DSC 环境下,除了特殊参数以外,其他参数值会在 OK 节点上同步。

特殊参数包括:PORT_NUM、LISTEN_IP、SVR_LOG_ASYNC_FLUSH、SVR_LOG_FILE_PATH、EP_GROUP_NAME、AP_GROUP_NAME、DCRS_IP、DCRS_PORT_NUM、AP_IP、AP_PORT_NUM、MPP_INI、DFS_INI、DCR_PATH。

参数说明:

scope:取值为 0、1、2 。0 表示修改内存中的动态配置参数值;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);
  1. 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 文件中的参数名。

返回值:

当前 DM.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');
  1. SP_SET_PARA_DOUBLE_VALUE*****

定义:

void

SP_SET_PARA_DOUBLE_VALUE (

scope int,

ini_param_name varchar(256),

value double

)

功能说明:

设置 DM.INI 参数中浮点型的参数值。DSC 环境下,除了特殊参数以外,其他参数值会在 OK 节点上同步。关于特殊参数的介绍请参考函数 SP_SET_PARA_VALUE 的功能说明。

参数说明:

scope:取值为 0、1、2。0 表示修改内存中的动态配置参数值;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);
  1. 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 文件中的参数名

返回值:

当前 DM.INI 文件中对应的参数值

举例说明:

获得 DM.INI 文件中 TEMP_PATH 参数值

SELECT SF_GET_PARA_STRING_VALUE (1, 'TEMP_PATH');
  1. SP_SET_PARA_STRING_VALUE*****

定义:

void

SP_SET_PARA_STRING_VALUE (

scope int,

ini_param_name varchar(256) ,

value varchar(8187)

)

功能说明:

设置 DM.INI 文件中的字符串型参数值。DSC 环境下,除了特殊参数以外,其他参数值会在 OK 节点上同步。关于特殊参数的介绍请参考函数 SP_SET_PARA_VALUE 的功能说明。

参数说明:

scope:取值为 0、1、2 。0 表示修改内存中的动态配置参数值;1 表示 DM.INI 文件和内存参数都修改,不需要重启服务器;2 表示只修改 DM.INI 文件,服务器重启后生效。

ini_param_name:DM.INI 文件中的参数名。

value:设置的字符串的值。

返回值:

举例说明:

将 DM.INI 文件中 SQL_TRACE_MASK 参数值设置为 1

SP_SET_PARA_STRING_VALUE(1, 'SQL_TRACE_MASK','1');
  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);
  1. 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');
  1. SF_GET_SESSION_PARA_VALUE

定义:

int

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');
  1. 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');
  1. 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 的静态配置参数或动态配置参数。DSC 环境下,除了特殊参数以外,其他参数值会在 OK 节点上同步。关于特殊参数的介绍请参考函数 SP_SET_PARA_VALUE 的功能说明。

参数说明:

paraname:INI 参数的参数名。

value:要设置的新值。

deferred:是否立即生效。为 0 表示当前 session 修改的参数立即生效;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);
  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. 系统信息管理

  1. SP_SET_SESSION_READONLY

定义:

INT SP_SET_SESSION_READONLY (

READONLY INT)

功能说明:

设置当前会话的只读模式

参数说明:

取值 1 或 0。1 表示对数据库只读;0 表示对数据库为读写

返回值:

无。

举例说明:

设置当前会话为只读模式

SP_SET_SESSION_READONLY (1);
  1. SP_CLOSE_SESSION

定义:

VOID SP_CLOSE_SESSION (

session_id bigint

)

VOID SP_CLOSE_SESSION (

ep_seqno int,

session_id bigint

)

功能说明:

停止一个活动的会话,会话 ID 可通过 V$SESSIONS 或 GV$SESSIONS 查询,DM 系统创建的内部 SESSION(PORT_TYPE = 12,但 CONNECTED = 1 的 SESSION)也可通过 V$SESSIONS 或 GV$SESSIONS 查询到

参数说明:

session_id:指定会话 ID

ep_seqno:指定会话所在的 DMDSC 集群节点的节点号

举例说明:

SP_CLOSE_SESSION (510180488);
  1. SF_GET_CASE_SENSITIVE_FLAG/ CASE_SENSITIVE

定义:

INT

SF_GET_CASE_SENSITIVE_FLAG()

或者

INT CASE_SENSITIVE ()

功能说明:

返回大小写敏感信息

参数说明:

返回值:

1:敏感

0:不敏感

举例说明:

获得大小写敏感信息

SELECT SF_GET_CASE_SENSITIVE_FLAG();
  1. SF_GET_EXTENT_SIZE

定义:

INT

SF_GET_EXTENT_SIZE()

功能说明:

返回簇大小

参数说明:

返回值:

系统建库时指定的簇大小

举例说明:

获得系统建库时指定的簇大小

SELECT SF_GET_EXTENT_SIZE ();
  1. SF_GET_PAGE_SIZE/PAGE

定义:

INT

SF_GET_PAGE_SIZE()

功能说明:

返回页大小

参数说明:

返回值:

系统建库时指定的页大小

举例说明:

获得系统建库时指定的页大小

SELECT SF_GET_PAGE_SIZE ();

补充说明:

获得系统建库时指定的页大小也可使用:

SELECT PAGE();
  1. 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);
  1. SF_PAGE_GET_PAGE_TYPE

定义:

VARCHAR

SF_PAGE_GET_PAGE_TYPE(

ts_id int,

file_id int,

page_no int

)

功能说明:

获取目标页的类型

参数说明:

ts_id:指定目标页的表空间,如果表空间不存在,报错

file_id: 指定目标页的文件,如果文件不存在,报错

page_no: 指定目标页的编号,如果编号超出文件范围,报错

返回值:

页的类型,没有使用的页,返回"PAGE_NOUSE",保留页,返回"RESERVED"

举例说明:

SELECT SF_PAGE_GET_PAGE_TYPE(4, 0, 2000);
  1. 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);
  1. 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 ();
  1. SF_GET_SGUID

定义:

INT

SF_GET_SGUID ()

功能说明:

返回数据库唯一标志 sguid

参数说明:

返回值:

返回数据库唯一标志 sguid

举例说明:

获取数据库唯一标志 sguid

SELECT SF_GET_SGUID();
  1. GUID()

定义:

VARCHAR

GUID ()

功能说明:

生成一个唯一编码串(32 个字符)

返回值:

返回一个唯一编码串

举例说明:

获取一个唯一编码串。

SELECT GUID();
  1. NEWID()

定义:

VARCHAR

NEWID ()

功能说明:

生成一个 SQLSERVER 格式的 guid 字符串 SQLSERVER 的 guid 格式 xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx

返回值:

返回一个 SQLSERVER 格式的唯一编码串

举例说明:

获取一个唯一编码串

SELECT NEWID();
  1. SESSID()

定义:

INT

SESSID ( )

功能说明:

获取当前连接的 id

返回值:

返回当前连接 id

举例说明:

返回当前连接 id

SELECT SESSID ();
  1. 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);
  1. CHECK_DB_INDEX

定义:

INT CHECK_DB_INDEX ()

功能说明:

检查数据库中所有索引的合法性(正确性和有效性)。检查过程中,会使用 S+IX 锁来封锁索引对应的表对象,如果封锁失败,会忽略索引检查,并

记录相关日志到 dmserver 的 log 文件中

返回值:

0:表示不合法;1:表示合法;2:表示存在未校验的索引

举例说明:

SELECT CHECK_DB_INDEX ();
  1. UID

定义:

INT

UID ()

功能说明:

返回当前用户 ID

参数说明:

返回值:

返回当前用户 ID

举例说明:

返回当前用户 ID

SELECT UID();
  1. USER

定义:

CHAR*

USER ()

功能说明:

返回当前用户名

参数说明:

返回值:

返回当前用户名

举例说明:

返回当前用户名

SELECT USER();
  1. CUR_DATABASE

定义:

CHAR*

CUR_DATABASE ()

功能说明:

返回数据库名

参数说明:

返回值:

返回数据库名

举例说明:

获取数据库名

SELECT CUR_DATABASE();
  1. VSIZE

定义:

INT

VSIZE(n)

功能说明:

返回 n 的核心内部表示的字节数。如果 n 为 NULL,则返回 NULL。

参数说明:

n:待求字节数的参数,可以为任意数据类型

返回值:

n 占用的字节数

举例说明:

SELECT VSIZE(256);

查询结果:4 /* 整数类型*/

SELECT VSIZE('数据库');

查询结果:6 /* 中文字符*/

  1. SP_RECLAIM_TS_FREE_EXTENTS

定义:

SP_RECLAIM_TS_FREE_EXTENTS (

tsname varchar(128)

)

功能说明:

重组表空间空闲簇

参数说明:

tsname:表空间名

返回值:

举例说明:

重组表空间空闲簇

CALL SP_RECLAIM_TS_FREE_EXTENTS('SYSTEM');
  1. SP_CLEAR_PLAN_CACHE

定义:

SP_CLEAR_PLAN_CACHE()

功能说明:

清空执行缓存信息。

参数说明:

返回值:

举例说明:

清空执行缓存信息

CALL SP_CLEAR_PLAN_CACHE();
  1. SP_SET_PLN_RS_CACHE

定义:

SP_SET_PLN_RS_CACHE(

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);
  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);
  1. 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: 模式名;

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);
  1. 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);
  1. CUR_TICK_TIME

定义:

varchar

CUR_TICK_TIME ()

功能说明:

获取系统当前时钟记数

参数说明:

返回值:

时钟记数的字符串

举例说明:

获取系统当前时钟记数

SELECT CUR_TICK_TIME();
  1. 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);
  1. SF_GET_LONG_TIME

定义:

int

SF_GET_LONG_TIME ()

功能说明:

返回 V$LONG_EXEC_SQLS 动态视图中监控的最短执行时间,以毫秒为单位

参数说明:

返回值:

V$LONG_EXEC_SQLS 所监控的最短执行时间

举例说明:

查看 V$LONG_EXEC_SQLS 监控的最短执行时间

SELECT SF_GET_LONG_TIME();
  1. PERMANENT_MAGIC

定义:

INT

PERMANENT_MAGIC ()

功能说明:

返回数据库永久魔数

参数说明:

返回值:

返回整型值:永久魔数

举例说明:

获取数据库永久魔数

SELECT PERMANENT_MAGIC();
  1. SP_CANCEL_SESSION_OPERATION

定义:

SP_CANCEL_SESSION_OPERATION (

session_id bigint

)

SP_CANCEL_SESSION_OPERATION (

ep_seqno int,

session_id bigint

)

功能说明:

终止指定会话的操作

参数说明:

session_id:指定会话 ID,可通过 V$SESSIONS 或 GV$SESSIONS 查询

ep_seqno:指定会话所在的DMDSC集群节点的节点号

返回值:

举例说明:

终止 ID 为 310509680 的会话的操作

CALL SP_CANCEL_SESSION_OPERATION (310509680);
  1. 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);
  1. SF_GET_SESSION_SQL

定义:

CLOB

SF_GET_SESSION_SQL (

sess_id bigint

)

CLOB

SF_GET_SESSION_SQL (

ep_seqno int,

sess_id bigint

)

功能说明:

返回指定会话上最近处理的完整的 SQL 语句

参数说明:

sess_id:指定会话 ID,可通过 V$SESSIONS 或 GV$SESSIONS 查询

ep_seqno:指定会话所在的 DMDSC 集群节点的节点号

返回值:

指定会话上最近处理的完整的 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;
  1. SF_CLOB_LEN_IS_VALID

定义:

SF_CLOB_LEN_IS_VALID (

clob

)

功能说明:

检查系统存储的 clob 字符长度是否正常

参数说明:

clob:clob 对象

返回值:

0:不正常,1:正常

举例说明:

select SF_CLOB_LEN_IS_VALID ('PRODUCTION.PRODUCT.DESCRIPTION');
  1. SP_VALIDATE_CLOB_LEN

定义:

SP_VALIDATE_CLOB_LEN(

clob

)

功能说明:

修复系统存储的 clob 字符长度

参数说明:

clob:clob 对象

举例说明:

SP_VALIDATE_CLOB_LEN ('PRODUCTION.PRODUCT.DESCRIPTION');
  1. CHECK_INDEX_PAGE_USED

定义:

CHECK_INDEX_PAGE_USED (

indexid int

)

功能说明:

检查 ID 为 indexid 的索引数据页(包含 BLOB 字段)分配是否与对应的簇分配情况一致

参数说明:

Indexid:索引 ID,如果不是数据库中的索引 ID 或者为空,则报错

返回值:

1:一致

0:不一致

举例说明:

DROP TABLE T1_CHECK;

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');
  1. SF_FILE_SYS_CHECK_REPORT

定义:

INTEGER

SF_FILE_SYS_CHECK_REPORT(

ts_id int

)

功能说明:

校验检查指定表空间的簇是否正常

参数说明:

ts_id:指定检测的表空间,如果表空间不存在则返回 0

返回值:

1:表示表空间的簇都是正常的

0:表空间中存在检验不通过的簇,问题的详细描述输出到服务器的运行日志中。

举例说明:

SELECT SF_FILE_SYS_CHECK_REPORT(4);
  1. SP_LOAD_LIC_INFO()

定义:

VOID

SP_LOAD_LIC_INFO()

功能说明:

进行 DM 服务器的 LICENSE 校验。检查 LICENSE 与当前 DM 版本及系统运行环境是否一致,如果有不一致则 D 务器主动退出

参数说明:

返回值:

举例说明:

SP_LOAD_LIC_INFO();
  1. SF_PROXY_USER()

定义:

CHAR*

SF_PROXY_USER()

功能说明:

返回当前代理用户名

参数说明:

返回值:

返回当前代理用户名

举例说明:

返回当前代理用户名

SELECT SF_PROXY_USER();
  1. SP_CLEAR_PLAN_CACHE_BY_DICT()

定义:

VOID

SP_CLEAR_PLAN_CACHE_BY_DICT(

dict_id int

)

功能说明:

清除涉及指定字典对象的缓存计划

参数说明:

dict_id:指定字典对象的 ID 值

返回值:

举例说明:

清除涉及 ID 值为 1250 的字典对象的缓存计划。

SP_CLEAR_PLAN_CACHE_BY_DICT(1250);

3. 备份恢复管理

  1. SF_BAKSET_BACKUP_DIR_ADD

    定义:
    INT
    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');
  1. 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');
  1. SF_BAKSET_BACKUP_DIR_REMOVE_ALL

    定义:
    INT
    SF_BAKSET_BACKUP_DIR_REMOVE_ALL()

    功能说明:
    清理全部备份目录,默认备份目录除外

    返回值:

1:目录全部清理成功;其它情况下报错

举例说明:

SELECT SF_BAKSET_BACKUP_DIR_REMOVE_ALL();
  1. 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');
  1. 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';

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
  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);
  1. SP_DB_BAKSET_REMOVE_BATCH

    定义:
    SP_DB_BAKSET_REMOVE_BATCH (
    device_type varchar,
    end_time datetime
    )

    功能说明:
    批量删除指定时间之前的数据库备份集。使用该方法前,需要先使用 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());
  1. 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');
  1. SP_TAB_BAKSET_REMOVE_BATCH

    定义:
    SP_TAB_BAKSET_REMOVE_BATCH (
    device_type varchar,
    end_time datetime,
    sch_name varchar(128),
    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');
  1. SP_ARCH_BAKSET_REMOVE_BATCH

    定义:
    SP_ARCH_BAKSET_REMOVE_BATCH (
    device_type varchar,
    end_time datetime
    )

    功能说明:
    批量删除指定时间之前的归档备份集。使用该方法前,需要先使用 SF_BAKSET_BACKUP_DIR_ADD 添加将要删除的备份集目录,否则只删除默认备份路径下的备份集

    参数说明:
    device_type:设备类型,disk 或 tape。指定 NULL,则忽略存储设备的区分
    end_time:删除备份集生成的结束时间,仅删除 end_time 之前的备份集,必须指定

    举例说明:

BACKUP ARCHIVELOG BACKUPSET '/home/dm_bak/arch_bak_for_batch_del';

SELECT SF_BAKSET_BACKUP_DIR_ADD('DISK','/home/dm_bak');

CALL SP_ARCH_BAKSET_REMOVE_BATCH('DISK', NOW());

4. 定时器管理

本小节中的定时器管理相关系统存储过程都必须在系统处于 MOUNT 状态时执行。

  1. SP_ADD_TIMER*****

    定义:
    SP_ADD_TIMER(
    TIMER_NAME VARCHAR(128),
    TYPE INT,
    FREQ_MONTH_WEEK_INTERVAL INT,
    FREQ_SUB_INTERVAL INT,
    FREQ_MINUTE_INTERVAL INT,
    START_TIME TIME,
    END_TIME TIME,
    DURING_START_DATE DATETIME,
    DURING_END_DATE DATETIME,
    NO_END_DATE_FLAG BOOL
    DESCRIBE VARCHAR(128),
    IS_VALID BOOL
    )

    功能说明:
    创建一个定时器

    参数说明:
    timer_name:定时器名称,应使用普通标识符,包含特殊符号可能导致无法正常使用
    type:定时器调度类型,取值为:1:执行一次;2:按日执行;3:按周执行;4:按月执行的第几天;5:按月执行的第一周;6:按月执行的第二周;7:按月执行的第三周;8:按月执行的第四周; 9:按月执行的最后一周
    freq_month_week_interval:间隔的月/周/天(调度类型决定)数
    freq_sub_interval:第几天/星期几/一个星期中的某些天
    freq_minute_interval:间隔的分钟数
    start_time:开始时间
    end_time:结束时间
    during_start_date:有效日期时间段的开始日期时间。只有当前时间大于该字段时,该定时器才有效
    during_end_date:有效日期时间段的结束日期时间
    no_end_date_flag:是否有结束日期(0:有结束日期;1:没有结束日期)
    describe:描述
    is_valid:定时器是否有效

    返回值:

    说明:

    1. type = 1 时,freq_sub_interval、freq_month_week_interval、freq_minute_interval、end_time、during_end_date 无效。只有 start_time,during_start_date 有意义

    2. type = 2 时,freq_month_week_interval 有效,表示相隔几天,取值范围为 1-100;freq_sub_interval 无效;freq_minute_interval <=24* 60 有效

      a) 当 freq_minute_interval = 0 时,当天只执行一次。end_time 无效。

      b) 当 0<freq_minute_interval <=24*60 时,表示当天从 start_time 时间开始,每隔 freq_minute_interval 分钟执行一次。

      c) 当 freq_minute_interval > 24* 60 时,非法。

    3. type = 3 时,意思是每隔多少周开始工作(从开始日期算起)。计算方法为:(当前日期和开始日期的天数之差/7)% freq_month_week_interval =0 且当前是星期 freq_sub_interval,其中 freq_sub_interval 的八位如下表所示:

      8 7 6 5 4 3 2 1

      1-7 位分别代表星期天,星期一、星期二…、星期六,第 8 位无意义。这几位 为 1 表示满足条件,为 0 表示不满足条件。

      a) 1<=freq_month_week_interval<=100,代表每隔多少周

      b) 1<=freq_sub_interval<=127 代表星期中的某些天

      c) freq_minute_interval 代表分钟数。

      当 freq_minute_interval = 0 时,当天只执行一次。end_time 无效;当 freq_minute_interval > 0 且,表示当天可执行多次;当 freq_minute_interval > 24* 60 时,非法。

    4. type = 4 时,每 freq_month_week_interval 个月的第 freq_sub_interval 日开始工作。其中,是否满足 freq_month_week_interval 个月的判断条件是:(月份的差 +(日期的差 >=15|| 日期的差 <= -15)?1:0 ) % freq_month_week_interval = 0 且当前是当月的 freq_sub_interval 日,表示满足条件;否则不满足。其中,“月份的差” 和 “日期的差”分别指的是系统当前时间和字段“during_start_date”中的月份差值和日期差值。

      a) 1<=freq_sub_interval<31,代表第几日;

      b) 1<=freq_month_week_interval<100,代表每隔多少个月;

      c) freq_minute_interval 代表分钟数。

      当 freq_minute_interval = 0 时,当天只执行一次。end_time 无效;当 freq_minute_interval > 0 且,表示当天可执行多次;当 freq_minute_interval >24* 60 时,非法。

    5. type = 5,6,7,8,9 时,每 freq_month_week_interval 个月的第 type-4 周的周 freq_sub_interval 开始工作。其中,是否满足 freq_month_week_interval 个月的判断条件是:(月份的差 + 日期的差/15) % freq_month_week_interval = 0 且当前是当月的第 type-4 周的周 freq_sub_interval,表示满足条件;否则不满足。

      a) 1<=freq_sub_interval<=7,代表星期天到星期六(星期天是一个星期的第一天);

      b) freq_month_week_interval<100,代表每隔多少个月;

      c) freq_minute_interval 代表分钟数。

      当 freq_minute_interval = 0 时,当天只执行一次。end_time 无效;当 freq_minute_interval > 0 且,表示当天可执行多次;当 freq_minute_interval > 24* 60 时,非法。

    6. 如果 no_end_date_flag = TRUE:表示永远不结束,一直存在下去。

    7. 如果 is_valid= TRUE:表示定时器创建时就有效。

    8. 总结 type 取值 1~9 时,freq_sub_interval、freq_month_week_interval 和 freq_minute_interval 各自对应的有效值范围如下表所示:

SP_ADD_TIMER 表

举例说明:

创建一个定时器,每天 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');

3.SP_OPEN_TIMER*****

定义:
SP_OPEN_TIMER (
timer_name varchar(128)
)

功能说明:
打开一个定时器

参数说明:
timer_name:定时器名

返回值:

举例说明:
打开定时器 TIMER1

SP_OPEN_TIMER('TIMER1');

4.SP_CLOSE_TIMER*****

定义:
SP_CLOSE_TIMER (
timer_name varchar(128)
)

功能说明:
关闭一个定时器

参数说明:
timer_name:定时器名

返回值:

举例说明:
关闭定时器 TIMER1

SP_CLOSE_TIMER('TIMER1');

5. 数据复制管理

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

  1. SP_INIT_REP_SYS*****

    定义:
    SP_INIT_REP_SYS(
    CREATE_FLAG INT
    );

    功能说明:
    创建或删除数据复制所需的系统表

    参数说明:
    CREATE_FLAG:为 1 表示创建复制所需系统表;为 0 表示删除这些系统表

    返回值:

    举例说明:
    创建复制所需的系统表

SP_INIT_REP_SYS(1);
  1. SP_RPS_ADD_GROUP

    定义:
    SP_RPS_ADD_GROUP(
    GROUP_NAME VARCHAR(128),
    GROUP_DESC VARCHAR(1000)
    );

    功能说明:
    创建复制组

    参数说明:
    GROUP_NAME:创建的复制组名称
    GROUP_DESC:复制组描述

    返回值:

    备注:
    指示 RPS 创建一个新的复制组。如果已存在同名复制组则报错

    举例说明:
    创建复制组 REP_GRP_B2C

SP_RPS_ADD_GROUP('REP_GRP_B2C','主从同步复制');
  1. SP_RPS_DROP_GROUP

    定义:
    SP_RPS_DROP_GROUP(
    GROUP_NAME VARCHAR(128)
    );

    功能说明:

删除复制组

参数说明:

GROUP_NAME:复制组名称

返回值:

举例说明:

删除复制组 REP_GRP_B2C

SP_RPS_DROP_GROUP ('REP_GRP_B2C');
  1. 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)
    );

    功能说明:
    创建复制关系

    参数说明:
    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');
  1. SP_RPS_DROP_REPLICATION

    定义:
    SP_RPS_DROP_REPLICATION (
    REP_NAME VARCHAR(128)
    );

    功能说明:
    删除复制关系

    参数说明:
    REP_NAME:复制名称

    返回值:

    举例说明:
    删除复制关系

SP_RPS_DROP_REPLICATION ('REPB2C');
  1. SP_RPS_SET_ROUTE_FAULT_TIMEOUT

    定义:
    SP_RPS_SET_ROUTE_FAULT_TIMEOUT (
    REP_NAME VARCHAR(128),
    TIMEOUTS INT
    );

    功能说明:
    设置复制路径故障超时

    参数说明:
    REP_NAME:复制关系名
    TIMEOUTS:故障超时值,以秒为单位。0 为立即超时;-1 表示无超时限制

    返回值:

    备注:
    该接口用于设置复制路径故障处理策略。设置后,RPS 如检测到复制路径产生故障,且故障持续超过设定的超时值后,则需要取消故障的复制关系

    举例说明:
    设置复制路径故障超时

SP_RPS_SET_ROUTE_FAULT_TIMEOUT ('REPB2C',10);
  1. 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);
  1. 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
    );

    功能说明:
    设置复制关系的定时器

    参数说明:
    TIMER_NAME:定时器名
    TIMER_DESC:定时器描述
    TYPE$:定时器类型,取值如下:
    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$、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);
  1. SP_RPS_REP_RESET_TIMER

    定义:
    SP_RPS_REP_RESET_TIMER(
    REP_NAME VARCHAR(128),
    TIMER_NAME VARCHAR(128)
    );

    功能说明:
    重新设置复制关系的定时器

    参数说明:
    REP_NAME:复制名
    TIMER_NAME:新的定时器名

    返回值:

    举例说明:
    重新设置复制关系的定时器

 SP_RPS_REP_RESET_TIMER ('REPB2C', 'TIMER1');
  1. 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);
  1. 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),

);

功能说明:

删除表级复制映射

参数说明:

REP_NAME:复制关系名

MTAB_SCHEMA:主表模式名

MTAB_NAME:主表名

STAB_SCHEMA:从表模式名

STAB_NAME:从表名

返回值:

举例说明:

删除表级复制映射

SP_RPS_DROP_TAB_MAP('REPB2C', 'USER1', 'T1', 'USER2', 'T2');
  1. 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);
  1. SP_RPS_DROP_SCH_MAP

    定义:
    SP_RPS_DROP_SCH_MAP(
    REP_NAME VARCHAR(128),
    MSCH VARCHAR(128),
    SSCH VARCHAR(128)

);

功能说明:

删除模式级复制映射

参数说明:

REP_NAME:复制关系名

MSCH:主模式名

SSCH:从模式名

返回值:

举例说明:

删除模式级复制映射

SP_RPS_DROP_SCH_MAP('REPB2C', 'USER1', 'USER2');
  1. 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);
  1. SP_RPS_DROP_DB_MAP

    定义:
    SP_RPS_DROP_DB_MAP(
    REP_NAME VARCHAR(128)
    );

    功能说明:
    删除库级复制映射

    参数说明:
    REP_NAME:复制关系名

    返回值:

    举例说明:
    删除库级复制映射

SP_RPS_DROP_DB_MAP('REPB2C');
  1. SP_RPS_SET_BEGIN

    定义:
    SP_RPS_SET_BEGIN(
    GRP_NAME VARCHAR(128),
    );

    功能说明:
    开始复制设置

    参数说明:
    GRP_NAME:复制组名

    返回值:

    备注:
    开始对指定复制组进行属性设置。创建/删除复制关系与创建/删除复制映射等接口都必须在此接口调用后执行,否则会报错“错误的复制设置序列”。同一会话中也不能同时开始多个复制设置

    举例说明:
    复制组 REPB2C 开始复制

SP_RPS_SET_BEGIN(' REP_GRP_B2C');
  1. SP_RPS_SET_APPLY

    定义:
    SP_RPS_SET_APPLY ();

    功能说明:
    提交复制设置,保存并提交本次设置的所有操作。如果需要继续设置,则必须重新调用 SP_RPS_SET_BEGIN

    参数说明:

    返回值:

    举例说明:
    提交复制设置

SP_RPS_SET_APPLY ()
  1. SP_RPS_SET_CANCEL

    定义:
    SP_RPS_SET_CANCEL ();

    功能说明:
    放弃复制设置,放弃本次设置的所有操作。如果需要重新设置,则必须再次调用 SP_RPS_SET_BEGIN

    参数说明:

    返回值:

    举例说明:
    放弃复制设置

SP_RPS_SET_CANCEL();

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

  1. SP_TABLEDEF

    定义:
    void
    SP_TABLEDEF (
    schname varchar(128),
    tablename varchar(128)
    )

    功能说明:
    以结果集的形式返回表的定义,当表定义过长时,会以多行返回。

    参数说明:
    schname:模式名
    tablename:表名

    返回值:

    举例说明:

CALL SP_TABLEDEF('PRODUCTION','PRODUCT');
  1. SP_VIEWDEF

    定义:
    void
    SP_VIEWDEF (
    schname varchar(128),
    viewname varchar(128)
    )

    功能说明:
    以结果集的形式返回视图的定义

    参数说明:
    schname:模式名
    viewname:视图名

    返回值:

    举例说明:

CALL SP_VIEWDEF('PURCHASING','VENDOR_EXCELLENT');
  1. SF_VIEW_EXPIRED

    定义:
    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
  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);
  1. CONSDEF

    定义:
    CHAR *
    CONSDEF (
    indexid int,
    preflag int
    )

    功能说明:
    获取 unique 约束的定义

    参数说明:
    indexid:索引号数字字符串
    preflag:对象前缀个数。1 表示导出模式名;0 表示只导出对象名

    返回值:
    unique 约束的定义

    举例说明:

 CREATE TABLE TEST_CONSDEF(C1 INT PRIMARY ,, 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);
  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);
  1. SP_REORGANIZE_INDEX

    定义:
    SP_REORGANIZE_INDEX (
    schname varchar(128),
    indexname varchar(128)
    )

    功能说明:
    对指定索引进行空间整理

    参数说明:
    schname:模式名
    indexname:索引名

    返回值:

    举例说明:

CREATE INDEX PRODUCT_IND ON PRODUCTION.PRODUCT(PRODUCTID);

CALL SP_REORGANIZE_INDEX('PRODUCTION','PRODUCT_IND');
  1. SP_REBUILD_INDEX

    定义:
    SP_REBUILD_INDEX (
    schname varchar(128),
    indexed int
    )

    功能说明:
    重建索引。约束:1. 水平分区子表、临时表和系统表上建的索引不支持重建;2. 虚索引和聚集索引不支持重建

    参数说明:
    schname:模式名
    indexid:索引 ID

    返回值:

    举例说明:

CREATE INDEX PRODUCT_IND ON PRODUCTION.PRODUCT(PRODUCTID);

--查询系统表得到索引ID

SP_REBUILD_INDEX('SYSDBA', 33555530);
  1. CONTEXT_INDEX_DEF

    定义:
    CHAR *
    CONTEXT_INDEX_DEF (
    indexed int,
    preflag int
    )

    功能说明:
    获取 context_index 的创建定义

    参数说明:
    indexid:索引 ID
    preflag:对象前缀个数。1 表示导出模式名;0 表示只导出对象名

返回值:

索引的创建定义

举例说明:

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);
  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);
  1. SEQDEF

    定义:
    CHAR *
    SEQDEF (
    seqid int,
    preflag int
    )

    功能说明:
    获取序列的创建定义

    参数说明:
    seqid:序列 id 号
    preflag:对象前缀个数。1 表示导出模式名;0 表示只导出对象名

    返回值:
    序列的创建定义

    举例说明:

CREATE SEQUENCE SEQ1;

SELECT ID FROM SYSOBJECTS WHERE NAME='SEQ1'; --查出id为167772160

SELECT SEQDEF(167772160, 1);
  1. IDENT_CURRENT

    定义:
    int
    IDENT_CURRENT (
    fulltablename varchar(8187)
    )

    功能说明:
    获取自增列当前值

    参数说明:
    fulltablename:表全名;格式为“模式名.表名”

    返回值:
    自增列当前值

    举例说明:

SELECT IDENT_CURRENT('PRODUCTION.PRODUCT');
  1. IDENT_SEED

    定义:
    INT
    IDENT_SEED (
    fulltablename varchar(8187)
    )

    功能说明:
    获取自增列种子

    参数说明:
    fulltablename:表全名;格式为“模式名.表名”

    返回值:
    自增列种子

    举例说明:

select ident_seed('PRODUCTION.PRODUCT');
  1. IDENT_INCR

    定义:
    INT
    IDENT_INCR (
    fulltablename varchar(8187)
    )

    功能说明:
    获取自增列增量值 increment

    参数说明:
    fulltablename:表全名;格式为“模式名.表名”

    返回值:
    自增列增量值 increment

    举例说明:

select ident_incr('PRODUCTION.PRODUCT');
  1. SCOPE_IDENTITY

    定义:
    INT SCOPE_IDENTITY ();

    功能说明:
    返回插入到同一作用域中的 identity 列内的最后一个 identity 值

    返回值:
    RVAL:函数返回值,长度为 8

    举例说明:
    详见 GLOBAL_IDENTITY 例子

  2. 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
  1. SF_CUR_SQL_STR

    定义:
    clob
    SF_CUR_SQL_STR (
    IS_TOP INT
    )

    功能说明:
    用于并行环境中,获取当前执行的 SQL 语句

    参数说明:
    IS_TOP:取 0 时返回当前层计划执行的语句;取 1 时返回顶层计划语句

    返回值:
    sql 语句

    举例说明:

SELECT SF_CUR_SQL_STR(0);
  1. 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$, COLS.LENGTH$, COLS.SCALE, COLS.NULLABLE$, COLS.DEFVAL

FROM (SELECT ID, NAME FROM SYS.SYSOBJECTS WHERE NAME = 'TC' AND TYPE$ = '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';
  1. SF_REPAIR_HFS_TABLE

    定义:
    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');
  1. 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);
  1. SP_ENABLE_ALL_EVT_TRIGGER

    定义:
    SP_ENABLE_ALL_EVT_TRIGGER (
    enable bool
    )

    功能说明:
    禁用/启用数据库上的所有事件触发器。

    参数说明:
    ENABLE:1 表示启用,0 表示禁用。

    返回值:
    成功返回 0,否则报错。

    举例说明:

SP_ENABLE_ALL_EVT_TRIGGER(1);

SP_ENABLE_ALL_EVT_TRIGGER(0);
  1. 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'));
  1. 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;
    
     EXCEPTION
    
    WHEN OTHERS THEN NULL;
    
     END;
    
     /
    
     CREATE OR REPLACE FUNCTION FUN2 (A INT, B INT) RETURN INT AS
    
    	S INT;
    
     BEGIN
    
    S:=A+B+FUN1(A);
    
    RETURN S;
    
     EXCEPTION
    
    WHEN OTHERS THEN NULL;
    
     END;
    
     /
    
     SELECT SF_GET_PROC_DEPENDS((SELECT ID FROM SYSOBJECTS WHERE NAME LIKE 'FUN2'));
    

7. 数据守护管理

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

  1. SP_SET_OGUID

    定义:
    void
    SP_SET_OGUID (
    oguid int
    )

    功能说明:
    设置主备库监控组的 ID 号

    参数说明:
    oguid:oguid

    返回值:

    举例说明:

SP_SET_OGUID (451245);
  1. SF_GET_BROADCAST_ADDRESS

    定义:
    VARCHAR
    SF_GET_BROADCAST_ADDRESS (
    IP_ADDR VARCHAR,
    SUBNET_MASK VARCHAR
    )

    功能说明:
    根据 IPv4 的 IP 地址以及子网掩码计算广播地址

    参数说明:
    IP_ADDR:输入的 IP 地址
    SUBNET_MASK:子网掩码地址

    返回值:
    广播地址

    示例:

select sf_get_broadcast_address('15.16.193.6','255.255.248.0');
  1. SP_SET_RT_ARCH_VALID

    定义:
    VOID SP_SET_RT_ARCH_VALID ()

    功能说明:
    设置实时归档有效。

    参数说明:

    返回值:

    举例说明:

CALL SP_SET_RT_ARCH_VALID ();
  1. SP_SET_RT_ARCH_INVALID

    定义:
    VOID SP_SET_RT_ARCH_INVALID ()

    功能说明:
    设置实时归档无效。

    参数说明:

    返回值:

    举例说明:

CALL SP_SET_RT_ARCH_INVALID ();
  1. SF_GET_RT_ARCH_STATUS

    定义:
    VARCHAR SF_GET_RT_ARCH_STATUS ()

    功能说明:
    获取实时归档状态。

    参数说明:

    返回值:
    有效:VALID。无效:INVALID

    举例说明:

SELECT SF_GET_RT_ARCH_STATUS ();
  1. SP_SET_ARCH_STATUS

    定义:
    VOID
    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);
  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);
  1. SP_APPLY_KEEP_PKG

    定义:
    VOID SP_APPLY_KEEP_PKG()

    功能说明:
    APPLY 备库的 KEEP_PKG 数据。

    参数说明:

    返回值:

    举例说明:

CALL SP_APPLY_KEEP_PKG();
  1. SP_DISCARD_KEEP_PKG

    定义:
    VOID SP_DISCARD_KEEP_PKG()

    功能说明:
    丢弃备库的 KEEP_PKG 数据。

    参数说明:

    返回值:

    举例说明:

CALL SP_DISCARD_KEEP_PKG();
  1. 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');
  1. SP_CLEAR_RAPPLY_STAT

    定义:
    VOID SP_CLEAR_RAPPLY_STAT()

    功能说明:
    此系统函数在备库上执行有效,用于清理此备库最近 N 次的日志重演信息。
    N 值为 V$RAPPLY_STAT 中的 RECNT_APPLY_NUM 值。

    参数说明:

    返回值:

    举例说明:

CALL SP_CLEAR_RAPPLY_STAT();
  1. SP_ADD_TIMELY_ARCH(

    定义:
    VOID SP_ADD_TIMELY_ARCH(
    INST_NAME VARCHAR
    )

    功能说明:
    OPEN 状态下动态扩展 TIMELY 归档。

    参数说明:
    INST_NAME:TIMELY 归档的目标实例名

    返回值:

    举例说明:

CALL SP_ADD_TIMELY_ARCH('DB3');
  1. 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);
  1. 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 地址

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);
  1. SF_MAL_CONFIG_APPLY

    定义:
    VOID
    SF_MAL_CONFIG_APPLY()

    功能说明:
    将 MAL 配置生效

    参数说明:

    举例说明:

sf_mal_config_APPLY();
  1. SP_SET_ARCH_SEND_UNTIL_TIME

    定义:
    VOID
    SP_SET_ARCH_SEND_UNTIL_TIME(

    DEST VARCHAR,

    UNTIL_TIME VARCHAR

    )

    功能说明:
    设置异步备库重演到指定时间

    参数说明:
    DEST: 异步归档目标库实例名

    UNTIL_TIME: 重演到指定时间点。若为空串,则表示取消重演到指定时间点

    举例说明:

SP_SET_ARCH_SEND_UNTIL_TIME('EP01', '2020-09-14 10:00:00');

取消重演到指定时间点:

SP_SET_ARCH_SEND_UNTIL_TIME('EP01', '');
  1. SP_GET_ARCH_SEND_UNTIL_TIME

    定义:
    VARCHAR
    SF_GET_ARCH_SEND_UNTIL_TIME(

    DEST VARCHAR

    )

    功能说明:
    获取异步备库的重演指定时间

    参数说明:
    DEST: 异步归档目标库实例名

    举例说明:

SP_GET_ARCH_SEND_UNTIL_TIME('EP01');
  1. SP_NOTIFY_ARCH_SEND

    定义:
    VOID
    SP_NOTIFY_ARCH_SEND(

    DEST VARCHAR

    )

    功能说明:
    通知源库立即发送归档到指定异步备库

    参数说明:
    DEST: 异步归档目标库实例名

    举例说明:

SP_NOTIFY_ARCH_SEND('EP01');

8. MPP 管理

  1. SP_SET_SESSION_MPP_SELECT_LOCAL

    定义:
    VOID
    SP_SET_SESSION_MPP_SELECT_LOCAL (
    local_flag int

    )

    功能说明:
    MPP 系统下设置当前会话是否只查询本节点数据。如果不设置,表示可以查询全部节点数据

    参数说明:
    local_flag: 设置标记。1 代表只查询本节点数据;0 代表查询全部节点数据

    返回值:

    举例说明:

SP_SET_SESSION_MPP_SELECT_LOCAL(1);
  1. SF_GET_SESSION_MPP_SELECT_LOCAL

    定义:
    INT SF_GET_SESSION_MPP_SELECT_LOCAL ()

    功能说明:
    查询 MPP 系统下当前会话是否只查询本节点数据

    参数说明:

    返回值:
    1 代表只查询本节点数据,0 查询全部节点数据

    举例说明:

SELECT SF_GET_SESSION_MPP_SELECT_LOCAL();
  1. 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);
  1. 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;
  1. SF_GET_SELF_EP_SEQNO

    定义:
    INT
    SF_GET_SELF_EP_SEQNO ()

    功能说明:
    获取本会话连接的 EP 站点序号

    参数说明:

    返回值:
    获取本会话连接的 EP 站点序号

    举例说明:

select SF_GET_SELF_EP_SEQNO();
  1. 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');
  1. 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');
  1. SF_MPP_INST_REMOVE

    定义:
    VOID
    SF_MPP_INST_REMOVE(
    INST_NAME VARCHAR,
    )

    功能说明:
    删除 MPP 实例。

    参数说明:
    INST_NAME:实例名

    举例说明:

SF_MPP_INST_REMOVE('EP03');

9. 日志与检查点管理

  1. CHECKPOINT

    定义
    INT
    CHECKPOINT (
    rate int
    )

    功能说明:
    设置检查点。需要注意的是:在 DSC 环境下,OK 节点个数大于 1 时,MOUNT 状态下调用该函数不会生效。

    参数说明:
    rate:刷脏页百分比,取值范围:1~100

    返回值:
    检查点是否成功,0 表示成功,非 0 表示失败

    举例说明:
    设置刷脏页百分比为 30% 的检查点

SELECT CHECKPOINT(30);
  1. SF_ARCHIVELOG_DELETE_BEFORE_TIME

    定义
    INT
    SF_ARCHIVELOG_DELETE_BEFORE_TIME (
    time datetime
    )

    功能说明:
    数据库以归档模式打开的情况下,删除指定时间之前的归档日志文件,包括本地归档和远程归档。待删除的文件必须处于未被使用状态

    参数说明:
    time:指定删除的最大关闭时间,若大于当前使用归档日志文件的创建时间,则从当前使用归档文件之前的归档日志文件开始删除

    返回值:
    删除归档日志文件数,-1 表示出错

    举例说明:
    删除三天之前的归档日志

SELECT SF_ARCHIVELOG_DELETE_BEFORE_TIME(SYSDATE - 3);
  1. 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()

功能说明:

手工停止数据库重演捕获

参数说明:

返回值:

举例说明:

首先对数据库进行备份,然后调用 SP_START_CAPTURE,创建一张表,插入 3 条数据,最后调用 SP_STOP_CAPTURE。利用重演工具 dreplay 进行数据库重演

CALL SP_START_CAPTURE('D:\dmdbms\data', -1);

 CREATE TABLE "SYSDBA"."TEST4REPLAY"

 (

C1 INT,

C2 VARCHAR(64)

 );

 INSERT INTO "SYSDBA"."TEST4REPLAY" VALUES(1, 'A');

 INSERT INTO "SYSDBA"."TEST4REPLAY" VALUES(2, 'B');

 INSERT INTO "SYSDBA"."TEST4REPLAY" VALUES(3, 'C');

 COMMIT;

 CALL SP_STOP_CAPTURE();

 --然后利用dreplay工具进行数据库重演:

 dreplay SERVER=localhost:5236 FILE=D:\dmdbms\data

11. 统计信息

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

  1. SP_TAB_INDEX_STAT_INIT*****

    定义:
    SP_TAB_INDEX_STAT_INIT (
    schname varchar(128),
    tablename varchar(128)
    )

    功能说明:
    对表上所有的索引生成统计信息

    参数说明:
    schname:模式名
    tablename:表名

    举例说明:
    对 SYSOBJECTS 表上所有的索引生成统计信息

CALL SP_TAB_INDEX_STAT_INIT ('SYS', 'SYSOBJECTS');
  1. SP_DB_STAT_INIT*****

    定义:
    SP_DB_STAT_INIT (
    )

    功能说明:
    对库上所有模式下的所有用户表以及表上的所有索引生成统计信息

    举例说明:
    对库上所有模式下的所有用户表以及表上的所有索引生成统计信息

CALL SP_DB_STAT_INIT ();
  1. SP_INDEX_STAT_INIT*****

    定义:
    SP_INDEX_STAT_INIT (
    schname varchar(128),
    indexname varchar(128)
    )

    功能说明:
    对指定的索引生成统计信息

    参数说明:
    schname:模式名
    indexname:索引名

    举例说明:
    对指定的索引生成统计信息

CALL SP_INDEX_STAT_INIT ('SYSDBA', 'IND');
  1. 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');
  1. 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');
  1. 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);
  1. SP_TAB_STAT_INIT*****

    定义:
    SP_TAB_STAT_INIT (
    schname varchar(128),
    tablename varchar(128)
    )

    功能说明:
    对某张表或某个索引生成统计信息

    参数说明:
    schname:模式名
    tablename:表名或索引名

    举例说明:
    对表 SYSOBECTS 生成统计信息

CALL SP_TAB_STAT_INIT ('SYS', 'SYSOBJECTS');
  1. 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');
  1. SP_INDEX_STAT_DEINIT*****

    定义:
    SP_INDEX_STAT_DEINIT (
    schname varchar(128),
    indexname varchar(128)
    )

    功能说明:
    清空指定索引的统计信息

    参数说明:
    schname:模式名
    indexname:索引名

    举例说明:
    清空索引 IND 的统计信息

CALL SP_INDEX_STAT_DEINIT ('SYSDBA', 'IND');
  1. SP_COL_STAT_DEINIT*****

    定义:
    SP_COL_STAT_DEINIT (
    schname varchar(128),
    tabname varchar(128),
    colname varchar(128)
    )

    功能说明:
    删除指定列的统计信息

    参数说明:
    schname:模式名
    tabname:表名
    colname:列名

    举例说明:
    删除 SYSOBJECTS 的 ID 列的统计信息

CALL SP_COL_STAT_DEINIT ('SYS', 'SYSOBJECTS', 'ID');
  1. 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');
  1. SP_TAB_STAT_DEINIT*****

    定义:
    SP_TAB_STAT_DEINIT (
    schname varchar(128),
    tablename varchar(128)
    )

    功能说明:
    删除某张表的统计信息

    参数说明:
    schname:模式名
    tablename:表名

    举例说明:
    删除表 SYSOBECTS 的统计信息

CALL SP_TAB_STAT_DEINIT ('SYS', 'SYSOBJECTS');
  1. 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 操作符,它是用来对字典对象的上锁处理,通常情况下可以忽略。

  1. SP_UPDATE_SYSSTATS

    定义:
    SP_UPDATE_SYSSTATS(
    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);
  1. 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');
  1. SF_GET_MD_COL_STR

    定义:
    SF_GET_MD_COL_STR(
    tabid int,
    col_info varbinary(4096),
    col_num int
    )

    功能说明:
    获取表上建多维统计信息的列信息。

    参数说明:
    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');
  1. SP_CREATE_AUTO_STAT_TRIGGER

    定义:
    SP_CREATE_AUTO_STAT_TRIGGER(
    type int,
    freq_interval int,
    freq_sub_interval int,
    freq_minute_interval int,
    starttime varchar(128),
    during_start_date varchar(128),
    max_run_duration int,
    enable int

    )

功能说明:

INI 参数 AUTO_STAT_OBJ 开启时,启用自动收集统计信息功能。

参数说明:

type:指定调度类型。可取值 1、2、3、4、5、6、7、8,默认为 1,不同取值意义分别介绍如下:

1:按天的频率来执行;

2:按周的频率来执行;

3:在一个月的某一天执行;

4:在一个月的第一周第几天执行;

5:在一个月的第二周的第几天执行;

6:在一个月的第三周的第几天执行;

7:在一个月的第四周的第几天执行;

8:在一个月的最后一周的第几天执行。

freq_interval:与 type 有关,表示不同调度类型下的发生频率,默认为 1。具体说明如下:

	当type=1时,表示每几天执行,取值范围为1~100;

	当type=2时,表示每几个星期执行,取值范围为1~100;

	当type=3时,表示每几个月中的某一天执行,取值范围为1~100;

	当type=4时,表示每几个月的第一周执行,取值范围为1~100;

	当type=5时,表示每几个月的第二周执行,取值范围为1~100;

	当type=6时,表示每几个月的第三周执行,取值范围为1~100;

	当type=7时,表示每几个月的第四周执行,取值范围为1~100;

	当type=8时,表示每几个月的最后一周执行,取值范围为1~100。

freq_sub_interval:与 type 和 freq_interval 有关,表示不同 type 的执行频率,在 freq_interval 基础上,继续指定更为精准的频率,默认为 1。具体说明如下:

	当type=1时,这个值无效,系统不做检查;

	当type=2时,表示某一个星期的星期几执行,可以同时选中七天中的任意几天,取值范围1~127。具体可参考如下规则:因为每周有七天,所		以DM数据库系统内部用七位二进制来表示选中的日子,从最低位开始算起,依次表示周日、周一到周五、周六。选中周几,就将该位置1,否则置0。例		如,选中周二和周六,7位二进制就是1000100,转化成十进制就是68,所以FREQ_SUB_INTERVAL取值68;

	当type=3时,表示将在一个月的第几天执行,取值范围1~31;

	当type为4、5、6、7或8时,都表示将在某一周内第几天执行,取值范围1~7,分别表示从周一到周日。

freq_minute_interval:开始时间后,当天每隔几分钟再次执行,取值范围为 1~1439,默认为 1439;

starttime:开始时间,默认为 22:00;

during_start_date:有效日期时间段的开始日期时间,只有当前时间大于该参数值时,该定时器才有效,默认为 1900/1/1;

max_run_duration:收集统计信息触发器最大执行时间,单位秒,0 表示不限制,默认为 0;

enable:定时器是否有效,0:无效,1:有效,默认为 1。

举例说明:

第一步,打开监控。

设置 INI 参数 AUTO_STAT_OBJ 为 1 或 2。1:对所有表进行监控;2:只对用户通过 DBMS_STATS. SET_TABLE_PREFS 设置过 STALE_PERCENT 属性的表对象进行监控。如果 AUTO_STAT_OBJ=2,需进一步使用 DBMS_STATS.SET_TABLE_PREFS 设置 STALE_PERCENT 属性。

用 AUTO_STAT_OBJ=1 打开对 T 表的监控。

create table t(a int);

SP_SET_PARA_VALUE(1,'AUTO_STAT_OBJ',1);

用 AUTO_STAT_OBJ=2 打开对 T 表的监控。

create table t(a int);

SP_SET_PARA_VALUE(1,'AUTO_STAT_OBJ',2);

DBMS_STATS.SET_TABLE_PREFS('SYSDBA','T','STALE_PERCENT',15);

——对修改行数占总行数的比达到STALE_PERCENT要求的对象和总行数为0的对象收集统计信息

下面以 AUTO_STAT_OBJ=2 为例。

第二步,执行统计信息收集操作。自动收集统计信息使用 SP_CREATE_AUTO_STAT_TRIGGER 设置触发器。

SP_CREATE_AUTO_STAT_TRIGGER(1, 1, 1, 1,'11:20', '2021/1/11',0,1);

此处,也可将自动收集方法换成手动收集方法,其它三步用法不变。

第三步,对用户表 T 进行增删改操作。

insert into t select level connect by level<=20;

commit;

第四步,通过系统表 SYSSTATTABLEIDU 和动态视图 V$AUTO_STAT_TABLE_IDU 查看监控信息,通过系统表 SYSSTATS 查看统计信息。

打开监控后并执行统计信息收集操作之后才能查看到 SYSSTATTABLEIDU 和 SYSSTATS 的变化。SYSSTATTABLEIDU 为 AUTO_STAT_OBJ 等于 1 或 2 时对上一次的统计信息的监控。V$AUTO_STAT_TABLE_IDU 为 AUTO_STAT_OBJ 等于 1 时的统计信息实时监控,不需要执行收集统计信息操作也能查看。

下面以 AUTO_STAT_OBJ=2 为例。

查看监控信息:

--在触发器触发之后查看

SQL>  SELECT * FROM SYSSTATTABLEIDU;

行号       ID          TOTAL_ROWS           INSERT_ROWS          DELETE_ROWS          UPDATE_ROWS          LAST_STAT_DT               MONITOR_FLAG RSVD1      TRUNCATED
---------- ----------- -------------------- -------------------- -------------------- -------------------- -------------------------- ------------ ---------- -----------
1          1074        20                   0                    0                    0                    2022-01-11 14:37:02.000000 2            NULL       0
 

查看统计信息:

SQL> SELECT * FROM SYSSTATS WHERE ID=1074;

行号       ID          COLID       T_FLAG T_TOTAL              N_SMAPLE             N_DISTINCT           N_NULL               V_MIN      V_MAX      BLEVEL      N_LEAF_PAGES         N_LEAF_USED_PAGES    CLUSTER_FACTOR N_BUCKETS
---------- ----------- ----------- ------ -------------------- -------------------- -------------------- -------------------- ---------- ---------- ----------- -------------------- -------------------- -------------- -----------
           DATA
           --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
           COL_AVG_LEN LAST_GATHERED              INFO1      INFO2
           ----------- -------------------------- ---------- ----------
1          1074        -1          T      20                   0                    0                    0                    NULL       NULL       0           1                    1                    0              0
           0x0000FFFF00000700
           -1          2022-01-11 14:37:02.279000 NULL       NULL


行号       ID          COLID       T_FLAG T_TOTAL              N_SMAPLE             N_DISTINCT           N_NULL               V_MIN      V_MAX      BLEVEL      N_LEAF_PAGES         N_LEAF_USED_PAGES    CLUSTER_FACTOR N_BUCKETS
---------- ----------- ----------- ------ -------------------- -------------------- -------------------- -------------------- ---------- ---------- ----------- -------------------- -------------------- -------------- -----------
           DATA
           --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
           COL_AVG_LEN LAST_GATHERED              INFO1      INFO2
           ----------- -------------------------- ---------- ----------
2          1074        0           C      20                   20                   20                   0                    0x01000000 0x14000000 0           1                    1                    0              20
           0x1400010008000700010000000100000001000000020000000100000003000000010000000400000001000000050000000100000006000000010000000700000001000000080000000100000009000000010000000A000000010000000B000000010000000C000000010000000D000000010000000E000000010000000F00000001000000100000000100000011000000010000001200000001000000130000000100000014000000
           4           2022-01-11 14:37:02.307000 NULL       NULL
  1. SP_FLUSH_MODIFICATIONS_INFO

定义:
SP_FLUSH_MODIFICATIONS_INFO (
)

功能说明:
更新系统表 SYSMODIFICATIONS 中的数据,将内存中表对象的监控信息记录到系统表 SYSMODIFICATIONS 中。

举例说明:
将内存中表对象的监控信息记录到系统表 SYSMODIFICATIONS 中。

CALL SP_FLUSH_MODIFICATIONS_INFO();
  1. SP_CLEAN_MODIFICATIONS

定义:
SP_CLEAN_MODIFICATIONS (
)

功能说明:
清理系统表 SYSMODIFICATIONS 中的冗余数据,将已经不存在的对象从该系统表中清除。

举例说明:
清除系统表 SYSMODIFICATIONS 中已经不存在的对象。

CALL SP_CLEAN_MODIFICATIONS();

12. 资源监测

  1. SP_CHECK_IDLE_MEM

    定义:
    SP_CHECK_IDLE_MEM (
    )

    功能说明:
    对可用内存空间进行检测,并在低于阈值(对应 INI 参数 IDLE_MEM_THRESHOLD)的情况下打印报警记录到日志,同时报内存不足的异常

    举例说明:
    监测当前系统的内存空间是否低于阀值

CALL SP_CHECK_IDLE_MEM ();
  1. 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');
  1. SF_GET_CMD_RESPONSE_TIME

    定义:
    SF_GET_CMD_RESPONSE_TIME()

    功能说明:
    查看 DM 服务器对用户命令的平均响应时间

    返回值:
    命令的平均响应时间,单位秒

    举例说明:
    在 dm.ini 中 ENABLE_MONITOR 取值不小于 2 的前提下执行

SELECT SYS.SF_GET_CMD_RESPONSE_TIME();
  1. SF_GET_TRX_RESPONSE_TIME

    定义:
    SF_GET_TRX_RESPONSE_TIME()

    功能说明:
    查看事务的平均响应时间

    返回值:
    事务的平均响应时间,单位秒

    举例说明:
    在 dm.ini 中 ENABLE_MONITOR 取值不为 0 的前提下执行

SELECT SYS.SF_GET_TRX_RESPONSE_TIME();
  1. 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();
  1. TABLE_USED_SPACE

    定义:
    BIGINT
    TABLE_USED_SPACE (
    schname varchar(256);
    tabname varchar(256)
    )

    功能说明:
    获取指定表所占用的页数

    参数说明:
    schname:模式名,必须大写
    tabname:表名,必须大写

    返回值:
    表所占用的页数

    举例说明:
    查看 SYSOJBECTS 的所占用的页数

SELECT TABLE_USED_SPACE ('SYS','SYSOBJECTS');

查询结果:

32
  1. 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);

HUGE_TABLE_USED_SPACE ('SYSDBA','TEST');

查询结果:

64
  1. USER_USED_SPACE

    定义:
    BIGINT
    USER_USED_SPACE (
    username varchar(256)
    )

    功能说明:
    获取指定用户所占用的页数,不包括用户占用的 HUGE 表页数

    参数说明:
    username:用户名

    返回值:
    用户所占用的页数

    举例说明:
    查看 SYSDBA 的所占用的页数

SELECT USER_USED_SPACE ('SYSDBA');

查询结果:

64
  1. TS_USED_SPACE

    定义:
    BIGINT
    TS_USED_SPACE (
    tsname varchar(256)

    功能说明:
    获取指定表空间所有文件所占用的页数之和。RLOG 和 ROLL 表空间不支持

    参数说明:
    tsname:表空间名

    返回值:
    表空间占用的页数

    举例说明:
    查看 MAIN 表空间所有文件占用的页数之和。

SELECT TS_USED_SPACE ('MAIN');

查询结果:

16384
  1. DB_USED_SPACE

    定义:
    BIGINT
    DB_USED_SPACE ()

    功能说明:
    获取整个数据库占用的页数

    返回值:
    整个数据库占用的页数

    举例说明:
    查看数据库所占用的页数

SELECT DB_USED_SPACE ();

查询结果:

19712
  1. INDEX_USED_SPACE

    定义:
    BIGINT
    INDEX_USED_SPACE (
    indexid int

    功能说明:
    根据索引 ID,获取指定索引所占用的页数

    参数说明:
    indexid:索引 ID

    返回值:
    索引占用的页数

    举例说明:
    查看索引号为 33554540 的索引所占用的页数

SELECT INDEX_USED_SPACE (33554540);

查询结果:

32
  1. 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
  1. INDEX_USED_SPACE

    定义:
    BIGINT
    INDEX_USED_SPACE (
    schname varchar(256),
    tablename varchar(256),
    nth_index int

    功能说明:
    获取表指定序号的索引占用的页数

    参数说明:
    schname:模式名
    tablename:表名
    nth_index:要获取表的第几个索引

    返回值:

索引占用的页数

举例说明:

查看 SYSDBA 模式下,TEST 表的第二个索引占用的页数

SELECT INDEX_USED_SAPCE ('SYSDBA', 'TEST', 2);

查询结果:

14
  1. INDEX_USED_PAGES

    定义:
    BIGINT
    INDEX_USED_PAGES (
    indexid int

    功能说明:
    根据索引 id,获取指定索引已使用的页数

    参数说明:
    indexid:索引 ID

    返回值:
    索引已使用的页数

    举例说明:
    查看索引号为 33554540 的索引已使用的页数

SELECT INDEX_USED_PAGES (33554540);

查询结果:

14
  1. 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
  1. INDEX_USED_PAGES

    定义:
    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
  1. TABLE_USED_PAGES

    定义:
    BIGINT
    TABLE_USED_PAGES (
    schname varchar(256);
    tabname varchar(256)

)

功能说明:

获取指定表已使用的页数

参数说明:

schname:模式名

tabname:表名

返回值:

表已使用的页数

举例说明:

查看 SYSOJBECTS 已使用的页数

SELECT TABLE_USED_PAGES('SYS','SYSOBJECTS');

查询结果:

14
  1. TS_FREE_SPACE

    定义:
    INT
    TS_FREE_SPACE (
    tsname varchar(256)

    功能说明:
    获取指定表空间可分配的空闲页数。RLOG 和 ROLL 表空间不支持

    参数说明:
    tsname:表空间名

    返回值:
    表空间可分配的空闲页数,包含 TS_RESERVED_SPACE()的预留页数

    举例说明:
    查看 MAIN 表空间可分配的空闲页数

SELECT TS_FREE_SPACE ('MAIN');

查询结果:

 8192
  1. 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
  1. TS_FREE_SPACE_CALC

    定义:
    INT
    TS_FREE_SPACE_CALC (
    tsname varchar(256)

    功能说明:
    重新计算指定表空间可分配的空闲页数。RLOG 和 ROLL 表空间不支持

    参数说明:
    tsname:表空间名

    返回值:
    表空间可分配的空闲页数,包含 TS_RESERVED_SPACE 的预留页数

    举例说明:
    重新计算 MAIN 表空间可分配的空闲页数。

SELECT TS_FREE_SPACE_CALC('MAIN');

查询结果:

8192
  1. 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
  1. ABLE_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');
  1. 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');
  1. SP_SET_SQL_STAT_THRESHOLD

定义:

SP_SET_SQL_STAT_THRESHOLD(

name VARCHAR,

val INT64)

功能说明:

设置语句级资源监控,SQL 监控项生成的条件阀值,当资源大于设置的阀值时才生成统计项。可以设置的监控项为 V$SQL_STAT/V$SQL_STAT_HISTORY 视图中的 5~58 列。该过程只有 DBA 权限才能执行

参数说明:

name:允许为 NULL。需要设置阀值的监控项名字,可选名字为 V$SQL_STAT/V$SQL_STAT_HISTORY 视图中第 5~58 列的列名。当 name 为 NULL 时,val 只能设置为 0 或者-1。0 表示无条件生成历史监控项,-1 表示不生成历史监控项

val:不允许为 NULL 且必须大于等于 0。表示需要设置的阀值

返回值:

举例说明:

SP_SET_SQL_STAT_THRESHOLD('INS_IN_PL_CNT', 60000);
  1. INDEX_USED_PAGES

定义:

BIGINT

INDEX_USED_PAGES (

schema_name varchar(128),

index_name varchar(128)

)

功能说明:

根据模式下的索引名获取指定索引已使用的页数

参数说明:

schema_name:模式名

index_name:索引名

返回值:

指定索引已使用的页数

举例说明:

查看模式 SYSDBA 下索引名为 IDX1 的索引已使用的页数

SELECT INDEX_USED_PAGES('SYSDBA','IDX1');
  1. 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);
  1. TABLE_ROWCOUNT

定义:

INT

TABLE_ROWCOUNT (

schema_name varchar(128),

table_name varchar(128)

)

功能说明:

获取指定模式下指定表的总行数

参数说明:

schema_name:模式名

table_name:表名

返回值:

指定表的总行数

举例说明:

查看模式 SYSDBA 下表 TAB1 的总行数

SELECT TABLE_ROWCOUNT('SYSDBA','TAB1');

13. 类型别名

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

  1. SP_INIT_DTYPE_SYS*****

    定义:
    SP_INIT_DTYPE_SYS (
    create_flag int
    )

    功能说明:
    初始化或清除类型别名运行环境

    参数说明:
    create_flag:1 表示创建,0 表示删除

    返回值:

    举例说明:
    初始化类型别名运行环境

CALL SP_INIT_DTYPE_SYS(1);
  1. SF_CHECK_DTYPE_SYS

    定义:
    int

    SF_CHECK_DTYPE_SYS ()

    功能说明:
    系统类型别名系统的启用状态检测

    返回值:
    0:未启用;1:已启用

    举例说明:
    获得系统类型别名系统的启用状态

SELECT SF_CHECK_DTYPE_SYS;
  1. SP_DTYPE_CREATE*****

    定义:
    SP_DTYPE_CREATE (
    name varchar(32),
    base_name varchar(32),
    len int,
    scale int
    )

    功能说明:
    创建一个类型别名。最多只能创建 100 个类型别名

    参数说明:
    name:类型别名的名称
    base_name:基础数据类型名
    len:基础数据类型长度,当为固定精度类型时,应该设置为 NULL
    scale:基础数据类型刻度

    返回值:

    举例说明:
    创建 VARCHAR(100)的类型别名‘STR’

CALL SP_DTYPE_CREATE('STR', 'VARCHAR', 100, NULL);
  1. SP_DTYPE_DELETE*****

    定义:
    SP_DTYPE_DELETE (
    name varchar(32)
    )

    功能说明:
    删除一个类型别名

    参数说明:
    name:类型别名的名称

    返回值:

    举例说明:
    删除类型别名‘STR’

CALL SP_DTYPE_DELETE('STR');

14. 杂类函数

  1. TO_DATETIME

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

    功能说明:
    将 int 类型值组合并转换成日期时间类型

    参数说明:
    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
  1. 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
  1. CHARTOROWID

    定义:
    BIGINT
    CHARTOROWID (
    C1 varchar(18)

    功能说明:
    将最大 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
  1. 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);
  1. SF_CHECK_SYSTEM_VIEWS

定义:

int

SF_CHECK_SYSTEM_VIEWS()

功能说明:

系统视图的启用状态检测。

返回值:

0:未启用;1:已启用

举例说明:

获得系统视图的启用状态

SELECT SF_CHECK_SYSTEM_VIEWS;
  1. SP_DYNAMIC_VIEW_DATA_CLEAR

定义:

void

SP_DYNAMIC_VIEW_DATA_CLEAR (

VIEW_NAME varchar(128)

)

功能说明:

清空动态性能视图的历史数据,仅对存放历史记录的动态视图起作用。

参数说明:

VIEW_NAME:动态性能视图名

返回值:

举例说明:

清空动态性能视图 V$SQL_HISTORY 的历史数据

SP_DYNAMIC_VIEW_DATA_CLEAR('V$SQL_HISTORY');
  1. 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);
  1. SF_CHECK_DBG_SYS

定义:

int

SF_CHECK_DBG_SYS ()

功能说明:

系统的 DBG 系统包启用状态检测

返回值:

0:未启用;1:已启用

举例说明:

获得 DBG 系统包的启用状态

SELECT SF_CHECK_DBG_SYS;
  1. SP_INIT_GEO_SYS*****

定义:

void

SP_INIT_GEO_SYS(

CREATE_FLAG int

)

功能说明:

创建或删除 DMGEO 系统包

参数说明:

CREATE_FLAG:为 1 时表示创建 DMGEO 包;为 0 表示删除该系统包

返回值:

举例说明:

创建 DMGEO 系统包

SP_INIT_GEO_SYS(1);
  1. SF_CHECK_GEO_SYS

定义:

int

SF_CHECK_GEO_SYS ()

功能说明:

系统的 GEO 系统包启用状态检测

返回值:

0:未启用;1:已启用

举例说明:

获得 GEO 系统包的启用状态

SELECT SF_CHECK_GEO_SYS;
  1. 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);
  1. SP_CREATE_SYSTEM_PACKAGES*****

定义:

void

SP_CREATE_SYSTEM_PACKAGES (

CREATE_FLAG int,

PKGNAME varchar(128)

)

功能说明:

创建或删除除了 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');
  1. SF_CHECK_SYSTEM_PACKAGES

定义:

int

SF_CHECK_SYSTEM_PACKAGES()

功能说明:

系统包的启用状态检测

返回值:

0:未启用;1:已启用

举例说明:

获得系统包的启用状态

SELECT SF_CHECK_SYSTEM_PACKAGES;
  1. SP_INIT_INFOSCH*****

定义:

void

SP_INIT_INFOSCH (

CREATE_FLAG int

)

功能说明:

创建或删除信息模式

参数说明:

CREATE_FLAG:为 1 时表示创建信息模式;为 0 表示删除信息模式

举例说明:

创建信息模式

SP_INIT_INFOSCH (1);
  1. SF_CHECK_INFOSCH

定义:

int

SF_CHECK_INFOSCH ()

功能说明:

系统的信息模式启用状态检测

返回值:

0:未启用;1:已启用

举例说明:

获得系统信息模式的启用状态

SELECT SF_CHECK_INFOSCH;
  1. SP_INIT_CPT_SYS

定义:

int

SP_INIT_CPT_SYS (

FLAG int

)

功能说明:

初始化数据捕获环境

参数说明:

FLAG: 1 表示初始化环境;0 表示删除环境

举例说明:

初始化数据捕获环境

SP_INIT_CPT_SYS(1);
  1. SF_CHECK_CPT_SYS

定义:

int

SF_CHECK_CPT_SYS ()

功能说明:

系统的数据捕获环境启用状态检测

返回值:

0:未启用;1:已启用

举例说明:

获得系统数据捕获环境的启用状态

SELECT SF_CHECK_CPT_SYS;
  1. SF_SI

定义:

CHAR*

SF_SI(

index_sql varchar(8188)

)

功能说明:

输入索引创建语句,查看预计的执行信息

返回值:

索引创建的统计信息,排序区大小的建议值

举例说明:

SELECT SF_SI('create index idx_t1 on t1(c1,c2);');
  1. 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');
  1. 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

功能说明:

获得表达式的内部存储字节

参数说明:

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.曹雪芹,是中国文学史上最伟大也是最复杂的作家,《红楼梦》也是中国文学史上最伟大而又最复杂的作品。《红楼梦》写的是封建贵族的青年贾宝玉、林黛王、薛宝钗之间的恋爱和婚姻悲剧,而且以此为中心,写出了当时具有代表性的贾、王、史、薛四大家族的兴衰,其中又以贾府为中心,揭露了封建社会后期的种种黑暗和罪恶,及其不可克服的内在矛盾,对腐朽的封建统治阶级和行将崩溃的封建制度作了有力的批判,使读者预感到它必然要走向覆灭的命运。本书是一部具有高度思想性和高度艺术性的伟大作品,从本书反映的思想倾向来看,作者具有初步的民主主义思想,他对现实社会包括宫廷及官场的黑暗,封建贵族阶级及其家庭的腐朽,封建的科举制度、婚姻制度、奴婢制度、等级制度,以及与此相适应的社会统治思想即孔孟之道和程朱理学、社会道德观念等等,都进行了深刻的批判并且提出了朦胧的带有初步民主主义性质的理想和主张。这些理想和主张正是当时正在滋长的资本主义经济萌芽因素的曲折反映。');

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个字节

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 行外大字段对应表记录所在页号
  1. 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');
  1. SP_CLOSE_DBLINK

定义:

void

SP_CLOSE_DBLINK(

DBLINK varchar(128)

)

功能说明:

关闭系统缓冲区中指定的空闲的外部链接,若指定的外部链接不处于空闲状态(可通过 V$DBLINK 查询),则不关闭。

参数说明:

DBLINK:指定的待关闭的外部链接名

返回值:

举例说明:

关闭之前创建的外部链接 LINK1。

SP_CLOSE_DBLINK('LINK1');
  1. SP_XA_TRX_PROCESS

定义:

void

SP_XA_TRX_PROCESS(

TRXID bigint,

FLAG boolean

)

功能说明:

指定提交或回滚 TRXID 对应的 XA TRX。指定的 TRXID 对应的 TRX 必须是 XA TRX,且已经通过接口执行过 xa_end 或 xa_prepare 操作,否则报错。

TRXID 可通过 V$TRX 中的 ID 查询。。

参数说明:

TRXID:事务的 ID 号

FLAG:false 表示回滚,true 表示提交

返回值:

  1. GETUTCDATE

定义:

datetime

GETUTCDATE ()

功能说明:

获取当前 UTC 时间

返回值:

当前 UTC 时间

举例说明:

获取当前 UTC 时间

SELECT GETUTCDATE();
  1. SLEEP

定义:

VOID

SLEEP(time dec)

功能说明:

表示让一个线程进入睡眠状态,等待一段时间 time 之后,该线程自动醒来进入到可运行状态。

参数说明:

time:睡眠时间,单位:秒

返回值:

举例说明:

让一个线程睡眠 1 秒钟之后,再醒过来继续运行

sleep(1);
  1. SF_GET_TRIG_EP_SEQ

定义:

int

SF_GET_TRIG_EP_SEQ(id int)

功能说明:

获取 DMDSC 环境下时间触发器执行节点号。

参数说明:

id:时间触发器 id

返回值:

执行节点号

举例说明:

SELECT SF_GET_TRIG_EP_SEQ(117440523);
  1. SF_EXTRACT_BIND_DATA

定义:

VARCHAR

SF_EXTRACT_BIND_DATA(

binddata varbinary,

nth integer,

attr integer

)

功能说明:

获取绑定参数的信息。

参数说明:

binddata:绑定的参数数据

nth:指定参数序号,从 1 开始以 1 为单位递增

attr:为 1 时表示获取参数类型,对于小数类型,不显示精度和标度;为 2 时表示获取参数内容

返回值:

指定参数的参数类型或参数内容。若 binddata 为 NULL 或空值,则返回 NULL;若 nth 大于实际绑定的参数个数且小于等于绑定语句中的参数个数,则返回字符串“NO DATA”;若 nth<=0 或大于绑定语句中的参数个数,则报错;若 attr 不为 1 或 2,则报错。

举例说明:

获取执行号为 1701 的绑定语句中绑定的第 3 个参数的参数类型和参数内容

SELECT SF_EXTRACT_BIND_DATA(BINDDATA, 3, 1), SF_EXTRACT_BIND_DATA(BINDDATA, 3, 2) FROM V$SQL_BINDDATA_HISTORY WHERE EXEC_ID=1701;

查询结果:

DEC 123456789.123
  1. SF_EXTRACT_BIND_DATA_NUM

定义:

INTEGER

SF_EXTRACT_BIND_DATA_NUM(

binddata varbinary,

num integer

)

功能说明:

获取绑定参数的个数。

参数说明:

binddata:绑定的参数数据

num:为 1 时表示获取实际绑定的参数个数;为 2 时表示获取绑定语句中的参数个数

返回值:

参数个数

举例说明:

获取执行号为 1701 的绑定语句实际绑定的参数个数

SELECT SF_EXTRACT_BIND_DATA_NUM(BINDDATA, 1) FROM V$SQL_BINDDATA_HISTORY WHERE EXEC_ID=1701;

查询结果:

17
  1. SP_CREATE_SYS_OBJTYPE

定义:

SP_CREATE_SYS_OBJTYPE(

create_flag int

)

功能说明:

创建或删除内置对象

参数说明:

create_flag:1 表示创建,0 表示删除

返回值:

举例说明:

创建内置对象

CALL SP_CREATE_SYS_OBJTYPE(1);
  1. SP_SET_PLN_BINDED

定义:

SP_SET_PLN_BINDED(

sql_text varchar(8187),

schname varchar(128),

type varchar(12),

binded int

)

或者

SP_SET_PLN_BINDED(

hash_value int,

schid int,

type varchar(12),

binded int

)

功能说明:

绑定或解绑指定的执行计划

参数说明:

sql_text:执行计划对应的 SQL 语句,该语句可以从动态视图 V$SQL_PLAN 中的 SQLSTR 列获得

schname:执行计划的模式名

type:执行计划的类型,可取值:SQL:查询语句类型;PL/OBJ:存储过程或触发器类型

binded:是否绑定执行计划,可取值:0:不绑定;1:绑定

hash_value:执行计划的哈希值,其值可以从动态视图 V$SQL_PLAN 中的 HASH_VALUE 列获得

schid:执行计划的模式 ID

返回值:

举例说明:

绑定 SQL 语句“SELECT * FROM T1”对应的执行计划

CALL SP_SET_PLN_BINDED('SELECT * FROM T1;', 'SYSDBA', 'SQL', 1);

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

  1. SF_GET_BUFFER_LEN

    定义:
    SF_GET_BUFFER_LEN(
    name varchar,
    length int,
    scale int
    )

    参数说明:
    name:某列数据类型名,数据类型为 VARCHAR
    length:列的精度,INT 类型
    scale:列的刻度,INT 类型

    功能说明:
    根据某列数据类型名 name 和列的精度 length 刻度 scale 获取该列存贮在硬盘上的长度

    返回值:
    列存贮长度,数据类型为 INT

    举例说明:

 SELECT SF_GET_BUFFER_LEN('VARCHAR',3,2);

查询结果:

3
  1. 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
  1. 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
  1. 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
  1. SF_GET**_**SQL_DATA_TYPE

    定义:
    SF_GET**_**SQL_DATA_TYPE(
    name varchar
    )

    参数说明:
    name:某列数据类型名,数据类型为 VARCHAR

    功能说明:
    根据某数据类型名返回该数据类型的 SQL 数据类型值

    返回值:
    SQL 数据类型值,数据类型为 INT

    举例说明:

SELECT SF_GET_SQL_DATA_TYPE('INT');

查询结果:

 4
  1. 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
  1. 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
  1. SF_GET_TABLES_TYPE

    定义:
    SF_GET_TABLES_TYPE(
    type varchar
    )

    参数说明:
    type:表的类型名,数据类型为 VARCHAR

    功能说明:
    返回表类型名

    返回值:
    表类型名,数据类型为 VARCHAR

    举例说明:

SELECT SF_GET_TABLES_TYPE('UTAB');

查询结果:

TABLE
  1. CURRENT_SCHID

    定义:
    CURRENT_SCHID()

    参数说明:

    功能说明:
    返回当前会话的当前模式 ID

    返回值:
    当前会话的当前模式 ID

    举例说明:

SELECT CURRENT_SCHID();

查询结果:

150994945
  1. SF_GET_SCHEMA_NAME_BY_ID

    定义:
    SF_GET_SCHEMA_NAME_BY_ID(
    schid int
    )

    参数说明:
    schid:模式 ID,INT 类型

    功能说明:
    根据模式 ID 返回模式名

    返回值:
    模式名,数据类型为 VARCHAR

    举例说明:

SELECT SF_GET_SCHEMA_NAME_BY_ID(150994945);

查询结果:

 SYSDBA
  1. 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	--聚集索引
  1. 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 的排序

    返回值:
    类型长度,数据类型为 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;

查询结果:

 A

NULL
  1. 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;

查询结果:

SP_SET_TIME_ZONE_STRING1

-1
  1. SF_GET_UPD_RULE

    定义:
    SF_GET_UPD_RULE(
    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
  1. 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
  1. SF_GET_OLEDB_TYPE

    定义:
    SF_GET_OLEDB_TYPE(
    name varchar
    )

    参数说明:
    name:类型名,数据类型为 VARCHAR

    功能说明:
    获得 OLEDB 的数据类型长度

    返回值:
    数据类型值,数据类型为 INT

    举例说明:

 SELECT SF_GET_OLEDB_TYPE('INT');

查询结果:

3
  1. 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
  1. SP_GET_TABLE_COUNT

    定义:
    SP_GET_TABLE_COUNT(
    table_id int )

    参数说明:
    table_id:类型长度,数据类型为 INT

    功能说明:
    获得表行数

    返回值:
    表的行数,数据类型为 INT

    举例说明:

SELECT SP_GET_TABLE_COUNT(1097);

查询结果:

 69
  1. SF_OLEDB_TYPE_IS_LONG

    定义:
    SF_OLEDB_TYPE_IS_LONG(
    typename varchar )

    参数说明:
    typename:类型名,数据类型为 VARCHAR

    功能说明:
    判断类型是否较长

    返回值:
    0 或者 1,数据类型为 INT

    举例说明:

SELECT SF_OLEDB_TYPE_IS_LONG('IMAGE');

SELECT SF_OLEDB_TYPE_IS_LONG('INT')

查询结果:

1

0
  1. 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');

查询结果:

1

0
  1. 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');

查询结果:

1

0
  1. SF_GET_TABLE_COUNT

    定义:
    SP_GET_TABLE_COUNT(
    table_id int )

    参数说明:
    table_id:类型长度,数据类型为 INT

    功能说明:
    获得表行数。功能和 SP_GET_TABLE_COUNT 一样

    返回值:
    表的行数,数据类型为 INT

    举例说明:

SELECT SP_GET_TABLE_COUNT(1097);

查询结果:

69
  1. SF_GET_TABLE_COUNT

    定义:
    SP_GET_TABLE_COUNT(
    schema_name varchar(128),
    table_name varchar(128))

    参数说明:
    schema_name:模式名,数据类型为 varchar

    功能说明:
    获得表行数。功能和 SP_GET_TABLE_COUNT 一样

    返回值:
    表的行数,数据类型为 INT

    举例说明:

SELECT SP_GET_TABLE_COUNT(‘SYSDBA’,’T’);

查询结果:

 69

16. BFILE

  1. BFILENAME

    定义:
    BFILE
    BFILENAME(
    dir VARCHAR,
    filename VARCHAR
    )

    参数说明:
    dir:数据库的目录对象名,字符串中不能包含“:”
    filename:操作系统文件名,字符串中不能包含“:”

    功能说明:
    生成一个 BFILE 类型数据

    返回值:
    BFILE 数据类型对象

17. 定制会话级 INI 参数

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

定制后的 ini 参数值可以通过数据字典 SYSUSERINI 查看。

使用时有以下限制:

  1. 用户对会话级参数的定制和取消对于当前会话不会立刻生效,也不会影响当前已经连接的该用户的其他会话。该用户新登录的会话会使用定制的值作为默认值。
  2. MPP 环境下,参数的定制在整个 MPP 环境所有的服务器节点生效。
  3. 对于一个会话级 ini 参数,其取值优先级顺序为: 会话中设置的值 > 用户定制的值 > INI 文件中匹配的值。
  4. DBA 用户拥有定制、查询和删除所有用户 ini 的权限;普通用户拥有定制、查询和删除自身 ini 的权限。

对于不同数据类型的参数要使用不同的系统过程。ini 参数的 VALUE 有三种类型:INT、VARCHAR 和 DOUBLE,分别对应三个系统过程:

  1. SP_SET_USER_INI

    定义:
    SP_SET_USER_INI(
    USER VARCHAR,
    PARA_NAME VARCHAR,
    VALUE INT
    );

    功能说明:
    定制 INT 类型的 ini 参数

    参数说明:
    USER:用户名
    PARA_NAME:参数名
    VALUE:INT 类型参数值

    举例说明:

SP_SET_USER_INI('USER1','SORT_BUF_SIZE','1234');
  1. SP_SET_USER_STRING_INI

    定义:
    SP_SET_USER_STRING_INI(
    USER VARCHAR,
    PARA_NAME VARCHAR,
    VALUE VARCHAR
    );

    功能说明:
    定制 VARCHAR 类型的 ini 参数。

    参数说明:
    USER:用户名
    PARA_NAME:参数名
    VALUE:VARCHAR 类型参数值

  2. 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');
  1. SP_CLEAR_USER_INI

    定义

SP_CLEAR_USER_INI(

USER VARCHAR,

PARA_NAME VARCHAR

);

功能说明:

清除用户 USER 的 PARA_NAME 的参数定制。当 USER 和 PARA_NAME 都等于 NULL 时,表示清除所有用户的所有定制;当 PARA_NAME 为 NULL 时,表示清除用户 USER 的所有定制。不支持 USER 为 NULL,PARA_NAME 不为 NULL 的情况。

参数说明:

USER:用户名

PARA_NAME:参数名

举例说明:

SP_CLEAR_USER_INI('USER2',NULL);

18. 为 SQL 指定 HINT

提供无需修改 SQL 语句但依然能按照指定的 HINT 运行语句的相关功能。

使用时有以下限制:

  1. INI 参数 ENABLE_INJECT_HINT 需设置为 1;
  2. SQL 只能是语法正确的增删改查语句;
  3. SQL 会经过系统格式化,格式化之后的 SQL 和指定的规则名称必须全局唯一;
  4. HINT 一指定,则全局生效;
  5. 系统检查 SQL 匹配时,必须是整条语句完全匹配,不能是语句中子查询匹配;
  6. 可通过 SYSINJECTHINT 视图查看已指定的 SQL 语句和对应的 HINT。
  1. SF_INJECT_HINT

    定义
    VARCHAR
    SF_INJECT_HINT (
    SQL_TEXT TEXT,
    HINT_TEXT TEXT,
    NAME VARCHAR(128),
    DESCRIPTION VARCHAR(256),
    VALIDATE BOOLEAN
    )
    或者
    VARCHAR
    SF_INJECT_HINT (
    SQL_TEXT TEXT,
    HINT_TEXT TEXT,
    NAME VARCHAR(128),
    DESCRIPTION VARCHAR(256),
    VALIDATE BOOLEAN
    FUZZY BOOLEAN
    )

    功能说明:
    对指定 SQL 增加 HINT。

    参数说明:
    SQL_TEXT:要指定 HINT 的 SQL 语句
    HINT_TEXT:要为 SQL 指定的 HINT
    NAME:可以指定名称,或者设为 NULL 让系统自动创建名称
    DESCRIPTION:对规则的详细描述,可为 NULL
    VALIDATA:规则是否生效,可为 NULL,则为默认值 TRUE
    FUZZY:SQL 的匹配规则为精准匹配或模糊匹配。值为 TRUE 或 NULL 时,模糊匹配;值为 FALSE 或缺省时,精准匹配

    返回值:
    执行成功返回名称,执行失败报错误信息

    举例说明:
    为以下语句指定 HINT 为 MMT_SIZE = 4 的精准匹配规则:

SF_INJECT_HINT('SELECT * FROM A;', 'MMT_SIZE(4)', 'TEST_INJECT', 'to test function of injecting hint', TRUE);

或者:

SF_INJECT_HINT('SELECT * FROM A;', 'MMT_SIZE(4)', 'TEST_INJECT', 'to test function of injecting hint', TRUE, FALSE);

为以下语句指定 HINT 为 MMT_SIZE = 4 的模糊匹配规则:

SF_INJECT_HINT('SELECT * FROM A;', 'MMT_SIZE(4)', 'TEST_INJECT', 'to test function of injecting hint', TRUE, TRUE);

或者:

SF_INJECT_HINT('SELECT * FROM A;', 'MMT_SIZE(4)', 'TEST_INJECT', 'to test function of injecting hint', TRUE, NULL);
  1. SF_DEINJECT_HINT

    定义:
    INT
    SF_DEINJECT_HINT (
    NAME VARCHAR(128)
    )

    功能说明:
    对指定 SQL 撤回已增加的 HINT

    参数说明:
    NAME: 要删除的规则名称

    返回值:
    执行成功返回 0,执行失败返回错误码

    举例说明:
    为 SQL 撤回已指定的 HINT:

SF_DEINJECT_HINT('TEST_INJECT');
  1. SF_ALTER_HINT

    定义:
    INT
    SF_ALTER_HINT (
    NAME VARCHAR(128),
    ATTRIBUTE_NAME VARCHAR(12),
    ATTRIBUTE_VALUE VARCHAR(256)
    )

    功能说明:
    修改已指定 HINT 的规则属性

    参数说明:
    NAME: 要修改的规则名称
    ATTRIBUTE_NAME:要修改的属性名
    STATUS:规则是否生效,取值 ENABLED/DISABLED
    NAME:规则名称
    DESCRIPTION:规则的详细描述
    ATTRIBUTE_VALUE:设置的属性值

    返回值:
    执行成功返回 0,执行失败返回错误码

    举例说明:
    让已指定的 HINT 的规则失效:

SF_ALTER_HINT('TEST_INJECT', 'STATUS', 'DISABLED');

19. 时区设置

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

  1. SP_SET_TIME_ZONE

    定义:
    VOID SP_SET_TIME_ZONE(interval day)
    VOID SP_SET_TIME_ZONE(interval day to hour)
    VOID SP_SET_TIME_ZONE(interval day to minute)
    VOID SP_SET_TIME_ZONE(interval day to second)
    VOID SP_SET_TIME_ZONE(interval hour)
    VOID SP_SET_TIME_ZONE(interval hour to minute)
    SP_SET_TIME_ZONE(interval hour to second)

    功能说明:
    设置时区为标准时区加上 interval day 中的小时和分钟。

    返回值:
    无。

    举例说明:

SP_SET_TIME_ZONE(INTERVAL '12 3:9' hour to second);

drop table ttime;

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
  1. 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
  1. 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
  1. SF_TIME_ADD_TIME_ZONE_INTERVAL/ SF_DATETIME_ADD_TIME_ZONE_INTERVAL

    定义:
    VOID SF_TIME_ADD_TIME_ZONE_INTERVAL(time)

    VOID SF_TIME_ADD_TIME_ZONE_INTERVAL(datetime)

    功能说明:
    将指定时间加上 LOCAL 时区时间。

    返回值:
    无。

    举例说明:

select SF_TIME_ADD_TIME_ZONE_INTERVAL('1988-01-01 2:00'); 或

select SF_DATETIME_ADD_TIME_ZONE_INTERVAL('1988-01-01 2:00:36');

查询结果:

1988-01-01 10:00:00 或

1988-01-01 10:00:36

20. XML

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

  1. SF_XMLQUERY

    定义:
    CLOB
    SF_XMLQUERY(
    xmldata CLOB,
    xpath CLOB
    )

    功能说明:

解析 xmldata 并查询指定路径 xpath 下的数据。

参数说明:

xmldata:待解析的 XML 数据

xpath:指定的解析路径

返回值:

解析得到的 XML 数据。

举例说明:

SELECT SF_XMLQUERY('<a><b>b</b></a>', '/a');

查询结果:

<a><b>b</b></a>
  1. XMLQUERY

    定义:
    CLOB
    XMLQUERY(
    xmldata CLOB ,
    xpath VARCHAR2(8188)
    )

    功能说明:
    解析 xmldata 并查询指定路径 xpath 下的数据。

    参数说明:
    xmldata:待解析的 XML 数据
    xpath:指定的解析路径

    返回值:
    解析得到的 XML 数据。

    举例说明:

SELECT XMLQUERY('<a><b>b</b></a>', '/a');

查询结果:

<a><b>b</b></a>
  1. EXISTSNODE

    定义:
    INT
    EXISTSNODE(
    xmldata CLOB,
    xpath VARCHAR2(8188)
    )

    功能说明:
    xmldata 中是否存在指定的路径节点,若存在则返回 1,不存在返回 0。xmldata 或 xpath 为 NULL 或者空串的情况下一律返回 0。

    参数说明:
    xmldata:待解析的 XML 数据
    xpath:指定的路径节点

    返回值:
    1 代表节点存在,0 代表节点不存在。

    举例说明:

 SELECT EXISTSNODE('<a><b>b</b></a>', '/a');

查询结果:

1
  1. EXTRACTVALUE

    定义:
    VARCHAR2
    EXTRACTVALUE(
    xmldata CLOB,
    xpath VARCHAR2(8188)
    )

    功能说明:
    获取 xmldata 中指定路径下的结点值,若路径下不止一个结点,或者结点不是叶子结点,将报错处理。

    参数说明:
    xmldata:待解析的 XML 数据
    xpath:指定的路径

    返回值:
    获取的节点值。

    举例说明:

SELECT EXTRACTVALUE('<a><b>b</b></a>', '/a/b');

查询结果:

b
  1. 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('<a><b>b</b></a>', '/a', '<d>xxx</d>');

查询结果:

<a><b>b</b><d>xxx</d></a>
  1. XMLPARSE

语法格式:

XMLPARSE(DOCUMENT <value_expr> [WELLFORMED])

图例:

XMLPARSE

功能说明:

XMLPARSE 用于解析 XMLTYPE 类型数据,亦即 value_expr 的值。若指定了 WELLFORMED 参数,则不对 XML 内容进行检查,否则会对内容的合法性进行检查,内容不合法则报错。

举例说明:

SELECT XMLPARSE(DOCUMENT '<a>good</a>' WELLFORMED);

查询结果:

<a>good</a>
  1. XMLTABLE

语法格式:

XMLTABLE(<xmlpath> PASSING <xmldata> [COLUMNS <xmlcoldef_lst>])

图例:

XMLTABLE

功能说明:

查询 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('<A><标签 属性="属性名">HELLO</标签></A>');

SELECT X1,X2 FROM T3, XMLTABLE('/A/标签' PASSING T3.C1 COLUMNS X1 VARCHAR2(12) PATH '\@属性', X2 VARCHAR2(12) PATH 'text()');

查询结果:

行号	  X1	X2

------- ------ -----

1		   属性名 HELLO
  1. XMLSEQUENCE

    语法格式:

    XMLSEQUENCE (EXTRACT ( <xmldata>, <xmlpath>) )

    图例:

XMLSEQUENCE

功能说明:
XMLSEQUENCE 用于获取 xmlpath 路径下 xmldata 中不同节点的数据,并将各结点数据按数组表的形式展示出来。

举例说明:

SELECT * FROM TABLE(XMLSEQUENCE(EXTRACT('<a><b>shanghai</b><b>dameng</b></a>','/a/b')));

查询结果:

行号    COLUMN_VALUE

---------- ---------------

1     <b>shanghai</b>

2     <b>dameng</b>
  1. XMLELEMENT

    语法格式:

    XMLELEMENT(<identifier>, <exp> {,<exp>})

    图例:

XMLELEMENT

功能说明:
XMLELEMENT 用于将 exp 构建成 xml 数据类型元素,返回 xmltype 类型数据。

参数说明:
identifier:标识符
exp:字符串类型的数据

举例说明:

SELECT XMLELEMENT(DM, 'TXT1', 'TXT2') FROM DUAL;

查询结果:

行号       XMLELEMENT(DM,'TXT1','TXT2')

---------- --------------------

1          <DM>TXT1TXT2</DM>
  1. XMLFOREST

语法格式:

XMLFOREST(<exp> [AS <identifier>] {,<exp> [AS <identifier>]})

图例:

XMLFOREST

功能说明:
XMLFOREST 用于将 exp 构建成 xml 数据类型元素,返回 xmltype 类型数据。当 exp 为列名时,可以省略标识符,此时将列名作为标识符,并将该列的查询结果作为字符串类型数据,其他情况不能省略标识符。

参数说明:
exp:字符串类型的数据
identifier:标识符

举例说明:

exp 不为列名,不能省略标识符。

SELECT XMLFOREST('TXT1' AS A, 'TXT2' AS B) FROM DUAL;

查询结果:

行号       XMLFOREST('TXT1'ASA,'TXT2'ASB)

---------- --------------------

1          <A>TXT1</A><B>TXT2</B>

exp 为列名,可以省略标识符,省略后将列名作为标识符。

CREATE TABLE TEST(C1 INT,C2 VARCHAR2);

INSERT INTO TEST VALUES(1, 'TXT');

SELECT XMLFOREST(C1,C2) FROM TEST;

查询结果:

行号       XMLFOREST(C1,C2)

---------- --------------------

1          <C1>1</C1><C2>TXT</C2>
  1. XMLAGG

语法格式:

XMLAGG(<XMLdata>[<ORDER BY 子句 >])

图例:

XMLGG

功能说明:
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
  1. DELETEXML

定义:

CLOB

DELETEXML(

xmldata CLOB,

xpath CLOB

)

功能说明:

从 xmldata 中删除 xpath 路径下的结点。

参数说明:

xmldata:XML 数据

xpath:XML 路径

返回值:

删除结点后的 XML 数据。

举例说明:

SELECT deleteXML('<a><b2>地方<c>d</c></b2><b2>dd</b2></a>', 'a/b2/c');

查询结果:

<a><b2>地方</b2><b2>dd</b2></a>
  1. INSERTchildXML

定义:

CLOB

insertchildxml(

xmldata CLOB,

xpath VARCHAR2,

exp VARCHAR2,

insnode CLOB

)

功能说明:

将 insnode 结点插入到 xmldata 的 xpath 路径下,其中 insnode 结点名必须与 exp 保持一致。

参数说明:

xmldata:XML 数据

xpath:XML 路径

exp:结点名

insnode:待插入的 XML 结点

返回值:

已插入结点后的 XML 数据。

举例说明:

SELECT INSERTchildXML('<a><b2>地方</b2><b2>dd</b2></a>', 'a/b2','c', xmltype('<c>china</c>'));

查询结果:

<a><b2>地方<c>china</c></b2><b2>dd<c>china</c></b2></a>
  1. INSERTCHILDXMLAFTER

定义:

CLOB

insertchildxmlafter(

xmldata CLOB,

xpath VARCHAR2,

exp VARCHAR2,

insnode CLOB

)

功能说明:

将 insnode 结点插入到 xmldata 的 xpath 路径下 exp 子结点后面。

参数说明:

xmldata:XML 数据

xpath:XML 路径

exp:xpath 下的子结点名,insonde 在此结点之后插入

insnode:待插入的 XML 结点

返回值:

已插入结点后的 XML 数据。

举例说明:

SELECT INSERTchildXMLafter('<a><b2>地方</b2><b2>dd</b2></a>', 'a/','b2', xmltype('<c>china</c>'));

查询结果:

<a><b2>地方</b2> c>china</c><b2>dd</b2><c>china</c></a>
  1. INSERTCHILDXMLBEFORE

定义:

CLOB

insertchildxmlbefore(

xmldata CLOB,

xpath VARCHAR2,

exp VARCHAR2,

insnode CLOB

)

功能说明:

将 insnode 结点插入到 xmldata 的 xpath 路径下 exp 子结点前面。

参数说明:

xmldata:XML 数据

xpath:XML 路径

exp:xpath 下的子结点名,insonde 在此结点之前插入

insnode:待插入的 XML 结点

返回值:

已插入结点后的 XML 数据。

举例说明:

SELECT INSERTchildXMLbefore('<a><b2>地方</b2><b2>dd</b2></a>', 'a/','b2', xmltype('<c>china</c>'));

查询结果:

<a><c>china</c><b2>地方</b2><c>china</c><b2>dd</b2></a>
  1. INSERTXMLBEFORE

定义:

CLOB

insertxmlafter(

xmldata CLOB,

xpath VARCHAR2,

insnode CLOB

)

功能说明:

将 insnode 结点插入到 xmldata 的 xpath 路径下 exp 结点前面。

参数说明:

xmldata:XML 数据

xpath:XML 路径

insnode:待插入的 XML 结点

返回值:

已插入结点后的 XML 数据。

举例说明:

SELECT INSERTXMLbefore('<a><b2>hello</b2><b2>dd</b2></a>', '/a/b2[1]', xmltype('<c>china</c>'));

查询结果:

<a><c>china</c><b2>hello</b2><b2>dd</b2></a>
  1. INSERTXMLAFTER

定义:

CLOB

insertxmlafter(

xmldata CLOB,

xpath VARCHAR2,

insnode CLOB

)

功能说明:

将 insnode 结点插入到 xmldata 的 xpath 路径下 exp 结点后面。

参数说明:

xmldata:XML 数据

xpath:XML 路径

insnode:待插入的 XML 结点

返回值:

已插入结点后的 XML 数据。

举例说明:

SELECT INSERTXMLafter(xmltype('<a><b2>地方</b2><b2>dd</b2></a>'), 'a/b2', xmltype('<c>china</c>')) from dual;

查询结果:

<a><b2>地方</b2><c>china</c><b2>dd</b2><c>china</c></a>

附录 4 DM 技术支持

如果您在安装或使用 DM 及其相应产品时出现了问题,请首先访问我们的 Web 站点 http://www.dameng.com/。在此站点我们收集整理了安装使用过程中一些常见问题的解决办法,相信会对您有所帮助。

您也可以通过以下途径与我们联系,我们的技术支持工程师会为您提供服务。

武汉达梦数据库股份有限公司

地址:武汉市东湖高新技术开发区高新大道 999 号未来科技大厦 C3 栋 16-19 层

邮编:430073

电话:(+86)027-87588000

传真:(+86)027-87588000-8039

达梦数据库(北京)有限公司

地址:北京市海淀区北三环西路 48 号数码大厦 A 座 905

邮编:100086

电话:(+86)010-51727900

传真:(+86)010-51727983

达梦数据库(上海)有限公司

地址:上海市闸北区江场三路 28 号 301 室

邮编:200436

电话:(+86)021-33932716

传真:(+86)021-33932718

地址:上海市浦东张江高科技园区博霞路 50 号 201 室

邮编:201203

电话:(+86)021-33932717

传真:(+86)021-33932717-801

达梦数据库(广州)有限公司

地址:广州市荔湾区中山七路 330 号荔湾留学生科技园 703 房

邮编:510145

电话:(+86)020-38371832

传真:(+86)020-38371832

达梦数据库(海南)有限公司

地址:海南省海口市玉沙路富豪花园 B 座 1602 室

邮编:570125

电话:(+86)0898-68533029

传真:(+86)0898-68531910

达梦数据库(南宁)办事处

地址:广西省南宁市科园东五路四号南宁软件园五楼

邮编:530003

电话:(+86)0771-2184078

传真:(+86)0771-2184080

达梦数据库(合肥)办事处

地址:合肥市包河区马鞍山路金帝国际城 7 栋 3 单元 706 室

邮编:230022

电话:(+86)0551-3711086

达梦数据库(深圳)办事处 地址:深圳市福田区皇岗路高科利大厦 A 栋 24E

邮编:518033

电话:0755-83658909

传真:0755-83658909

技术服务:

电话:400-991-6599

邮箱:dmtech@dameng.com

微信扫码
分享文档
扫一扫
联系客服