华为云用户手册

  • GS_COLUMN_KEYS GS_COLUMN_KEYS系统表记录密态等值特性中列加密密钥相关信息,每条记录对应一个列加密密钥。 表1 GS_COLUMN_KEYS字段 名称 类型 描述 oid oid 行标识符(隐含字段)。 column_key_name name 列加密密钥(cek)名称。 column_key_distributed_id oid 根据加密密钥(cek)全称域名hash值得到的id。 global_key_id oid 外键。客户端加密主密钥(cmk)的OID。 key_namespace oid 包含此列加密密钥(cek)的命名空间OID。 key_owner oid 列加密密钥(cek)的所有者。 create_date timestamp without time zone 创建列加密密钥的时间。 key_acl aclitem[] 创建该列加密密钥时所拥有的访问权限。 父主题: 系统表
  • 参数说明 connection_target 以下列形式之一指定连接的目标服务器: [ database_name ] [ @host ] [ :port ]:通过TCP/IP连接。 unix:postgresql://host [ :port ] / [ database_name ] [ ?connection_option ]:通过Unix域套接字连接。 tcp:postgresql://host [ :port ] / [ database_name ] [ ?connection_option ]:通过TCP/IP连接。 SQL string constant:包含上述形式之一的值。 connection_name 用于该连接的一个可选标识符,可以在其他命令中引用它。可以是一个SQL标识符或者一个宿主变量。 connection_user 用于数据库连接的用户名。 使用user_name/password、user_name SQLIDENTIFIED BY password或者user_name USING password之一,这个参数也能指定用户名和口令。 用户名和口令可以是SQL标识符、字符串常量或者宿主变量。 上述参数中斜体部分为变量,请根据实际情况进行修改。
  • GLOBAL_STAT_DATABASE 显示集群中数据库各节点的统计信息(在CN节点使用,每个数据库的状态统计信息不汇总)。 表1 GLOBAL_STAT_DATABASE字段 名称 类型 描述 node_name name 节点名称。 datid oid 数据库的OID。 datname name 该数据库的名称。 numbackends integer 当前连接到该数据库的后端数。 xact_commit bigint 此数据库中已经提交的事务数。 xact_rollback bigint 此数据库中已经回滚的事务数。 blks_read bigint 在这个数据库中读取的磁盘块的数量。 blks_hit bigint 高速缓存中已经命中的磁盘块的次数,这种情况下不需要从磁盘读取(高速缓存只包括数据库内核缓冲区高速缓存,不包括操作系统的文件系统缓存)。 tup_returned bigint 该数据库中顺序扫描获取的活跃行数和索引扫描返回的索引行数。 tup_fetched bigint 当前数据库通过索引返回的行数。 tup_inserted bigint 插入的行数。 tup_updated bigint 更新的行数。 tup_deleted bigint 删除的行数。 conflicts bigint 由于与数据库回放发生冲突取消的查询数量(冲突仅在备机上发生)。请参见STAT_DATABASE_CONFLICTS获取更多信息。 temp_files bigint 该数据库中查询语句创建的临时文件数量。统计所有临时文件,不受GUC参数log_temp_files设置值影响。 temp_bytes bigint 该数据库中查询语句写入临时文件的数据总量。统计所有临时文件,不受GUC参数log_temp_files设置值影响。 deadlocks bigint 在该数据库中检索的死锁数。 blk_read_time double precision 通过数据库后端读取数据文件块花费的时间,以毫秒计算。 blk_write_time double precision 通过数据库后端写入数据文件块花费的时间,以毫秒计算。 stats_reset timestamp with time zone 重置当前状态统计的时间。 父主题: Object
  • 操作步骤 收集SQL中涉及到的所有表的统计信息。在数据库中,统计信息是优化器生成计划的源数据。没有收集统计信息或者统计信息陈旧往往会造成执行计划严重劣化,从而导致性能问题。从经验数据来看,10%左右性能问题是因为没有收集统计信息。具体请参见更新统计信息。 通过查看执行计划来查找原因。如果SQL长时间运行未结束,通过EXPLAIN命令查看执行计划,进行初步定位。如果SQL可以运行出结果来,则推荐使用EXPLAIN ANALYZE或EXPLAIN PERFORMANCE查看执行计划及实际运行情况,以便更精准地定位问题原因。有关执行计划的详细介绍请参见SQL执行计划介绍。 审视和修改表定义。 针对EXPLAIN或EXPLAIN PERFORMANCE信息,定位SQL慢的具体原因以及改进措施,具体参见典型SQL调优点。 通常情况下,有些SQL语句可以通过查询重写转换成等价的,或特定场景下等价的语句。重写后的语句比原语句更简单,且可以简化某些执行步骤达到提升性能的目的。查询重写方法在各个数据库中基本是通用的。经验总结:SQL语句改写规则介绍了几种常用的通过改写SQL进行调优的方法。
  • DBE_SQL_UTIL.disable_sql_patch disable_sql_patch是用于在当前建立连接的CN上禁用SQL PATCH的接口函数,返回执行是否成功。 限制仅初始用户、sysadmin、opradmin、monadmin用户有权限调用。 CN之间SQL PATCH不共享,要在各个CN上单独执行。 开启负载均衡场景或者需要指定创建的CN的场景,推荐使用DBE_SQL_UTIL.disable_remote_sql_patch接口进行禁用操作。 表1 DBE_SQL_UTIL.disable_sql_patch入参和返回值列表 参数 类型 描述 patch_name IN name PATCH名称。 result OUT bool 执行是否成功。 父主题: DBE_SQL_UTIL Schema
  • 注意事项 当enable_access_server_directory=off时,只允许初始用户删除directory对象。 当enable_access_server_directory=on时,具有SYSADMIN权限的用户、directory对象的属主、被授予了该directory的DROP权限的用户或者继承了内置角色gs_role_directory_drop权限的用户可以删除directory对象。
  • 示例 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 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 --在存储过程中操作RAW数据 CREATE OR REPLACE PROCEDURE proc_raw AS str varchar2(100) := 'abcdef'; source raw(100); amount integer; BEGIN source := dbe_raw.cast_from_varchar2_to_raw(str);--类型转换 amount := dbe_raw.get_length(source);--获取长度 dbe_output.print_line(amount); END; / --调用存储过程 CALL proc_raw(); --删除存储过程 DROP PROCEDURE proc_raw; DECLARE v_raw RAW; v_double BINARY_DOUBLE; v_float FLOAT4; v_numeric NUMERIC; v_nvarchar2 NVARCHAR2; BEGIN -- RAW类型按位与 SELECT DBE_RAW.BIT_AND('AFF', 'FF0B') INTO v_raw; -- 0A0B -- RAW类型按位取反 SELECT DBE_RAW.BIT_COMPLEMENT('0AFF') INTO v_raw; -- F500 -- RAW类型按位异或 SELECT DBE_RAW.BIT_XOR('AFF', 'FF0B') INTO v_raw; -- F5F4 -- BINARY_DOUBLE类型值转RAW类型 SELECT DBE_RAW.CAST_FROM_BINARY_DOUBLE_TO_RAW(1.0001,1) INTO v_raw; -- 3FF00068DB8BAC71 -- RAW类型值转BINARY_DOUBLE类型 SELECT DBE_RAW.CAST_FROM_RAW_TO_BINARY_DOUBLE('3FF00068DB8BAC7',1) INTO v_double; -- 1.0001 -- RAW类型转FLOAT4类型 SELECT DBE_RAW.CAST_FROM_RAW_TO_BINARY_FLOAT('40200000',1) INTO v_float; -- 2.5 -- FLOAT4类型转RAW类型 SELECT DBE_RAW.CAST_FROM_BINARY_FLOAT_TO_RAW('2.5',1) INTO v_raw; -- 40200000 -- RAW类型转NUMERIC类型 SELECT DBE_RAW.CAST_FROM_RAW_TO_NUMBER('808002008813') INTO v_numeric; -- 2.5 -- NUMERIC类型转RAW类型 SELECT DBE_RAW.CAST_FROM_NUMBER_TO_RAW('2.5') INTO v_raw; -- 808002008813 -- RAW类型转NVARCHAR2类型 SELECT DBE_RAW.CAST_FROM_RAW_TO_NVARCHAR2('12345678') INTO v_nvarchar2; -- \x124Vx -- RAW类型COMPARE SELECT DBE_RAW.COMPARE('ABCD','AB') INTO v_numeric; -- 2 -- RAW类型CONCAT SELECT DBE_RAW.CONCAT('ABCD','AB') INTO v_raw; -- ABCDAB -- RAW类型CONVERT SELECT DBE_RAW.CONVERT('E695B0', 'GBK','UTF8') INTO v_raw; -- CAFD -- RAW类型COPIES SELECT DBE_RAW.COPIES('ABCD',2) INTO v_raw; -- ABCDABCD -- RAW类型指定位置和长度进行覆盖 SELECT DBE_RAW.OVERLAY('abcef', '12345678123456', 2, 5, '9966') INTO v_raw; -- 120ABCEF999956 -- RAW类型按字节翻转 SELECT DBE_RAW.REVERSE('12345678') INTO v_raw; -- 78563412 -- RAW类型字节转换(无填充码) SELECT DBE_RAW.TRANSLATE('1122112233', '1133','55') INTO v_raw; -- 55225522 -- RAW类型字节转换(有填充码) SELECT DBE_RAW.TRANSLITERATE('1122112233', '55','1133','FFEE') INTO v_raw; -- 55225522FF -- RAW类型两个字节间的所有字节 SELECT DBE_RAW.XRANGE('00','03') INTO v_raw; -- 00010203 END; /
  • MY_TRIGGERS MY_TRIGGERS视图显示当前用户拥有的触发器信息。该视图同时存在于PG_CATALOG和SYS Schema下。 表1 MY_TRIGGERS字段 名称 类型 描述 owner character varying(128) 触发器的所有者。 trigger_name character varying(64) 触发器名称。 trigger_type character varying 触发器触发的时机:before statement,before each row,after statement,after each row,instead of。 triggering_event character varying 触发触发器的事件:update, insert, delete,truncate。 table_owner character varying(64) 定义触发器的表的所有者。 base_object_type character varying(18) 定义触发器的基础对象:table,view。 table_name character varying(64) 定义触发器的表或视图名称。 column_name character varying(4000) 暂不支持,值为NULL。 referencing_name character varying(422) 暂不支持,值为referencing new as new old as old。 when_clause character varying(4000) when的内容,必须评估TRUE为TRIGGER_BODY执行。 status character varying(64) O:触发器在“origin”和“local”模式下触发。 D:触发器被禁用。 R:触发器在“replica”模式下触发。 A:触发器始终触发。 description character varying(4000) 触发器描述;用于重新创建触发器创建语句。 action_type character varying(11) 触发体的动作类型,仅支持call。 trigger_body text 触发器触发时执行的语句。 crossedition character varying(7) 暂不支持,值为NULL。 before_statement character varying(3) 暂不支持,值为NULL。 before_row character varying(3) 暂不支持,值为NULL。 after_row character varying(3) 暂不支持,值为NULL。 after_statement character varying(3) 暂不支持,值为NULL。 instead_of_row character varying(3) 暂不支持,值为NULL。 fire_once character varying(3) 暂不支持,值为NULL。 apply_server_only character varying(3) 暂不支持,值为NULL。 父主题: 系统视图
  • 语法格式 1 MOVE [ direction [ FROM | IN ] ] cursor_name; 其中direction子句为可选参数。 1 2 3 4 5 6 7 8 9 10 11 12 13 14 NEXT | PRIOR | FIRST | LAST | ABSOLUTE count | RELATIVE count | count | ALL | FORWARD | FORWARD count | FORWARD ALL | BACKWARD | BACKWARD count | BACKWARD ALL
  • 示例 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 --创建SCHEMA。 gaussdb=# CREATE SCHEMA tpcds; --创建表tpcds.reason。 gaussdb=# CREATE TABLE tpcds.reason( r_reason_sk INTEGER NOT NULL, r_reason_id CHAR(16) NOT NULL, r_reason_desc VARCHAR(40) ); --向表中插入多条记录。 gaussdb=# INSERT INTO tpcds.reason VALUES (1, 'AAAAAAAABAAAAAAA', 'Xxxxxxxxx'),(2, 'AAAAAAAACAAAAAAA', ' Xxxxxxxxx'),(3, 'AAAAAAAADAAAAAAA', ' Xxxxxxxxx'),(4, 'AAAAAAAAEAAAAAAA', 'Not the product that was ordered'),(5, 'AAAAAAAAFAAAAAAA', 'Parts missing'),(6, 'AAAAAAAAGAAAAAAA', 'Does not work with a product that I have'),(7, 'AAAAAAAAHAAAAAAA', 'Gift exchange'); --开始一个事务。 gaussdb=# START TRANSACTION; --定义一个名为cursor1的游标。 gaussdb=# CURSOR cursor1 FOR SELECT * FROM tpcds.reason; --忽略游标cursor1的前3行。 gaussdb=# MOVE FORWARD 3 FROM cursor1; --抓取游标cursor1的前4行。 gaussdb=# FETCH 4 FROM cursor1; r_reason_sk | r_reason_id | r_reason_desc -------------+------------------+------------------------------------------------------------------------------------------------------ 4 | AAAAAAAAEAAAAAAA | Not the product that was ordred 5 | AAAAAAAAFAAAAAAA | Parts missing 6 | AAAAAAAAGAAAAAAA | Does not work with a product that I have 7 | AAAAAAAAHAAAAAAA | Gift exchange (4 rows) --关闭游标。 gaussdb=# CLOSE cursor1; --结束一个事务。 gaussdb=# END; --删除表。 gaussdb=# DROP TABLE tpcds.reason; --删除SCHEMA。 gaussdb=# DROP SCHEMA tpcds CASCADE;
  • PG_CURSORS PG_CURSORS视图列出了当前可用的游标。 表1 PG_CURSORS字段 名称 类型 描述 name text 游标名。 statement text 声明该游标时的查询语句。 is_holdable boolean 如果该游标是持久的(就是在声明该游标的事务结束后仍然可以访问该游标)则为TRUE,否则为FALSE。 is_binary boolean 如果该游标被声明为BINARY则为TRUE,否则为FALSE。 is_scrollable boolean 如果该游标可以滚动(就是允许以不连续的方式检索)则为TRUE,否则为FALSE。 creation_time timestamp with time zone 声明该游标的时间戳。 父主题: 系统视图
  • 内部函数 GaussDB中下列函数使用了内部数据类型,用户无法直接调用,在此章节列出。 选择率计算函数 areajoinsel areasel arraycontjoinsel arraycontsel contjoinsel contsel eqjoinsel eqsel iclikejoinsel iclikesel icnlikejoinsel icnlikesel icregexeqjoinsel icregexeqsel icregexnejoinsel icregexnesel likejoinsel likesel neqjoinsel neqsel nlikejoinsel nlikesel positionjoinsel positionsel regexeqjoinsel regexeqsel regexnejoinsel regexnesel scalargtjoinsel scalargtsel scalarltjoinsel scalarltsel tsmatchjoinsel tsmatchsel - 统计信息收集函数 array_typanalyze range_typanalyze ts_typanalyze local_rto_stat remote_rto_stat gs_plan_trace_delete gs_plan_trace_watch_sqlid gs_plan_trace_show_sqlids - 排序内部功能函数 bpchar_sortsupport bytea_sortsupport date_sortsupport numeric_sortsupport timestamp_sortsupport 内部类型处理函数 abstimerecv euc_jis_2004_to_utf8 int2recv line_recv oidvectorrecv_extend tidrecv utf8_to_koi8u anyarray_recv euc_jp_to_mic int2vectorrecv lseg_recv path_recv time_recv utf8_to_shift_jis_2004 array_recv euc_jp_to_sjis int4recv macaddr_recv pg_node_tree_recv time_transform utf8_to_sjis ascii_to_mic euc_jp_to_utf8 int8recv mic_to_ascii point_recv timestamp_recv utf8_to_uhc ascii_to_utf8 euc_kr_to_mic internal_out mic_to_big5 poly_recv timestamp_transform utf8_to_win big5_to_euc_tw euc_kr_to_utf8 interval_recv mic_to_euc_cn pound_nexttoken timestamptz_recv uuid_recv big5_to_mic euc_tw_to_big5 interval_transform mic_to_euc_jp prsd_nexttoken timetz_recv varbit_recv big5_to_utf8 euc_tw_to_mic iso_to_koi8r mic_to_euc_kr range_recv tintervalrecv varbit_transform bit_recv euc_tw_to_utf8 iso_to_mic mic_to_euc_tw rawrecv tsqueryrecv varchar_transform boolrecv float4recv iso_to_win1251 mic_to_iso record_recv tsvectorrecv varcharrecv box_recv float8recv iso_to_win866 mic_to_koi8r regclassrecv txid_snapshot_recv void_recv bpcharrecv gb18030_to_utf8 iso8859_1_to_utf8 mic_to_latin1 regconfigrecv uhc_to_utf8 win_to_utf8 btoidsortsupport gbk_to_utf8 iso8859_to_utf8 mic_to_latin2 regdictionaryrecv unknownrecv win1250_to_latin2 bytearecv - johab_to_utf8 mic_to_latin3 regoperatorrecv utf8_to_ascii win1250_to_mic byteawithoutorderwithequalcolrecv gtsvector_compress json_recv mic_to_latin4 regoperrecv utf8_to_big5 win1251_to_iso cash_recv gtsvector_consistent koi8r_to_iso mic_to_sjis regprocedurerecv utf8_to_euc_cn win1251_to_koi8r charrecv gtsvector_decompress koi8r_to_mic mic_to_win1250 regprocrecv utf8_to_euc_jis_2004 win1251_to_mic cidr_recv gtsvector_penalty koi8r_to_utf8 mic_to_win1251 regtyperecv utf8_to_euc_jp win1251_to_win866 cidrecv gtsvector_picksplit koi8r_to_win1251 mic_to_win866 reltimerecv utf8_to_euc_kr win866_to_iso circle_recv gtsvector_same koi8r_to_win866 namerecv shift_jis_2004_to_euc_jis_2004 utf8_to_euc_tw win866_to_koi8r cstring_recv gtsvector_union koi8u_to_utf8 ngram_nexttoken shift_jis_2004_to_utf8 utf8_to_gb18030 win866_to_mic date_recv hll_recv latin1_to_mic numeric_recv sjis_to_euc_jp utf8_to_gbk win866_to_win1251 domain_recv hll_trans_recv latin2_to_mic numeric_transform sjis_to_mic utf8_to_iso8859 xidrecv euc_cn_to_mic - latin2_to_win1250 nvarchar2recv sjis_to_utf8 utf8_to_iso8859_1 xidrecv4 euc_cn_to_utf8 inet_recv latin3_to_mic oidrecv smalldatetime_recv utf8_to_johab xml_recv euc_jis_2004_to_shift_jis_2004 int1recv latin4_to_mic oidvectorrecv textrecv utf8_to_koi8r - numeric_bool int2vectorin_extend int2vectorout_extend int2vectorrecv_extend int2vectorsend_extend int8_accum large_seq_rollback_ntree large_seq_upgrade_ntree int16eq int16ge int16gt int16in int16le int16lt int16mi int16mul int16ne int16out int16pl int16recv int16send int16_bool i16toi1 anyset_in anyset_out btint2setcmp btint4setcmp btint8setcmp btsetcmp btsetint2cmp btsetint4cmp btsetint8cmp btsetsortsupport float4 float8 hashsetint hashsettext int2 int2seteq int2setge int2setgt int2setle int2setlt int2setne int4 int4seteq int4setge int4setgt int4setle int4setlt int4setne int8 int8seteq int8setge int8setgt int8setle int8setlt int8setne set set_in set_out set_recv set_send seteq setge setgt setint2eq setint2ge setint2gt setint2le setint2lt setint2ne setint4eq setint4ge setint4gt setint4le setint4lt setint4ne setint8eq setint8ge setint8gt setint8le setint8lt setint8ne setle setlt setne settexteq settextge settextgt settextle settextlt settextne settobpchar settonumber settonvarchar2 settotext settovarchar textseteq textsetge textsetgt textsetle textsetlt textsetne gb18030_2022_to_utf8 utf8_to_gb18030_2022 - - - - - - 聚合操作内部函数 array_agg_finalfn array_agg_transfn bytea_string_agg_finalfn bytea_string_agg_transfn date_list_agg_noarg2_transfn date_list_agg_transfn float4_list_agg_noarg2_transfn float4_list_agg_transfn float8_list_agg_noarg2_transfn float8_list_agg_transfn int2_list_agg_noarg2_transfn int2_list_agg_transfn int4_list_agg_noarg2_transfn int4_list_agg_transfn int8_list_agg_noarg2_transfn int8_list_agg_transfn interval_list_agg_noarg2_transfn interval_list_agg_transfn list_agg_finalfn list_agg_noarg2_transfn list_agg_transfn median median_float8_finalfn median_interval_finalfn median_transfn mode_final numeric_list_agg_noarg2_transfn numeric_list_agg_transfn ordered_set_transition percentile_cont_float8_final percentile_cont_interval_final string_agg_finalfn string_agg_transfn timestamp_list_agg_noarg2_transfn timestamp_list_agg_transfn timestamptz_list_agg_noarg2_transfn timestamptz_list_agg_transfn checksumtext_agg_transfn json_agg_transfn json_agg_finalfn json_object_agg_transfn json_object_agg_finalfn 哈希内部功能函数 hashbeginscan hashbuild hashbuildempty hashbulkdelete hashcostestimate hashendscan hashgetbitmap hashgettuple hashinsert hashmarkpos hashmerge hashrescan hashrestrpos hashvacuumcleanup hashvarlena jsonb_hash - - - - - Btree索引内部功能函数 cbtreebuild cbtreecanreturn cbtreecostestimate cbtreegetbitmap cbtreegettuple btbeginscan btbuild btbuildempty btbulkdelete btcanreturn btcostestimate btendscan btfloat4sortsupport btfloat8sortsupport btgetbitmap btgettuple btinsert btint2sortsupport btint4sortsupport btint8sortsupport btmarkpos btmerge btnamesortsupport btrescan btrestrpos bttextsortsupport btvacuumcleanup cbtreeoptions Psort索引内部函数 psortbuild psortcanreturn psortcostestimate psortgetbitmap psortgettuple Ubtree索引内部函数 ubtbeginscan ubtbuild ubtbuildempty ubtbulkdelete ubtcanreturn ubtcostestimate ubtendscan ubtgetbitmap ubtgettuple ubtinsert ubtmarkpos ubtmerge ubtoptions ubtrescan ubtrestrpos ubtvacuumcleanup - - - - plpgsql内部函数 plpgsql_inline_handler 外表相关内部函数 dist_fdw_handler roach_handler streaming_fdw_handler dist_fdw_validator file_fdw_handler file_fdw_validator log_fdw_handler gc_fdw_handler gc_fdw_validator dblink_fdw_handler dblink_fdw_validator - - - 数据倾斜优化相关内部函数 distributed_count 表统计信息相关内部函数 pgxc_get_stat_dirty_tables pgxc_stat_dirty_tables get_global_stat_all_tables get_summary_stat_all_tables 远程读取数据函数 gs_read_block_from_remote 用于读取表文件的页面。默认只有初始化用户可以查看,其余用户需要赋权后才可以使用。 远程读取文件函数 gs_read_file_size_from_remote 用于读取指定文件的大小,gs_repair_file函数修复文件时,要先获取远端关于这个文件的大小,用于校验本地文件缺失的文件信息,然后将缺失的文件逐个修复。默认只有初始化用户可以查看,其余用户需要赋权后才可以使用。 gs_read_file_from_remote 用于读取指定的文件,gs_repair_file利用gs_read_file_size_from_remote函数获取文件大小后,依赖这个函数将远端文件逐段读取。默认只有初始化用户可以查看,其余用户需要赋权后才可以使用。 以备DN节点增量重建其他备或级联备DN节点辅助函数 gs_standby_incremental_filemap_create用于创建备DN增量重建临时filemap文件,用于存储当次增量重建需传输的数据路径与大小。只有初始化用户且application为gs_rewind时可以调用。 gs_standby_incremental_filemap_insert用于向指定临时filemap文件中插入文件信息,指定文件的路径、传输起始点、单次传输数据长度和rebuild标志位。只有初始化用户且application为gs_rewind时可以调用。 gs_standby_incremental_filemap_execute用于获取指定临时filemap文件中存储的文件信息并删除指定filemap,用于备DN增量重建的数据传输。只有初始化用户且application为gs_rewind时可以调用。 视图相关引用函数 adm_hist_sqlstat_func adm_hist_sqlstat_idlog_func adm_hist_sqltext_func gs_txn_snapshot系统表维护函数 gs_insert_delete_txn_snapshot用于分布式GTM-Lite模式下维护全局各节点gs_txn_snapshot系统表,只有系统管理员用户才能调用。 xmltype类型相关函数 isschemavalid(不可用) 父主题: 函数和操作符
  • 示例 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 49 50 51 52 --获取字符串的长度 SELECT DBE_LOB.GET_LENGTH('12345678'); DECLARE myraw RAW(100); amount INTEGER :=2; buffer INTEGER :=1; begin DBE_LOB.READ('123456789012345',amount,buffer,myraw); dbe_output.print_line(myraw); end; / CREATE TABLE blob_Table (t1 blob) DISTRIBUTE BY REPLICATION; CREATE TABLE blob_Table_bak (t2 blob) DISTRIBUTE BY REPLICATION; INSERT INTO blob_Table VALUES('abcdef'); INSERT INTO blob_Table_bak VALUES('22222'); DECLARE str varchar2(100) := 'abcdef'; source raw(100); dest blob; copyto blob; amount int; PSV_SQL varchar2(100); PSV_SQL1 varchar2(100); a int :=1; len int; BEGIN source := dbe_raw.cast_from_varchar2_to_raw(str); amount := dbe_raw.get_length(source); PSV_SQL :='select * from blob_Table for update'; PSV_SQL1 := 'select * from blob_Table_bak for update'; EXECUTE IMMEDIATE PSV_SQL into dest; EXECUTE IMMEDIATE PSV_SQL1 into copyto; DBE_LOB.WRITE(dest, amount, 1, source); DBE_LOB.WRITE_APPEND(dest, amount, source); DBE_LOB.ERASE(dest, a, 1); DBE_OUTPUT.PRINT_LINE(a); DBE_LOB.COPY(copyto, dest, amount, 10, 1); perform DBE_LOB.CLOSE(dest); RETURN; END; / --删除表 DROP TABLE blob_Table; DROP TABLE blob_Table_bak;
  • 接口介绍 高级功能包DBE_LOB支持的所有接口参见表1。 A数据库中空格的实际字节内容为00,GaussDB中空格对应字节内容为ASCII码值(32)。 分布式环境中,clob、blob以及bfile最大支持1GB。 表1 DBE_LOB 接口名称 描述 DBE_LOB.GET_LENGTH 获取并返回指定的LOB类型对象的长度(不支持大于2GB)。 DBE_LOB.LOB_GET_LENGTH 获取并返回指定的LOB类型对象/BFILE文件的长度。 DBE_LOB.OPEN 打开一个LOB类型对象返回一个LOB的描述符。 DBE_LOB.READ 根据指定的长度及起始位置偏移读取LOB内容的一部分到BUFFER缓冲区。 DBE_LOB.LOB_READ 根据指定的长度及起始位置偏移读取LOB内容的一部分到BUFFER缓冲区(支持bfile读取)。 DBE_LOB.WRITE 根据指定长度及起始位置偏移将BUFFER中内容写入到LOB中。 DBE_LOB.WRITE_APPEND 根据指定长度将BUFFER中内容写入到LOB的尾部。 DBE_LOB.LOB_WRITE_APPEND 根据指定长度将BUFFER中内容写入到LOB的尾部。 DBE_LOB.COPY 根据指定长度及起始位置偏移将LOB内容写入到另一个LOB中。 DBE_LOB.LOB_COPY 根据指定长度及起始位置偏移将LOB内容写入到另一个LOB中。 DBE_LOB.ERASE 根据指定长度及起始位置偏移删除LOB中的内容(不支持大于1GB)。 DBE_LOB.LOB_ERASE 根据指定长度及起始位置偏移删除LOB中的内容。 DBE_LOB.CLOSE 关闭已经打开的LOB描述符。 DBE_LOB.MATCH 返回一个字符串在LOB中第N次出现的位置。 DBE_LOB.COMPARE 比较两个LOB或者两个LOB的某一部分(支持bfile比较)。 DBE_LOB.SUBSTR 用于读取一个LOB的子串,返回读取到的子串。 DBE_LOB.LOB_SUBSTR 用于读取一个LOB的子串,返回读取到的子串。 DBE_LOB.STRIP 用于截断指定长度的LOB,执行完会将LOB的长度设置为参数指定的长度。 DBE_LOB.LOB_STRIP 用于截断指定长度的LOB,执行完会将LOB的长度设置为参数指定的长度。 DBE_LOB.CREATE_TEMPORARY 创建一个临时的BLOB或者CLOB对象。 DBE_LOB.APPEND 将源LOB的内容拼接到目的LOB中。 DBE_LOB.LOB_APPEND 将源LOB的内容拼接到目的LOB中。 DBE_LOB.FREETEMPORARY 删除一个临时的BLOB或者CLOB对象。 DBE_LOB.FILEOPEN 打开一个数据库BFILE文件,并返回文件描述符。 DBE_LOB.FILECLOSE 关闭由FILEOPEN打开的BFILE文件。 DBE_LOB.BFILEOPEN 打开一个数据库BFILE文件。 DBE_LOB.BFILECLOSE 关闭一个由BFILEOPEN打开的BFILE文件。 DBE_LOB.LOADFROMFILE 读取指定位置和长度的数据库BFILE文件到指定位置的BLOB对象中。 DBE_LOB.LOADFROMBFILE 读取指定位置和长度的数据库BFILE文件到指定位置的LOB中。 DBE_LOB.LOADBLOBFROMFILE 读取指定位置和长度的数据库外部文件到指定位置的BLOB中(不支持大于1GB)。 DBE_LOB.LOADBLOBFROMBFIL... 读取指定位置和长度的数据库BFILE文件到指定位置的BLOB中。 DBE_LOB.LOADCLOBFROMFILE 读取指定位置和长度的数据库外部文件到指定位置的CLOB中(不支持大于1GB)。 DBE_LOB.LOADCLOBFROMBFIL... 读取指定位置和长度的数据库BFILE文件到指定位置的CLOB中。 DBE_LOB.CONVERTTOBLOB 将CLOB类型文件转换为BLOB类型文件(不支持大于1GB)。 DBE_LOB.CONVERTTOCLOB 将BLOB类型文件转换为CLOB类型文件(不支持大于1GB)。 DBE_LOB.LOB_CONVERTTOBLO... 将CLOB类型文件转换为BLOB类型文件。 DBE_LOB.LOB_CONVERTTOCLO... 将BLOB类型文件转换为CLOB类型文件。 DBE_LOB.GETCHUNKSIZE 获取数据库中CHUNK结构中用于存储LOB数据的最大SIZE。 DBE_LOB.LOB_WRITE 将源对象从起始位置读取指定长度内容,写入目标LOB对象的指定偏移位置,覆盖该位置原本内容, 并返回目标LOB对象。 DBE_LOB.BFILENAME 根据目录和文件名构造返回DBE_LOB.BFILE对象。 DBE_LOB.GET_LENGTH 函数GET_LENGTH获取并返回指定的LOB类型对象的长度,最大支持2GB。 DBE_LOB.GET_LENGTH函数原型为: 1 2 3 4 5 6 7 DBE_LOB.GET_LENGTH ( blob_obj IN BLOB) RETURN INTEGER; DBE_LOB.GET_LENGTH ( clob_obj IN CLOB) RETURN INTEGER; 表2 DBE_LOB.GET_LENGTH接口参数说明 参数 描述 blob_obj/clob_obj 待获取长度的BLOB/CLOB类型对象。 DBE_LOB.LOB_GET_LENGTH 函数LOB_GET_LENGTH获取并返回指定的LOB类型对象/BFILE文件的长度,最大支持32TB。 DBE_LOB.LOB_GET_LENGTH函数原型为: 1 2 3 4 5 6 7 8 9 10 11 DBE_LOB.LOB_GET_LENGTH ( blob_obj IN BLOB) RETURN BIGINT; DBE_LOB.LOB_GET_LENGTH ( clob_obj IN CLOB) RETURN BIGINT; DBE_LOB.LOB_GET_LENGTH ( bfile IN DBE_LOB.BFILE) RETURN BIGINT; 表3 DBE_LOB.LOB_GET_LENGTH接口参数说明 参数 描述 blob_obj/clob_obj/bfile 待获取长度的BLOB/CLOB/BFILE类型对象。 DBE_LOB.OPEN 存储过程打开一个LOB,并返回一个LOB描述符,该过程无实际意义,仅用于兼容。 DBE_LOB.OPEN函数原型为: 1 2 3 4 5 6 7 8 9 DBE_LOB.OPEN ( lob INOUT BLOB); DBE_LOB.OPEN ( lob INOUT CLOB); DBE_LOB.OPEN ( bfile INOUT DBE_LOB.BFILE, open_mode IN TEXT DEFAULT 'null'); 表4 DBE_LOB.OPEN接口参数说明 参数 描述 lob/bfile 被打开的BLOB或者CLOB对象或者和bfile文件。 DBE_LOB.READ 存储过程READ根据指定长度及起始位置偏移读取LOB内容的一部分到out_put缓冲区。 DBE_LOB.READ函数原型为: 1 2 3 4 5 6 7 8 9 10 11 DBE_LOB.READ ( blob_obj IN BLOB, amount IN INTEGER, off_set IN INTEGER, out_put OUT RAW); DBE_LOB.READ ( clob_obj IN CLOB, amount IN INTEGER, off_set IN INTEGER, out_put OUT VARCHAR2); 表5 DBE_LOB.READ接口参数说明 参数 说明 blob_obj/clob_obj 待读入的BLOB/CLOB类型对象。 amount 读入长度。 off_set 指定从参数lob的哪个位置开始读取的偏移(即相对lob内容起始位置的字节数)。如果偏移量小于1或者大于lob长度,则报错。初始位置为1。 out_put 读取参数lob内容后存放的目标缓冲区。 DBE_LOB.LOB_READ 存储过程LOB_READ根据指定长度及起始位置偏移读取LOB/BFILE内容的一部分到out_put缓冲区。 DBE_LOB.LOB_READ函数原型为: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 DBE_LOB.LOB_READ( blob_obj IN BLOB, amount INOUT BIGINT, off_set IN BIGINT, out_put OUT RAW); DBE_LOB.LOB_READ( clob_obj IN CLOB, amount INOUT BIGINT, off_set IN BIGINT, out_put OUT VARCHAR2); DBE_LOB.LOB_READ( bfile IN DBE_LOB.BFILE, amount INOUT BIGINT, off_set IN BIGINT, out_put OUT RAW); 表6 DBE_LOB.LOB_READ接口参数说明 参数 说明 blob_obj/clob_obj/bfile 待读入的BLOB/CLOB/BFILE类型对象(支持大于1GB)。 amount IN参数为读入长度,OUT参数为实际读取的长度。 说明: 如果读入长度为小于等于0,超过32767,则报错。 off_set 指定从参数lob的哪个位置开始读取的偏移(即相对lob内容起始位置的字节数)。如果偏移量小于1或者大于lob长度,则报错。初始位置为1。 out_put 读取参数lob内容后存放的目标缓冲区。 DBE_LOB.WRITE 存储过程WRITE根据指定长度及起始位置将source中内容写入到LOB对象中。 DBE_LOB.WRITE函数原型为: 1 2 3 4 5 6 7 8 9 10 11 DBE_LOB.WRITE ( blob_obj INOUT BLOB, amount IN INTEGER, off_set IN INTEGER, source IN RAW); DBE_LOB.WRITE ( clob_obj INOUT CLOB, amount IN INTEGER, off_set IN INTEGER, source IN VARCHAR2); 表7 DBE_LOB.WRITE接口参数说明 参数 说明 blob_obj/clob_obj 待写入的BLOB/CLOB类型对象。 amount 写入长度,最大支持32767字符。 说明: 如果写入长度小于1或写入长度大于待写入的内容长度,则报错。 off_set 指定从blob_obj/clob_obj的哪个位置开始写入的偏移(即相对LOB内容起始位置的字节数)。 说明: 如果偏移量小于1或者大于LOBMAXSIZE时,则报错。初始位置是1,最大值为LOB类型最大长度。 source 待写入的内容。 DBE_LOB.WRITE_APPEND 存储过程WRITE_APPEND根据指定长度将source_obj中内容写入到LOB的尾部。 DBE_LOB.WRITE_APPEND函数原型为: 1 2 3 4 5 6 7 8 9 DBE_LOB.WRITE_APPEND ( blob_obj INOUT BLOB, amount IN INTEGER, source_obj IN RAW); DBE_LOB.WRITE_APPEND ( clob_obj INOUT CLOB, amount IN INTEGER, source_obj IN VARCHAR2); 表8 DBE_LOB.WRITE_APPEND接口参数说明 参数 说明 blob_obj/clob_obj 待写入的指定BLOB/CLOB类型对象。 amount 写入长度,最大支持32767字符。 source_obj 待写入的内容。 DBE_LOB.LOB_WRITE_APPEND 存储过程LOB_WRITE_APPEND根据指定长度将source_obj中内容写入到LOB的尾部。 DBE_LOB.LOB_WRITE_APPEND函数原型为: 1 2 3 4 5 6 7 8 9 DBE_LOB.LOB_WRITE_APPEND( blob_obj INOUT BLOB, amount IN INTEGER, source_obj IN RAW); DBE_LOB.LOB_WRITE_APPEND ( clob_obj INOUT CLOB, amount IN INTEGER, source_obj IN VARCHAR2); 表9 DBE_LOB.LOB_WRITE_APPEND接口参数说明 参数 说明 blob_obj/clob_obj 待写入的指定BLOB/CLOB类型对象。 amount 写入长度,最大支持32767字符。 说明: 如果写入长度小于1或写入长度大于待写入的内容长度,则报错。 source_obj 待写入的内容。 DBE_LOB.COPY 存储过程COPY根据指定长度及起始位置偏移将LOB内容拷贝到另一个LOB中。 DBE_LOB.COPY函数原型为: 1 2 3 4 5 6 DBE_LOB.COPY ( dest_lob INOUT BLOB, src_lob IN BLOB, len IN INTEGER, dest_start IN INTEGER DEFAULT 1, src_start IN INTEGER DEFAULT 1); 表10 DBE_LOB.COPY接口参数说明 参数 说明 dest_lob 待拷入的LOB类型对象。 src_lob 待拷出的LOB类型对象。 len 拷贝长度。 dest_start 指定从dest_lob内容的哪个位置开始拷入的偏移(即相对LOB内容起始位置的字节数)。 src_start 指定从src_lob内容的哪个位置开始拷出的偏移(即相对LOB内容起始位置的字节数)。 DBE_LOB.LOB_COPY 存储过程COPY根据指定长度及起始位置偏移将LOB内容拷贝到另一个LOB中。 DBE_LOB.LOB_COPY函数原型为: 1 2 3 4 5 6 7 8 9 10 11 12 13 DBE_LOB.LOB_COPY( blob_obj INOUT BLOB, source_obj IN BLOB, amount IN BIGINT, dest_offset IN BIGINT DEFAULT 1, src_offset IN BIGINT DEFAULT 1); DBE_LOB.LOB_COPY( clob_obj INOUT CLOB, source_obj IN CLOB, amount IN BIGINT, dest_offset IN BIGINT DEFAULT 1, src_offset IN BIGINT DEFAULT 1); 表11 DBE_LOB.LOB_COPY接口参数说明 参数 说明 blob_obj/clob_obj 待拷入的LOB类型对象。 source_obj 待拷出的LOB类型对象。 amount 拷贝长度。 说明: 如果拷入长度小于1或拷入长度大于LOBMAXSIZE,则报错。 dest_offset 指定从blob_obj/clob_obj内容的哪个位置开始拷入的偏移(即相对LOB内容起始位置的字节数/字符数)。 说明: 如果偏移量小于1或者大于LOBMAXSIZE,则报错。 src_offset 指定从source_obj内容的哪个位置开始拷出的偏移(即相对LOB内容起始位置的字节数/字符数)。 说明: 如果偏移量小于1则报错。 DBE_LOB.ERASE 存储过程ERASE根据指定长度及起始位置偏移删除blob_obj中的内容,blob_obj中删除部分的字节填充为0。 DBE_LOB.ERASE函数原型为: 1 2 3 4 DBE_LOB.ERASE ( blob_obj INOUT BLOB, amount INOUT INTEGER, off_set IN INTEGER DEFAULT 1); 表12 DBE_LOB.ERASE接口参数说明 参数 说明 blob_obj IN参数为待删除内容的LOB类型对象,OUT参数为删除指定部分后的LOB类型对象,传空报错。 amount IN参数为待删除的长度(BLOB对象以字节为单位),OUT参数为实际删除的长度。 说明: 如果删除长度小于1或传空,则报错。 off_set 指定从LOB内容的哪个位置开始删除的偏移(即相对BLOB内容起始位置的字节数)。 说明: 如果偏移量小于1或偏移量传空,则报错。 DBE_LOB.LOB_ERASE 存储过程LOB_ERASE根据指定长度及起始位置偏移删除LOB中的内容,blob中删除部分的字节填充为0,clob中删除部分的字符填充为空格,支持LOB大于1GB,最大支持32TB。 DBE_LOB.LOB_ERASE函数原型为: 1 2 3 4 5 6 7 8 9 DBE_LOB.LOB_ERASE ( blob_obj INOUT BLOB, amount INOUT BIGINT, off_set IN BIGINT DEFAULT 1); DBE_LOB.LOB_ERASE ( clob_obj INOUT CLOB, amount INOUT BIGINT, off_set IN BIGINT DEFAULT 1); 表13 DBE_LOB.LOB_ERASE接口参数说明 参数 说明 blob_obj/clob_obj IN参数为待删除内容的LOB类型对象,OUT参数为删除指定部分后的LOB类型对象,传空报错。 amount IN参数为待删除的长度(BLOB对象以字节为单位,CLOB对象以字符为单位),OUT参数为实际删除的长度。 说明: 如果删除长度小于1或传空,则报错。 off_set 指定从LOB内容的哪个位置开始删除的偏移(即相对BLOB内容起始位置的字节数/相对CLOB内容起始位置的字符数)。 说明: 如果偏移量小于1或偏移量传空,则报错。 DBE_LOB.CLOSE 存储过程CLOSE关闭已经打开的LOB描述符。 DBE_LOB.CLOSE函数原型为: 1 2 3 4 5 6 7 8 DBE_LOB.CLOSE( lob IN BLOB); DBE_LOB.CLOSE ( lob IN CLOB); DBE_LOB.CLOSE ( file IN INTEGER); 表14 DBE_LOB.CLOSE接口参数说明 参数 说明 lob/file 待关闭的BLOB/CLOB/文件类型对象。 DBE_LOB.MATCH 该函数返回模式串在LOB或者BFILE文件中第N次出现的位置,如果输入的是一些无效值会返回NULL值。支持LOB或者BFILE文件大于1GB,最大支持32TB。 DBE_LOB.MATCH函数原型为: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 DBE_LOB.MATCH( blob_obj IN BLOB, blob_obj2 IN RAW, beg_index IN BIGINT DEFAULT 1, occur_index IN BIGINT DEFAULT 1) RETURN BIGINT; DBE_LOB.MATCH( clob_obj IN CLOB, clob_obj2 IN VARCHAR2, beg_index IN BIGINT DEFAULT 1, occur_index IN BIGINT DEFAULT 1) RETURN BIGINT; DBE_LOB.MATCH( bfile IN DBE_LOB.BFILE, blob_obj2 IN RAW, beg_index IN BIGINT DEFAULT 1, occur_index IN BIGINT DEFAULT 1) RETURN BIGINT; 表15 DBE_LOB.match接口参数说明 参数 说明 blob_obj/clob_obj/bfile 要查找的BLOB/CLOB描述符,或者BFILE文件(必须先通过DBE_LOB.BFILEOPEN打开),传空返回null。 blob_obj2/clob_obj2 要匹配的模式,对于BLOB/BFILE是由一组RAW类型的数据组成,对于CLOB是由一组VARCHAR2类型的数据组成,传空返回null。 beg_index 对于BLOB/BFILE是以字节为单位的绝对偏移量,对于CLOB是以字符为单位的偏移量,模式匹配的起始位置是1。 说明: 有效范围为1~LOBMAXSIZE,超过返回null。 occur_index 模式匹配的次数,最小值为1。 说明: 若大于模式串在lob中最大能匹配上的次数,则返回0,若不在范围1~LOBMAXSIZE,则返回null。 DBE_LOB.COMPARE 这个函数比较部分或者全部LOB或BFILE。 如果比较的结果相等返回0,否则返回非零的值。 如果第一个LOB比第二个小,返回-1;如果第一个LOB比第二个大,返回1。 如果len,start1,start2这几个参数有无效参数返回NULL,有效的偏移量范围是1~LOBMAXSIZE。 如果start_pos1,,start_pos2同时超过LOB/BFILE长度,则返回0。 DBE_LOB.COMPARE函数原型为: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 DBE_LOB.COMPARE ( lob1 IN BLOB, lob2 IN BLOB, len IN BIGINT DEFAULT 1073741312, start_pos1 IN BIGINT DEFAULT 1, start_pos2 IN BIGINT DEFAULT 1) RETURN INTEGER; DBE_LOB.COMPARE ( lob1 IN CLOB, lob2 IN CLOB, len IN BIGINT DEFAULT 1073741312, start_pos1 IN BIGINT DEFAULT 1, start_pos2 IN BIGINT DEFAULT 1) RETURN INTEGER; DBE_LOB.COMPARE ( file1 IN DBE_LOB.BFILE, file2 IN DBE_LOB.BFILE, len IN BIGINT DEFAULT 1073741312, start_pos1 IN BIGINT DEFAULT 1, start_pos2 IN BIGINT DEFAULT 1) RETURN INTEGER; 表16 DBE_LOB.COMPARE接口参数说明 参数 说明 lob1/file1 第一个要比较的BLOB/CLOB/BFILE类型对象(必须先通过DBE_LOB.BFILEOPEN打开)。 lob2/file2 第二个要比较的BLOB/CLOB/BFILE类型对象(必须先通过DBE_LOB.BFILEOPEN打开)。 len 要比较的字符数或者字节数,默认值为1073741312。 start_pos1 第一个LOB描述符的偏移量,初始位置是1,最大值为lob类型最大长度。 start_pos2 第二个LOB描述符的偏移量,初始位置是1,最大值为lob类型最大长度。 DBE_LOB.SUBSTR 该函数用于读取一个LOB或者BFILE的子串,返回读取的子串。 DBE_LOB.SUBSTR函数原型为: 1 2 3 4 5 6 7 8 9 10 11 DBE_LOB.SUBSTR( lob_loc IN BLOB, amount IN INTEGER DEFAULT 32767, off_set IN INTEGER DEFAULT 1) RETURN RAW; DBE_LOB.SUBSTR( lob_loc IN CLOB, amount IN INTEGER DEFAULT 32767, off_set IN INTEGER DEFAULT 1) RETURN VARCHAR2; 表17 DBE_LOB.SUBSTR接口参数说明 参数 说明 lob_loc 将要读取子串的LOB描述符或BFILE文件,对于BLOB的返回值是读取的RAW类型,对于CLOB类型的返回值是VARCHAR2类型。 amount 要读取的字节数或者字符数量。 off_set 从开始位置偏移的字符数或者字节数量。 DBE_LOB.LOB_SUBSTR 该函数用于读取一个LOB或者BFILE的子串,返回读取的子串,支持LOB或者BFILE大于1GB,最大支持32TB。 DBE_LOB.LOB_SUBSTR函数原型为: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 DBE_LOB.LOB_SUBSTR( lob_loc IN BLOB, amount IN INTEGER DEFAULT 32767, off_set IN BIGINT DEFAULT 1) RETURN RAW; DBE_LOB.LOB_SUBSTR( lob_loc IN CLOB, amount IN INTEGER DEFAULT 32767, off_set IN BIGINT DEFAULT 1) RETURN VARCHAR2; DBE_LOB.LOB_SUBSTR( bfile IN DBE_LOB.BFILE, amount IN INTEGER DEFAULT 32767, off_set IN BIGINT DEFAULT 1) RETURN RAW; 表18 DBE_LOB.LOB_SUBSTR接口参数说明 参数 说明 lob_loc/bfile 将要读取子串的LOB描述符或BFILE文件(必须先通过DBE_LOB.BFILEOPEN打开),对于BLOB/BFILE类型的返回值是读取的RAW类型,对于CLOB类型的返回值是VARCHAR2类型。 amount 要读取的字节数或者字符数量。 说明: 范围为1~32767,超出返回null。 off_set 从开始位置偏移的字符数或者字节数量。 说明: 范围为1~LOBMAXSIZE,超出返回null。 DBE_LOB.STRIP 这个存储过程用于截断指定长度的LOB,执行完这个存储过程会将LOB的长度设置为newlen参数指定的长度。 DBE_LOB.STRIP函数原型为: 1 2 3 4 5 6 7 DBE_LOB.STRIP( lob_loc INOUT BLOB, newlen IN INTEGER); DBE_LOB.STRIP( lob_loc INOUT CLOB, newlen IN INTEGER); 表19 DBE_LOB.STRIP接口参数说明 参数 说明 lob_loc IN参数为待读入的指定LOB类型对象,OUT参数为截断后的对象,传空报错。 newlen 截断后LOB的新长度,对于BLOB是字节数,对于CLOB是字符数。 DBE_LOB.LOB_STRIP 这个存储过程用于截断指定长度的LOB,执行完这个存储过程会将LOB的长度设置为newlen参数指定的长度。支持LOB大于1GB,最大支持32TB。 DBE_LOB.LOB_STRIP函数原型为: 1 2 3 4 5 6 7 DBE_LOB.LOB_STRIP( lob_loc INOUT BLOB, newlen IN BIGINT); DBE_LOB.LOB_STRIP( lob_loc INOUT CLOB, newlen IN BIGINT); 表20 DBE_LOB.LOB_STRIP接口参数说明 参数 说明 lob_loc IN参数为待读入的指定LOB类型对象,OUT参数为截断后的对象,传空报错。 newlen 截断后LOB的新长度,对于BLOB是字节数,对于CLOB是字符数。 说明: 小于1返回null,大于lob的长度,报错。 DBE_LOB.CREATE_TEMPORARY 这个存储过程创建一个临时的BLOB或者CLOB,这个存储过程仅用于语法上的兼容,并无实际意义。 DBE_LOB.CREATE_TEMPORARY函数原型为: 1 2 3 4 5 6 7 8 9 DBE_LOB.CREATE_TEMPORARY ( lob_loc INOUT BLOB, cache IN BOOLEAN, dur IN INTEGER DEFAULT 10); DBE_LOB.CREATE_TEMPORARY ( lob_loc INOUT CLOB, cache IN BOOLEAN, dur IN INTEGER DEFAULT 10); 表21 DBE_LOB.CREATE_TEMPORARY接口参数说明 参数 说明 lob_loc LOB描述符。 cache 仅用于语法上的兼容。 dur 仅用于语法上的兼容。 DBE_LOB.APPEND 存储过程APPEND将source_obj拼接在目标lob之后。 DBE_LOB.APPEND函数原型为: 1 2 3 4 5 6 7 DBE_LOB.APPEND ( blob_obj INOUT BLOB, source_obj IN BLOB); DBE_LOB.APPEND ( clob_obj INOUT CLOB, source_obj IN CLOB); 表22 DBE_LOB.APPEND接口参数说明 参数 说明 blob_obj/clob_obj 要写入的BLOB/CLOB对象。 source_obj 读取的BLOB/CLOB对象。 DBE_LOB.LOB_APPEND 存储过程LOB_APPEND将source_obj拼接在目标lob之后。 DBE_LOB.LOB_APPEND函数原型为: 1 2 3 4 5 6 7 DBE_LOB.LOB_APPEND( blob_obj INOUT BLOB, source_obj IN BLOB); DBE_LOB.LOB_APPEND( clob_obj INOUT CLOB, source_obj IN CLOB); 表23 DBE_LOB.LOB_APPEND接口参数说明 参数 说明 blob_obj/clob_obj 要写入的BLOB/CLOB对象。 source_obj 读取的BLOB/CLOB对象。 DBE_LOB.FREETEMPORARY 存储过程用于释放由CREATE_TEMPORARY创建的LOB文件。 DBE_LOB.FREETEMPORARY函数原型为: 1 2 3 4 5 DBE_LOB.FREETEMPORARY ( blob INOUT BLOB); DBE_LOB.FREETEMPORARY ( clob INOUT CLOB); 表24 DBE_LOB.FREETEMPORARY接口参数说明 参数 说明 blob/clob 要释放的BLOB/CLOB对象。 DBE_LOB.FILEOPEN 这个函数用于打开数据库外部BFILE类型文件,并返回这个文件对用的文件描述符(fd),一个会话最多支持打开10个BFILE文件。 BFILE类型定义为: 1 2 3 4 DBE_LOB.BFILE ( directory TEXT, filename TEXT, fd INTEGER); DBE_LOB.FILEOPEN函数原型为: 1 2 3 4 DBE_LOB.FILEOPEN ( bfile IN DBE_LOB.BFILE, open_mode IN TEXT) RETURN INTEGER; 表25 DBE_LOB.FILEOPEN接口参数说明 参数 说明 bfile 要打开的数据库外部文件(BFILE类型包含了文件路径和文件名、文件描述符(fd))。 说明: file变量中包含文件目录的位置directory,文件名filename。 文件目录的位置,需要添加到系统表PG_DIRECTORY中,如果传入的路径和PG_DIRECTORY中的路径不匹配,会报路径不存在的错误。 在打开guc参数safe_data_path时,用户只能通过高级包读写safe_data_path指定文件路径下的文件。 文件名,包含扩展(文件类型),不包括路径名。如果文件名中包含路径,在OPEN中会被忽略,在Unix系统中,文件名不能以/.结尾。 open_mode 文件打开模式(r),其他模式报错。 DBE_LOB.FILECLOSE 这个函数用于关闭数据外部BFILE类型文件。 DBE_LOB.FILECLOSE函数原型为: 1 2 DBE_LOB.FILECLOSE ( file IN INTEGER); 表26 DBE_LOB.FILECLOSE接口参数说明 参数 说明 file 要关闭的数据库外部文件(由FILEOPEN返回的文件描述符)。 DBE_LOB.BFILEOPEN 这个存储过程用于打开数据库外部BFILE类型文件,一个会话最多支持打开10个BFILE文件。 DBE_LOB.BFILEOPEN原型为: 1 2 3 DBE_LOB.BFILEOPEN ( bfile INOUT DBE_LOB.BFILE, open_mode IN TEXT DEFAULT 'R'); 表27 DBE_LOB.BFILEOPEN接口参数说明 参数 说明 bfile INOUT参数为打开的数据库BFILE文件。 说明: bfile变量中包含文件目录的位置directory,文件名filename。 文件目录的位置,需要添加到系统表PG_DIRECTORY中,如果传入的路径和PG_DIRECTORY中的路径不匹配,会报路径不存在的错误。 在打开guc参数safe_data_path时,用户只能通过高级包读写safe_data_path指定文件路径下的文件。 文件名,包含扩展(文件类型),不包括路径名。如果文件名中包含路径,在OPEN中会被忽略,在Unix系统中,文件名不能以/.结尾。 open_mode 只支持read模式(r),其他模式报错。 示例 1 2 3 4 5 6 7 8 9 10 --获取bfile文件的子串 DECLARE bfile dbe_lob.bfile; BEGIN bfile = DBE_LOB.BFILENAME(dir_name, file_name); --获取对应bfile文件对象 DBE_LOB.bfileopen(bfile, 'r'); --打开bfile文件 RAISE NOTICE 'res:%', DBE_LOB.lob_substr(bfile, 10, 1); --获取子串,并打印 DBE_LOB.bfileclose(bfile);--关闭bfile文件 END; / DBE_LOB.BFILECLOSE 这个存储过程用于关闭数据库外部BFILE类型文件。 DBE_LOB.BFILECLOSE原型为: 1 2 DBE_LOB.BFILECLOSE ( bfile INOUT DBE_LOB.BFILE); 表28 DBE_LOB.BFILECLOSE接口参数说明 参数 说明 bfile INOUT参数为关闭的数据库BFILE文件。 DBE_LOB.LOADFROMFILE 这个函数用于将BFILE类型外部文件读取到BLOB文件中,并以RAW类型返回该对象。 DBE_LOB.LOADFROMFILE函数原型为: 1 2 3 4 5 6 7 DBE_LOB.LOADFROMFILE ( dest_lob IN BLOB, src_file IN INTEGER, amount IN INTEGER, dest_offset IN INTEGER, src_offset IN INTEGER) RETURN RAW; 表29 DBE_LOB.LOADFROMFILE接口参数说明 参数 说明 dest_lob 目标blob对象,bfile文件将读取到这个文件中的指定偏移位置。 src_bfile 需要读取的源BFILE文件。 amount 读取bfile文件内容的长度。 说明: 长度小于1或者大于32767则报错。 dest_offset blob对象的偏移长度。 说明: 偏移量小于1或者大于LOBMAXSIZE则报错。 src_offset bfile文件的偏移长度。 说明: 偏移量小于1或者大于LOBMAXSIZE则报错。 DBE_LOB.LOADFROMBFILE 这个存储过程用于将BFILE类型外部文件读取到LOB对象中。 DBE_LOB.LOADFROMBFILE函数原型为: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 DBE_LOB.LOADFROMBFILE ( dest_lob INOUT BLOB, src_file IN DBE_LOB.BFILE, amount IN BIGINT, dest_offset IN BIGINT DEFAULT 1, src_offset IN BIGINT DEFAULT 1) RETURN BLOB; DBE_LOB.LOADFROMBFILE ( dest_lob INOUT CLOB, src_file IN DBE_LOB.BFILE, amount IN BIGINT, dest_offset IN BIGINT DEFAULT 1, src_offset IN BIGINT DEFAULT 1) RETURN CLOB; 表30 DBE_LOB.LOADFROMBFILE接口参数说明 参数 说明 dest_lob IN参数为目标LOB对象,BFILE文件(必须先通过DBE_LOB.BFILEOPEN打开)将读取到这个对象中,OUT参数为完成读取后返回的LOB对象,大小支持超过1GB,最大支持32TB。 src_file 需要读取的源BFILE文件,BFILE文件的大小支持超过1GB,最大支持32TB。 amount 读取BFILE文件内容和写入lob的长度。 说明: 长度小于1或者大于LOBMAXSIZE则报错。 dest_offset LOB对象的偏移长度 说明: 偏移量小于1或者大于LOBMAXSIZE则报错。 src_offset BFILE文件的偏移长度 说明: 偏移量小于1或者大于LOBMAXSIZE则报错。 amount + src_offset 大于 src_bfile的长度 + 1 则报错。 DBE_LOB.LOADBLOBFROMFILE 这个函数用于将BFILE类型外部文件读取到BLOB文件中,并以RAW类型返回该对象。 DBE_LOB.LOADBLOBFROMFILE函数原型为: 1 2 3 4 5 6 7 DBE_LOB.LOADBLOBFROMFILE ( dest_lob IN BLOB, src_file IN INTEGER, amount IN INTEGER, dest_offset IN INTEGER, src_offset IN INTEGER) RETURN RAW; 表31 DBE_LOB.LOADBLOBFROMFILE接口参数说明 参数 说明 dest_lob 目标BLOB对象,BFILE文件将读取到这个对象中。 src_file 需要读取的源BFILE文件。 amount BLOB对象的长度,超过这个阈值的文件将不会保存到BLOB中。 说明: 长度小于1或者大于32767则报错。 dest_offset BLOB对象的偏移长度。 说明: 偏移量小于1或者大于LOBMAXSIZE则报错。 src_offset BFILE文件的偏移长度。 说明: 偏移量小于1或者大于LOBMAXSIZE则报错。 DBE_LOB.LOADBLOBFROMBFILE 这个存储过程用于将BFILE类型外部文件读取到BLOB对象中。 DBE_LOB.LOADBLOBFROMBFILE函数原型为: 1 2 3 4 5 6 DBE_LOB.LOADBLOBFROMFILE ( dest_lob INOUT BLOB, src_file IN DEB_LOB.BFILE, amount IN BIGINT, dest_offset INOUT BIGINT, src_offset INOUT BIGINT) 表32 DBE_LOB.LOADBLOBFROMBFILE接口参数说明 参数 说明 dest_lob IN参数为目标BLOB对象,BFILE文件(必须先通过DBE_LOB.BFILEOPEN打开)将读取到这个对象中,OUT参数为完成读取后返回的blob对象。大小支持超过1GB,最大支持32TB。 src_file 需要读取的源BFILE文件,BFILE文件的大小支持超过1GB,最大支持32TB。 amount BLOB对象的长度,超过这个阈值的文件将不会保存到BLOB中。 说明: 长度小于1或者大于LOBMAXSIZE则报错。 dest_offset BLOB对象的偏移长度。 说明: 偏移量小于1或者大于LOBMAXSIZE则报错。 src_offset BFILE文件的偏移长度。 说明: 偏移量小于1或者大于LOBMAXSIZE则报错。 amount + src_offset 大于 src_bfile的长度 + 1 则报错。 DBE_LOB.LOADCLOBFROMFILE 这个函数用于将BFILE类型外部文件读取到CLOB文件中,并以RAW类型返回该对象。 DBE_LOB.LOADCLOBFROMFILE函数原型为: 1 2 3 4 5 6 7 DBE_LOB.LOADCLOBFROMFILE ( dest_lob IN CLOB, src_file IN INTEGER, amount IN INTEGER, dest_offset IN INTEGER, src_offset IN INTEGER) RETURN raw; 表33 DBE_LOB.LOADCLOBFROMFILE接口参数说明 参数 说明 dest_lob 目标CLOB对象,BFILE文件将读取到这个文件中。 src_file 需要读取的源bfile文件。 amount CLOB对象的长度。 说明: 长度小于1或者32767则报错。 dest_offset CLOB对象的偏移长度。 说明: 偏移量小于1或者大于LOBMAXSIZE则报错。 src_offset BFILE文件的偏移长度。 说明: 偏移量小于1或者大于LOBMAXSIZE则报错。 DBE_LOB.LOADCLOBFROMBFILE 这个存储过程用于将BFILE类型外部文件读取到CLOB对象中。 DBE_LOB.LOADCLOBFROMBFILE函数原型为: 1 2 3 4 5 6 DBE_LOB.LOADCLOBFROMBFILE ( dest_lob INOUT CLOB, src_file IN DEB_LOB.BFILE, amount IN BIGINT, dest_offset INOUT BIGINT, src_offset INOUT BIGINT) 表34 DBE_LOB.LOADCLOBFROMBFILE接口参数说明 参数 说明 dest_lob IN参数为目标CLOB对象,BFILE文件(必须先通过DBE_LOB.BFILEOPEN打开)将读取到这个对象中,OUT参数为完成读取后返回的CLOB对象。大小支持超过1GB,最大支持32TB。 src_file 需要读取的源BFILE文件。BFILE文件的大小支持超过1GB,最大支持32TB。 amount CLOB对象的长度,超过这个阈值的文件将不会保存到CLOB中。 说明: 长度小于1或者大于LOBMAXSIZE则报错。 dest_offset CLOB对象的偏移长度。 说明: 偏移量小于1或者大于LOBMAXSIZE则报错。 src_offset BFILE文件的偏移长度。 说明: 偏移量小于1或者大于LOBMAXSIZE则报错。 amount + src_offset 大于 src_bfile的长度 + 1 则报错。 DBE_LOB.CONVERTTOBLOB 这个函数将clob对象转换成blob对象,不支持大于1GB的场景。 DBE_LOB.CONVERTTOBLOB函数原型为: 1 2 3 4 5 6 7 DBE_LOB.CONVERTTOBLOB( dest_blob IN BLOB, src_clob IN CLOB, amount IN INTEGER DEFAULT 32767, dest_offset IN INTEGER DEFAULT 1, src_offset IN INTEGER DEFAULT 1) RETURN raw; 表35 DBE_LOB.CONVERTTOBLOB接口参数说明 参数 说明 dest_blob 目标blob对象,clob转换后的文件。 src_clob 需要读取的源clob对象。 amount clob对象的长度,超过这个阈值的文件将不会保存到blob中。长度小于1或者大于LOBMAXSIZE则报错。 dest_offset blob对象的偏移长度,dest_offset=1将从文件起始位置开始载入,以此类推。 src_offset clob对象的偏移长度,src_offset=1将从文件起始位置开始读取,以此类推。 DBE_LOB.LOB_CONVERTTOBLOB 这个函数将clob对象转换成blob对象,支持LOB大于1GB。 DBE_LOB.LOB_CONVERTTOBLOB函数原型为: 1 2 3 4 5 6 DBE_LOB.LOB_CONVERTTOBLOB( dest_blob INOUT BLOB, src_clob IN CLOB, amount IN BIGINT, dest_offset INOUT BIGINT, src_offset INOUT BIGINT) 表36 DBE_LOB.LOB_CONVERTTOBLOB接口参数说明 参数 说明 dest_blob 目标blob对象,clob转换后的文件。 src_clob 需要读取的源clob对象。 amount clob对象的长度,超过这个阈值的文件将不会保存到blob中。长度小于1或者大于LOBMAXSIZE则报错。 dest_offset blob对象的偏移长度,dest_offset=1将从文件起始位置开始载入,以此类推。偏移量小于1或者大于LOBMAXSIZE则报错。 src_offset clob对象的偏移长度,src_offset=1将从文件起始位置开始读取,以此类推。偏移量小于1或者大于LOBMAXSIZE则报错。 DBE_LOB.CONVERTTOCLOB 这个函数将blob对象转换成clob对象,不支持大于1GB的场景。 DBE_LOB.CONVERTTOCLOB函数原型为: 1 2 3 4 5 6 7 DBE_LOB.CONVERTTOCLOB( dest_clob IN CLOB, src_blob IN BLOB, amount IN INTEGER DEFAULT 32767, dest_offset IN INTEGER DEFAULT 1, src_offset IN INTEGER DEFAULT 1) RETURN text; 表37 DBE_LOB.CONVERTTOCLOB接口参数说明 参数 说明 dest_clob 目标clob对象,blob转换后的文件。 src_blob 需要读取的源blob对象。 amount blob对象的长度,超过这个阈值的文件将不会保存到clob中。 dest_offset clob对象的偏移长度,dest_offset=1将从文件起始位置开始载入,以此类推。 src_offset blob对象的偏移长度,src_offset=1将从文件起始位置开始读取,以此类推。 DBE_LOB.LOB_CONVERTTOCLOB 这个函数将blob对象转换成clob对象,支持LOB大于1G。 DBE_LOB.LOB_CONVERTTOCLOB函数原型为: 1 2 3 4 5 6 DBE_LOB.LOB_CONVERTTOCLOB( dest_clob INOUT CLOB, src_blob IN BLOB, amount IN BIGINT, dest_offset INOUT BIGINT, src_offset INOUT BIGINT) 表38 DBE_LOB.LOB_CONVERTTOCLOB接口参数说明 参数 说明 dest_clob 目标clob对象,blob转换后的文件。 src_blob 需要读取的源blob对象。 amount blob对象的长度,超过这个阈值的文件将不会保存到clob中。 dest_offset clob对象的偏移长度,dest_offset=1将从文件起始位置开始载入,以此类推。偏移量小于1或者大于LOBMAXSIZE则报错。 src_offset blob对象的偏移长度,src_offset=1将从文件起始位置开始读取,以此类推。偏移量小于1或者大于LOBMAXSIZE则报错。 DBE_LOB.GETCHUNKSIZE 在数据库存储LOB数据时,内部使用toast存储,本函数返回TOAST_MAX_CHUNK_SIZE。 DBE_LOB.GETCHUNKSIZE的函数原型为: 1 2 3 4 5 6 7 DBE_LOB.GETCHUNKSIZE( lob_loc IN CLOB )RETURN INTEGER DBE_LOB.GETCHUNKSIZE( lob_loc IN BLOB )RETURN INTEGER 表39 DBE_LOB.GETCHUNKSIZE接口参数说明 参数 说明 lob_loc 目标CLOB/BLOB对象。 DBE_LOB.LOB_WRITE 将源对象从起始位置读取指定长度内容,写入目标LOB对象的指定偏移位置,覆盖该位置原本内容, 并返回目标LOB对象。 DBE_LOB.LOB_WRITE函数原型为: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 DBE_LOB.LOB_WRITE( clob_obj INOUT CLOB, amount IN INTEGER, off_set IN BIGINT, source IN VARCHAR2 ) RETURN CLOB; DBE_LOB.LOB_WRITE( blob_obj INOUT BLOB, amount IN INTEGER, off_set IN BIGINT, source IN RAW ) RETURN BLOB; 表40 DBE_LOB.LOB_WRITE接口参数说明 参数 类型 入参/出参 是否可以为空 描述 blob_obj/clob_obj BLOB/CLOB INOUT 否 IN参数为待写入的目标LOB,OUT参数为写入内容后的LOB amount INTEGER IN 否 待写入的长度(BLOB以字节为单位,CLOB以字符为单位) off_set BIGINT IN 否 在blob_obj/clob_obj中写入的偏移位置 source RAW/VARCHAR2 IN 否 源对象 DBE_LOB.BFILENAME 这个函数用于根据目录和文件名构造BFILE类型对象。 DBE_LOB.BFILENAME原型为: 1 2 3 4 DBE_LOB.BFILENAME( directory IN TEXT, filename IN TEXT) RETURN DBE_LOB.BFILE; 表41 DBE_LOB.BFILENAME接口参数说明 参数 说明 directory 文件目录 说明: 文件目录的位置,需要添加到系统表PG_DIRECTORY中,如果传入的路径和PG_DIRECTORY中的路径不匹配,会报路径不存在的错误。 在打开guc参数safe_data_path时,用户只能通过高级包读写safe_data_path指定文件路径下的文件。 文件名,包含扩展(文件类型),不包括路径名。如果文件名中包含路径,在OPEN中会被忽略,在Unix系统中,文件名不能以/.结尾。 filename 文件名
  • 参数说明 role_name 现有角色名。 取值范围:已存在的角色名,如果角色名中包含大写字母则需要使用双引号括起来。 IN DATABASE database_name 表示修改角色在指定数据库上的参数。 SET configuration_parameter 设置角色的参数。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的参数说明。
  • 语法格式 修改角色的权限。 1 ALTER ROLE role_name [ [ WITH ] option [ ... ] ]; 其中权限项子句option为。 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 {CREATEDB | NOCREATEDB} | {CREATEROLE | NOCREATEROLE} | {INHERIT | NOINHERIT} | {AUDITADMIN | NOAUDITADMIN} | {SYSADMIN | NOSYSADMIN} | {MONADMIN | NOMONADMIN} | {OPRADMIN | NOOPRADMIN} | {POLADMIN | NOPOLADMIN} | {USEFT | NOUSEFT} | {LOGIN | 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' | USER GROUP 'groupuser' | PERM SPACE 'spacelimit' | TEMP SPACE 'tmpspacelimit' | SPILL SPACE 'spillspacelimit' | NODE GROUP logic_cluster_name | PGUSER 修改角色的名称。 1 2 ALTER ROLE role_name RENAME TO new_name;
  • GS_STAT_XACT_ALL_PARTITIONS GS_STAT_XACT_ALL_PARTITIONS视图显示命名空间中所有分区表分区的事务状态信息,此视图信息由gs_stat_get_xact_all_partitions_stats()函数查询得到。 表1 GS_STAT_XACT_ALL_PARTITIONS字段 名称 类型 描述 partition_oid oid 分区的OID。 schemaname name 该分区的模式名。 relname name 该分区所在表的表名。 partition_name name 该分区所在一级分区名。 sub_partition_name name 该分区所在二级分区名。分布式不支持二级分区,值为NULL。 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更新行数(比如没有更新所需的单独索引)。 父主题: 系统视图
  • GLOBAL_STATIO_USER_SEQUENCES GLOBAL_STATIO_USER_SEQUENCES视图显示各节点的命名空间中所有用户关系表类型为序列的I/O状态信息。 表1 GLOBAL_STATIO_USER_SEQUENCES字段 名称 类型 描述 node_name name 节点名称。 relid oid 序列OID。 schemaname name 序列中模式名。 relname name 序列名。 blks_read bigint 从序列中读取的磁盘块数。 blks_hit bigint 序列中缓存命中数。 父主题: Cache/IO
  • PGXC_GET_TABLE_SKEWNESS PGXC_GET_TABLE_SKEWNESS视图显示当前数据库中表的数据分布倾斜情况。只有系统管理员权限可以访问。 表1 PGXC_GET_TABLE_SKEWNESS字段 名称 类型 描述 schemaname name 表所在的模式名。 tablename name 表名。 totalsize numeric 表的总大小,单位Byte。 avgsize numeric(1000,0) 表大小平均值(totalsize/DN个数,该值为平均分布的理想情况下,表在各DN占用空间大小)。 maxratio numeric(4,3) 单DN表大小最大值占比(表在各DN占用空间的最大值/totalsize)。 minratio numeric(4,3) 单DN表大小最小值占比(表在各DN占用空间的最小值/totalsize)。 skewsize bigint 表分布倾斜值(单DN表大小最大值 - 单DN表大小最小值)。 skewratio numeric(4,3) 表分布倾斜率(skewsize/totalsize)。 skewstddev numeric(1000,0) 表分布标准方差(在表大小一定的情况下,该值越大表明表的整体分布情况越倾斜)。 父主题: 系统视图
  • PG_OPERATOR PG_OPERATOR系统表存储有关操作符的信息。 表1 PG_OPERATOR字段 名称 类型 引用 描述 oid oid - 行标识符(隐含字段,必须明确选择)。 oprname name - 操作符的名称。 oprnamespace oid PG_NAMESPACE.oid 包含此操作符的名称空间的OID。 oprowner oid PG_AUTHID.oid 操作符所有者。 oprkind "char" - b:表示中缀(“两边”)。 l:表示前缀(“左边”)。 r:表示后缀(“右边”)。 oprcanmerge boolean - 这个操作符是否支持合并连接。 t(true):表示支持合并连接。 f(false):表示不支持合并连接。 oprcanhash boolean - 这个操作符是否支持Hash连接。 t(true):表示支持Hash连接。 f(false):表示不支持Hash连接。 oprleft oid PG_TYPE.oid 左操作数的类型。 oprright oid PG_TYPE.oid 右操作数的类型。 oprresult oid PG_TYPE.oid 结果类型。 oprcom oid PG_OPERATOR.oid 若存在,值为此操作符的交换符。 若不存在,值为0。 oprnegate oid PG_OPERATOR.oid 若存在,值为此操作符的反转器。 若不存在,值为0。 oprcode regproc PG_PROC.proname 实现这个操作符的函数。 oprrest regproc PG_PROC.proname 此操作符的约束选择性计算函数。 oprjoin regproc PG_PROC.proname 此操作符的连接选择性计算函数。 父主题: 系统表
  • PG_OBJECT PG_OBJECT系统表存储限定类型对象(普通表,索引,序列,视图,存储过程和函数)的创建用户、创建时间和最后修改时间。 表1 PG_OBJECT字段 名称 类型 描述 object_oid oid 对象标识符。 object_type "char" 对象类型: r :表示普通表。 i :表示索引。 s :表示序列。 v :表示视图。 P :表示存储过程和函数。 S :表示包头。 B :表示包体。 creator oid 创建用户的标识符。 ctime timestamp with time zone 对象的创建时间。 mtime timestamp with time zone 对象的最后修改时间,修改行为包括ALTER操作和GRANT、REVOKE操作。 createcsn bigint 对象创建时的CSN。 changecsn bigint 对表或索引执行DDL操作时的CSN。 valid boolean 对象的有效性,t为有效,f为无效。 无法记录初始化数据库(initdb)过程中所创建或修改的对象,即PG_OBJECT无法查询到该对象记录。 对于升级至该版本的数据库,无法记录升级以前所创建的对象,即PG_OBJECT无法查询到该对象记录。 对于上述两类对象再次修改时,会记录其修改时间(mtime),由于无法得知该对象创建时间,因此ctime为空。 对于升级前创建的对象,再次修改时会记录其修改时间(mtime),对表或索引执行DDL操作时会记录其所属事务的事务提交序列号(changecsn)。由于无法得知该对象创建时间,因此ctime和createcsn为空。 ctime和mtime所记录的时间为用户当次操作所属事务的起始时间。 由扩容引起的对象修改时间也会被记录。 createcsn和changecsn记录的是用户当次操作所属事务的事务提交序列号。 对象创建语句时存在未定义的对象,或所依赖的对象有修改或删除动作时,对象会为无效状态。 父主题: 系统表
  • 获取结果集中的数据 ResultSet对象提供了丰富的方法,以获取结果集中的数据。获取数据常用的方法如表4所示,其他方法请参见JDK官方文档。 表4 ResultSet对象的常用方法 方法 描述 int getInt(int columnIndex) 按列标获取int型数据。 int getInt(String columnLabel) 按列名获取int型数据。 String getString(int columnIndex) 按列标获取String型数据。 String getString(String columnLabel) 按列名获取String型数据。 Date getDate(int columnIndex) 按列标获取Date型数据 Date getDate(String columnLabel) 按列名获取Date型数据。
  • 获取结果集中光标的位置 对于可滚动的结果集,可调用定位方法来改变光标的位置。JDBC驱动程序提供了获取结果集中光标所处位置的方法。获取光标位置的方法如表3所示。 表3 获取结果集光标的位置 方法 描述 isFirst() 是否在第一行。 isLast() 是否在最后一行。 isBeforeFirst() 是否在第一行之前。 isAfterLast() 是否在最后一行之后。 getRow() 获取当前在第几行。
  • 设置结果集类型 不同类型的结果集有各自的应用场景,应用程序需要根据实际情况选择相应的结果集类型。在执行SQL语句过程中,需要先创建相应的语句对象,而部分创建语句对象的方法提供了设置结果集类型的功能。具体的参数设置如表1所示。涉及的Connection的方法如下: 1 2 3 4 5 6 7 8 //创建一个Statement对象,该对象将生成具有给定类型和并发性的ResultSet对象。 createStatement(int resultSetType, int resultSetConcurrency); //创建一个PreparedStatement对象,该对象将生成具有给定类型和并发性的ResultSet对象。 prepareStatement(String sql, int resultSetType, int resultSetConcurrency); //创建一个CallableStatement对象,该对象将生成具有给定类型和并发性的ResultSet对象。 prepareCall(String sql, int resultSetType, int resultSetConcurrency); 表1 结果集类型 参数 描述 resultSetType 表示结果集的类型,具体有三种类型: ResultSet.TYPE_FORWARD_ONLY:ResultSet只能向前移动。是缺省值。 ResultSet.TYPE_SCROLL_SENSITIVE:在修改后重新滚动到修改所在行,可以看到修改后的结果。 ResultSet.TYPE_SCROLL_INSENSITIVE:对可修改例程所做的编辑不进行显示。 说明: 结果集从数据库中读取了数据之后,即使类型是ResultSet.TYPE_SCROLL_SENSITIVE,也不会看到由其他事务在这之后引起的改变。调用ResultSet的refreshRow()方法,可进入数据库并从其中取得当前游标所指记录的最新数据。 resultSetConcurrency 表示结果集的并发,具体有两种类型: ResultSet.CONCUR_READ_ONLY:如果不从结果集中的数据建立一个新的更新语句,不能对结果集中的数据进行更新。 ResultSet.CONCUR_UPDATEABLE:可改变的结果集。对于可滚动的结果集,可对结果集进行适当的改变。
  • 在结果集中定位 ResultSet对象具有指向其当前数据行的光标。最初,光标被置于第一行之前,next方法将光标移动到下一行。因为该方法在ResultSet对象没有下一行时返回false,所以可以在while循环中使用它来迭代结果集。但对于可滚动的结果集,JDBC驱动程序提供更多的定位方法,使ResultSet指向特定的行。定位方法如表2所示。 表2 在结果集中定位的方法 方法 描述 next() 把ResultSet向下移动一行。 previous() 把ResultSet向上移动一行。 beforeFirst() 把ResultSet定位到第一行之前。 afterLast() 把ResultSet定位到最后一行之后。 first() 把ResultSet定位到第一行。 last() 把ResultSet定位到最后一行。 absolute(int) 把ResultSet移动到参数指定的行数。 relative(int) 通过设置为1向前(设置为1,相当于next())或者向后(设置为-1,相当于previous())移动参数指定的行。
  • ADM_SCHEDULER_JOBS ADM_SCHEDULER_JOBS视图显示数据库中所有DBE_SCHEDULER定时任务的信息。默认只有系统管理员权限才可以访问此系统视图,普通用户需要授权才可以访问。该视图同时存在于PG_CATALOG和SYS Schema下。 表1 ADM_SCHEDULER_JOBS字段 名称 类型 描述 owner name 定时任务所有者。 job_name text 定时任务名。 job_subname character varying(128) 暂不支持,值为NULL。 job_style text 定时任务行为模式,创建时指定,仅支持指定为“REGULAR”,不指定时为NULL。 job_creator name 定时任务创建者。 client_id character varying(65) 暂不支持,值为NULL。 global_uid character varying(33) 暂不支持,值为NULL。 program_owner character varying(4000) 定时任务引用的程序的所有者。 program_name text 定时任务引用的程序的名称。 job_type character varying(16) 定时任务内联程序类型,可用类型为: PLSQL_BLOCK:匿名存储过程块。 STORED_PROCEDURE:保存的存储过程。 EXTERNAL_SCRIPT:外部脚本。 job_action text 定时任务的程序内容。 number_of_arguments text 定时任务的参数个数。 schedule_owner character varying(4000) 暂不支持,值为NULL。 schedule_name text 定时任务引用的调度的名称。 schedule_type character varying(12) 暂不支持,值为NULL。 start_date timestamp without time zone 定时任务的起始时间。 repeat_interval text 定时任务的任务周期。 event_queue_owner character varying(128) 暂不支持,值为NULL。 event_queue_name character varying(128) 暂不支持,值为NULL。 event_queue_agent character varying(523) 暂不支持,值为NULL。 event_condition character varying(4000) 暂不支持,值为NULL。 event_rule character varying(261) 暂不支持,值为NULL。 file_watcher_owner character varying(261) 暂不支持,值为NULL。 file_watcher_name character varying(261) 暂不支持,值为NULL。 end_date timestamp without time zone 定时任务的失效时间。 job_class text 定时任务所属的定时任务类的名称。 enabled boolean 定时任务的启用状态。 auto_drop text 定时任务的自动删除功能状态。 restart_on_recovery character varying(5) 暂不支持,值为NULL。 restart_on_failure character varying(5) 暂不支持,值为NULL。 state "char" 定时任务的状态。 job_priority numeric 暂不支持,值为NULL。 run_count numeric 暂不支持,值为NULL。 uptime_run_count numeric 暂不支持,值为NULL。 max_runs numeric 暂不支持,值为NULL。 failure_count smallint 定时任务失败次数统计。 uptime_failure_count numeric 暂不支持,值为NULL。 max_failures numeric 定时任务标记为破坏之前允许失败的最大次数。 retry_count numeric 暂不支持,值为NULL。 last_start_date timestamp without time zone 定时任务上次拉起时间。 last_run_duration interval day to second(6) 定时任务上次执行的时长。 next_run_date timestamp without time zone 定时任务下次执行时间。 schedule_limit interval day to second(0) 暂不支持,值为NULL。 max_run_duration interval day to second(0) 暂不支持,值为NULL。 logging_level character varying(11) 暂不支持,值为NULL。 store_output character varying(5) 是否存储所有定时任务的输出信息。 stop_on_window_close character varying(5) 暂不支持,值为NULL。 instance_stickiness character varying(5) 暂不支持,值为NULL。 raise_events character varying(4000) 暂不支持,值为NULL。 system character varying(5) 暂不支持,值为NULL。 job_weight numeric 暂不支持,值为NULL。 nls_env character varying(4000) 暂不支持,值为NULL。 source character varying(128) 暂不支持,值为NULL。 number_of_destinations numeric 暂不支持,值为NULL。 destination_owner character varying(261) 暂不支持,值为NULL。 destination text 定时任务目标名称。 credential_owner character varying(128) 暂不支持,值为NULL。 credential_name text 定时任务的证书名称。 instance_id oid 当前数据库的oid。 deferred_drop character varying(5) 暂不支持,值为NULL。 allow_runs_in_restricted_mode character varying(5) 暂不支持,值为NULL。 comments text 定时任务的备注。 flags numeric 暂不支持,值为NULL。 restartable character varying(5) 暂不支持,值为NULL。 has_constraints character varying(5) 暂不支持,值为NULL。 connect_credential_owner character varying(128) 暂不支持,值为NULL。 connect_credential_name character varying(128) 暂不支持,值为NULL。 fail_on_script_error character varying(5) 暂不支持,值为NULL。 父主题: 系统视图
  • 匿名块支持自治事务 自治事务可以在匿名块中定义,标识符为PRAGMA AUTONOMOUS_TRANSACTION,其余语法与创建匿名块语法相同,示例如下。 gaussdb=# create table t1(a int ,b text); NOTICE: The 'DISTRIBUTE BY' clause is not specified. Using 'a' as the distribution column by default. HINT: Please use 'DISTRIBUTE BY' clause to specify suitable data distribution column. CREATE TABLE gaussdb=# START TRANSACTION; START TRANSACTION gaussdb=# DECLARE PRAGMA AUTONOMOUS_TRANSACTION; BEGIN dbe_output.print_line('just use call.'); insert into t1 values(1,'you are so cute,will commit!'); END; / just use call. ANONYMOUS BLOCK EXECUTE gaussdb=# insert into t1 values(1,'you will rollback!'); INSERT 0 1 gaussdb=# rollback; ROLLBACK gaussdb=# select * from t1; a | b ---+------------------------------ 1 | you are so cute,will commit! (1 row) 上述例子,最后在回滚的事务块前执行包含自治事务的匿名块,也能直接说明了自治事务的特性,即主事务的回滚,不会影响自治事务已经提交的内容。 父主题: 自治事务
  • GLOBAL_STATEMENT_COUNT 显示数据库各节点当前时刻执行的五类语句(SELECT、INSERT、UPDATE、DELETE、MERGE INTO)和(DDL、DML、DCL)统计信息。 表1 GLOBAL_STATEMENT_COUNT字段 名称 类型 描述 node_name text 节点名称。 user_name text 用户名。 select_count bigint select语句统计结果。 update_count bigint update语句统计结果。 insert_count bigint insert语句统计结果。 delete_count bigint delete语句统计结果。 mergeinto_count bigint merge into语句统计结果。 ddl_count bigint DDL语句的数量。 dml_count bigint DML语句的数量。 dcl_count bigint DCL语句的数量。 total_select_elapse bigint 总select的时间花费(单位:微秒)。 avg_select_elapse bigint 平均select的时间花费(单位:微秒)。 max_select_elapse bigint 最大select的时间花费(单位:微秒)。 min_select_elapse bigint 最小select的时间花费(单位:微秒)。 total_update_elapse bigint 总update的时间花费(单位:微秒)。 avg_update_elapse bigint 平均update的时间花费(单位:微秒)。 max_update_elapse bigint 最大update的时间花费(单位:微秒)。 min_update_elapse bigint 最小update的时间花费(单位:微秒)。 total_insert_elapse bigint 总insert的时间花费(单位:微秒)。 avg_insert_elapse bigint 平均insert的时间花费(单位:微秒)。 max_insert_elapse bigint 最大insert的时间花费(单位:微秒)。 min_insert_elapse bigint 最小insert的时间花费(单位:微秒)。 total_delete_elapse bigint 总delete的时间花费(单位:微秒)。 avg_delete_elapse bigint 平均delete的时间花费(单位:微秒)。 max_delete_elapse bigint 最大delete的时间花费(单位:微秒)。 min_delete_elapse bigint 最小delete的时间花费(单位:微秒)。 父主题: Query
  • PG_USER_MAPPINGS PG_USER_MAPPINGS视图显示用户映射的信息。所有用户均可查看。 表1 PG_USER_MAPPINGS字段 名称 类型 引用 描述 umid oid PG_USER_MAPPING.oid 用户映射的OID。 srvid oid PG_FOREIGN_SERVER.oid 包含这个映射的外部服务器的OID。 srvname name PG_FOREIGN_SERVER.srvname 外部服务器的名称。 umuser oid PG_AUTHID.oid 被映射的本地角色的OID,如果用户映射是公共的则为0。 usename name - 被映射的本地用户的名称。 umoptions text[] - 如果当前用户是外部服务器的所有者,则为用户映射指定选项,使用“keyword=value”字符串,否则为null。 父主题: 系统视图
  • 示例 --创建表。 gaussdb=# CREATE TABLE char_type_t1 ( CT_COL1 CHARACTER(4) )DISTRIBUTE BY HASH (CT_COL1); --插入数据。 gaussdb=# INSERT INTO char_type_t1 VALUES ('ok'); --查询表中的数据。 gaussdb=# SELECT ct_col1, char_length(ct_col1) FROM char_type_t1; ct_col1 | char_length ---------+------------- ok | 4 (1 row) --删除表。 gaussdb=# DROP TABLE char_type_t1; 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 char_type_t2 ( CT_COL1 VARCHAR(5) )DISTRIBUTE BY HASH (CT_COL1); --插入数据。 gaussdb=# INSERT INTO char_type_t2 VALUES ('ok'); gaussdb=# INSERT INTO char_type_t2 VALUES ('good'); --插入的数据长度超过类型规定的长度报错。 gaussdb=# INSERT INTO char_type_t2 VALUES ('too long'); ERROR: value too long for type character varying(5) CONTEXT: referenced column: ct_col1 --明确类型的长度,超过数据类型长度后会自动截断。 gaussdb=# INSERT INTO char_type_t2 VALUES ('too long'::varchar(5)); --查询数据。 gaussdb=# SELECT ct_col1, char_length(ct_col1) FROM char_type_t2; ct_col1 | char_length ---------+------------- ok | 2 good | 4 too l | 5 (3 rows) --删除数据。 gaussdb=# DROP TABLE char_type_t2;
共100000条