华为云用户手册

  • 注意事项 TRUNCATE TABLE在功能上与不带WHERE子句DELETE语句相同:二者均删除表中的全部行。 TRUNCATE TABLE比DELETE速度快且使用系统和事务日志资源少: DELETE语句每次删除一行,并在事务日志中为所删除每行记录一项。 TRUNCATE TABLE通过释放存储表数据所用数据页来删除数据,并且只在事务日志中记录页的释放。 TRUNCATE,DELETE,DROP三者的差异如下: TRUNCATE TABLE,删除内容,释放空间,但不删除定义。 DELETE TABLE,删除内容,不删除定义,不释放空间。 DROP TABLE,删除内容和定义,释放空间。
  • 示例 --创建SCHEMA。 openGauss=# CREATE SCHEMA tpcds; --创建表tpcds.reason。 openGauss=# CREATE TABLE tpcds.reason ( r_reason_sk integer, r_reason_id character(16), r_reason_desc character(100) ); --向表中插入多条记录。 openGauss=# INSERT INTO tpcds.reason values(1,'AAAAAAAABAAAAAAA','reason 1'),(5,'AAAAAAAABAAAAAAA','reason 2'),(15,'AAAAAAAABAAAAAAA','reason 3'),(25,'AAAAAAAABAAAAAAA','reason 4'),(35,'AAAAAAAABAAAAAAA','reason 5'),(45,'AAAAAAAACAAAAAAA','reason 6'),(55,'AAAAAAAACAAAAAAA','reason 7'); --创建表。 openGauss=# CREATE TABLE tpcds.reason_t1 AS TABLE tpcds.reason; --清空表tpcds.reason_t1。 openGauss=# TRUNCATE TABLE tpcds.reason_t1; --删除表。 openGauss=# DROP TABLE tpcds.reason_t1; --创建分区表。 openGauss=# CREATE TABLE tpcds.reason_p ( r_reason_sk integer, r_reason_id character(16), r_reason_desc character(100) )PARTITION BY RANGE (r_reason_sk) ( partition p_05_before values less than (05), partition p_15 values less than (15), partition p_25 values less than (25), partition p_35 values less than (35), partition p_45_after values less than (MAXVALUE) ); --插入数据。 openGauss=# INSERT INTO tpcds.reason_p SELECT * FROM tpcds.reason; --清空分区p_05_before。 openGauss=# ALTER TABLE tpcds.reason_p TRUNCATE PARTITION p_05_before; --清空分区p_15。 openGauss=# ALTER TABLE tpcds.reason_p TRUNCATE PARTITION for (15); --清空分区表。 openGauss=# TRUNCATE TABLE tpcds.reason_p; --删除表。 openGauss=# DROP TABLE tpcds.reason_p; --删除表。 openGauss=# DROP TABLE tpcds.reason; --删除SCHEMA。 openGauss=# DROP SCHEMA tpcds CASCADE;
  • 聚合函数 hll_add_agg(hll_hashval) 描述:把哈希后的数据按照分组放到hll中。 返回值类型:hll 示例: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 --准备数据 openGauss=# CREATE TABLE t_id(id int); openGauss=# INSERT INTO t_id VALUES(generate_series(1,500)); openGauss=# CREATE TABLE t_data(a int, c text); openGauss=# INSERT INTO t_data SELECT mod(id,2), id FROM t_id; --创建表并指定列为hll openGauss=# CREATE TABLE t_a_c_hll(a int, c hll); --根据a列group by对数据分组,把各组数据加到hll中 openGauss=# INSERT INTO t_a_c_hll SELECT a, hll_add_agg(hll_hash_text(c)) FROM t_data GROUP BY a; --得到每组数据中hll的Distinct值 openGauss=# SELECT a, #c as cardinality FROM t_a_c_hll ORDER BY a; a | cardinality ---+------------------ 0 | 247.862354346299 1 | 250.908710610377 (2 rows) hll_add_agg(hll_hashval, int32 log2m) 描述:把哈希后的数据按照分组放到hll中, 并指定参数log2m,取值范围是10到16。若输入-1或者NULL,则采用内置默认值。 返回值类型:hll 示例: 1 2 3 4 5 openGauss=# SELECT hll_cardinality(hll_add_agg(hll_hash_text(c), 12)) FROM t_data; hll_cardinality ------------------ 497.965240179228 (1 row) hll_add_agg(hll_hashval, int32 log2m, int32 log2explicit) 描述:把哈希后的数据按照分组放到hll中,依次指定参数log2m、log2explicit。 log2explicit取值范围是0到12,0表示直接跳过Explicit模式。该参数可以用来设置Explicit模式的阈值大小,在数据段长度达到2log2explicit后切换为Sparse模式或者Full模式。若输入-1或者NULL,则log2explicit采用内置默认值。 返回值类型:hll 示例: 1 2 3 4 5 openGauss=# SELECT hll_cardinality(hll_add_agg(hll_hash_text(c), NULL, 1)) FROM t_data; hll_cardinality ------------------ 498.496062953313 (1 row) hll_add_agg(hll_hashval, int32 log2m, int32 log2explicit, int64 log2sparse) 描述:把哈希后的数据按照分组放到hll中, 依次指定参数log2m、log2explicit、log2sparse。,log2sparse取值范围是0到14,0表示直接跳过Sparse模式。该参数可以用来设置Sparse模式的阈值大小,在数据段长度达到2log2sparse后切换为Full模式。若输入-1或者NULL,则log2sparse采用内置默认值。 返回值类型:hll 示例: 1 2 3 4 5 openGauss=# SELECT hll_cardinality(hll_add_agg(hll_hash_text(c), NULL, 6, 10)) FROM t_data; hll_cardinality ------------------ 498.496062953313 (1 row) hll_add_agg(hll_hashval, int32 log2m, int32 log2explicit, int64 log2sparse, int32 duplicatecheck) 描述:把哈希后的数据按照分组放到hll中, 依次指定参数log2m、log2explicit、log2sparse、duplicatecheck,duplicatecheck取值范围是0或者1,表示是否开启该模式,默认情况下该模式会关闭。若输入-1或者NULL,则duplicatecheck采用内置默认值。 返回值类型:hll 示例: 1 2 3 4 5 openGauss=# SELECT hll_cardinality(hll_add_agg(hll_hash_text(c), NULL, 6, 10, -1)) FROM t_data; hll_cardinality ------------------ 498.496062953313 (1 row) hll_union_agg(hll) 描述:将多个hll类型数据union成一个hll。 返回值类型:hll 示例: 1 2 3 4 5 6 7 8 9 10 11 --将各组中的hll数据union成一个hll,并计算distinct值。 openGauss=# SELECT #hll_union_agg(c) as cardinality FROM t_a_c_hll; cardinality ------------------ 498.496062953313 (1 row) --删除表 openGauss=# DROP TABLE t_id; openGauss=# DROP TABLE t_data; openGauss=# DROP TABLE t_a_c_hll; 注意:当两个或者多个hll数据结构做union的时候,必须要保证其中每一个hll里面的精度参数一样,否则将不可以进行union。同样的约束也适用于函数hll_union(hll,hll)。
  • 内置函数 HLL(HyperLogLog)有一系列内置函数用于内部对数据进行处理,一般情况下用户不需要熟知这些函数的使用。详情见表1。 表1 内置函数 函数名称 功能描述 hll_in 以string格式接收hll数据。 hll_out 以string格式发送hll数据。 hll_recv 以bytea格式接收hll数据。 hll_send 以bytea格式发送hll数据。 hll_trans_in 以string格式接收hll_trans_type数据。 hll_trans_out 以string格式发送hll_trans_type数据。 hll_trans_recv 以bytea形式接收hll_trans_type数据。 hll_trans_send 以bytea形式发送hll_trans_type数据。 hll_typmod_in 接收typmod类型数据。 hll_typmod_out 发送typmod类型数据。 hll_hashval_in 接收hll_hashval类型数据。 hll_hashval_out 发送hll_hashval类型数据。 hll_add_trans0 类似于hll_add所提供的功能,初始化时无指定入参,通常在聚合运算的第一阶段DN上使用。 hll_add_trans1 类似于hll_add所提供的功能,初始化时指定一个入参,通常在聚合运算的第一阶段DN上使用。 hll_add_trans2 类似于hll_add所提供的功能,初始化时指定两个入参,通常在聚合运算的第一阶段DN上使用。 hll_add_trans3 类似于hll_add所提供的功能,初始化时指定三个入参,通常在聚合运算的第一阶段DN上使用。 hll_add_trans4 类似于hll_add所提供的功能,初始化时指定四个入参,通常在聚合运算的第一阶段DN上使用。 hll_union_trans 类似hll_union所提供的功能,在聚合运算的第一阶段DN上使用。 hll_union_collect 类似于hll_union所提供的功能,在聚合运算第二阶段DN上使用,汇总各个DN上的结果。 hll_pack 在聚合运算第三阶段DN上使用,把自定义hll_trans_type类型最后转换成hll类型。 hll 用于hll类型转换成hll类型,根据输入参数会设定指定参数。 hll_hashval 用于bigint类型转换成hll_hashval类型。 hll_hashval_int4 用于int4类型转换成hll_hashval类型。
  • 废弃函数 由于版本升级,HLL(HyperLogLog)有一些旧的函数废弃,用户可以用类似的函数进行替代。 hll_schema_version(hll) 描述:查看当前hll中的schema version。旧版本schema version是常值1,用来进行hll字段的头部校验,重构后的hll在头部增加字段“HLL”进行校验,schema version不再使用。 hll_regwidth(hll) 描述:查看hll数据结构中桶的位数大小。旧版本桶的位数regwidth取值1~5,会存在较大的误差,也限制了基数估计上限。 重构后regwidth为固定值6,不再使用regwidth变量。 hll_expthresh(hll) 描述:得到当前hll中expthresh大小。采用hll_log2explicit(hll)替代类似功能。 hll_sparseon(hll) 描述:是否启用Sparse模式。采用hll_log2sparse(hll)替代类似功能,0表示关闭Sparse模式。
  • 功能函数 hll_empty() 描述:创建一个空的hll。 返回值类型:hll 示例: 1 2 3 4 5 openGauss=# SELECT hll_empty(); hll_empty ------------------------------------------------------------ \x484c4c00000000002b05000000000000000000000000000000000000 (1 row) hll_empty(int32 log2m) 描述:创建空的hll并指定参数log2m,取值范围是10到16。若输入-1,则采用内置默认值。 返回值类型:hll 示例: 1 2 3 4 5 6 7 8 9 10 11 openGauss=# SELECT hll_empty(10); hll_empty ------------------------------------------------------------ \x484c4c00000000002b04000000000000000000000000000000000000 (1 row) openGauss=# SELECT hll_empty(-1); hll_empty ------------------------------------------------------------ \x484c4c00000000002b05000000000000000000000000000000000000 (1 row) hll_empty(int32 log2m, int32 log2explicit) 描述:创建空的hll并依次指定参数log2m、log2explicit。log2explicit取值范围是0到12,0表示直接跳过Explicit模式。该参数可以用来设置Explicit模式的阈值大小,在数据段长度达到2log2explicit后切换为Sparse模式或者Full模式。若输入-1,则log2explicit采用内置默认值。 返回值类型: hll 示例: 1 2 3 4 5 6 7 8 9 10 11 openGauss=# SELECT hll_empty(10, 4); hll_empty ------------------------------------------------------------ \x484c4c00000000001304000000000000000000000000000000000000 (1 row) openGauss=# SELECT hll_empty(10, -1); hll_empty ------------------------------------------------------------ \x484c4c00000000002b04000000000000000000000000000000000000 (1 row) hll_empty(int32 log2m, int32 log2explicit, int64 log2sparse) 描述:创建空的hll并依次指定参数log2m、log2explicit、log2sparse。log2sparse取值范围是0到14,0表示直接跳过Sparse模式。该参数可以用来设置Sparse模式的阈值大小,在数据段长度达到2log2sparse后切换为Full模式。若输入-1,则log2sparse采用内置默认值。 返回值类型:hll 示例: 1 2 3 4 5 6 7 8 9 10 11 openGauss=# SELECT hll_empty(10, 4, 8); hll_empty ------------------------------------------------------------ \x484c4c00000000001204000000000000000000000000000000000000 (1 row) openGauss=# SELECT hll_empty(10, 4, -1); hll_empty ------------------------------------------------------------ \x484c4c00000000001304000000000000000000000000000000000000 (1 row) hll_empty(int32 log2m, int32 log2explicit, int64 log2sparse, int32 duplicatecheck) 描述:创建空的hll并依次指定参数log2m、log2explicit、log2sparse、duplicatecheck。duplicatecheck取0或者1,表示是否开启该模式,默认情况下该模式会关闭。若输入-1,则duplicatecheck采用内置默认值。 返回值类型:hll 示例: 1 2 3 4 5 6 7 8 9 10 11 openGauss=# SELECT hll_empty(10, 4, 8, 0); hll_empty ------------------------------------------------------------ \x484c4c00000000001204000000000000000000000000000000000000 (1 row) openGauss=# SELECT hll_empty(10, 4, 8, -1); hll_empty ------------------------------------------------------------ \x484c4c00000000001204000000000000000000000000000000000000 (1 row) hll_add(hll, hll_hashval) 描述:把hll_hashval加入到hll中。 返回值类型:hll 示例: 1 2 3 4 5 openGauss=# SELECT hll_add(hll_empty(), hll_hash_integer(1)); hll_add ---------------------------------------------------------------------------- \x484c4c08000002002b0900000000000000f03f3e2921ff133fbaed3e2921ff133fbaed00 (1 row) hll_add_rev(hll_hashval, hll) 描述:把hll_hashval加入到hll中,和hll_add功能一样,只是参数位置进行了交换。 返回值类型:hll 示例: 1 2 3 4 5 openGauss=# SELECT hll_add_rev(hll_hash_integer(1), hll_empty()); hll_add_rev ---------------------------------------------------------------------------- \x484c4c08000002002b0900000000000000f03f3e2921ff133fbaed3e2921ff133fbaed00 (1 row) hll_eq(hll, hll) 描述:比较两个hll是否相等。 返回值类型:bool 示例: 1 2 3 4 5 openGauss=# SELECT hll_eq(hll_add(hll_empty(), hll_hash_integer(1)), hll_add(hll_empty(), hll_hash_integer(2))); hll_eq -------- f (1 row) hll_ne(hll, hll) 描述:比较两个hll是否不相等。 返回值类型:bool 示例: 1 2 3 4 5 openGauss=# SELECT hll_ne(hll_add(hll_empty(), hll_hash_integer(1)), hll_add(hll_empty(), hll_hash_integer(2))); hll_ne -------- t (1 row) hll_cardinality(hll) 描述:计算hll的distinct值。 返回值类型:int 示例: 1 2 3 4 5 openGauss=# SELECT hll_cardinality(hll_empty() || hll_hash_integer(1)); hll_cardinality ----------------- 1 (1 row) hll_union(hll, hll) 描述:把两个hll数据结构union成一个。 返回值类型:hll 示例: 1 2 3 4 5 openGauss=# SELECT hll_union(hll_add(hll_empty(), hll_hash_integer(1)), hll_add(hll_empty(), hll_hash_integer(2))); hll_union -------------------------------------------------------------------------------------------- \x484c4c10002000002b090000000000000000400000000000000000b3ccc49320cca1ae3e2921ff133fbaed00 (1 row)
  • 日志函数 hll主要存在三种模式Explicit,Sparse,Full。当数据规模比较小的时候会使用Explicit模式,这种模式下distinct值的计算是没有误差的;随着distinct值越来越多,hll会先后转换为Sparse模式和Full模式,这两种模式在计算结果上没有任何区别,只影响hll函数的计算效率和hll对象的存储空间。下面的函数可以用于查看hll的一些参数。 hll_print(hll) 描述:打印hll的一些debug参数信息。 示例: 1 2 3 4 5 openGauss=# SELECT hll_print(hll_empty()); hll_print ------------------------------------------------------------------------------- type=1(HLL_EMPTY), log2m=14, log2explicit=10, log2sparse=12, duplicatecheck=0 (1 row) hll_type(hll) 描述:查看当前hll的类型。返回值具体含义如下:返回值0,表示HLL_UNINIT,未初始化的hll对象;返回值1,表示HLL_EMPTY,hll空对象;返回值2,表示HLL_EXPLICIT,Explicit模式的hll对象;返回值3,表示HLL_SPARSE,Sparse模式的hll对象;返回值4,表示HLL_FULL,Full模式的hll对象;返回值5,表示HLL_UNDEFINED,不合法的hll对象。 示例: 1 2 3 4 5 openGauss=# SELECT hll_type(hll_empty()); hll_type ---------- 1 (1 row) hll_log2m(hll) 描述:查看当前hll数据结构中的log2m数值,log2m是分桶数的对数值,此值会影响最后hll计算distinct误差率,误差率计算公式为±1.04/√(2 ^ log2m)。当显式指定log2m的取值为10-16之间时,hll会设置分桶数为2log2m。当显示指定log2explicit为-1时,会采用内置默认值。 示例: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 openGauss=# SELECT hll_log2m(hll_empty()); hll_log2m ----------- 14 (1 row) openGauss=# SELECT hll_log2m(hll_empty(10)); hll_log2m ----------- 10 (1 row) openGauss=# SELECT hll_log2m(hll_empty(-1)); hll_log2m ----------- 14 (1 row) hll_log2explicit(hll) 描述:查看当前hll数据结构中的log2explicit数值。hll通常会由Explicit模式到Sparse模式再到Full模式,这个过程称为promotion hierarchy策略。可以通过调整log2explicit值的大小改变策略,比如log2explicit为0的时候就会跳过Explicit模式而直接进入Sparse模式。当显式指定log2explicit的取值为1-12之间时,hll会在数据段长度超过2log2explicit时转为Sparse模式。当显示指定log2explicit为-1时,会采用内置默认值。 示例: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 openGauss=# SELECT hll_log2explicit(hll_empty()); hll_log2explicit ------------------ 10 (1 row) openGauss=# SELECT hll_log2explicit(hll_empty(12, 8)); hll_log2explicit ------------------ 8 (1 row) openGauss=# SELECT hll_log2explicit(hll_empty(12, -1)); hll_log2explicit ------------------ 10 (1 row) hll_log2sparse(hll) 描述:查看当前hll数据结构中的log2sparse数值。hll通常会由Explicit模式到Sparse模式再到Full模式,这个过程称为promotion hierarchy策略。可以通过调整log2sparse值的大小改变策略,比如log2sparse为0的时候就会跳过Sparse模式而直接进入Full模式。当显式指定Sparse的取值为1-14之间时,hll会在数据段长度超过2log2sparse时转为Full模式。当显示指定log2sparse为-1时,会采用内置默认值。 示例: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 openGauss=# SELECT hll_log2sparse(hll_empty()); hll_log2sparse ---------------- 12 (1 row) openGauss=# SELECT hll_log2sparse(hll_empty(12, 8, 10)); hll_log2sparse ---------------- 10 (1 row) openGauss=# SELECT hll_log2sparse(hll_empty(12, 8, -1)); hll_log2sparse ---------------- 12 (1 row) hll_duplicatecheck(hll) 描述:是否启用duplicatecheck,0是关闭,1是开启。默认关闭,对于有较多重复值出现的情况,可以开启以提高效率。当显示指定duplicatecheck为-1时,会采用内置默认值。 示例: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 openGauss=# SELECT hll_duplicatecheck(hll_empty()); hll_duplicatecheck -------------------- 0 (1 row) openGauss=# SELECT hll_duplicatecheck(hll_empty(12, 8, 10, 1)); hll_duplicatecheck -------------------- 1 (1 row) openGauss=# SELECT hll_duplicatecheck(hll_empty(12, 8, 10, -1)); hll_duplicatecheck -------------------- 0 (1 row)
  • PG_DEFAULT_ACL PG_DEFAULT_ACL系统表存储为新建对象设置的初始权限。 表1 PG_DEFAULT_ACL字段 名称 类型 描述 oid oid 行标识符(隐含属性,必须明确选择)。 defaclrole oid 与此权限相关的角色ID。 defaclnamespace oid 与此权限相关的名称空间,如果没有,则为0。 defaclobjtype "char" 此权限的对象类型。 r表示表或视图。 S表示序列。 f表示函数。 T表示类型。 K表示客户端主密钥。 k表示列加密密钥。 defaclacl aclitem[] 创建该类型时所拥有的访问权限。 父主题: 系统表
  • STAT_XACT_SYS_TABLES 显示当前节点命名空间中系统表的事务状态信息。 表1 STAT_XACT_SYS_TABLES字段 名称 类型 描述 relid oid 表的OID。 schemaname name 该表的模式名。 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更新行数(比如没有更新所需的单独索引)。 父主题: Object
  • PG_COMM_STATUS PG_COMM_STATUS视图展示单个DN的通信库状态。 表1 PG_COMM_STATUS字段 名称 类型 描述 node_name text 节点名称。 rxpck_rate integer 节点通信库接收速率,单位Byte/s。 txpck_rate integer 节点通信库发送速率,单位Byte/s。 rxkbyte_rate bigint 节点通信库接收速率,单位KByte/s。 txkbyte_rate 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 当前使用的逻辑连接总数。 父主题: 系统视图
  • 示例 示例1:圆整函数参数类型解析。只有一个round函数有两个参数(第一个是numeric,第二个是integer)。所以下面的查询自动把第一个类型为integer的参数转换成numeric类型。 1 2 3 4 5 openGauss=# SELECT round(4, 4); round -------- 4.0000 (1 row) 实际上它被分析器转换成: 1 openGauss=# SELECT round(CAST (4 AS numeric), 4); 因为带小数点的数值常量初始时被赋予numeric类型,因此下面的查询将不需要类型转换,并且可能会略微高效一些: 1 openGauss=# SELECT round(4.0, 4); 示例2:子字符串函数类型解析。有好几个substr函数,其中一个接受text和integer类型。如果用一个未声明类型的字符串常量调用它,系统将选择接受string类型范畴的首选类型(也就是text类型)的候选函数。 1 2 3 4 5 openGauss=# SELECT substr('1234', 3); substr -------- 34 (1 row) 如果该字符串声明为varchar类型,就像从表中取出来的数据一样,分析器将试着将其转换成text类型: 1 2 3 4 5 openGauss=# SELECT substr(varchar '1234', 3); substr -------- 34 (1 row) 被分析器转换后实际上变成: 1 openGauss=# SELECT substr(CAST (varchar '1234' AS text), 3); 分析器从pg_cast表中了解到text和varchar是二进制兼容的,意思是说一个可以传递给接受另一个的函数而不需要做任何物理转换。因此,在这种情况下,实际上没有做任何类型转换。 而且,如果以integer为参数调用函数,分析器将试图将其转换成text类型: 1 2 3 4 5 openGauss=# SELECT substr(1234, 3); substr -------- 34 (1 row) 被分析器转换后实际上变成: 1 2 3 4 5 openGauss=# SELECT substr(CAST (1234 AS text), 3); substr -------- 34 (1 row)
  • 函数类型解析 从系统表pg_proc中选择所有可能被选到的函数。如果使用了一个不带模式修饰的函数名称,那么认为该函数是那些在当前搜索路径中的函数。如果给出一个带修饰的函数名,那么只考虑指定模式中的函数。 如果搜索路径中找到了多个不同参数类型的函数。将从中选择一个合适的函数。 查找和输入参数类型完全匹配的函数。如果找到一个,则用之。如果输入的实参类型都是unknown类型,则不会找到匹配的函数。 如果未找到完全匹配,请查看该函数是否为一个特殊的类型转换函数。 寻找最优匹配。 抛弃那些输入类型不匹配并且也不能隐式转换成匹配的候选函数。unknown文本在这种情况下可以转换成任何东西。如果只剩下一个候选项,则用之,否则继续下一步。 遍历所有候选函数,保留那些输入类型匹配最准确的。此时,域被看作和它们的基本类型相同。如果没有一个函数能准确匹配,则保留所有候选。如果只剩下一个候选项,则用之,否则继续下一步。 遍历所有候选函数,保留那些需要类型转换时接受首选类型位置最多的函数。如果没有接受首选类型的函数,则保留所有候选。如果只剩下一个候选项,则用之,否则继续下一步。 如果有任何输入参数是unknown类型,检查剩余的候选函数对应参数位置的类型范畴。在每一个能够接受字符串类型范畴的位置使用string类型(这种对字符串的偏爱是合适的,因为unknown文本确实像字符串)。另外,如果所有剩下的候选函数都接受相同的类型范畴,则选择该类型范畴,否则抛出一个错误(因为在没有更多线索的条件下无法做出正确的选择)。现在抛弃不接受选定的类型范畴的候选函数,然后,如果任意候选函数在那个范畴接受一个首选类型,则抛弃那些在该参数位置接受非首选类型的候选函数。如果没有一个候选符合这些测试则保留所有候选。如果只有一个候选函数符合,则使用它;否则,继续下一步。 如果同时有unknown和已知类型的参数,并且所有已知类型的参数有相同的类型,假设unknown参数也是这种类型,检查哪个候选函数可以在unknown参数位置接受这种类型。如果正好一个候选符合,那么使用它。否则,产生一个错误。
  • SUMMARY_WORKLOAD_SQL_COUNT 显示数据库内各数据库主节点的workload上的SQL数量分布。 表1 SUMMARY_WORKLOAD_SQL_COUNT字段 名称 类型 描述 node_name name 节点名称。 workload name 负载名称。 select_count bigint select数量。 update_count bigint update数量。 insert_count bigint insert数量。 delete_count bigint delete数量。 ddl_count bigint ddl数量。 dml_count bigint dml数量。 dcl_count bigint dcl数量。 父主题: Workload
  • 参数说明 role_name 现有角色名。 取值范围:已存在的角色名,如果角色名中包含大写字母则需要使用双引号括起来。 IN DATABASE database_name 表示修改角色在指定数据库上的参数。 SET configuration_parameter {{ TO | = } { value | DEFAULT } | FROM CURRENT} 设置角色的参数。ALTER ROLE中修改的会话参数只针对指定的角色,且在下一次该角色启动的会话中有效。 取值范围: configuration_parameter和value的取值请参见SET。 DEFAULT:表示清除configuration_parameter参数的值,configuration_parameter参数的值将继承本角色新产生的SESSION的默认值。 FROM CURRENT:取当前会话中的值设置为configuration_parameter参数的值。 RESET {configuration_parameter|ALL} 清除configuration_parameter参数的值。与SET configuration_parameter TO DEFAULT的效果相同。 取值范围:ALL表示清除所有参数的值。 ACCOUNT LOCK | ACCOUNT UNLOCK ACCOUNT LOCK:锁定账户,禁止登录数据库。 ACCOUNT UNLOCK:解锁账户,允许登录数据库。 PGUSER 当前版本不允许修改角色的PGUSER属性。 PASSWORD/IDENTIFIED BY 'password' 重置或修改用户密码。除了初始用户外其他管理员或普通用户修改自己的密码需要输入正确的旧密码。只有初始用户、系统管理员(sysadmin)或拥有创建用户(CREATEROLE)权限的用户才可以重置普通用户密码,无需输入旧密码。初始用户可以重置系统管理员的密码,系统管理员不允许重置其他系统管理员的密码。应当使用单引号将用户密码括起来。 EXPIRED 设置密码失效。只有初始用户、系统管理员(sysadmin)或拥有创建用户(CREATEROLE)权限的用户才可以设置用户密码失效,其中系统管理员也可以设置自己或其他系统管理员密码失效。不允许设置初始用户密码失效。 密码失效的用户可以登录数据库但不能执行查询操作,只有修改密码或由管理员重置密码后才可以恢复正常查询操作。 其他参数请参见CREATE ROLE的参数说明。
  • 语法格式 修改角色的权限。 ALTER ROLE role_name [ [ WITH ] option [ ... ] ]; 其中权限项子句option为: {CREATEDB | NOCREATEDB} | {CREATEROLE | NOCREATEROLE} | {INHERIT | NOINHERIT} | {AUDITADMIN | NOAUDITADMIN} | {SYSADMIN | NOSYSADMIN} | {MONADMIN | NOMONADMIN} | {OPRADMIN | NOOPRADMIN} | {POLADMIN | NOPOLADMIN} | {USEFT | NOUSEFT} | { LOG IN | NOLOGIN} | {REPLICATION | NOREPLICATION} | {VCADMIN | NOVCADMIN} | {PERSISTENCE | NOPERSISTENCE} | CONNECTION LIMIT connlimit | [ ENCRYPTED | UNENCRYPTED ] PASSWORD 'password' [EXPIRED] | [ ENCRYPTED | UNENCRYPTED ] IDENTIFIED BY 'password' [ REPLACE 'old_password' | EXPIRED ] | [ ENCRYPTED | UNENCRYPTED ] PASSWORD { 'password' | DISABLE | EXPIRED } | [ ENCRYPTED | UNENCRYPTED ] IDENTIFIED BY { 'password' [ REPLACE 'old_password' ] | DISABLE } | VALID BEGIN 'timestamp' | VALID UNTIL 'timestamp' | PERM SPACE 'spacelimit' | PGUSER 修改角色的名称。 ALTER ROLE role_name RENAME TO new_name; 锁定或解锁。 ALTER ROLE role_name ACCOUNT { LOCK | UNLOCK }; 设置角色的配置参数。 ALTER ROLE role_name [ IN DATABASE database_name ] SET configuration_parameter {{ TO | = } { value | DEFAULT } | FROM CURRENT}; 重置角色的配置参数。 ALTER ROLE role_name [ IN DATABASE database_name ] RESET {configuration_parameter|ALL};
  • 示例 --创建用户组。 openGauss=# CREATE GROUP super_users WITH PASSWORD "********"; --创建用户。 openGauss=# CREATE ROLE lche WITH PASSWORD "********"; --创建用户。 openGauss=# CREATE ROLE jim WITH PASSWORD "********"; --向用户组中添加用户。 openGauss=# ALTER GROUP super_users ADD USER lche, jim; --从用户组中删除用户。 openGauss=# ALTER GROUP super_users DROP USER jim; --修改用户组的名称。 openGauss=# ALTER GROUP super_users RENAME TO normal_users; --删除用户。 openGauss=# DROP ROLE lche, jim; --删除用户组。 openGauss=# DROP GROUP normal_users;
  • PG_JOB PG_JOB系统表存储用户创建的定时任务的任务详细信息,定时任务线程定时轮询PG_JOB系统表中的时间,当任务到期会触发任务的执行,并更新PG_JOB表中的任务状态。该系统表属于Shared Relation,所有创建的job记录对所有数据库可见。 表1 PG_JOB字段 名称 类型 描述 oid oid 行标识符(隐含属性,必须明确选择)。 job_id bigint 作业ID,主键,是唯一的(有唯一索引) current_postgres_pid bigint 如果当前任务已被执行,那么此处记录运行此任务的线程ID。默认为 -1,表示此任务未被执行过。 log_user name 创建者的UserName priv_user name 作业执行者的UserName dbname name 标识作业要在哪个数据库执行的数据库名称 node_name name 标识当前作业是在哪个数据库主节点上创建和执行 job_status "char" 当前任务的执行状态,默认为's',各取值含义: 'r':running 's':successfully finished 'f':job failed 'd':disable 当job连续执行失败16次,会将job_status自动设置为失效状态'd',后续不再执行该job。 注:当用户将定时任务关闭(即:guc参数job_queue_processes为0时),由于监控job执行的线程不会启动,所以该状态不会根据job的实时状态进行设置,用户不需要关注此状态。只有当开启定时任务功能(即:guc参数job_queue_processes为非0时),系统才会根据当前job的实时状态刷新该字段值。 start_date timestamp without time zone 作业第一次开始执行时间,时间精确到毫秒。 next_run_date timestamp without time zone 定时任务下次执行的时间,时间精确到毫秒。 failure_count smallint 失败计数,作业连续执行失败16次,不再继续执行。 interval text 作业执行的重复时间间隔。 last_start_date timestamp without time zone 上次运行开始时间,时间精确到毫秒。 last_end_date timestamp without time zone 上次运行的结束时间,时间精确到毫秒。 last_suc_date timestamp without time zone 上次成功运行的开始时间,时间精确到毫秒。 this_run_date timestamp without time zone 正在运行任务的开始时间,时间精确到毫秒。 nspname name 标识作业执行时的schema的名称。 job_name text DBE_SCHEDULER定时任务专用,定时任务名称。 end_date timestamp without time zone DBE_SCHEDULER定时任务专用,定时任务失效时间,时间精确到毫秒。 enable boolean DBE_SCHEDULER定时任务专用,定时任务启用状态: true:启用 false:未启用 failure_msg text 最新一次执行任务报错信息。 父主题: 系统表
  • Psycopg接口参考 Psycopg接口是一套提供给用户的API方法,本节将对部分常用接口做具体描述。 psycopg2.connect() connection.cursor() cursor.execute(query,vars_list) cursor.executemany(query,vars_list) connection.commit() connection.rollback() cursor.fetchone() cursor.fetchall() cursor.close() connection.close() 父主题: 基于Psycopg开发
  • STAT_USER_INDEXES 显示数据库中用户自定义普通表的索引状态信息。 表1 STAT_USER_INDEXES字段 名称 类型 描述 relid oid 此索引的表的OID。 indexrelid oid 索引的OID。 schemaname name 索引的模式名。 relname name 索引的表名。 indexrelname name 索引名。 idx_scan bigint 索引上开始的索引扫描数。 idx_tup_read bigint 通过索引上扫描返回的索引项数。 idx_tup_fetch bigint 通过使用索引的简单索引扫描抓取的活表行数。 父主题: Object
  • Undo系统函数 gs_undo_meta(type, zoneId, location) 描述:Undo各模块元信息。 参数说明: type(元信息类型) 0表示Undo Zone(Record) 对应的元信息。 1表示Undo Zone(Transaction Slot) 对应的元信息。 2表示Undo Space(Record) 对应的元信息。 3表示Undo Space(Transaction Slot) 对应的元信息。 zoneId(undo zone编号) -1表示所有undo zone的元信息。 0-1024*1024表示对应zoneid的元信息。 location(读取位置) 0表示从当前内存中读取。 1表示从物理文件中读取。 返回值类型:record 表1 gs_undo_meta(0,-1,0)输出示例 参数类型 参数名 类型 描述 输出参数 zoneId oid undo zone的id。 输出参数 persistType oid 持久化级别。 输出参数 insert text 下一条插入的undo记录位置。 输出参数 discard text 普通回收到的undo记录位置。 输出参数 end text 强制回收掉undo记录位置,小于它的undo记录已经被回收。 输出参数 used text 已经使用的undo空间。 输出参数 lsn text 修改zone的lsn。 输出参数 pid oid zone绑定的进程id。 gs_undo_translot(location, zoneId) 描述:Undo事务槽信息。 参数说明: location(读取位置) 0表示从当前内存中读取。 1表示从物理文件中读取。 zoneId(undo zone编号) -1表示所有undo zone的元信息。 0-1024*1024表示对应zoneId的元信息。 返回值类型:record 表2 gs_undo_translot(0,-1)输出示例 参数类型 参数名 类型 描述 输出参数 groupId oid 使用的undo zone id。 输出参数 xactId text 事务id。 输出参数 startUndoPtr text slot对应事务起始插入undo记录位置。 输出参数 endUndoPtr text slot对应事务结束插入undo记录位置。 输出参数 lsn text 对应slot指针。 输出参数 slot_states oid 事务状态,0表示已经提交,1表示正在执行中,2表示回滚中,3表示回滚完成。 gs_stat_undo() 描述:Undo统计信息。 返回值类型:record 表3 gs_stat_undo参数说明 参数类型 参数名 类型 描述 输出参数 curr_used_zone_count uint32 当前使用的Undo zone数量。 输出参数 top_used_zones text 前三个使用量最大的Undo zone信息,格式输出为: zoneId1:使用大小。 zoneId2:使用大小。 zoneId3:使用大小。 输出参数 curr_used_undo_size uint32 当前使用的Undo总空间大小,单位为MB。 输出参数 undo_threshold uint32 为guc参数undo_space_limit_size * 80%计算的结果,单位为MB。 输出参数 oldest_xid_in_undo uint64 当前Undo空间回收到的事务xid(小于该xid事务产生的Undo记录都已经被回收)。 输出参数 oldest_xmin uint64 最老的活跃事务。 输出参数 total_undo_chain_len int64 所有访问过的Undo链总长度。 输出参数 max_undo_chain_len int64 最大访问过的Undo链长度。 输出参数 create_undo_file_count uint32 创建的Undo文件数量统计。 输出参数 discard_undo_file_count uint32 删除的Undo文件数量统计。 gs_undo_record(undoptr) 描述:Undo记录解析。 参数说明: undoptr(undo记录指针) 返回值类型:record gs_undo_dump_parsepage_mv(relpath text, blkno bigint, reltype text, rmem boolean) 描述:解析ustore数据表磁盘页面的页头信息,每个元组的头部信息,标识位信息以及所有可以查询到undo历史版本信息。 返回值类型:text 备注:必须是系统管理员或者运维管理人员才能执行此函数。 该接口当前仅支持USTORE数据表。 表4 gs_undo_dump_parsepage_mv参数说明 参数类型 参数名 类型 描述 输入参数 relpath text ustore表数据文件相对路径,相对路径格式为:tablespace name/database oid/relfilenode,例如base/16603/16384, 表对应数据文件的相对路径查找可以通过pg_relation_filepath('tablename')查询。 输入参数 blkno bigint -1 解析所有block页面。 0-MaxBlocNumber解析指定的block页面。 输入参数 reltype text 表类型,目前仅支持ustore数据表,取值为uheap。 输入参数 rmem boolean false true 目前仅支持false,从磁盘文件上解析对应的页面。 输出参数 output text 解析结果文件的绝对路径。 gs_undo_meta_dump_zone(zone_id int, read_memory boolean) 描述:解析Undo模块中zone的元信息。 返回值类型:record 表5 gs_undo_meta_dump_zone参数说明 参数类型 参数名 类型 描述 输入参数 zone_id int Undo zone编号: -1:查询所有Undo zone。 0-1,048,575:查询对应zone_id编号的undo zone元信息。 输入参数 read_memory boolean true:从当前内存中读取。 false:从物理文件中读取。 输出参数 zone_id int Undo zone编号。 输出参数 persist_type int 持久化级别: 0:普通表 1:无日志表 2:临时表 输出参数 insert text 下一条插入的undo记录位置。 输出参数 discard text 普通回收到的undo记录位置。 输出参数 forcediscard text 强制回收掉undo记录位置,小于它的undo记录已经被回收。 输出参数 lsn text 修改zone的lsn。 gs_undo_meta_dump_spaces(zone_id int, read_memory boolean) 描述:解析Undo模块中undo记录空间,undo slot空间的元信息。 返回值类型:record 表6 gs_undo_meta_dump_spaces参数说明 参数类型 参数名 类型 描述 输入参数 zone_id int Undo zone编号: -1:查询所有Undo zone。 0-1,048,575:查询对应zone_id编号的undo zone元信息。 输入参数 read_memory boolean true:从当前内存中读取。 false:从物理文件中读取。 输出参数 zone_id int Undo zone编号。 输出参数 undorecord_space_tail text Undo record空间的结尾位置。 输出参数 undorecord_space_head text Undo record空间的起始位置。 输出参数 undorecord_space_lsn text 修改Undo record空间lsn。 输出参数 undoslot_space_tail text Undo slot空间的结尾位置。 输出参数 undoslot_space_head text Undo slot空间的起始位置。 输出参数 undoreslot_space_lsn text 修改Undo slot空间lsn。 gs_undo_meta_dump_slot(zone_id int, read_memory boolean) 描述:解析Undo模块中slot元信息。 返回值类型:record 表7 gs_undo_meta_dump_slot参数说明 参数类型 参数名 类型 描述 输入参数 zone_id int Undo zone编号: -1:查询所有Undo zone。 0-1,048,575:查询对应zone_id编号的undo zone元信息。 输入参数 read_memory boolean true:从当前内存中读取。 false:从物理文件中读取。 输出参数 zone_id int Undo zone编号。 输出参数 allocate text Undo transaction slot分配位置。 输出参数 recycle text Undo transaction slot回收位置。 输出参数 frozen_xid text frozen xid,用于可见性判断。 输出参数 global_frozen_xid text 全局最小的frozen xid,小于该xid的事务可见。 输出参数 recycle_xid text 回收到的xid,小于该xid的事务被回收。 输出参数 global_recycle_xid text 全局最小的recycle xid,小于该xid的事务被回收。 gs_undo_translot_dump_slot(zone_id int, read_memory boolean) 描述:解析zone中的slot。 返回值类型:record 表8 gs_undo_translot_dump_slot参数说明 参数类型 参数名 类型 描述 输入参数 zone_id oid Undo zone编号: -1:查询所有Undo zone。 0-1,048,575:查询对应zone_id编号的undo zone元信息。 输入参数 read_memory boolean true:从当前内存中读取。 false:从物理文件中读取。 输出参数 zone_id text Undo zone编号。 输出参数 slot_xid text 事务id。 输出参数 start_undoptr text slot对应事务起始插入undo记录位置。 输出参数 end_undoptr text slot对应事务结束插入undo记录位置。 输出参数 slot_ptr text Transaction Slot对应的位置。 输出参数 slot_states oid 事务状态: 0:已提交 1:执行中 2:回滚中 3:回滚完成 gs_undo_translot_dump_xid(slot_xid xid, read_memory boolean) 描述:根据xid,解析zone中对应的slot。 返回值类型:record 表9 gs_undo_translot_dump_xid参数说明 参数类型 参数名 类型 描述 输入参数 slot_xid xid 需要查询的事务id。 输入参数 read_memory boolean true:从当前内存中读取。 false:从物理文件中读取。 输出参数 zone_id text Undo zone编号。 输出参数 slot_xid text 事务id。 输出参数 start_undoptr text slot对应事务起始插入undo记录位置。 输出参数 end_undoptr text slot对应事务结束插入undo记录位置。 输出参数 lsn text 修改slot的lsn。 输出参数 slot_states oid 事务状态: 0 已提交 1 执行中 2 回滚中 3 回滚完成 gs_undo_dump_record(undoptr bigint) 描述:解析undo记录。 返回值类型:record 表10 gs_undo_dump_record参数说明 参数类型 参数名 类型 描述 输入参数 undoptr bigint 需要解析的undo记录起始位置。 输出参数 undoptr bigint 需要解析的undo记录起始位置。 输出参数 xactid text 事务id。 输出参数 cid text command id。 输出参数 reloid text relation oid。 输出参数 relfilenode text 文件的relfinode。 输出参数 utype text undo记录类型。 输出参数 blkprev text 同一个块前一条undo记录的位置。 输出参数 blockno text 块号。 输出参数 uoffset text undo记录偏移。 输出参数 prevurp text 前一条undo记录位置。 输出参数 payloadlen text undo记录数据部分长度。 输出参数 oldxactid text 前一个事务id。 输出参数 partitionoid text 分区oid。 输出参数 tablespace text 表空间。 输出参数 alreadyread_bytes text 读取到的undo记录长度。 输出参数 prev_undorec_len text 前一条undo记录长度。 输出参数 td_id text Transaction Directory的id。 输出参数 reserved text 是否保存。 输出参数 flag text 标识1。 输出参数 flag2 text 标识2。 输出参数 t_hoff text Undo记录数据头的长度。 gs_undo_dump_xid(undo_xid xid) 描述:根据xid解析undo记录。 返回值类型:record 表11 gs_undo_dump_xid参数说明 参数类型 参数名 类型 描述 输入参数 undo_xid xid 事务xid 输出参数 undoptr xid 需要解析的undo记录起始位置。 输出参数 xactid text 事务id 输出参数 cid text command id 输出参数 reloid text relation oid 输出参数 relfilenode text 文件的relfinode 输出参数 utype text undo记录类型 输出参数 blkprev text 同一个块前一条undo记录的位置。 输出参数 blockno text 块号 输出参数 uoffset text undo记录偏移 输出参数 prevurp text 前一条undo记录位置。 输出参数 payloadlen text undo记录数据部分长度。 输出参数 oldxactid text 前一个事务id 输出参数 partitionoid text 分区oid 输出参数 tablespace text 表空间 输出参数 alreadyread_bytes text 读取到的undo记录长度。 输出参数 prev_undorec_len text 前一条undo记录长度。 输出参数 td_id text Transaction Directory的id。 输出参数 reserved text 是否保留 输出参数 flag text 标识1 输出参数 flag2 text 标识2 输出参数 t_hoff text Undo记录数据头的长度。 gs_verify_undo_record(type, startIdx,endIdx, location) 描述:校验Undo记录。 返回值类型:record 该接口仅为扩展预留接口,禁止使用。 gs_verify_undo_translot(type, startIdx,endIdx, location) 描述:校验Undo事务槽。 返回值类型:record 该接口仅为扩展预留接口,禁止使用。 gs_verify_undo_meta(type, startIdx,endIdx, location) 描述:校验Undo元信息。 返回值类型:record 该接口仅为扩展预留接口,禁止使用。 父主题: 系统管理函数
  • 示例 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 CREATE OR REPLACE PROCEDURE proc_case_branch(pi_result in integer, pi_return out integer) AS BEGIN CASE pi_result WHEN 1 THEN pi_return := 111; WHEN 2 THEN pi_return := 222; WHEN 3 THEN pi_return := 333; WHEN 6 THEN pi_return := 444; WHEN 7 THEN pi_return := 555; WHEN 8 THEN pi_return := 666; WHEN 9 THEN pi_return := 777; WHEN 10 THEN pi_return := 888; ELSE pi_return := 999; END CASE; raise info 'pi_return : %',pi_return ; END; / CALL proc_case_branch(3,0); --删除存储过程 DROP PROCEDURE proc_case_branch;
  • PG_OPCLASS PG_OPCLASS系统表定义索引访问方法操作符类。 每个操作符类为一种特定数据类型和一种特定索引访问方法定义索引字段的语义。一个操作符类本质上指定一个特定的操作符族适用于一个特定的可索引的字段数据类型。索引的字段实际可用的族中的操作符集是接受字段的数据类型作为它们的左边的输入的那个。 表1 PG_OPCLASS字段 名称 类型 引用 描述 oid oid - 行标识符(隐含属性,必须明确选择)。 opcmethod oid PG_AM.oid 操作符类所服务的索引访问方法。 opcname name - 这个操作符类的名称。 opcnamespace oid PG_NAMESPACE.oid 这个操作符类的名称空间。 opcowner oid PG_AUTHID.oid 操作符类属主。 opcfamily oid PG_OPFAMILY.oid 包含该操作符类的操作符族。 opcintype oid PG_TYPE.oid 操作符类索引的数据类型。 opcdefault boolean - 如果操作符类是opcintype的缺省,则为真。 opckeytype oid PG_TYPE.oid 索引数据的类型,如果和opcintype相同则为零。 一个操作符类的opcmethod必须匹配包含它的操作符族的opfmethod。 父主题: 系统表
  • DB_CONSTRAINTS DB_CONSTRAINTS视图显示当前用户可访问的约束的信息。该视图同时存在于PG_CATALOG和SYS Schema下。 表1 DB_CONSTRAINTS字段 名称 类型 描述 owner character varyiny(64) 约束创建者。 constraint_name character varying(64) 约束名。 constraint_type text 约束类型: c表示检查约束。 f表示外键约束。 p表示主键约束。 u表示唯一约束。 table_name character varying(64) 约束相关的表名。 index_owner character varying(64) 约束相关的索引的所有者(只针对唯一约束和主键约束)。 index_name character varying(64) 约束相关的索引名(只针对唯一约束和主键约束)。 父主题: 系统视图
  • PKG_UTIL PKG_UTIL支持的所有接口请参见表1: 表1 PKG_UTIL 接口名称 描述 PKG_UTIL.LOB_GET_LENGTH 获取lob的长度。 PKG_UTIL.LOB_READ 读取lob对象的一部分。 PKG_UTIL.LOB_WRITE 将源对象按照指定格式写入到目标对象。 PKG_UTIL.LOB_APPEND 将lob源对象指定个数的字符追加到目标lob对象。 PKG_UTIL.LOB_COMPARE 根据指定长度比较两个lob对象。 PKG_UTIL.LOB_MATCH 返回一个字符串在LOB中第N次出现的位置。 PKG_UTIL.LOB_RESET 将lob的指定位置重置为指定字符。 PKG_UTIL.IO_PRINT 将字符串打印输出。 PKG_UTIL.RAW_GET_LENGTH 获取raw的长度。 PKG_UTIL.RAW_CAST_FROM_VARCHAR2 将varchar2转化为raw。 PKG_UTIL.RAW_CAST_FROM_BINARY_INTEGER 将binary integer转化为raw。 PKG_UTIL.RAW_CAST_TO_BINARY_INTEGER 将raw转化为binary integer。 PKG_UTIL.RANDOM_SET_SEED 设置随机种子。 PKG_UTIL.RANDOM_GET_VALUE 返回随机值。 PKG_UTIL.FILE_SET_DIRNAME 设置当前操作的目录。 PKG_UTIL.FILE_OPEN 根据指定文件名和设置的目录打开一个文件。 PKG_UTIL.FILE_SET_MAX_LINE_SIZE 设置写入文件一行的最大长度。 PKG_UTIL.FILE_IS_CLOSE 检测一个文件句柄是否关闭。 PKG_UTIL.FILE_READ 从一个打开的文件句柄中读取指定长度的数据。 PKG_UTIL.FILE_REA DLI NE 从一个打开的文件句柄中读取一行数据。 PKG_UTIL.FILE_WRITE 将BUFFER中的数据写入到文件中。 PKG_UTIL.FILE_WRITELINE 将BUFFER写入文件,并追加换行符。 PKG_UTIL.FILE_NEWLINE 新起一行。 PKG_UTIL.FILE_READ_RAW 从一个打开的文件句柄中读取指定长度的二进制数据。 PKG_UTIL.FILE_WRITE_RAW 将二进制数据写入到文件中。 PKG_UTIL.FILE_FLUSH 将一个文件句柄中的数据写入到物理文件中。 PKG_UTIL.FILE_CLOSE 关闭一个打开的文件句柄。 PKG_UTIL.FILE_REMOVE 删除一个物理文件,操作需要有对应权限。 PKG_UTIL.FILE_RENAME 对于磁盘上的文件进行重命名,类似UNIX的mv。 PKG_UTIL.FILE_SIZE 返回文件大小。 PKG_UTIL.FILE_BLOCK_SIZE 返回文件含有的块数量。 PKG_UTIL.FILE_EXISTS 判断文件是否存在。 PKG_UTIL.FILE_GETPOS 返回文件的偏移量,单位字节。 PKG_UTIL.FILE_SEEK 设置文件位置为指定偏移。 PKG_UTIL.FILE_CLOSE_ALL 关闭一个会话中打开的所有文件句柄。 PKG_UTIL.EXCEPTION_REPORT_ERROR 抛出一个异常。 PKG_UTIL.APP_READ_CLIENT_INFO 读取client_info信息。 PKG_UTIL.APP_SET_CLIENT_INFO 设置client_info信息。 PKG_UTIL.LOB_CONVERTTOBLOB clob类型转换成blob类型。 PKG_UTIL.LOB_CONVERTTOCLOB blob类型转换成clob类型。 PKG_UTIL.LOB_RAWTOTEXT raw类型转成text类型。 PKG_UTIL.LOB_TEXTTORAW text类型转成raw类型。 PKG_UTIL.MATCH_EDIT_DISTANCE_SIMILARITY 计算两个字符串的差距。 PKG_UTIL.RAW_CAST_TO_VARCHAR2 raw类型转成varchar2类型。 PKG_UTIL.SESSION_CLEAR_CONTEXT 清空session_context中的属性值。 PKG_UTIL.SESSION_SEARCH_CONTEXT 查找一个属性值。 PKG_UTIL.SESSION_SET_CONTEXT 设置一个属性值。 PKG_UTIL.UTILITY_FORMAT_CALL_STACK 查看存储过程的调用堆栈。 PKG_UTIL.UTILITY_FORMAT_ERROR_BACKTRACE 查看存储过程的错误堆栈。 PKG_UTIL.UTILITY_FORMAT_ERROR_STACK 查看存储过程的报错信息。 PKG_UTIL.UTILITY_GET_TIME 查看系统UNIX时间戳。 PKG_UTIL.LOB_GET_LENGTH 该函数LOB_GET_LENGTH获取输入数据的长度。 PKG_UTIL.LOB_GET_LENGTH函数原型为: 1 2 3 4 PKG_UTIL.LOB_GET_LENGTH( lob IN anyelement ) RETURN INTEGER; 表2 PKG_UTIL.LOB_GET_LENGTH接口参数说明 参数 类型 入参/出参 是否可以为空 描述 lob clob/blob IN 否 待获取长度的对象。 PKG_UTIL.LOB_READ 该函数LOB_READ读取一个对象,并返回指定部分。 PKG_UTIL.LOB_READ函数原型为: 1 2 3 4 5 6 7 PKG_UTIL.LOB_READ( lob IN anyelement, len IN int, start IN int, mode IN int ) RETURN ANYELEMENT 表3 PKG_UTIL.LOB_READ接口参数说明 参数 类型 入参/出参 是否可以为空 描述 lob clob/blob IN 否 clob或者blob类型数据。 len int IN 否 返回结果长度。 start int IN 否 相较于第一个字符的偏移量。 mode int IN 否 判断读取操作的类型, 0 :read; 1 : trim; 2 : substr。 PKG_UTIL.LOB_WRITE 该函数LOB_WRITE将源对象按照指定的参数写入目标对象, 并返回目标对象。 PKG_UTIL.LOB_WRITE函数原型为: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 PKG_UTIL.LOB_WRITE( dest_lob INOUT blob, src_lob IN raw len IN int, start_pos IN int ) RETURN BLOB; PKG_UTIL.LOB_WRITE( dest_lob INOUT clob, src_lob IN varchar2 len IN int, start_pos IN int ) RETURN CLOB; 表4 PKG_UTIL.LOB_WRITE接口参数说明 参数 类型 入参/出参 是否可以为空 描述 dest_lob clob/blob INOUT 否 写入的目标对象。 src_lob clob/blob IN 否 被写入的源对象。 len int IN 否 源对象的写入长度。 start_pos int IN 否 目标对象的写入起始位置。 PKG_UTIL.LOB_APPEND 该函数LOB_APPEND将源blob/clob对象追加到目标blob/clob对象, 并返回目标对象。 PKG_UTIL.LOB_APPEND函数原型为: 1 2 3 4 5 6 7 8 9 10 11 12 13 PKG_UTIL.LOB_APPEND( dest_lob INOUT blob, src_lob IN blob, len IN int default NULL ) RETURN BLOB; PKG_UTIL.LOB_APPEND( dest_lob INOUT clob, src_lob IN clob, len IN int default NULL ) RETURN CLOB; 表5 PKG_UTIL.LOB_APPEND接口参数说明 参数 类型 入参/出参 是否可以为空 描述 dest_lob blob/clob INOUT 否 写入的目标blob/clob对象。 src_lob blob/clob IN 否 被写入的源blob/clob对象。 len int IN 是 写入源对象的长度,为NULL则默认写入源对象全部。 PKG_UTIL.LOB_COMPARE 该函数LOB_COMPARE按照指定的起始位置、个数比较对象是否相同,lob1大则返回1,lob2大返回-1,相等返回0。 PKG_UTIL.LOB_COMPARE函数原型为: 1 2 3 4 5 6 7 8 PKG_UTIL.LOB_COMPARE( lob1 IN anyelement, lob2 IN anyelement, len IN int default 1073741771, start_pos1 IN int default 1, start_pos2 IN int default 1 ) RETURN INTEGER; 表6 PKG_UTIL.LOB_COMPARE接口参数说明 参数 类型 入参/出参 是否可以为空 描述 lob1 clob/blob IN 否 待比较的字符串。 lob2 clob/blob IN 否 待比较的字符串。 len int IN 否 比较的长度。 start_pos1 int IN 否 lob1起始偏移量。 start_pos2 int IN 否 lob2起始偏移量。 PKG_UTIL.LOB_MATCH 该函数LOB_MATCH返回pattern出现在lob对象中第match_nth次的位置。 PKG_UTIL.LOB_MATCH函数原型为: 1 2 3 4 5 6 7 PKG_UTIL.LOB_MATCH( lob IN anyelement, pattern IN anyelement, start IN int, match_nth IN int default 1 ) RETURN INTEGER; 表7 PKG_UTIL.LOB_MATCH接口参数说明 参数 类型 入参/出参 是否可以为空 描述 lob clob/blob IN 否 待比较的字符串。 pattern clob/blob IN 否 待匹配的pattern。 start int IN 否 lob的起始比较位置。 match_nth int IN 否 第几次匹配到。 PKG_UTIL.LOB_RESET 该函数LOB_RESET清除一段数据为字符value。 PKG_UTIL.LOB_RESET函数原型为: 1 2 3 4 5 6 7 PKG_UTIL.LOB_RESET( lob INOUT blob, len INOUT int, start IN int DEFAULT 1, value IN int default 0 ) RETURN record; 表8 PKG_UTIL.LOB_RESET接口参数说明 参数 类型 入参/出参 是否可以为空 描述 lob blob IN 否 待重置的字符串。 len int IN 否 重置的长度。 start int IN 否 重置的起始位置。 value int IN 是 设置的字符。默认值‘0’。 PKG_UTIL.IO_PRINT 该函数IO_PRINT将一段字符串打印输出。 PKG_UTIL.IO_PRINT函数原型为: 1 2 3 4 5 PKG_UTIL.IO_PRINT( format IN text, is_one_line IN boolean ) RETURN void; 表9 PKG_UTIL.IO_PRINT接口参数说明 参数 类型 入参/出参 是否可以为空 描述 format text IN 否 待打印输出的字符串。 is_one_line boolean IN 否 是否输出为一行。 PKG_UTIL.RAW_GET_LENGTH 该函数RAW_GET_LENGTH获取raw的长度。 PKG_UTIL.RAW_GET_LENGTH函数原型为: 1 2 3 4 PKG_UTIL.RAW_GET_LENGTH( value IN raw ) RETURN integer; 表10 PKG_UTIL.RAW_GET_LENGTH接口参数说明 参数 类型 入参/出参 是否可以为空 描述 raw raw IN 否 待获取长度的对象。 PKG_UTIL.RAW_CAST_FROM_VARCHAR2 该函数RAW_CAST_FROM_VARCHAR2将varchar2转化为raw。 PKG_UTIL.RAW_CAST_FROM_VARCHAR2函数原型为: 1 2 3 4 PKG_UTIL.RAW_CAST_FROM_VARCHAR2( str IN varchar2 ) RETURN raw; 表11 PKG_UTIL.RAW_CAST_FROM_VARCHAR2接口参数说明 参数 类型 入参/出参 是否可以为空 描述 str varchar2 IN 否 需要转化的源数据。 PKG_UTIL.RAW_CAST_FROM_BINARY_INTEGER 该函数RAW_CAST_FROM_BINARY_INTEGER将BIGINT转化为RAW。 PKG_UTIL.RAW_CAST_FROM_BINARY_INTEGER函数原型为: 1 2 3 4 5 PKG_UTIL.RAW_CAST_FROM_BINARY_INTEGER( value IN BIGINT, endianess IN INTEGER ) RETURN RAW; 表12 PKG_UTIL.RAW_CAST_FROM_BINARY_INTEGER接口参数说明 参数 类型 入参/出参 是否可以为空 描述 value BIGINT IN 否 需要转化的源数据。 endianess INTEGER IN 否 表示字典序的整型值,当前支持1或2(1代表BIG_ENDIAN,2代表LITTLE_ENDIAN)。 PKG_UTIL.RAW_CAST_TO_BINARY_INTEGER 该函数RAW_CAST_TO_BINARY_INTEGER将RAW转化为BINARY_INTEGER。 PKG_UTIL.RAW_CAST_TO_BINARY_INTEGER函数原型为: 1 2 3 4 5 PKG_UTIL.RAW_CAST_TO_BINARY_INTEGER( value IN RAW, endianess IN INTEGER ) RETURN INTEGER; 表13 PKG_UTIL.RAW_CAST_TO_BINARY_INTEGER接口参数说明 参数 类型 入参/出参 是否可以为空 描述 value RAW IN 否 需要转化的源数据。 endianess INTEGER IN 否 表示字典序的整型值,当前支持1或2(1代表BIG_ENDIAN,2代表LITTLE_ENDIAN)。 PKG_UTIL.RANDOM_SET_SEED 该函数RANDOM_SET_SEED设置随机数种子。 PKG_UTIL.RANDOM_SET_SEED函数原型为: 1 2 3 4 PKG_UTIL.RANDOM_SET_SEED( seed IN int ) RETURN integer; 表14 PKG_UTIL.RANDOM_SET_SEED接口参数说明 参数 类型 入参/出参 是否可以为空 描述 seed int IN 否 随机数种子。 PKG_UTIL.RANDOM_GET_VALUE 该函数RANDOM_GET_VALUE返回0~1区间的一个随机数,其有效数字为15位。 PKG_UTIL.RANDOM_GET_VALUE函数原型为: 1 2 3 PKG_UTIL.RANDOM_GET_VALUE( ) RETURN numeric; PKG_UTIL.FILE_SET_DIRNAME 设置当前操作的目录,基本上所有涉及单个目录的操作,都需要调用此方法先设置操作的目录。 PKG_UTIL.FILE_SET_DIRNAME函数原型为: 1 2 3 4 PKG_UTIL.FILE_SET_DIRNAME( dir IN text ) RETURN bool 表15 PKG_UTIL.FILE_SET_DIRNAME接口参数说明 参数 描述 dirname 文件的目录位置,这个字符串是一个目录对象名。 说明: 文件目录的位置,需要添加到系统表PG_DIRECTORY中,如果传入的路径和PG_DIRECTORY中的路径不匹配,会报路径不存在的错误,下面的涉及location作为参数的函数也是同样的情况。 PKG_UTIL.FILE_OPEN 该函数用来打开一个文件,最多可以同时打开50个文件。并且该函数返回INTEGER类型的一个句柄。 PKG_UTIL.FILE_OPEN函数原型为: 1 2 3 PKG_UTIL.FILE_OPEN( file_name IN text, open_mode IN integer) 表16 PKG_UTIL.FILE_OPEN接口参数说明 参数 描述 file_name 文件名,包含扩展(文件类型),不包括路径名。如果文件名中包含路径,在OPEN中会被忽略,在UNIX系统中,文件名不能以/.结尾。 open_mode 指定文件的打开模式,包含r:read text,w: write text和a: append text。 说明: 对于写操作,会检测文件类型,如果写入elf文件,将会报错并退出。 PKG_UTIL.FILE_SET_MAX_LINE_SIZE 设置写入文件一行的最大长度。 PKG_UTIL.FILE_SET_MAX_LINE_SIZE函数原型为: 1 2 3 PKG_UTIL.FILE_SET_MAX_LINE_SIZE( max_line_size in integer) RETURN BOOL 表17 PKG_UTIL.FILE_SET_MAX_LINE_SIZE接口参数说明 参数 描述 max_line_size 每行最大字符数,包含换行符(最小值是1,最大值是32767)。如果没有指定,会指定一个默认值1024。 PKG_UTIL.FILE_IS_CLOSE 检测一个文件句柄是否关闭。 PKG_UTIL.FILE_IS_CLOSE函数原型为: 1 2 3 4 PKG_UTIL.FILE_IS_CLOSE( file in integer ) RETURN BOOL 表18 PKG_UTIL.FILE_IS_CLOSE接口参数说明 参数 描述 file 一个打开的文件句柄。 PKG_UTIL.FILE_READ 根据指定的长度从一个打开的文件句柄中读取出数据。 PKG_UTIL.FILE_READ函数原型为: 1 2 3 4 PKG_UTIL.FILE_READ( file IN integer, buffer OUT text, len IN bigint default 1024) 表19 PKG_UTIL.FILE_READ接口参数说明 参数 描述 file 通过调用OPEN打开的文件句柄,文件必须以读的模式打开,否则会抛出INVALID_OPERATION的异常。 buffer 用于接收数据的BUFFER。 len 从文件中读取的字节数。 PKG_UTIL.FILE_READLINE 根据指定的长度从一个打开的文件句柄中读取出一行数据。 PKG_UTIL.FILE_READLINE函数原型为: 1 2 3 4 PKG_UTIL.FILE_READLINE( file IN integer, buffer OUT text, len IN integer default NULL) 表20 PKG_UTIL.FILE_READLINE接口参数说明 参数 描述 file 通过调用OPEN打开的文件句柄,文件必须以读的模式打开,否则会抛出INVALID_OPERATION的异常。 buffer 用于接收数据的BUFFER。 len 从文件中读取的字节数,默认是NULL。如果是默认NULL,会使用max_line_size来指定大小。 PKG_UTIL.FILE_WRITE 将BUFFER中指定的数据写入到文件中。 PKG_UTIL.FILE_WRITE函数原型为: 1 2 3 4 5 PKG_UTIL.FILE_WRITE( file in integer, buffer in text ) RETURN BOOL 表21 PKG_UTIL.FILE_WRITE接口参数说明 参数 描述 file 一个打开的文件句柄。 buffer 要写入文件的文本数据,BUFFER的最大值是32767个字节。如果没有指定值,默认是1024个字节,没有刷新到文件之前,一系列的PUT操作的BUFFER总和不能超过32767个字节。 说明: 对于写操作,会检测文件类型,如果写入elf文件,将会报错并退出。 PKG_UTIL.FILE_NEWLINE 向一个打开的文件中写入一个行终结符。行终结符和平台相关。 PKG_UTIL.FILE_NEWLINE函数原型为: 1 2 3 4 PKG_UTIL.FILE_NEWLINE( file in integer ) RETURN BOOL 表22 PKG_UTIL.FILE_NEWLINE接口参数说明 参数 描述 file 一个打开的文件句柄。 PKG_UTIL.FILE_WRITELINE 向一个打开的文件中写入一行。 PKG_UTIL.FILE_WRITELINE函数原型为: 1 2 3 4 5 PKG_UTIL.FILE_WRITELINE( file in integer, buffer in text ) RETURN BOOL 表23 PKG_UTIL.FILE_WRITELINE接口参数说明 参数 描述 file 一个打开的文件句柄。 buffer 要写入的内容。 PKG_UTIL.FILE_READ_RAW 从一个打开的文件句柄中读取指定长度的二进制数据,返回读取的二进制数据,返回类型为raw。 PKG_UTIL.FILE_READ_RAW函数原型为: 1 2 3 4 5 PKG_UTIL.FILE_READ_RAW( file in integer, length in integer default NULL ) RETURN raw 表24 PKG_UTIL.FILE_READ_RAW接口参数说明 参数 描述 file 一个打开的文件句柄。 length 要读取的长度,默认为NULL。默认情况下读取文件中所有数据,最大为1G。 PKG_UTIL.FILE_WRITE_RAW 向一个打开的文件中写入传入二进制对象RAW。插入成功返回true。 PKG_UTIL.FILE_WRITE_RAW函数原型为: 1 2 3 4 5 PKG_UTIL.FILE_WRITE_RAW( file in integer, r in raw ) RETURN BOOL 表25 PKG_UTIL.FILE_NEWLINE接口参数说明 参数 描述 file 一个打开的文件句柄。 r 准备传入文件的数据 说明: 对于写操作,会检测文件类型,如果写入elf文件,将会报错并退出。 PKG_UTIL.FILE_FLUSH 一个文件句柄中的数据要写入到物理文件中,缓冲区中的数据必须要有一个行终结符。当文件必须在打开时读取,刷新非常有用。例如,调试信息可以刷新到文件中,以便立即读取。 PKG_UTIL.FILE_FLUSH函数原型为: 1 2 3 4 PKG_UTIL.FILE_FLUSH( file in integer ) RETURN VOID 表26 PKG_UTIL.FILE_FLUSH接口参数说明 参数 描述 file 一个打开的文件句柄。 PKG_UTIL.FILE_CLOSE 关闭一个打开的文件句柄。 PKG_UTIL.FILE_CLOSE函数原型为: 1 2 3 4 PKG_UTIL.FILE_CLOSE( file in integer ) RETURN BOOL 表27 PKG_UTIL.FILE_CLOSE接口参数说明 参数 描述 file 一个打开的文件句柄。 PKG_UTIL.FILE_REMOVE 删除一个磁盘文件,操作的时候需要有充分的权限。 PKG_UTIL.FILE_REMOVE函数原型为: 1 2 3 4 PKG_UTIL.FILE_REMOVE( file_name in text ) RETURN VOID 表28 PKG_UTIL.FILE_REMOVE接口参数说明 参数 描述 filen_ame 要删除的文件名 PKG_UTIL.FILE_RENAME 对于磁盘上的文件进行重命名,类似UNIX的mv。 PKG_UTIL.FILE_RENAME函数原型为: 1 2 3 4 5 6 PKG_UTIL.FILE_RENAME( src_dir in text, src_file_name in text, dest_dir in text, dest_file_name in text, overwrite boolean default false) 表29 PKG_UTIL.FILE_RENAME接口参数说明 参数 描述 src_dir 源文件目录(大小写敏感)。 说明: 文件目录的位置,需要添加到系统表PG_DIRECTORY中,如果传入的路径和PG_DIRECTORY中的路径不匹配,会报路径不存在的错误,下面的涉及location作为参数的函数也是同样的情况。 在打开guc参数safe_data_path时,用户只能通过高级包读写safe_data_path指定文件路径下的文件。 src_file_name 源文件名。 dest_dir 目标文件目录(大小写敏感)。 说明: 文件目录的位置,需要添加到系统表PG_DIRECTORY中,如果传入的路径和PG_DIRECTORY中的路径不匹配,会报路径不存在的错误,下面的涉及location作为参数的函数也是同样的情况。 在打开guc参数safe_data_path时,用户只能通过高级包读写safe_data_path指定文件路径下的文件。 dest_file_name 目标文件名。 overwrite 默认是false,如果目的目录下存在一个同名的文件,不会进行重写。 PKG_UTIL.FILE_SIZE 返回指定的文件大小。 PKG_UTIL.FILE_SIZE函数原型为: 1 2 3 bigint PKG_UTIL.FILE_SIZE( file_name in text )return bigint 表30 PKG_UTIL.FILE_SIZE接口参数说明 参数 描述 file_name 文件名 PKG_UTIL.FILE_BLOCK_SIZE 返回指定的文件含有的块数量。 PKG_UTIL.FILE_BLOCK_SIZE函数原型为: 1 2 3 bigint PKG_UTIL.FILE_BLOCK_SIZE( file_name in text )return bigint 表31 PKG_UTIL.FILE_BLOCK_SIZE接口参数说明 参数 描述 file_name 文件名 PKG_UTIL.FILE_EXISTS 判断指定的文件是否存在。 PKG_UTIL.FILE_EXISTS函数原型为: 1 2 3 4 PKG_UTIL.FILE_EXISTS( file_name in text ) RETURN BOOL 表32 PKG_UTIL.FILE_EXISTS接口参数说明 参数 描述 file_name 文件名 PKG_UTIL.FILE_GETPOS 返回文件的偏移量,单位字节。 PKG_UTIL.FILE_GETPOS函数原型为: 1 2 3 4 PKG_UTIL.FILE_GETPOS( file in integer ) RETURN BIGINT 表33 PKG_UTIL.FILE_GETPOS接口参数说明 参数 描述 file 一个打开的文件句柄。 PKG_UTIL.FILE_SEEK 根据用户指定的字节数向前或者向后调整文件指针的位置。 PKG_UTIL.FILE_SEEK函数原型为: 1 2 3 4 5 void PKG_UTIL.FILE_SEEK( file in integer, start in bigint ) RETURN VOID 表34 PKG_UTIL.FILE_SEEK接口参数说明 参数 描述 file 一个打开的文件句柄。 start 文件偏移,字节。 PKG_UTIL.FILE_CLOSE_ALL 关闭一个会话中打开的所有的文件句柄。 PKG_UTIL.FILE_CLOSE_ALL函数原型为: PKG_UTIL.FILE_CLOSE_ALL( ) RETURN VOID↵ 表35 PKG_UTIL.FILE_CLOSE_ALL接口参数说明 参数 描述 无 无 PKG_UTIL.EXCEPTION_REPORT_ERROR 抛出一个异常。 PKG_UTIL.EXCEPTION_REPORT_ERROR函数原型为: 1 2 3 4 5 6 PKG_UTIL.EXCEPTION_REPORT_ERROR( code integer, log text, flag boolean DEFAULT false ) RETURN INTEGER 表36 PKG_UTIL.EXCEPTION_REPORT_ERROR接口参数说明 参数 描述 code 抛出异常所打印的错误码。 log 抛出异常所打印的日志提示信息。 flag 保留字段,默认为false。 PKG_UTIL.APP_READ_CLIENT_INFO 读取client_info信息。 PKG_UTIL.APP_READ_CLIENT_INFO函数原型为: 1 2 3 PKG_UTIL.APP_READ_CLIENT_INFO( OUT buffer text )return text 表37 PKG_UTIL.APP_READ_CLIENT_INFO接口参数说明 参数 描述 buffer 返回的client_info信息。 PKG_UTIL.APP_SET_CLIENT_INFO 设置client_info信息。 PKG_UTIL.APP_SET_CLIENT_INFO函数原型为: 1 2 3 PKG_UTIL.APP_SET_CLIENT_INFO( str text ) 表38 PKG_UTIL.APP_SET_CLIENT_INFO接口参数说明 参数 描述 str 要设置的client_info信息。 PKG_UTIL.LOB_CONVERTTOBLOB 将clob转成blob,amount为要转换的长度。 PKG_UTIL.LOB_CONVERTTOBLOB函数原型为: 1 2 3 4 5 6 7 PKG_UTIL.LOB_CONVERTTOBLOB( dest_lob blob, src_clob clob, amount integer, dest_offset integer, src_offset integer )return raw 表39 PKG_UTIL.LOB_CONVERTTOBLOB接口参数说明 参数 描述 dest_lob 目标lob。 src_clob 要转换的clob。 amount 转换的长度。 dest_offset 目标lob的起始位置。 src_offset 源clob的起始位置。 PKG_UTIL.LOB_CONVERTTOCLOB 将blob转成clob,amount为要转换的长度。 PKG_UTIL.LOB_CONVERTTOCLOB函数原型为: 1 2 3 4 5 6 7 PKG_UTIL.LOB_CONVERTTOCLOB( dest_lob clob, src_blob blob, amount integer, dest_offset integer, src_offset integer )return text 表40 PKG_UTIL.LOB_CONVERTTOCLOB接口参数说明 参数 描述 dest_lob 目标lob。 src_blob 要转换的blob。 amount 转换的长度。 dest_offset 目标lob的起始位置。 src_offset 源clob的起始位置。 PKG_UTIL.LOB_RAWTOTEXT 将RAW转成TEXT。 PKG_UTIL.LOB_RAWTOTEXT函数原型为: 1 2 3 4 PKG_UTIL.LOB_RAWTOTEXT( src_lob IN BLOB ) RETURN TEXT 表41 PKG_UTIL.LOB_RAWTOTEXT接口参数说明 参数 类型 入参/出参 是否可以为空 描述 src_lob BLOB IN 否 要转换的lob数据。 PKG_UTIL.LOB_TEXTTORAW 将text转成raw。 PKG_UTIL.LOB_TEXTTORAW函数原型为: 1 2 3 4 PKG_UTIL.LOB_TEXTTORAW( src_lob clob ) RETURN raw 表42 PKG_UTIL.LOB_TEXTTORAW接口参数说明 参数 描述 src_lob 要转换的lob数据。 PKG_UTIL.MATCH_EDIT_DISTANCE_SIMILARITY 计算两个字符串的差别。 PKG_UTIL.MATCH_EDIT_DISTANCE_SIMILARITY函数原型为: 1 2 3 4 5 PKG_UTIL.MATCH_EDIT_DISTANCE_SIMILARITY( str1 text, str2 text ) RETURN INTEGER 表43 PKG_UTIL.MATCH_EDIT_DISTANCE_SIMILARITY接口参数说明 参数 描述 str1 第一个字符串。 str2 第二个字符串。 PKG_UTIL.RAW_CAST_TO_VARCHAR2 raw类型转成varchar2。 PKG_UTIL.RAW_CAST_TO_VARCHAR2函数原型为: 1 2 3 4 PKG_UTIL.RAW_CAST_TO_VARCHAR2( str raw ) RETURN varchar2 表44 PKG_UTIL.RAW_CAST_TO_VARCHAR2接口参数说明 参数 描述 str 十六进制字符串 PKG_UTIL.SESSION_CLEAR_CONTEXT 清除session_context信息。 PKG_UTIL.SESSION_CLEAR_CONTEXT函数原型为: 1 2 3 4 5 6 PKG_UTIL.SESSION_CLEAR_CONTEXT( namespace text, client_identifier text, attribute text ) RETURN INTEGER 表45 PKG_UTIL.SESSION_CLEAR_CONTEXT接口参数说明 参数 描述 namespace 属性的命名空间。 client_identifier client_identifier,一般与namespace相同即可,当为null时,默认修改所有namespace。 attribute 要清除的属性值。 PKG_UTIL.SESSION_SEARCH_CONTEXT 查找属性值。 PKG_UTIL.SESSION_SEARCH_CONTEXT函数原型为: 1 2 3 4 5 PKG_UTIL.SESSION_SEARCH_CONTEXT( namespace text, attribute text ) RETURN INTEGER 表46 PKG_UTIL.SESSION_SEARCH_CONTEXT接口参数说明 参数 描述 namespace 属性的命名空间。 attribute 要清除的属性值。 PKG_UTIL.SESSION_SET_CONTEXT 设置属性值。 PKG_UTIL.SESSION_SET_CONTEXT函数原型为: 1 2 3 4 5 6 PKG_UTIL.SESSION_SET_CONTEXT( namespace text, attribute text, value text ) RETURN INTEGER 表47 PKG_UTIL.SESSION_SET_CONTEXT接口参数说明 参数 描述 namespace 属性的命名空间 attribute 要设置的属性 value 属性对应的值 PKG_UTIL.UTILITY_GET_TIME 打印UNIX时间戳。 PKG_UTIL.UTILITY_GET_TIME函数原型为: 1 2 PKG_UTIL.UTILITY_GET_TIME() RETURN bigint PKG_UTIL.UTILITY_FORMAT_ERROR_BACKTRACE 查看存储过程的错误堆栈。 PKG_UTIL.UTILITY_FORMAT_ERROR_BACKTRACE函数原型为: 1 2 PKG_UTIL.UTILITY_FORMAT_ERROR_BACKTRACE() RETURN text PKG_UTIL.UTILITY_FORMAT_ERROR_STACK 查看存储过程的报错信息。 PKG_UTIL.UTILITY_FORMAT_ERROR_STACK函数原型为: 1 2 PKG_UTIL.UTILITY_FORMAT_ERROR_STACK() RETURN text PKG_UTIL.UTILITY_FORMAT_CALL_STACK 查看存储过程调用堆栈。 PKG_UTIL.UTILITY_FORMAT_CALL_STACK函数原型为: 1 2 PKG_UTIL.UTILITY_FORMAT_CALL_STACK() RETURN text 父主题: 基础接口
  • 常见问题处理 connect to server failed: no such file or directory 此问题可能的原因: 配置了错误的/不可达的数据库地址,或者端口 请检查数据源配置中的Server及Port配置项。 服务器侦听不正确 如果确认Server及Port配置正确,请根据“操作步骤”中数据库服务器的相关配置,确保数据库侦听了合适的网卡及端口。 防火墙及网闸设备 请确认防火墙设置,将数据库的通信端口添加到可信端口中。 如果有网闸设备,请确认相关的设置。 The password-stored method is not supported. 此问题可能原因: 数据源中未配置sslmode配置项,请调整此项至allow或以上级别,允许SSL连接,此选项的更多说明,请参见表1。 authentication method 10 not supported. 使用开源客户端碰到此问题,可能原因: 数据库中存储的口令校验只存储了SHA256格式哈希,而开源客户端只识别MD5校验,双方校验方法不匹配报错。 数据库并不存储用户口令,只存储用户口令的哈希码。 当用户更新用户口令或者新建用户时,数据库会同时存储两种格式的哈希码,这时将兼容开源的认证协议。 但是当旧版本升级到新版本时,由于哈希的不可逆性,所以数据库无法还原用户口令,进而生成新格式的哈希,所以仍然只保留了SHA256格式的哈希,导致仍然无法使用MD5做口令认证。 MD5加密算法安全性低,存在安全风险,建议使用更安全的加密算法。 要解决该问题,可以更新用户口令(参见ALTER USER);或者新建一个用户(参见CREATE USER),赋予同等权限,使用新用户连接数据库。 unsupported frontend protocol 3.51: server supports 1.0 to 3.0 目标数据库版本过低,或者目标数据库为开源数据库。请使用对应版本的数据库驱动连接目标数据库。 FATAL: GSS authentication method is not allowed because XXXX user password is not disabled. 目标DN的pg_hba.conf里配置了当前客户端IP使用"gss"方式来做认证,该认证算法不支持用作客户端的身份认证,请修改到"sha256"后再试。
  • PG_STAT_USER_FUNCTIONS PG_STAT_USER_FUNCTIONS视图显示命名空间中用户自定义函数(函数语言为非内部语言)的状态信息。 表1 PG_STAT_USER_FUNCTIONS字段 名称 类型 描述 funcid oid 函数标识。 schemaname name 模式的名称。 funcname name 函数名称。 calls bigint 函数被调用的次数。 total_time double precision 函数的总执行时长。 self_time double precision 当前线程调用函数的总的时长。 父主题: 系统视图
  • GS_MATVIEW_DEPENDENCY GS_MATVIEW_DEPENDENCY系统表提供了关于数据库中每一个增量物化视图、基表和mlog表的关联信息。全量物化视图不存在与基表对应的mlog表,不会写入记录。 表1 GS_MATVIEW_DEPENDENCY字段 名称 类型 描述 oid oid 行标识符(隐含属性,必须明确选择)。 matviewid oid 物化视图的oid。 relid oid 物化视图基表的oid。 mlogid oid 物化视图mlog表的oid,mlog表为物化视图日志表,与基表一一对应。 mxmin int4 保留字段。 父主题: 系统表
  • _PG_FOREIGN_TABLES 存储所有的定义在本数据库的外部表信息。只显示当前用户有权访问的外部表信息。该视图只有sysadmin权限可以查看。 表1 _PG_FOREIGN_TABLES字段 名称 类型 描述 foreign_table_catalog information_schema.sql_identifier 外部表所在的数据库名称(永远是当前数据库)。 foreign_table_schema name 外部表的schema名称。 foreign_table_name name 外部表的名称。 ftoptions text[] 外部表的可选项。 foreign_server_catalog information_schema.sql_identifier 外部服务器所在的数据库名称(永远是当前数据库)。 foreign_server_name information_schema.sql_identifier 外部服务器的名称。 authorization_identifier information_schema.sql_identifier 所有者的角色名称。 父主题: Information Schema
  • ADM_COL_COMMENTS ADM_COL_COMMENTS视图显示数据库表中字段的注释信息。默认只有系统管理员权限才可以访问此系统视图,普通用户需要授权才可以访问。该视图同时存在于PG_CATALOG和SYS Schema下。 表1 ADM_COL_COMMENTS字段 名称 类型 描述 owner character varying(64) 表的所有者。 table_name character varying(64) 表名。 column_name character varying(64) 列名。 comments text 注释。 父主题: 系统视图
  • GS_GSC_MEMORY_DETAIL GS_GSC_MEMORY_DETAIL视图描述当前节点当前进程的全局SysCache的内存占用情况,仅在开启GSC的模式下有数据。 需要注意的是,由于这个查询是以数据库内存上下文分隔的,因此会缺少一部分内存的统计,缺失的内存统计对应的内存上下文名称为GlobalSysDBCache。 表1 GS_GSC_MEMORY_DETAIL字段 名称 类型 描述 db_id text 数据库id。 totalsize numeric 共享内存总大小,单位Byte。 freesize numeric 共享内存剩余大小,单位Byte。 usedsize numeric 共享内存使用大小,单位Byte。 父主题: 系统视图
共100000条
提示

您即将访问非华为云网站,请注意账号财产安全