华为云用户手册

  • GLOBAL_CANDIDATE_STATUS GLOBAL_CANDIDATE_STATUS视图显示整个数据库所有实例候选buffer个数,buffer淘汰信息。 表1 GLOBAL_GET_BGWRITER_STATUS字段 名称 类型 描述 node_name text 节点名称。 candidate_slots integer 当前Normal Buffer Pool候选buffer链中页面个数。 get_buf_from_list bigint Normal Buffer Pool,buffer淘汰从候选buffer链中获取页面的次数。 get_buf_clock_sweep bigint Normal Buffer Pool,buffer淘汰从原淘汰方案中获取页面的次数。 seg_candidate_slots integer 当前Segment Buffer Pool候选buffer链中页面个数。 seg_get_buf_from_list bigint Segment Buffer Pool,buffer淘汰从候选buffer链中获取页面的次数。 seg_get_buf_clock_sweep bigint Segment Buffer Pool,buffer淘汰从原淘汰方案中获取页面的次数。 父主题: Utility
  • DB_TAB_SUBPARTITIONS DB_TAB_SUBPARTITIONS视图存储当前用户所能访问的二级分区表的信息。所有用户都可以访问。该视图同时存在于PG_CATALOG和SYS schema下。分布式暂不支持二级分区表,该视图所有字段值为NULL。 表1 DB_TAB_SUBPARTITIONS字段 名称 类型 描述 table_owner character varying(128) 暂不支持,值为NULL。 table_name character varying(128) 暂不支持,值为NULL。 partition_name character varying(128) 暂不支持,值为NULL。 subpartition_name character varying(128) 暂不支持,值为NULL。 high_value text 暂不支持,值为NULL。 high_value_length numeric 暂不支持,值为NULL。 partition_position numeric 暂不支持,值为NULL。 subpartition_position numeric 暂不支持,值为NULL。 tablespace_name character varying(30) 暂不支持,值为NULL。 pct_free numeric 暂不支持,值为NULL。 pct_used numeric 暂不支持,值为NULL。 ini_trans numeric 暂不支持,值为NULL。 max_trans numeric 暂不支持,值为NULL。 initial_extent numeric 暂不支持,值为NULL。 next_extent numeric 暂不支持,值为NULL。 min_extent numeric 暂不支持,值为NULL。 max_extent numeric 暂不支持,值为NULL。 max_size numeric 暂不支持,值为NULL。 pct_increase numeric 暂不支持,值为NULL。 freelists numeric 暂不支持,值为NULL。 freelist_groups numeric 暂不支持,值为NULL。 logging character varying(3) 暂不支持,值为NULL。 compression character varying(8) 暂不支持,值为NULL。 compress_for character varying(30) 暂不支持,值为NULL。 num_rows numeric 暂不支持,值为NULL。 blocks numeric 暂不支持,值为NULL。 empty_blocks numeric 暂不支持,值为NULL。 avg_space numeric 暂不支持,值为NULL。 chain_cnt numeric 暂不支持,值为NULL。 avg_row_len numeric 暂不支持,值为NULL。 sample_size numeric 暂不支持,值为NULL。 last_analyzed date 暂不支持,值为NULL。 buffer_pool character varying(7) 暂不支持,值为NULL。 flash_cache character varying(7) 暂不支持,值为NULL。 cell_flash_cache character varying(7) 暂不支持,值为NULL。 global_stats character varying(3) 暂不支持,值为NULL。 user_stats character varying(3) 暂不支持,值为NULL。 interval character varying(3) 暂不支持,值为NULL。 segment_created character varying(3) 暂不支持,值为NULL。 indexing character varying(3) 暂不支持,值为NULL。 read_only character varying(3) 暂不支持,值为NULL。 inmemory character varying(8) 暂不支持,值为NULL。 inmemory_priority character varying(8) 暂不支持,值为NULL。 inmemory_distribute character varying(15) 暂不支持,值为NULL。 inmemory_compression character varying(17) 暂不支持,值为NULL。 inmemory_duplicate character varying(13) 暂不支持,值为NULL。 inmemory_service character varying(12) 暂不支持,值为NULL。 inmemory_service_name character varying(1000) 暂不支持,值为NULL。 cellmemory character varying(24) 暂不支持,值为NULL。 memoptimize_read character varying(8) 暂不支持,值为NULL。 memoptimize_write character varying(8) 暂不支持,值为NULL。 父主题: 系统视图
  • 特性约束 仅支持针对Unique SQL ID添加补丁,如果存在Unique SQL ID冲突,用于Hint调优的SQL PATCH可能影响性能,但不影响语义正确性。 仅支持不改变SQL语义的Hint作为PATCH,不支持SQL改写。 不支持逻辑备份、恢复。 不支持在DN上创建SQL PATCH。 仅初始用户、运维管理员、监控管理员、系统管理员用户有权限执行。 库之间不共享,创建SQL PATCH时需要连接目标库。如果创建SQL PATCH的CN被剔除并触发全量Build,则会继承全量Build的目标CN中的SQL PATCH,因此建议在各个CN上尽量都创建对应的SQL PATCH。 CN之间由于Unique SQL ID不同,不共享SQL PATCH,需要用户手动在不同的CN上创建对应的SQL PATCH。 限制在存储过程内的SQL PATCH和全局的SQL PATCH不允许同时存在。 使用PREPARE + EXECUTE语法执行的预编译语句执行不支持使用SQL PATCH。 SQL PATCH不建议在数据库中长期使用,只应该作为临时规避方法。遇到内核问题所导致的特定语句触发数据库服务不可用问题,以及使用Hint进行调优的场景,需要尽快修改业务或升级内核版本解决问题。并且升级后由于Unique SQL ID生成方法可能变化,可能导致规避方法失效。 当前,除DML语句之外,其他SQL语句(如CREATE TABLE等)的Unique SQL ID是对语句文本直接哈希生成的,所以对于此类语句,SQL PATCH对大小写、空格、换行等敏感,即不同的文本的语句,即使语义相同,仍然需要对应不同的SQL PATCH。对于DML,则同一个SQL PATCH可以对不同入参的语句生效,并且忽略大小写和空格。
  • 相关链接 SQL PATCH相关系统函数、系统表、系统视图和接口函数见下表。 表1 SQL PATCH相关系统函数、系统表、系统视图和接口函数介绍 类别 名称 说明 系统函数 global_sql_patch_func() 全局各个节点上的SQL PATCH信息,用于返回global_sql_patch视图的结果。 系统表 GS_SQL_PATCH GS_SQL_PATCH系统表存储所有SQL_PATCH的状态信息。 系统视图 GLOBAL_SQL_PATCH GLOBAL_SQL_PATCH视图存放所有SQL PATCH的信息,该视图仅在pg_catalog模式下存在。 接口函数 DBE_SQL_UTIL Schema DBE_SQL_UTIL.create_hint_sql_patch create_hint_sql_patch是用于在当前建连的CN上创建调优SQL PATCH的接口函数,返回执行是否成功。 DBE_SQL_UTIL.create_abort_sql_patch create_abort_sql_patch是用于在当前建连的CN上创建避险SQL PATCH的接口函数,返回执行是否成功。 DBE_SQL_UTIL.drop_sql_patch drop_sql_patch是用于在当前建连的CN上删除SQL PATCH的接口函数,返回执行是否成功。 DBE_SQL_UTIL.enable_sql_patch enable_sql_patch是用于在当前建连的CN上开启SQL PATCH的接口函数,返回执行是否成功。 DBE_SQL_UTIL.disable_sql_patch disable_sql_patch是用于在当前建连的CN上禁用SQL PATCH的接口函数,返回执行是否成功。 DBE_SQL_UTIL.show_sql_patch show_sql_patch是用于显示给定patch_name对应的SQL PATCH的接口函数,返回运行结果。 DBE_SQL_UTIL.create_hint_sql_patch create_hint_sql_patch是用于创建调优SQL PATCH的接口函数,返回执行是否成功。本函数是原函数的重载函数,支持通过parent_unique_sql_id值限制hint patch的生效范围。 DBE_SQL_UTIL.create_abort_sql_patch create_abort_sql_patch是用于创建避险SQL PATCH的接口函数,返回执行是否成功。本函数是原函数的重载函数,支持通过parent_unique_sql_id值限制abort patch的生效范围。 DBE_SQL_UTIL.create_remote_hint_sql_patch create_remote_hint_sql_patch是用于指定CN创建调优SQL PATCH的接口函数,返回执行是否成功。 DBE_SQL_UTIL.create_remote_abort_sql_patch create_remote_abort_sql_patch是用于指定CN创建避险SQL PATCH的接口函数,返回执行是否成功。 DBE_SQL_UTIL.drop_remote_sql_patch drop_remote_sql_patch是用于指定CN删除SQL PATCH的接口函数,返回执行是否成功。 DBE_SQL_UTIL.enable_remote_sql_patch enable_remote_sql_patch是用于指定CN开启SQL PATCH的接口函数,返回执行是否成功。 DBE_SQL_UTIL.disable_remote_sql_patch disable_remote_sql_patch是用于指定CN禁用SQL PATCH的接口函数,返回执行是否成功。
  • GLOBAL_ACTIVE_SESSION GLOBAL_ACTIVE_SESSION视图显示所有节点上的ACTIVE SESSION PROFILE内存中的样本的汇总。 表1 GLOBAL_ACTIVE_SESSION字段 名称 类型 描述 node_name text 节点名称。 sampleid bigint 采样ID。 sample_time timestamp without time zone 采样的时间。 need_flush_sample boolean 该样本是否需要刷新的磁盘。 databaseid oid 数据库ID。 thread_id bigint 线程的ID。 sessionid bigint 会话的ID。 start_time timestamp without time zone 会话的启动时间。 event text 具体的事件名称。 lwtid integer 当前线程的轻量级线程号。 psessionid bigint streaming线程的父线程。 tlevel integer streaming线程的层级。与执行计划的层级(id)相对应。 smpid integer smp执行模式下并行线程的并行编号。 userid oid session用户的id。 application_name text 应用的名称。 client_addr inet client端的地址。 client_hostname text client端的名称。 client_port integer 客户端用于与后端通讯的TCP端口号。 query_id bigint debug query id unique_query_id bigint unique query id user_id oid unique query的key中的user_id。 cn_id integer cn id,在DN上表示该unique sql来之该CN节点,unique query的key中的cn_id。 unique_query text 规范化后的UniqueSQL文本串。 locktag text 会话等待锁信息,可通过locktag_decode解析。 lockmode text 会话等待锁模式。 block_sessionid bigint 如果会话正在等待锁,阻塞该会话获取锁的会话标识。 final_block_sessionid bigint 表示源头阻塞会话id。 wait_status text 描述event列的更多详细信息。 global_sessionid text 全局会话ID。 xact_start_time timestamp with time zone 事务开始时间。 query_start_time timestamp with time zone 语句开始执行时间。 state text 当前语句状态。 可能取值为:active, idle in transaction, fastpath function call, idle in transaction (aborted), disabled, retrying。 父主题: Session/Thread
  • 参数说明 关键字PUBLIC表示一个隐式定义的拥有所有角色的组。 权限类别和参数说明,请参见GRANT的。 任何特定角色拥有的特权包括直接授予该角色的特权、从该角色作为其成员的角色中得到的权限以及授予给PUBLIC的权限。因此,从PUBLIC收回SELECT特权并不一定会意味着所有角色都会失去在该对象上的SELECT特权,那些直接被授予的或者通过另一个角色被授予的角色仍然会拥有它。类似地,从一个用户收回SELECT后,如果PUBLIC仍有SELECT权限,该用户还是可以使用SELECT。 指定GRANT OPTION FOR时,只撤销对该权限授权的权力,而不撤销该权限本身。 如用户A拥有某个表的UPDATE权限,及WITH GRANT OPTION选项,同时A把这个权限赋予了用户B,则用户B持有的权限称为依赖性权限。当用户A持有的权限或者授权选项被撤销时,依赖性权限仍然存在,但如果声明了CASCADE,则所有依赖性权限都被撤销。 一个用户只能撤销由它自己直接赋予的权限。例如,如果用户A被指定授权(WITH ADMIN OPTION)选项,且把一个权限赋予了用户B,然后用户B又赋予了用户C,则用户A不能直接将C的权限撤销。但是,用户A可以撤销用户B的授权选项,并且使用CASCADE。这样,用户C的权限就会自动被撤销。另外一个例子:如果A和B都赋予了C同样的权限,则A可以撤销他自己的授权选项,但是不能撤销B的,因此C仍然拥有该权限。 如果执行REVOKE的角色持有的权限是通过多层成员关系获得的,则具体是哪个包含的角色执行的该命令是不确定的。在这种场合下,建议的方法是使用SET ROLE成为特定角色,然后执行REVOKE,否则可能导致删除了不想删除的权限,或者是任何权限都没有删除。
  • 语法格式 回收指定表或视图上权限。 1 2 3 4 5 6 7 REVOKE [ GRANT OPTION FOR ] { { SELECT | INSERT | UPDATE | DELETE | TRUNCATE | REFERENCES | ALTER | DROP | COMMENT | INDEX | VACUUM }[, ...] | ALL [ PRIVILEGES ] } ON { [ TABLE ] table_name [, ...] | ALL TABLES IN SCHEMA schema_name [, ...] } FROM { [ GROUP ] role_name | PUBLIC } [, ...] [ CASCADE | RESTRICT ]; 回收表上指定字段权限。 1 2 3 4 5 6 REVOKE [ GRANT OPTION FOR ] { {{ SELECT | INSERT | UPDATE | REFERENCES | COMMENT } ( column_name [, ...] )}[, ...] | ALL [ PRIVILEGES ] ( column_name [, ...] ) } ON [ TABLE ] table_name [, ...] FROM { [ GROUP ] role_name | PUBLIC } [, ...] [ CASCADE | RESTRICT ]; 回收指定序列上权限。 1 2 3 4 5 6 7 REVOKE [ GRANT OPTION FOR ] { { SELECT | UPDATE | ALTER | DROP | COMMENT }[, ...] | ALL [ PRIVILEGES ] } ON { [ SEQUENCE ] sequence_name [, ...] | ALL SEQUENCES IN SCHEMA schema_name [, ...] } FROM { [ GROUP ] role_name | PUBLIC } [, ...] [ CASCADE | RESTRICT ]; 回收指定数据库上权限。 1 2 3 4 5 6 REVOKE [ GRANT OPTION FOR ] { { CREATE | CONNECT | TEMPORARY | TEMP | ALTER | DROP | COMMENT } [, ...] | ALL [ PRIVILEGES ] } ON DATABASE database_name [, ...] FROM { [ GROUP ] role_name | PUBLIC } [, ...] [ CASCADE | RESTRICT ]; 回收指定域上权限。 1 2 3 4 5 REVOKE [ GRANT OPTION FOR ] { USAGE | ALL [ PRIVILEGES ] } ON DOMAIN domain_name [, ...] FROM { [ GROUP ] role_name | PUBLIC } [, ...] [ CASCADE | RESTRICT ]; 回收指定客户端加密主密钥上的权限。 1 2 3 4 5 REVOKE [ GRANT OPTION FOR ] { { USAGE | DROP } [, ...] | ALL [PRIVILEGES] } ON CLIENT_MASTER_KEYS client_master_keys_name [, ...] FROM { [ GROUP ] role_name | PUBLIC } [, ...] [ CASCADE | RESTRICT ]; 回收指定列加密密钥上的权限。 1 2 3 4 5 REVOKE [ GRANT OPTION FOR ] { { USAGE | DROP } [, ...] | ALL [PRIVILEGES]} ON COLUMN_ENCRYPTION_KEYS column_encryption_keys_name [, ...] FROM { [ GROUP ] role_name | PUBLIC } [, ...] [ CASCADE | RESTRICT ]; 回收指定目录上权限。 1 2 3 4 5 REVOKE [ GRANT OPTION FOR ] { { READ | WRITE | ALTER | DROP } [, ...] | ALL [ PRIVILEGES ] } ON DIRECTORY directory_name [, ...] FROM { [ GROUP ] role_name | PUBLIC } [, ...] [ CASCADE | RESTRICT ]; 回收指定外部数据源上权限。 1 2 3 4 5 REVOKE [ GRANT OPTION FOR ] { USAGE | ALL [ PRIVILEGES ] } ON FOREIGN DATA WRAPPER fdw_name [, ...] FROM { [ GROUP ] role_name | PUBLIC } [, ...] [ CASCADE | RESTRICT ]; 回收指定外部服务器上权限。 1 2 3 4 5 REVOKE [ GRANT OPTION FOR ] { { USAGE | ALTER | DROP | COMMENT } [, ...] | ALL [ PRIVILEGES ] } ON FOREIGN SERVER server_name [, ...] FROM { [ GROUP ] role_name | PUBLIC } [, ...] [ CASCADE | RESTRICT ]; 回收指定函数上权限。 1 2 3 4 5 6 REVOKE [ GRANT OPTION FOR ] { { EXECUTE | ALTER | DROP | COMMENT } [, ...] | ALL [ PRIVILEGES ] } ON { FUNCTION {function_name ( [ {[ argmode ] [ arg_name ] arg_type} [, ...] ] )} [, ...] | ALL FUNCTIONS IN SCHEMA schema_name [, ...] } FROM { [ GROUP ] role_name | PUBLIC } [, ...] [ CASCADE | RESTRICT ]; 回收指定存储过程上权限。 1 2 3 4 5 6 REVOKE [ GRANT OPTION FOR ] { { EXECUTE | ALTER | DROP | COMMENT } [, ...] | ALL [ PRIVILEGES ] } ON { PROCEDURE {proc_name ( [ {[ argmode ] [ arg_name ] arg_type} [, ...] ] )} [, ...] | ALL PROCEDURE IN SCHEMA schema_name [, ...] } FROM { [ GROUP ] role_name | PUBLIC } [, ...] [ CASCADE | RESTRICT ]; 回收指定过程语言上权限。 1 2 3 4 5 REVOKE [ GRANT OPTION FOR ] { USAGE | ALL [ PRIVILEGES ] } ON LANGUAGE lang_name [, ...] FROM { [ GROUP ] role_name | PUBLIC } [, ...] [ CASCADE | RESTRICT ]; 回收指定大对象上权限。 1 2 3 4 5 REVOKE [ GRANT OPTION FOR ] { { SELECT | UPDATE } [, ...] | ALL [ PRIVILEGES ] } ON LARGE OBJECT loid [, ...] FROM { [ GROUP ] role_name | PUBLIC } [, ...] [ CASCADE | RESTRICT ]; 回收指定模式上权限。 1 2 3 4 5 REVOKE [ GRANT OPTION FOR ] { { CREATE | USAGE | ALTER | DROP | COMMENT } [, ...] | ALL [ PRIVILEGES ] } ON SCHEMA schema_name [, ...] FROM { [ GROUP ] role_name | PUBLIC } [, ...] [ CASCADE | RESTRICT ]; 回收指定表空间上权限。 1 2 3 4 5 REVOKE [ GRANT OPTION FOR ] { { CREATE | ALTER | DROP | COMMENT } [, ...] | ALL [ PRIVILEGES ] } ON TABLESPACE tablespace_name [, ...] FROM { [ GROUP ] role_name | PUBLIC } [, ...] [ CASCADE | RESTRICT ]; 回收指定类型上权限。 1 2 3 4 5 REVOKE [ GRANT OPTION FOR ] { { USAGE | ALTER | DROP | COMMENT } [, ...] | ALL [ PRIVILEGES ] } ON TYPE type_name [, ...] FROM { [ GROUP ] role_name | PUBLIC } [, ...] [ CASCADE | RESTRICT ]; 回收指定子集群上权限 1 2 3 4 5 REVOKE [ GRANT OPTION FOR ] { { CREATE | USAGE | COMPUTE | ALTER | DROP } [, ...] | ALL [ PRIVILEGES ] } ON NODE GROUP group_name [, ...] FROM { [ GROUP ] role_name | PUBLIC } [, ...] [ CASCADE | RESTRICT ]; 回收子集群的create权限时,会默认回收usage和compute权限。 回收directory对象的权限。 1 2 3 4 5 REVOKE [ GRANT OPTION FOR ] { { READ | WRITE } [, ...] | ALL [PRIVILEGES] } ON DIRECTORY directory_name [, ...] FROM {[GROUP] role_name | PUBLIC} [, ...] [ CASCADE | RESTRICT ]; 按角色回收角色上的权限。 1 2 3 REVOKE [ ADMIN OPTION FOR ] role_name [, ...] FROM role_name [, ...] [ CASCADE | RESTRICT ]; 回收角色上的sysadmin权限。 1 REVOKE ALL { PRIVILEGES | PRIVILEGE } FROM role_name; 回收ANY权限。 1 2 3 4 5 6 7 8 REVOKE [ ADMIN OPTION FOR ] { CREATE ANY TABLE | ALTER ANY TABLE | DROP ANY TABLE | SELECT ANY TABLE | INSERT ANY TABLE | UPDATE ANY TABLE | DELETE ANY TABLE | CREATE ANY SEQUENCE | CREATE ANY INDEX | CREATE ANY FUNCTION | EXECUTE ANY FUNCTION | CREATE ANY TYPE | ALTER ANY TYPE | DROP ANY TYPE | ALTER ANY SEQUENCE | DROP ANY SEQUENCE | SELECT ANY SEQUENCE | ALTER ANY INDEX | DROP ANY INDEX | CREATE ANY SYNONYM | DROP ANY SYNONYM | CREATE ANY TRIGGER | ALTER ANY TRIGGER | DROP ANY TRIGGER } [, ...] FROM [ GROUP ] role_name [, ...];
  • 约束说明 使用summit/id_submit创建一个新job后,该job从属于当前coordinator(即:该job仅在当前coordinator上调度和执行),其他coordinator不会调度和执行该job,如果出现coordinator节点故障,无法保证job正常执行。建议使用PKG_SERVICE.SUBMIT_ON_NODES接口,将job执行节点指定为CCN,以保证节点故障时job仍然可用。不是所有coordinator都可以查看、修改、删除其他CN创建的job。 job只能通过dbe_task高级包提供的接口进行创建、更新、删除操作,因为高级包的接口中会考虑所有CN间job信息的同步和pg_job与pg_job_proc表主键的关联操作,如果通过DML语句对pg_job表进行增删改,会导致job信息在CN间不一致和系统表无法关联变更的混乱问题,会严重影响job内部的管理。 由于用户创建的每个任务和CN绑定,当任务运行过程中,该CN故障,则该任务的状态无法实时刷新,仍为‘r’状态,需要等CN启动正常后才能刷新为‘s’状态。如果在任务未执行时CN故障,则该CN上的任务都得不到正常的调度和执行,需要人为干预让该CN恢复正常,或进行节点删除/替换,job才能正常的调度和执行。 job在定时执行过程中,需要在当前job所属的CN上实时更新该job的运行状态、最近执行开始时间、最近执行结束时间、下次开始时间、失败次数(如果job执行失败)等相关参数信息到pg_job系统表中,并同步到其他CN,保证job信息的一致性。如果其他CN存在节点故障,那么job所属CN会同步超时重发的操作,导致job执行时间变长,但CN间同步超时失败后,原CN上pg_job表中job的相关信息仍然能正常更新,且job能正常执行成功。当故障CN恢复正常后,可能出现该CN上pg_job表中当前job的执行时间、运行状态等参数与原CN上不一致的情况,需要原CN上再次执行该job后才能保证job信息的同步。 对于并发同时有多个job到达执行时间的场景,由于会为每个job创建一个线程来执行job,由于系统内部启动每个线程的时间会有延迟,因此会导致同时并发执行的job开始时间有延迟,每个job的延迟时间在0.1ms左右。
  • 模式匹配操作符 数据库提供了三种独立的实现模式匹配的方法:SQL LIKE操作符、SIMILAR TO操作符和POSIX-风格的正则表达式。除了这些基本的操作符外,还有一些函数可用于提取或替换匹配子串并在匹配位置分离一个串。 LIKE 描述:判断字符串是否能匹配上LIKE后的模式字符串。如果字符串与提供的模式匹配,则LIKE表达式返回为真(NOT LIKE表达式返回假),否则返回为假(NOT LIKE表达式返回真)。 匹配规则: 此操作符只有在它的模式匹配整个串的时候才能成功。如果要匹配在串内任何位置的序列,该模式必须以百分号开头和结尾。 下划线 (_)代表(匹配)任何单个字符; 百分号(%)代表任意串的通配符。 要匹配文本里的下划线或者百分号,在提供的模式里相应字符必须前导逃逸字符。逃逸字符的作用是禁用元字符的特殊含义,缺省的逃逸字符是反斜线,也可以用ESCAPE子句指定一个不同的逃逸字符。 要匹配逃逸字符本身,写两个逃逸字符。例如要写一个包含反斜线的模式常量,需要在SQL语句里写两个反斜线。 参数standard_conforming_strings设置为off时,在文串常量中写的任何反斜线都需要被双写。因此,写一个匹配单个反斜线的模式实际上要在语句里写四个反斜线。(可以通过用ESCAPE选择一个不同的逃逸字符来避免这种情况,这样反斜线就不再是LIKE的特殊字符了。但仍然是字符文本分析器的特殊字符,所以需要两个反斜线。)也可以通过写ESCAPE ''的方式不选择逃逸字符,这样可以有效地禁用逃逸机制,但是没有办法关闭下划线和百分号在模式中的特殊含义。 关键字ILIKE可以用于替换LIKE,区别是LIKE大小写敏感,ILIKE大小写不敏感。 操作符~~等效于LIKE,操作符~~*等效于ILIKE。 示例: 1 2 3 4 5 gaussdb=# SELECT 'abc' LIKE 'abc' AS RESULT; result ----------- t (1 row) 1 2 3 4 5 gaussdb=# SELECT 'abc' LIKE 'a%' AS RESULT; result ----------- t (1 row) 1 2 3 4 5 gaussdb=# SELECT 'abc' LIKE '_b_' AS RESULT; result ----------- t (1 row) 1 2 3 4 5 gaussdb=# SELECT 'abc' LIKE 'c' AS RESULT; result ----------- f (1 row) SIMILAR TO 描述:SIMILAR TO操作符根据自己的模式是否匹配给定串而返回真或者假。他和LIKE非常类似,只不过他使用SQL标准定义的正则表达式理解模式。 匹配规则: 和LIKE一样,此操作符只有在它的模式匹配整个串的时候才能成功。如果要匹配在串内任何位置的序列,该模式必须以百分号开头和结尾。 下划线 (_)代表(匹配)任何单个字符; 百分号(%)代表任意串的通配符。 SIMILAR TO也支持下面这些从POSIX正则表达式借用的模式匹配元字符。 元字符 含义 | 表示选择(两个候选之一) * 表示重复前面的项零次或更多次 + 表示重复前面的项一次或更多次 ? 表示重复前面的项零次或一次 {m} 表示重复前面的项刚好m次 {m,} 表示重复前面的项m次或更多次 {m,n} 表示重复前面的项至少m次并且不超过n次 () 把多个项组合成一个逻辑项 [...] 声明一个字符类,就像POSIX正则表达式一样 前导逃逸字符可以禁止所有这些元字符的特殊含义。逃逸字符的使用规则和LIKE一样。 正则表达式函数: 支持使用函数substring(string from pattern for escape)截取匹配SQL正则表达式的子字符串。 示例: 1 2 3 4 5 gaussdb=# SELECT 'abc' SIMILAR TO 'abc' AS RESULT; result ----------- t (1 row) 1 2 3 4 5 gaussdb=# SELECT 'abc' SIMILAR TO 'a' AS RESULT; result ----------- f (1 row) 1 2 3 4 5 gaussdb=# SELECT 'abc' SIMILAR TO '%(b|d)%' AS RESULT; result ----------- t (1 row) 1 2 3 4 5 gaussdb=# SELECT 'abc' SIMILAR TO '(b|c)%' AS RESULT; result ----------- f (1 row) POSIX正则表达式 描述:正则表达式是一个字符序列,它是定义一个串集合 (一个正则集)的缩写。 如果一个串是正则表达式描述的正则集中的一员时, 我们就说这个串匹配该正则表达式。 POSIX正则表达式提供了比LIKE和SIMILAR TO操作符更强大的含义。表1列出了所有可用于POSIX正则表达式模式匹配的操作符。 表1 正则表达式匹配操作符 操作符 描述 例子 ~ 匹配正则表达式,大小写敏感 'thomas' ~ '.*thomas.*' ~* 匹配正则表达式,大小写不敏感 'thomas' ~* '.*Thomas.*' !~ 不匹配正则表达式,大小写敏感 'thomas' !~ '.*Thomas.*' !~* 不匹配正则表达式,大小写不敏感 'thomas' !~* '.*vadim.*' 匹配规则: 与LIKE不同,正则表达式允许匹配串里的任何位置,除非该正则表达式显式地挂接在串的开头或者结尾。 除了上文提到的元字符外, POSIX正则表达式还支持下列模式匹配元字符。 元字符 含义 ^ 表示串开头的匹配 $ 表示串末尾的匹配 . 匹配任意单个字符 正则表达式函数: POSIX正则表达式支持下面函数。 substring(string from pattern)函数提供了抽取一个匹配POSIX正则表达式模式的子串的方法。 regexp_count(string text, pattern text [, position int [, flags text]])函数提供了获取匹配POSIX正则表达式模式的子串数量的功能。 regexp_instr(string text, pattern text [, position int [, occurrence int [, return_opt int [, flags text]]]])函数提供了获取匹配POSIX正则表达式模式子串位置的功能。 regexp_substr(string text, pattern text [, position int [, occurrence int [, flags text]]])函数提供了抽取一个匹配POSIX正则表达式模式的子串的方法。 regexp_replace(string, pattern, replacement [,flags ])函数提供了将匹配POSIX正则表达式模式的子串替换为新文本的功能。 regexp_matches(string text, pattern text [, flags text])函数返回一个文本数组,该数组由匹配一个POSIX正则表达式模式得到的所有被捕获子串构成。 regexp_split_to_table(string text, pattern text [, flags text])函数把一个POSIX正则表达式模式当作一个定界符来分离一个串。 regexp_split_to_array(string text, pattern text [, flags text ])和regexp_split_to_table类似,是一个正则表达式分离函数,不过它的结果以一个text数组的形式返回。 正则表达式分离函数会忽略零长度的匹配,这种匹配发生在串的开头或结尾或者正好发生在前一个匹配之后。这和正则表达式匹配的严格定义是相悖的,后者由regexp_matches实现,但是通常前者是实际中最常用的行为。 示例: 1 2 3 4 5 gaussdb=# SELECT 'abc' ~ 'Abc' AS RESULT; result -------- f (1 row) 1 2 3 4 5 gaussdb=# SELECT 'abc' ~* 'Abc' AS RESULT; result -------- t (1 row) 1 2 3 4 5 gaussdb=# SELECT 'abc' !~ 'Abc' AS RESULT; result -------- t (1 row) 1 2 3 4 5 gaussdb=# SELECT 'abc'!~* 'Abc' AS RESULT; result -------- f (1 row) 1 2 3 4 5 gaussdb=# SELECT 'abc' ~ '^a' AS RESULT; result -------- t (1 row) 1 2 3 4 5 gaussdb=# SELECT 'abc' ~ '(b|d)'AS RESULT; result -------- t (1 row) 1 2 3 4 5 gaussdb=# SELECT 'abc' ~ '^(b|c)'AS RESULT; result -------- f (1 row) 虽然大部分的正则表达式搜索都能很快地执行,但是仍可能被人为地处理成需要任意长的时间和任意量的内存。不建议从非安全模式来源接受正则表达式搜索模式,如果必须这样做,建议加上语句超时限制。使用SIMILAR TO模式的搜索具有同样的安全性危险, 因为SIMILAR TO提供了很多和POSIX-风格正则表达式相同的能力。LIKE搜索比其他两种选项简单得多,因此在接受非安全模式来源搜索时要更安全些。 父主题: 函数和操作符
  • GLOBAL_STAT_USER_TABLES 显示各节点所有Schema中用户自定义普通表的状态信息(在CN节点使用。显示DN节点用户自定义普通表的状态信息,不进行汇总)。 表1 GLOBAL_STAT_USER_TABLES字段 名称 类型 描述 node_name name 节点名称。 relid oid 表的OID。 schemaname name 该表所在的Schema名。 relname name 表名。 seq_scan bigint 该表发起的顺序扫描数。 seq_tup_read bigint 顺序扫描抓取的活跃行数。 idx_scan bigint 该表发起的索引扫描数。 idx_tup_fetch bigint 索引扫描抓取的活跃行数。 n_tup_ins bigint 插入行数。 n_tup_upd bigint 更新行数。 n_tup_del bigint 删除行数。 n_tup_hot_upd bigint HOT更新行数(即没有更新索引列的行数)。 n_live_tup bigint 估计活跃行数。 n_dead_tup bigint 估计不活跃行数。 last_vacuum timestamp with time zone 最后一次该表是手动清理的(不计算VACUUM FULL)时间。 last_autovacuum timestamp with time zone 上次被autovacuum守护线程清理的时间。 last_analyze timestamp with time zone 上次手动分析该表的时间。 last_autoanalyze timestamp with time zone 上次被autovacuum守护线程分析的时间。 vacuum_count bigint 该表被手动清理的次数(不计算VACUUM FULL)。 autovacuum_count bigint 该表被autovacuum清理的次数。 analyze_count bigint 该表被手动分析的次数。 autoanalyze_count bigint 该表被autovacuum守护线程分析的次数。 父主题: Object
  • PG_TOTAL_USER_RESOURCE_INFO PG_TOTAL_USER_RESOURCE_INFO视图显示所有用户资源使用情况,需要使用管理员用户进行查询。此视图在GUC参数use_workload_manager为on时才有效。其中,IO相关监控项在参数enable_logical_io_statistics为on时才有效。 表1 PG_TOTAL_USER_RESOURCE_INFO字段 名称 类型 描述 username name 用户名。 used_memory integer 正在使用的内存大小,单位MB。 total_memory integer 可以使用的内存大小,单位MB。值为0表示未限制最大可用内存,其限制取决于数据库最大可用内存。 used_cpu double precision 正在使用的CPU核数(仅统计复杂作业CPU使用 情况,且该值为相关控制组的CPU使用统计值)。 total_cpu integer 在该机器节点上,用户关联控制组的CPU核数总和。 used_space bigint 已使用的永久表存储空间大小,单位KB。 total_space bigint 可使用的永久表存储空间大小,单位KB,值为-1表示未限制最大存储空间。 used_temp_space bigint 已使用的临时空间大小,单位KB。 total_temp_space bigint 可使用的临时空间总大小,单位KB,值为-1表示未限制。 used_spill_space bigint 已使用的算子落盘空间大小,单位KB。 total_spill_space bigint 可使用的算子落盘空间总大小,单位KB,值为-1表示未限制。 read_kbytes bigint CN:过去5秒内,该用户在所有DN上复杂作业read的字节总数(单位KB)。 DN:实例启动至当前时间为止,该用户复杂作业read的字节总数(单位KB)。 write_kbytes bigint CN:过去5秒内,该用户在所有DN上复杂作业write的字节总数(单位KB)。 DN:实例启动至当前时间为止,该用户复杂作业write的字节总数(单位KB)。 read_counts bigint CN:过去5秒内,该用户在所有DN上复杂作业read的次数之和(单位次)。 DN:实例启动至当前时间为止,该用户复杂作业read的次数之和(单位次)。 write_counts bigint CN:过去5秒内,该用户在所有DN上复杂作业write的次数之和(单位次)。 DN:实例启动至当前时间为止,该用户复杂作业write的次数之和(单位次)。 read_speed double precision CN:过去5秒内,该用户在单个DN上复杂作业read平均速率(单位KB/s)。 DN:过去5秒内,该用户在该DN上复杂作业read平均速率(单位KB/s)。 write_speed double precision CN:过去5秒内,该用户在单个DN上复杂作业write平均速率(单位KB/s)。 DN:过去5秒内,该用户在该DN上复杂作业write平均速率(单位KB/s)。 父主题: 系统视图
  • ADM_USERS ADM_USERS视图显示所有数据库用户的信息。默认只有系统管理员权限才可以访问。该视图同时存在于PG_CATALOG和SYS Schema下。 表1 ADM_USERS字段 名称 类型 描述 username character varying(128) 用户名称。 user_id oid 用户ID。 account_status character varying(32) 账户状态。 null:该账户是拥有最高权限的初始系统管理员。 0:正常状态。 1:由于登录失败次数超过阈值被锁定了一定的时间。 2:被管理员锁定。 lock_date timestamp with time zone 默认显示账户的创建日期,如果账户被管理员锁定,或者登录失败次数超过阈值被锁定,则显示帐户被锁定的日期。初始系统管理员该字段为null。 expiry_date timestamp with time zone 账户到期日期。 default_tablespace character varying(4000) 数据的默认表空间。 temporary_tablespace character varying(4000) 临时表的默认表空间的名称或表空间组的名称。 local_temp_tablespace character varying(30) 暂不支持,默认值为NULL。 created timestamp with time zone 用户创建日期。 profile character varying(128) 暂不支持,默认值为NULL。 initial_rsrc_consumer_group character varying(128) 暂不支持,默认值为NULL。 external_name character varying(4000) 暂不支持,默认值为NULL。 password_versions character varying(12) 显示账户密码的加密方式,取值MD5、SHA256或SM3。 editions_enabled character varying(1) 暂不支持,默认值为NULL。 authentication_type text 指示用户的身份验证机制。 proxy_only_connect character varying(1) 暂不支持,默认值为NULL。 common character varying(3) 暂不支持,默认值为NULL。 last_login timestamp with time zone 用户最后一次登录的时间。 oracle_maintained character varying(1) 暂不支持,默认值为NULL。 inherited character varying(3) 暂不支持,默认值为NULL。 default_collation character varying(100) 用户Schema的默认字符序。 implicit character varying(3) 暂不支持,默认值为NULL。 all_shard character varying(3) 暂不支持,默认值为NULL。 password_change_date timestamp with time zone 上次设置用户密码的日期。 父主题: 系统视图
  • 下标生成函数 generate_subscripts(array anyarray, dim int) 描述:生成一系列包括给定数组的下标。 返回值类型:setof int generate_subscripts(array anyarray, dim int, reverse boolean) 描述:生成一系列包括给定数组的下标。当reverse为真时,该系列则以相反的顺序返回。 返回值类型:setof int
  • 序列号生成函数 generate_series(start, stop) 描述:生成一个数值序列,从start到stop,步长为1。 参数类型:int、bigint、numeric 返回值类型:setof int、setof bigint、setof numeric(与参数类型相同) generate_series(start, stop, step) 描述:生成一个数值序列,从start到stop,步长为step。 参数类型:int、bigint、numeric 返回值类型:setof int、setof bigint、setof numeric(与参数类型相同) generate_series(start, stop, step interval) 描述:生成一个数值序列,从start到stop,步长为step。 参数类型:timestamp或timestamp with time zone 返回值类型:setof timestamp或setof timestamp with time zone(与参数类型相同)
  • 示例 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 --创建表。 gaussdb=# CREATE TABLE tpcds.customer_demographics_t2 ( CD_DEMO_SK INTEGER NOT NULL, CD_GENDER CHAR(1) , CD_MARITAL_STATUS CHAR(1) , CD_EDUCATION_STATUS CHAR(20) , CD_PURCHASE_ESTIMATE INTEGER , CD_CREDIT_RATING CHAR(10) , CD_DEP_COUNT INTEGER , CD_DEP_EMPLOYED_COUNT INTEGER , CD_DEP_COLLEGE_COUNT INTEGER ) DISTRIBUTE BY HASH (CD_DEMO_SK); --开启事务。 gaussdb=# START TRANSACTION; --插入数据。 gaussdb=# INSERT INTO tpcds.customer_demographics_t2 VALUES(1,'M', 'U', 'DOCTOR DEGREE', 1200, 'GOOD', 1, 0, 0); gaussdb=# INSERT INTO tpcds.customer_demographics_t2 VALUES(2,'F', 'U', 'MASTER DEGREE', 300, 'BAD', 1, 0, 0); --提交事务,让所有更改永久化。 gaussdb=# COMMIT; --查询数据。 gaussdb=# SELECT * FROM tpcds.customer_demographics_t2; --删除表tpcds.customer_demographics_t2。 gaussdb=# DROP TABLE tpcds.customer_demographics_t2;
  • 功能描述 对表创建行访问控制策略。 当对表创建了行访问控制策略,只有打开该表的行访问控制开关(ALTER TABLE ... ENABLE ROW LEVEL SECURITY),策略才能生效。否则不生效。 当前行访问控制影响数据表的读取操作(SELECT、UPDATE、DELETE),暂不影响数据表的写入操作(INSERT、MERGE INTO)。表所有者或系统管理员可以在USING子句中创建表达式,在客户端执行数据表读取操作时,数据库后台在查询重写阶段会将满足条件的表达式拼接并应用到执行计划中。针对数据表的每一条元组,当USING表达式返回TRUE时,元组对当前用户可见,当USING表达式返回FALSE或NULL时,元组对当前用户不可见。 行访问控制策略名称是针对表的,同一个数据表上不能有同名的行访问控制策略;对不同的数据表,可以有同名的行访问控制策略。 行访问控制策略可以应用到指定的操作(SELECT、UPDATE、DELETE、ALL),ALL表示会影响SELECT、UPDATE、DELETE三种操作;定义行访问控制策略时,若未指定受影响的相关操作,默认为ALL。 行访问控制策略可以应用到指定的用户(角色),也可应用到全部用户(PUBLIC);定义行访问控制策略时,若未指定受影响的用户,默认为PUBLIC。
  • 注意事项 支持对行存表、行存分区表、复制表、unlogged表、hash表定义行访问控制策略。 不支持外表、临时表定义行访问控制策略。 不支持对视图定义行访问控制策略。 同一张表上可以创建多个行访问控制策略,一张表最多创建100个行访问控制策略。 系统管理员不受行访问控制影响,可以查看表的全量数据。 通过SQL语句、视图、函数、存储过程查询包含行访问控制策略的表,都会受影响。 不支持对添加了行级访问控制策略的表字段进行修改数据类型操作。
  • 语法格式 1 2 3 4 5 CREATE [ ROW LEVEL SECURITY ] POLICY policy_name ON table_name [ AS { PERMISSIVE | RESTRICTIVE } ] [ FOR { ALL | SELECT | UPDATE | DELETE } ] [ TO { role_name | PUBLIC | CURRENT_USER | SESSION_USER } [, ...] ] USING ( using_expression )
  • 参数说明 policy_name 行访问控制策略名称,同一个数据表上行访问控制策略名称不能相同。 table_name 行访问控制策略的表名。 PERMISSIVE | RESTRICTIVE PERMISSIVE指定行访问控制策略为宽容性策略,宽容性策略的条件用OR表达式拼接。RESTRICTIVE指定行访问控制策略为限制性策略,限制性策略的条件用AND表达式拼接。拼接方式如下: (using_expression_permissive_1 OR using_expression_permissive_2 ...) AND (using_expression_restrictive_1 AND using_expression_restrictive_2 ...) 缺省默认为PERMISSIVE。 command 当前行访问控制影响的SQL操作,可指定操作包括:ALL、SELECT、UPDATE、DELETE。当未指定时,ALL为默认值,涵盖SELECT、UPDATE、DELETE操作。 当command为SELECT时,SELECT类操作受行访问控制的影响,只能查看到满足条件(using_expression返回值为TRUE)的元组数据,受影响的操作包括SELECT,SELECT FOR UPDATE/SHARE,UPDATE ... RETURNING,DELETE ... RETURNING。 当command为UPDATE时,UPDATE类操作受行访问控制的影响,只能更新满足条件(using_expression返回值为TRUE)的元组数据,受影响的操作包括UPDATE, UPDATE ... RETURNING, SELECT ... FOR UPDATE/SHARE。 当command为DELETE时,DELETE类操作受行访问控制的影响,只能删除满足条件(using_expression返回值为TRUE)的元组数据,受影响的操作包括DELETE, DELETE ... RETURNING。 行访问控制策略与适配的SQL语法关系参加下表: 表1 ROW LEVEL SECURITY策略与适配SQL语法关系 Command SELECT/ALL policy UPDATE/ALL policy DELETE/ALL policy SELECT Existing row No No SELECT FOR UPDATE/SHARE Existing row Existing row No UPDATE No Existing row No UPDATE RETURNING Existing row Existing row No DELETE No No Existing row DELETE RETURNING Existing row No Existing row role_name 行访问控制影响的数据库用户。 CURRENT_USER表示当前执行环境的用户名;SESSION_USER则表示会话用户名;当未指定时,PUBLIC为默认值,PUBLIC表示影响所有数据库用户,可以指定多个受影响的数据库用户。 系统管理员不受行访问控制特性影响。
  • WLM_RESOURCEPOOL_RUNTIME WLM_RESOURCEPOOL_RUNTIME视图显示资源池上的一些统计信息。 表1 WLM_RESOURCEPOOL_RUNTIME的字段 名称 类型 描述 rpoid oid 资源池的OID。 respool name 资源池的名称。 control_group name 资源池的控制组。 parentid oid 父资源池的OID。 ref_count integer 关联到该资源池上的作业数量。 active_points integer 资源池上已经使用的点数。 running_count integer 正在资源池上运行的作业数量。 waiting_count integer 正在资源池上排队的作业数量。 io_limits integer 资源池的iops上限。 io_priority integer 资源池的I/O优先级。 父主题: Workload Manager
  • GLOBAL_COMM_STATUS GLOBAL_COMM_STATUS视图展示所有DN的TCP代理通信库状态。 表1 GLOBAL_COMM_STATUS字段 名称 类型 描述 node_name text 节点名称。 rxpck_rate integer 节点通信库接收速率,单位Byte/s。 txpck_rate integer 节点通信库发送速率,单位Byte/s。 rxkbyte_rate bigint bigint节点通信库接收速率,单位KByte/s。 txkbyte_rate bigint bigint节点通信库发送速率,单位KByte/s。 buffer bigint cmailbox的buffer大小。 memkbyte_libcomm bigint libcomm进程通信内存大小,单位Byte。 memkbyte_libpq bigint libpq进程通信内存大小,单位Byte。 used_pm integer postmaster线程实时使用率。 used_sflow integer gs_sender_flow_controller线程实时使用率。 used_rflow integer gs_receiver_flow_controller线程实时使用率。 used_rloop integer 多个gs_receivers_loop线程中高的实时使用率。 stream integer 当前使用的逻辑连接总数。 父主题: Comm
  • SQL关键字 表1 SQL关键字 关键字 GaussDB SQL:1999 SQL-92 ABORT 非保留 - - ABS - 非保留 - ABSOLUTE 非保留 保留 保留 ACCESS 非保留 - - ACCOUNT 非保留 - - ACTION 非保留 保留 保留 ADA - 非保留 非保留 ADD 非保留 保留 保留 ADMIN 非保留 保留 - AFTER 非保留 保留 - AGGREGATE 非保留 保留 - ALGORITHM 非保留 - - ALIAS - 保留 - ALL 保留 保留 保留 ALLOCATE - 保留 保留 ALSO 非保留 - - ALTER 非保留 保留 保留 ALWAYS 非保留 - - ANALYSE 保留 - - ANALYZE 保留 - - AND 保留 保留 保留 ANY 保留 保留 保留 APP 非保留 - - APPEND 非保留 - - ARCHIVE 非保留 - - ARE - 保留 保留 ARRAY 保留 保留 - AS 保留 保留 保留 ASC 保留 保留 保留 ASENSITIVE - 非保留 - ASSERTION 非保留 保留 保留 ASSIGNMENT 非保留 非保留 - ASYMMETRIC 保留 非保留 - AT 非保留 保留 保留 ATOMIC - 非保留 - ATTRIBUTE 非保留 - - AUDIT 非保留 - - AUTHID 保留 - - AUTHORIZATION 保留(可以是函数或类型) 保留 保留 AUTO_INCREMENT 非保留 - - AUTOEXTEND 非保留 - - AUTOMAPPED 非保留 - - AVG - 非保留 保留 BACKWARD 非保留 - - BAD_PATH 非保留 - - BARRIER 非保留 - - BEFORE 非保留 保留 - BEGIN 非保留 保留 保留 BEGIN_NON_ANOYBLOCK 非保留 - - BETWEEN 非保留(不能是函数或类型) 非保留 保留 BIGINT 非保留(不能是函数或类型) - - BINARY 保留(可以是函数或类型) 保留 - BINARY_DOUBLE 非保留(不能是函数或类型) - - BINARY_INTEGER 非保留(不能是函数或类型) - - BIT 非保留(不能是函数或类型) 保留 保留 BIT_LENGTH - 非保留 保留 BITVAR - 非保留 - BLANKS 非保留 - - BLOB 非保留 保留 - BODY 非保留 - - BOOLEAN 非保留(不能是函数或类型) 保留 - BOTH 保留 保留 保留 BREADTH - 保留 - BUCKETCNT 非保留(不能是函数或类型) - - BUCKETS 保留 - - BY 非保留 保留 保留 BYTEAWITHOUTORDER 非保留(不能是函数或类型) - - BYTEAWITHOUTORDERWITHEQUAL 非保留(不能是函数或类型) - - C - 非保留 非保留 CACHE 非保留 - - CALL 非保留 保留 - CALLED 非保留 非保留 - CANCELABLE 非保留 - - CARDINALITY - 非保留 - CASCADE 非保留 保留 保留 CASCADED 非保留 保留 保留 CASE 保留 保留 保留 CAST 保留 保留 保留 CATALOG 非保留 保留 保留 CATALOG_NAME - 非保留 非保留 CHAIN 非保留 非保留 - CHANGE 非保留 - - CHAR 非保留(不能是函数或类型) 保留 保留 CHAR_LENGTH - 非保留 保留 CHARACTER 非保留(不能是函数或类型) 保留 保留 CHARACTER_LENGTH - 非保留 保留 CHARACTER_SET_CATALOG - 非保留 非保留 CHARACTER_SET_NAME - 非保留 非保留 CHARACTER_SET_SCHEMA - 非保留 非保留 CHARACTERISTICS 非保留 - - CHARACTERSET 非保留 - - CHARSET 非保留 - - CHECK 保留 保留 保留 CHECKED - 非保留 - CHECKPOINT 非保留 - - CLASS 非保留 保留 - CLASS_ORIGIN - 非保留 非保留 CLEAN 非保留 - - CLIENT 非保留 - - CLIENT_MASTER_KEY 非保留 - - CLIENT_MASTER_KEYS 非保留 - - CLOB 非保留 保留 - CLOSE 非保留 保留 保留 CLUSTER 非保留 - - COALESCE 非保留(不能是函数或类型) 非保留 保留 COBOL - 非保留 非保留 COLLATE 保留 保留 保留 COLLATION 保留(可以是函数或类型) 保留 保留 COLLATION_CATALOG - 非保留 非保留 COLLATION_NAME - 非保留 非保留 COLLATION_SCHEMA - 非保留 非保留 COLUMN 保留 保留 保留 COLUMN_ENCRYPTION_KEY 非保留 - - COLUMN_ENCRYPTION_KEYS 非保留 - - COLUMN_NAME - 非保留 非保留 COLUMNS 非保留 - - COMMAND_FUNCTION - 非保留 非保留 COMMAND_FUNCTION_CODE - 非保留 - COMMENT 非保留 - - COMMENTS 非保留 - - COMMIT 非保留 保留 保留 COMMITTED 非保留 非保留 非保留 COMPACT 保留(可以是函数或类型) - - COMPATIBLE_ILLEGAL_CHARS 非保留 - - COMPILE 非保留 - - COMPLETE 非保留 - - COMPLETION 非保留 保留 - COMPRESS 非保留 - - CONCURRENTLY 保留(可以是函数或类型) - - CONDITION 非保留 - - CONDITION_NUMBER - 非保留 非保留 CONFIGURATION 非保留 - - CONNECT 非保留 保留 保留 CONNECTION 非保留 保留 保留 CONNECTION_NAME - 非保留 非保留 CONSTANT 非保留 - - CONSTRAINT 保留 保留 保留 CONSTRAINT_CATALOG - 非保留 非保留 CONSTRAINT_NAME - 非保留 非保留 CONSTRAINT_SCHEMA - 非保留 非保留 CONSTRAINTS 非保留 保留 保留 CONSTRUCTOR - 保留 - CONTAINING 非保留 - - CONTAINS - 非保留 - CONTENT 非保留 - - CONTINUE 非保留 保留 保留 CONVERSION 非保留 - - CONVERT 非保留 非保留 保留 COORDINATOR 非保留 - - COORDINATORS 非保留 - - COPY 非保留 - - CORRESPONDING - 保留 保留 COST 非保留 - - COUNT - 非保留 保留 CREATE 保留 保留 保留 CROSS 保留(可以是函数或类型) 保留 保留 CSN 保留(可以是函数或类型) - - CSV 非保留 - - CUBE 非保留 保留 - CURRENT 非保留 保留 保留 CURRENT_CATALOG 保留 - - CURRENT_DATE 保留 保留 保留 CURRENT_PATH - 保留 - CURRENT_ROLE 保留 保留 - CURRENT_SCHEMA 保留(可以是函数或类型) - - CURRENT_TIME 保留 保留 保留 CURRENT_TIMESTAMP 保留 保留 保留 CURRENT_USER 保留 保留 保留 CURSOR 非保留 保留 保留 CURSOR_NAME - 非保留 非保留 CYCLE 非保留 保留 - DATA 非保留 保留 非保留 DATABASE 非保留 - - DATAFILE 非保留 - - DATANODE 非保留 - - DATANODES 非保留 - - DATATYPE_CL 非保留 - - DATE 非保留(不能是函数或类型) 保留 保留 DATE_FORMAT 非保留 - - DATETIME_INTERVAL_CODE - 非保留 非保留 DATETIME_INTERVAL_PRECISION - 非保留 非保留 DAY 非保留 保留 保留 DB4AISHOT 非保留 - - DBCOMPATIBILITY 非保留 - - DBTIMEZONE 保留 - - DEALLOCATE 非保留 保留 保留 DEC 非保留(不能是函数或类型) 保留 保留 DECIMAL 非保留(不能是函数或类型) 保留 保留 DECLARE 非保留 保留 保留 DECODE 非保留(不能是函数或类型) - - DEFAULT 保留 保留 保留 DEFAULTS 非保留 - - DEFERRABLE 保留 保留 保留 DEFERRED 非保留 保留 保留 DEFINED - 非保留 - DEFINER 非保留 非保留 - DELETE 非保留 保留 保留 DELIMITER 非保留 - - DELIMITERS 非保留 - - DELTA 非保留 - - DELTAMERGE 保留(可以是函数或类型) - - DEPTH - 保留 - DEREF - 保留 - DESC 保留 保留 保留 DESCRIBE - 保留 保留 DESCRIPTOR - 保留 保留 DESTROY - 保留 - DESTRUCTOR - 保留 - DETERMINISTIC 非保留 保留 - DIAGNOSTICS - 保留 保留 DICTIONARY 非保留 保留 - DIRECT 非保留 - - DIRECTORY 非保留 - - DISABLE 非保留 - - DISCARD 非保留 - - DISCARD_PATH 非保留 - - DISCONNECT 非保留 保留 保留 DISPATCH - 非保留 - DISTINCT 保留 保留 保留 DISTRIBUTE 非保留 - - DISTRIBUTION 非保留 - - DO 保留 - - DOCUMENT 非保留 - - DOMAIN 非保留 保留 保留 DOUBLE 非保留 保留 保留 DROP 非保留 保留 保留 DUMPFILE 非保留 - - DUPLICATE 非保留 - - DYNAMIC - 保留 - DYNAMIC_FUNCTION - 非保留 非保留 DYNAMIC_FUNCTION_CODE - 非保留 - EACH 非保留 保留 - ELASTIC 非保留 - - ELSE 保留 保留 保留 ENABLE 非保留 - - ENCLOSED 非保留 - - ENCODING 非保留 - - ENCRYPTED 非保留 - - ENCRYPTED_VALUE 非保留 - - ENCRYPTION 非保留 - - ENCRYPTION_TYPE 非保留 - - END 保留 保留 保留 END-EXEC - 保留 保留 ENDS 非保留 - - ENFORCED 非保留 - - ENTITYESCAPING 非保留 - - ENUM 非保留 - - EOL 非保留 - - EQUALS - 保留 - ERROR 非保留 - - ERRORS 非保留 - - ESCAPE 非保留 保留 保留 ESCAPED 非保留 - - ESCAPING 非保留 - - EVALNAME 非保留 - - EVENT 非保留 - - EVENTS 非保留 - - EVERY 非保留 保留 - EXCEPT 保留 保留 保留 EXCEPTION - 保留 保留 EXCHANGE 非保留 - - EXCLUDE 非保留 - - EXCLUDED 保留 - - EXCLUDING 非保留 - - EXCLUSIVE 非保留 - - EXEC - 保留 保留 EXECUTE 非保留 保留 保留 EXISTING - 非保留 - EXISTS 非保留(不能是函数或类型) 非保留 保留 EXPDP 非保留 - - EXPIRED_P - - - EXPLAIN 非保留 - - EXTENSION 非保留 - - EXTERNAL 非保留 保留 保留 EXTRACT 非保留(不能是函数或类型) 非保留 保留 FALSE 保留 保留 保留 FAMILY 非保留 - - FAST 非保留 - - FEATURES 非保留 - - FENCED 保留 - - FETCH 保留 保留 保留 FIELDS 非保留 - - FILEHEADER 非保留 - - FILL_MISSING_FIELDS 非保留 - - FILLER 非保留 - - FILTER 非保留 - 保留 FINAL - 非保留 - FIRST 非保留 保留 保留 FIXED 非保留 - 保留 FLOAT 非保留(不能是函数或类型) 保留 保留 FOLLOWING 非保留 - - FOR 保留 保留 保留 FORCE 非保留 - - FOREIGN 保留 保留 保留 FORMATTER 非保留 - - FORTRAN - 非保留 非保留 FORWARD 非保留 - - FOUND - 保留 保留 FREE - 保留 - FREEZE 保留(可以是函数或类型) - - FROM 保留 保留 保留 FULL 保留(可以是函数或类型) 保留 保留 FUNCTION 非保留 保留 - FUNCTIONS 非保留 - - G - 非保留 - GENERAL - 保留 - GENERATED 非保留 非保留 - GET - 保留 保留 GLOBAL 非保留 保留 保留 GO - 保留 保留 GOTO - 保留 保留 GRANT 保留 保留 保留 GRANTED 非保留 非保留 - GREATEST 非保留(不能是函数或类型) - - GROUP 保留 保留 保留 GROUPING 非保留(不能是函数或类型) 保留 - GROUPPARENT 保留 - - HANDLER 非保留 - - HAVING 保留 保留 保留 HDFSDIRECTORY 保留(可以是函数或类型) - - HEADER 非保留 - - HIERARCHY - 非保留 - HOLD 非保留 非保留 - HOST - 保留 - HOUR 非保留 保留 保留 IDENTIFIED 非保留 - - IDENTITY 非保留 保留 保留 IF 非保留 - - IGNORE 非保留 保留 - IGNORE_EXTRA_DATA 非保留 - - ILIKE 保留(可以是函数或类型) - - IMMEDIATE 非保留 保留 保留 IMMUTABLE 非保留 - - IMPDP 非保留 - - IMPLEMENTATION - 非保留 - IMPLICIT 非保留 - - IN 保留 保留 保留 INCLUDE 非保留 - - INCLUDING 非保留 - - INCREMENT 非保留 - - INCREMENTAL 非保留 - - INDEX 非保留 - - INDEXES 非保留 - - INDICATOR - 保留 保留 INFILE 非保留 - - INFIX - 非保留 - INHERIT 非保留 - - INHERITS 非保留 - - INITIAL 非保留 - - INITIALIZE - 保留 - INITIALLY 保留 保留 保留 INITRANS 非保留 - - INLINE 非保留 - - INNER 保留(可以是函数或类型) 保留 保留 INOUT 非保留(不能是函数或类型) 保留 - INPUT 非保留 保留 保留 INSENSITIVE 非保留 非保留 保留 INSERT 非保留 保留 保留 INSTANCE - 非保留 - INSTANTIABLE - 非保留 - INSTEAD 非保留 - - INT 非保留(不能是函数或类型) 保留 保留 INTEGER 非保留(不能是函数或类型) 保留 保留 INTERNAL 非保留 - - INTERSECT 保留 保留 保留 INTERVAL 非保留(不能是函数或类型) 保留 保留 INTO 保留 保留 保留 INVOKER 非保留 非保留 - IP 非保留 - - IS 保留 保留 保留 ISNULL 非保留 - - ISOLATION 非保留 保留 保留 ITERATE - 保留 - JOIN 保留(可以是函数或类型) 保留 保留 K - 非保留 - KEY 非保留 保留 保留 KEY_MEMBER - 非保留 - KEY_PATH 非保留 - - KEY_STORE 非保留 - - KEY_TYPE - 非保留 - KILL 非保留 - - LABEL 非保留 - - LANGUAGE 非保留 保留 保留 LARGE 非保留 保留 - LAST 非保留 保留 保留 LATERAL - 保留 - LC_COLLATE 非保留 - - LC_CTYPE 非保留 - - LEADING 保留 保留 保留 LEAKPROOF 非保留 - - LEAST 非保留(不能是函数或类型) - - LEFT 保留(可以是函数或类型) 保留 保留 LENGTH - 非保留 非保留 LESS 保留 保留 - LEVEL 非保留 保留 保留 LIKE 保留(可以是函数或类型) 保留 保留 LIMIT 保留 保留 - LINES 非保留 - - LINK 非保留 - - LIST 非保留 - - LISTEN 非保留 - - LNNVL 非保留(不能是函数或类型) - - LOAD 非保留 - - LOAD_BAD 非保留 - - LOAD_DISCARD 非保留 - - LOCAL 非保留 保留 保留 LOCALTIME 保留 保留 - LOCALTIMESTAMP 保留 保留 - LOCATION 非保留 - - LOCATOR - 保留 - LOCK 非保留 - - LOG 非保留 - - LOGGING 非保留 - - LOGIN_ANY 非保留 - - LOGIN_FAILURE 非保留 - - LOGIN_SUCCESS 非保留 - - LOGOUT 非保留 - - LOOP 非保留 - - LOWER - 非保留 保留 M - 非保留 - MAP - 保留 - MAPPING 非保留 - - MASKING 非保留 - - MASTER 非保留 - - MATCH 非保留 保留 保留 MATCHED 非保留 - - MATERIALIZED 非保留 - - MAX - 非保留 保留 MAXEXTENTS 非保留 - - MAXSIZE 非保留 - - MAXTRANS 非保留 - - MAXVALUE 保留 - - MERGE 非保留 - - MESSAGE_LENGTH - 非保留 非保留 MESSAGE_OCTET_LENGTH - 非保留 非保留 MESSAGE_TEXT - 非保留 非保留 METHOD - 非保留 - MIN - 非保留 保留 MINEXTENTS 非保留 - - MINUS 保留 - - MINUTE 非保留 保留 保留 MINVALUE 非保留 - - MOD - 非保留 - MODE 非保留 - - MODEL 非保留 - - MODIFIES - 保留 - MODIFY 保留 保留 - MODULE - 保留 保留 MONTH 非保留 保留 保留 MORE - 非保留 非保留 MOVE 非保留 - - MOVEMENT 非保留 - - MUMPS - 非保留 非保留 NAME 非保留 非保留 非保留 NAMES 非保留 保留 保留 NATIONAL 非保留(不能是函数或类型) 保留 保留 NATURAL 保留(可以是函数或类型) 保留 保留 NCHAR 非保留(不能是函数或类型) 保留 保留 NCLOB - 保留 - NEW - 保留 - NEXT 非保留 保留 保留 NO 非保留 保留 保留 NOCOMPRESS 非保留 - - NOCYCLE 保留 - - NODE 非保留 - - NOENTITYESCAPING 非保留 - - NOLOGGING 非保留 - - NOMAXVALUE 非保留 - - NOMINVALUE 非保留 - - NONE 非保留(不能是函数或类型) 保留 - NOT 保留 保留 保留 NOTHING 非保留 - - NOTIFY 非保留 - - NOTNULL 保留(可以是函数或类型) - - NOWAIT 非保留 - - NULL 保留 保留 保留 NULLABLE - 非保留 非保留 NULLCOLS 非保留 - - NULLIF 非保留(不能是函数或类型) 非保留 保留 NULLS 非保留 - - NUMBER 非保留(不能是函数或类型) 非保留 非保留 NUMERIC 非保留(不能是函数或类型) 保留 保留 NUMSTR 非保留 - - NVARCHAR2 非保留(不能是函数或类型) - - NVL 非保留(不能是函数或类型) - - NVL2 非保留(不能是函数或类型) - - OBJECT 非保留 保留 - OCTET_LENGTH - 非保留 保留 OF 非保留 保留 保留 OFF 非保留 保留 - OFFSET 保留 - - OIDS 非保留 - - OLD - 保留 - ON 保留 保留 保留 ONLY 保留 保留 保留 OPEN - 保留 保留 OPERATION - 保留 - OPERATOR 非保留 - - OPTIMIZATION 非保留 - - OPTION 非保留 保留 保留 OPTIONALLY 非保留 - - OPTIONS 非保留 非保留 - OR 保留 保留 保留 ORDER 保留 保留 保留 ORDINALITY 非保留 保留 - OUT 非保留(不能是函数或类型) 保留 - OUTER 保留(可以是函数或类型) 保留 保留 OUTFILE 非保留 - - OUTPUT - 保留 保留 OVER 非保留 - - OVERLAPS 保留(可以是函数或类型) 非保留 保留 OVERLAY 非保留(不能是函数或类型) 非保留 - OVERRIDING - 非保留 - OWNED 非保留 - - OWNER 非保留 - - PAD - 保留 保留 PARAMETER - 保留 - PARAMETER_MODE - 非保留 - PARAMETER_NAME - 非保留 - PARAMETER_ORDINAL_POSITION - 非保留 - PARAMETER_SPECIFIC_CATALOG - 非保留 - PARAMETER_SPECIFIC_NAME - 非保留 - PARAMETER_SPECIFIC_SCHEMA - 非保留 - PARAMETERS - 保留 - PARSER 非保留 - - PARTIAL 非保留 保留 保留 PARTITION 非保留 - - PARTITIONS 非保留 - - PASCAL - 非保留 非保留 PASSING 非保留 - - PASSWORD 非保留 - - PATH - 保留 - PCTFREE 非保留 - - PER 非保留 - - PERCENT 非保留 - - PERFORMANCE 保留 - - PERM 非保留 - - PIVOT 非保留 - - PLACING 保留 - - PLAN 非保留 - - PLANS 非保留 - - PLI - 非保留 非保留 POLICY 非保留 - - POSITION 非保留(不能是函数或类型) 非保留 保留 POSTFIX - 保留 - PRECEDING 非保留 - - PRECISION 非保留(不能是函数或类型) 保留 保留 PREDICT 非保留 - - PREFERRED 非保留 - - PREFIX 非保留 保留 - PREORDER - 保留 - PREPARE 非保留 保留 保留 PREPARED 非保留 - - PRESERVE 非保留 保留 保留 PRIMARY 保留 保留 保留 PRIOR 非保留 保留 保留 PRIORER 保留 - - PRIVATE 非保留 - - PRIVILEGE 非保留 - - PRIVILEGES 非保留 保留 保留 PROCEDURAL 非保留 - - PROCEDURE 保留 保留 保留 PROFILE 非保留 - - PUBLIC 非保留 保留 保留 PUBLISH 非保留 - - PURGE 非保留 - - QUERY 非保留 - - QUOTE 非保留 - - RANDOMIZED 非保留 - - RANGE 非保留 - - RATIO 非保留 - - RAW 非保留 - - READ 非保留 保留 保留 READS - 保留 - REAL 非保留(不能是函数或类型) 保留 保留 REASSIGN 非保留 - - REBUILD 非保留 - - RECHECK 非保留 - - RECOVER 非保留 - - RECURSIVE 非保留 保留 - RECYCLEBIN 保留(可以是函数或类型) - - REDISANYVALUE 非保留 - - REF 非保留 保留 - REFERENCES 保留 保留 保留 REFERENCING - 保留 - REFRESH 非保留 - - REGEXP_LIKE 非保留(不能是函数或类型) - - REINDEX 非保留 - - REJECT 保留 - - RELATIVE 非保留 保留 保留 RELEASE 非保留 - - RELOPTIONS 非保留 - - REMOTE 非保留 - - REMOVE 非保留 - - RENAME 非保留 - - REPEATABLE 非保留 非保留 非保留 REPLACE 非保留 - - REPLICA 非保留 - - RESET 非保留 - - RESIZE 非保留 - - RESTART 非保留 - - RESTRICT 非保留 保留 保留 RESULT - 保留 - RETURN 非保留 保留 - RETURNED_LENGTH - 非保留 非保留 RETURNED_OCTET_LENGTH - 非保留 非保留 RETURNED_SQLSTATE - 非保留 非保留 RETURNING 保留 - - RETURNS 非保留 保留 - REUSE 非保留 - - REVOKE 非保留 保留 保留 RIGHT 保留(可以是函数或类型) 保留 保留 ROLE 非保留 保留 - ROLES 非保留 - - ROLLBACK 非保留 保留 保留 ROLLUP 非保留 保留 - ROTATION 非保留 - - ROUTINE - 保留 - ROUTINE_CATALOG - 非保留 - ROUTINE_NAME - 非保留 - ROUTINE_SCHEMA - 非保留 - ROW 非保留(不能是函数或类型) 保留 - ROW_COUNT - 非保留 非保留 ROWNUM 保留 - - ROWS 非保留 保留 保留 ROWTYPE 非保留 - - RULE 非保留 - - SAMPLE 非保留 - - SAVEPOINT 非保留 保留 - SCALE - 非保留 非保留 SCHEDULE 非保留 - - SCHEMA 非保留 保留 保留 SCHEMA_NAME - 非保留 非保留 SCOPE - 保留 - SCROLL 非保留 保留 保留 SEARCH 非保留 保留 - SECOND 非保留 保留 保留 SECTION - 保留 保留 SECURITY 非保留 非保留 - SELECT 保留 保留 保留 SELF - 非保留 - SENSITIVE - 非保留 - SEPARATOR 非保留 - - SEQUENCE 非保留 保留 - SEQUENCES 非保留 - - SERIALIZABLE 非保留 非保留 非保留 SERVER 非保留 - - SERVER_NAME - 非保留 非保留 SESSION 非保留 保留 保留 SESSION_USER 保留 保留 保留 SESSIONTIMEZONE 保留 - - SET 非保留 保留 保留 SETOF 非保留(不能是函数或类型) - - SETS 非保留 保留 - SHARE 非保留 - - SHIPPABLE 非保留 - - SHOW 非保留 - - SHRINK 保留 - - SHUTDOWN 非保留 - - SIBLINGS 非保留 - - SIMILAR 保留(可以是函数或类型) 非保留 - SIMPLE 非保留 非保留 - SIZE 非保留 保留 保留 SKIP 非保留 - - SLAVE 非保留 - - SLICE 非保留 - - SMALLDATETIME 非保留(不能是函数或类型) - - SMALLDATETIME_FORMAT 非保留 - - SMALLINT 非保留(不能是函数或类型) 保留 保留 SNAPSHOT 非保留 - - SOME 保留 保留 保留 SOURCE 非保留 非保留 - SPACE 非保留 保留 保留 SPECIFIC - 保留 - SPECIFIC_NAME - 非保留 - SPECIFICATION 非保留 - - SPECIFICTYPE - 保留 - SPILL 非保留 - - SPLIT 非保留 - - SQL - 保留 保留 SQLCODE - - 保留 SQLERROR - - 保留 SQLEXCEPTION - 保留 - SQLSTATE - 保留 保留 SQLWARNING - 保留 - STABLE 非保留 - - STANDALONE 非保留 - - START 非保留 保留 - STARTING 非保留 - - STARTS 非保留 - - STATE - 保留 - STATEMENT 非保留 保留 - STATEMENT_ID 非保留 - - STATIC - 保留 - STATISTICS 非保留 - - STDIN 非保留 - - STDOUT 非保留 - - STORAGE 非保留 - - STORE 非保留 - - STORED 非保留 - - STRATIFY 非保留 - - STRICT 非保留 - - STRIP 非保留 - - STRUCTURE - 保留 - STYLE - 非保留 - SUBCLASS_ORIGIN - 非保留 非保留 SUBLIST - 非保留 - SUBPARTITION 非保留 - - SUBPARTITIONS 非保留 - - SUBSTRING 非保留(不能是函数或类型) 非保留 保留 SUM - 非保留 保留 SYMMETRIC 保留 非保留 - SYNONYM 非保留 - - SYS_REFCURSOR 非保留 - - SYSDATE 保留 - - SYSID 非保留 - - SYSTEM 非保留 非保留 - SYSTEM_USER - 保留 保留 TABLE 保留 保留 保留 TABLE_NAME - 非保留 非保留 TABLES 非保留 - - TABLESAMPLE 保留(可以是函数或类型) - - TABLESPACE 非保留 - - TARGET 非保留 - - TEMP 非保留 - - TEMPLATE 非保留 - - TEMPORARY 非保留 保留 保留 TERMINATE - 保留 - TERMINATED 非保留 - - TEXT 非保留 - - THAN 非保留 保留 - THEN 保留 保留 保留 TIME 非保留(不能是函数或类型) 保留 保留 TIME_FORMAT 非保留 - - TIMECAPSULE 保留(可以是函数或类型) - - TIMESTAMP 非保留(不能是函数或类型) 保留 保留 TIMESTAMP_FORMAT 非保留 - - TIMESTAMPDIFF 非保留(不能是函数或类型) - - TIMEZONE_HOUR - 保留 保留 TIMEZONE_MINUTE - 保留 保留 TINYINT 非保留(不能是函数或类型) - - TO 保留 保留 保留 TRAILING 保留 保留 保留 TRANSACTION 非保留 保留 保留 TRANSACTION_ACTIVE - 非保留 - TRANSACTIONS_COMMITTED - 非保留 - TRANSACTIONS_ROLLED_BACK - 非保留 - TRANSFORM 非保留 非保留 - TRANSFORMS - 非保留 - TRANSLATE - 非保留 保留 TRANSLATION - 保留 保留 TREAT 非保留(不能是函数或类型) 保留 - TRIGGER 非保留 保留 - TRIGGER_CATALOG - 非保留 - TRIGGER_NAME - 非保留 - TRIGGER_SCHEMA - 非保留 - TRIM 非保留(不能是函数或类型) 非保留 保留 TRUE 保留 保留 保留 TRUNCATE 非保留 - - TRUSTED 非保留 - - TSFIELD 非保留 - - TSTAG 非保留 - - TSTIME 非保留 - - TYPE 非保留 非保留 非保留 TYPES 非保留 - - UNBOUNDED 非保留 - - UNCOMMITTED 非保留 非保留 非保留 UNDER - 保留 - UNENCRYPTED 非保留 - - UNION 保留 保留 保留 UNIQUE 保留 保留 保留 UNKNOWN 非保留 保留 保留 UNLIMITED 非保留 - - UNLISTEN 非保留 - - UNLOCK 非保留 - - UNLOGGED 非保留 - - UNNAMED - 非保留 非保留 UNNEST - 保留 - UNPIVOT 非保留 - - UNTIL 非保留 - - UNUSABLE 非保留 - - UPDATE 非保留 保留 保留 UPPER - 非保留 保留 USAGE - 保留 保留 USEEOF 非保留 - - USER 保留 保留 保留 USER_DEFINED_TYPE_CATALOG - 非保留 - USER_DEFINED_TYPE_NAME - 非保留 - USER_DEFINED_TYPE_SCHEMA - 非保留 - USING 保留 保留 保留 VACUUM 非保留 - - VALID 非保留 - - VALIDATE 非保留 - - VALIDATION 非保留 - - VALIDATOR 非保留 - - VALUE 非保留 保留 保留 VALUES 非保留(不能是函数或类型) 保留 保留 VARCHAR 非保留(不能是函数或类型) 保留 保留 VARCHAR2 非保留(不能是函数或类型) - - VARIABLE - 保留 - VARIABLES 非保留 - - VARIADIC 保留 - - VARYING 非保留 保留 保留 VCGROUP 非保留 - - VERBOSE 保留(可以是函数或类型) - - VERIFY 保留 - - VERSION 非保留 - - VIEW 非保留 保留 保留 VOLATILE 非保留 - - WAIT 非保留 - - WEAK 非保留 - - WELLFORMED 非保留 - - WHEN 保留 保留 保留 WHENEVER - 保留 保留 WHERE 保留 保留 保留 WHITESPACE 非保留 - - WINDOW 保留 - - WITH 保留 保留 保留 WITHIN 非保留 - - WITHOUT 非保留 保留 - WORK 非保留 保留 保留 WORKLOAD 非保留 - - WRAPPER 非保留 - - WRITE 非保留 保留 保留 XML 非保留 - - XMLATTRIBUTES 非保留(不能是函数或类型) - - XMLCONCAT 非保留(不能是函数或类型) - - XMLELEMENT 非保留(不能是函数或类型) - - XMLEXISTS 非保留(不能是函数或类型) - - XMLFOREST 非保留(不能是函数或类型) - - XMLPARSE 非保留(不能是函数或类型) - - XMLPI 非保留(不能是函数或类型) - - XMLROOT 非保留(不能是函数或类型) - - XMLSERIALIZE 非保留(不能是函数或类型) - - XMLTYPE 非保留(不能是函数或类型) - - YEAR 非保留 保留 保留 YES 非保留 - - ZONE 非保留 保留 保留
  • OPEN FOR 动态查询语句还可以使用OPEN FOR打开动态游标来执行。 语法参见图3。 图3 open_for::= 参数说明: cursor_name:要打开的游标名。 dynamic_string:动态查询语句。 USING value:在dynamic_string中存在占位符时使用。 游标的使用请参考游标。 示例 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 gaussdb=# CREATE SCHEMA hr; gaussdb=# SET CURRENT_SCHEMA = hr; gaussdb=# CREATE TABLE staffs ( section_id NUMBER, first_name VARCHAR2, phone_number VARCHAR2, salary NUMBER ); gaussdb=# INSERT INTO staffs VALUES (30, 'mike', '13567829252', 5800); gaussdb=# INSERT INTO staffs VALUES (40, 'john', '17896354637', 4000); gaussdb=# DECLARE name VARCHAR2(20); phone_number VARCHAR2(20); salary NUMBER(8,2); sqlstr VARCHAR2(1024); TYPE app_ref_cur_type IS REF CURSOR; --定义游标类型。 my_cur app_ref_cur_type; --定义游标变量。 BEGIN sqlstr := 'select first_name,phone_number,salary from hr.staffs where section_id = :1'; OPEN my_cur FOR sqlstr USING '30'; --打开游标, using是可选的。 FETCH my_cur INTO name, phone_number, salary; --获取数据。 WHILE my_cur%FOUND LOOP dbe_output.print_line(name||'#'||phone_number||'#'||salary); FETCH my_cur INTO name, phone_number, salary; END LOOP; CLOSE my_cur; --关闭游标。 END; / mike#13567829252#5800.00 mike#13567829252#5800.00 ANONYMOUS BLOCK EXECUTE
  • EXECUTE IMMEDIATE 语法图请参见图1。 图1 EXECUTE IMMEDIATE dynamic_select_clause::= using_clause子句的语法图参见图2。 图2 using_clause::= 对以上语法格式的解释如下: define_variable,用于指定存放单行查询结果的变量。 USING IN bind_argument,用于指定存放传递给动态SQL值的变量,即在dynamic_select_string中存在占位符时使用。 USING OUT bind_argument,用于指定存放动态SQL返回值的变量。 查询语句中,into和out不能同时存在; 占位符命名以“:”开始,后面可跟数字、字符或字符串,与USING子句的bind_argument一一对应; bind_argument只能是值、变量或表达式,不能是表名、列名、数据类型等数据库对象,即不支持使用bind_argument为动态SQL语句传递模式对象。如果存储过程需要通过声明参数传递数据库对象来构造动态SQL语句(常见于执行DDL语句时),建议采用连接运算符“||”拼接dynamic_select_clause; 动态PL/SQL块允许出现重复的占位符,即相同占位符只能与USING子句的一个bind_argument按位置对应。当设置guc参数behavior_compat_options值为dynamic_sql_compat时,会按照占位符的顺序依次匹配USING子句bind_argument,重复的占位符不会再识别为同一个占位符。 示例 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 gaussdb=# DROP SCHEMA IF EXISTS hr CASCADE; gaussdb=# CREATE SCHEMA hr; gaussdb=# SET CURRENT_SCHEMA = hr; gaussdb=# CREATE TABLE staffs ( staff_id NUMBER, first_name VARCHAR2, salary NUMBER ); gaussdb=# INSERT INTO staffs VALUES (200, 'mike', 5800); gaussdb=# INSERT INTO staffs VALUES (201, 'lily', 3000); gaussdb=# INSERT INTO staffs VALUES (202, 'john', 4400); --从动态语句检索值(INTO 子句): gaussdb=# DECLARE staff_count VARCHAR2(20); BEGIN EXECUTE IMMEDIATE 'select count(*) from hr.staffs' INTO staff_count; dbe_output.print_line(staff_count); END; / 3 ANONYMOUS BLOCK EXECUTE --传递并检索值(INTO子句用在USING子句前): gaussdb=# CREATE OR REPLACE PROCEDURE dynamic_proc AS staff_id NUMBER(6) := 200; first_name VARCHAR2(20); salary NUMBER(8,2); BEGIN EXECUTE IMMEDIATE 'select first_name, salary from hr.staffs where staff_id = :1' INTO first_name, salary USING IN staff_id; dbe_output.print_line(first_name || ' ' || salary); END; / CREATE PROCEDURE --调用存储过程。 gaussdb=# CALL dynamic_proc(); mike 5800.00 dynamic_proc -------------- (1 row) --删除存储过程。 gaussdb=# DROP PROCEDURE dynamic_proc;
  • 参数说明 cursor_name 将要创建的游标名。 取值范围:遵循数据库对象命名规范。 BINARY 指明游标以二进制而不是文本格式返回数据。 NO SCROLL 声明游标检索数据行的方式。 NO SCROLL:声明该游标不能用于以倒序的方式检索数据行。 未声明:根据执行计划的不同,自动判断该游标是否可以用于以倒序的方式检索数据行。 WITH HOLD | WITHOUT HOLD 声明当创建游标的事务结束后,游标是否能继续使用。 WITH HOLD:声明该游标在创建它的事务结束后仍可继续使用。 WITHOUT HOLD:声明该游标在创建它的事务之外不能再继续使用,此游标将在事务结束时被自动关闭。 如果不指定WITH HOLD或WITHOUT HOLD,默认行为是WITHOUT HOLD。 跨节点事务不支持WITH HOLD(例如在多Coordinator部署集群中所创建的含有DDL的事务属于跨节点事务)。 query 使用SELECT或VALUES子句指定游标返回的行。 取值范围:SELECT或VALUES子句。
  • 注意事项 游标命令只能在事务块里使用。 通常游标和SELECT一样返回文本格式。因为数据在系统内部是用二进制格式存储的,系统必须对数据做一定转换以生成文本格式。一旦数据是以文本形式返回,客户端应用需要把它们转换成二进制进行操作。使用FETCH语句,游标可以返回文本或二进制格式。 应该小心使用二进制游标。文本格式一般都比对应的二进制格式占用的存储空间大。二进制游标返回内部二进制形态的数据,可能更易于操作。如果想以文本方式显示数据,则以文本方式检索会为用户节约很多客户端的工作。比如,如果查询从某个整数列返回1,在缺省的游标里将获得一个字符串1,但在二进制游标里将得到一个4字节的包含该数值内部形式的数值(大端顺序)。
  • STAT_USER_INDEXES 显示当前节点用户自定义普通表的索引状态信息。 表1 STAT_USER_INDEXES字段 名称 类型 描述 relid oid 该索引的表的OID。 indexrelid oid 索引的OID。 schemaname name 索引所在的Schema名。 relname name 索引的表名。 indexrelname name 索引名。 idx_scan bigint 该索引上执行的索引扫描次数。 idx_tup_read bigint 该索引上扫描返回的索引项数。 idx_tup_fetch bigint 使用该索引的简单索引扫描在原表中抓取的活跃行数。 父主题: Object
  • 语法格式 设置会话的事务参数。 1 2 ALTER SESSION SET [ SESSION CHARACTERISTICS AS ] TRANSACTION { ISOLATION LEVEL { READ COMMITTED } | { READ ONLY | READ WRITE } } [, ...] ; 设置会话的其他运行时参数。 1 2 3 4 5 6 7 8 9 10 ALTER SESSION SET {{config_parameter { { TO | = } { value | DEFAULT } | FROM CURRENT }} | CURRENT_SCHEMA [ TO | = ] { schema | DEFAULT } | TIME ZONE time_zone | SCHEMA schema | NAMES encoding_name | ROLE role_name PASSWORD 'password' | SESSION AUTHORIZATION { role_name PASSWORD 'password' | DEFAULT } | XML OPTION { DOCUMENT | CONTENT } } ;
  • PARALLEL_DECODE_THREAD_INFO PARALLEL_DECODE_THREAD_INFO视图用于查看当前节点上进行并行解码的线程信息,该视图需在DN上查询,在CN上查询返回空。 表1 PARALLEL_DECODE_THREAD_INFO字段 名称 类型 描述 thread_id bigint 线程id。 slot_name text 复制槽名。 thread_type text 线程种类(共三种,sender代表发送线程,reader代表读取线程,decoder代表解码线程)。 seq_number integer 当前复制槽中同种线程的序号(从1开始)。 父主题: Utility
  • WLM_USER_RESOURCE_CONFIG WLM_USER_RESOURCE_CONFIG视图显示用户的资源配置信息。 表1 WLM_USER_RESOURCE_CONFIG字段 名称 类型 描述 userid oid 用户oid。 username name 用户名称。 sysadmin boolean 是否是sysadmin。 rpoid oid 资源池的oid。 respool name 资源池的名称。 parentid oid 父用户的oid。 totalspace bigint 占用总空间大小。 spacelimit bigint 空间大上限。 childcount integer 子用户数量。 childlist texto 子用户的列表。 父主题: Workload Manager
共100000条