华为云用户手册

  • NTILE(num_buckets integer) 描述:NTILE函数根据num_buckets integer将有序的数据集合平均分配到num_buckets所指定数量的桶中,并将桶号分配给每一行。分配时应尽量做到平均分配。 返回值类型:INTEGER 示例: 1 2 3 4 5 6 7 8 910 SELECT id,classid,score,NTILE(3) OVER(ORDER BY score DESC) FROM score; id | classid | score | ntile----+---------+-------+------- 1 | 1 | 95 | 1 2 | 2 | 95 | 1 5 | 2 | 88 | 2 3 | 2 | 85 | 2 4 | 1 | 70 | 3 6 | 1 | 70 | 3(6 rows)
  • ROW_NUMBER() 描述:ROW_NUMBER函数为各组内值生成连续排序序号,其中相同的值其序号也不相同。 返回值类型:BIGINT 示例: 1 2 3 4 5 6 7 8 910 SELECT id, classid, score,ROW_NUMBER() OVER(ORDER BY score DESC) FROM score ORDER BY score DESC; id | classid | score | row_number----+---------+-------+------------ 1 | 1 | 95 | 1 2 | 2 | 95 | 2 5 | 2 | 88 | 3 3 | 2 | 85 | 4 6 | 1 | 70 | 5 4 | 1 | 70 | 6(6 rows)
  • CUME_DIST() 描述:CUME_DIST函数为各组内对应值生成累积分布序号。即根据公式(小于等于当前值的数据行数)/(该分组总行数totalrows)计算所得的相对序号。 返回值类型:DOUBLE PRECISION 示例: 1 2 3 4 5 6 7 8 910 SELECT id,classid,score,CUME_DIST() OVER(ORDER BY score DESC) FROM score; id | classid | score | cume_dist----+---------+-------+------------------ 1 | 1 | 95 | .333333333333333 2 | 2 | 95 | .333333333333333 5 | 2 | 88 | .5 3 | 2 | 85 | .666666666666667 4 | 1 | 70 | 1 6 | 1 | 70 | 1(6 rows)
  • 语法格式 窗口函数需要特殊的关键字OVER语句来指定窗口触发窗口函数。OVER语句用于对数据进行分组,并对组内元素进行排序。窗口函数用于给组内的值生成序号: 1234 function_name ([expression [, expression ... ]]) OVER ( window_definition ) function_name ([expression [, expression ... ]]) OVER window_namefunction_name ( * ) OVER ( window_definition ) function_name ( * ) OVER window_name 其中window_definition子句option为: 1234 [ existing_window_name ] [ PARTITION BY expression [, ...] ][ ORDER BY expression [ ASC | DESC | USING operator ] [ NULLS { FIRST | LAST } ] [, ...] ][ frame_clause ] PARTITION BY选项指定了将具有相同PARTITION BY表达式值的行分为一组。 ORDER BY选项用于控制窗口函数处理行的顺序。ORDER BY后面必须跟字段名,若ORDER BY后面跟数字,该数字会被按照常量处理,对目标列没有起到排序的作用。 frame_clause子句option为: 12 [ RANGE | ROWS ] frame_start [ RANGE | ROWS ] BETWEEN frame_start AND frame_end 当需要指定一个窗口对分组内所有行结果进行计算时,我们需要指定窗口区间开始的行和结束的行。窗口区间支持RANGE、ROWS两种模式,ROWS以物理单位(行)指定窗口,RANGE将窗口指定为逻辑偏移量。 RANGE、ROWS中可以使用BETWEEN frame_start AND frame_end指定边界可取值。如果仅指定frame_start,则frame_end默认为CURRENT ROW。 frame_start和frame_end取值为: CURRENT ROW,当前行。 N PRECEDING,当前行向前第n行。 UNBOUNDED PRECEDING,当前PARTITION的第1行。 N FOLLOWING,当前行向后第n行。 UNBOUNDED FOLLOWING,当前PARTITION的最后1行。 需要注意,frame_start不能为UNBOUNDED FOLLOWING,frame_end不能为UNBOUNDED PRECEDING,并且frame_end选项不能比上面取值中出现的frame_start选项早。例如RANGE BETWEEN CURRENT ROW AND N PRECEDING是不被允许的。
  • pgxc_stat_xlog_space() 描述:显示所有主DN上Xlog空间使用信息。 返回值类型:record 函数返回信息如下: 表7 pgxc_stat_xlog_space() 名称 类型 描述 node_name name 节点名称 xlog_files bigint pg_xlog目录下,去除backup、archive_status等子目录,所有识别为xlog文件的数目。 xlog_size bigint pg_xlog目录下,去除backup、archive_status等子目录,所有识别为xlog文件的文件大小之和,单位为MB。 other_size bigint pg_xlog目录下backup、archive_status等子目录文件的大小之和,单位为MB。 示例: 1 2 3 4 5 6 7 8 910 SELECT * FROM pgxc_stat_xlog_space(); node_name | xlog_files | xlog_size | other_size--------------+------------+-----------+------------ dn_6001_6002 | 73 | 1168 | 0 dn_6003_6004 | 73 | 1168 | 0 dn_6005_6006 | 73 | 1168 | 0 cn_5003 | 79 | 1264 | 0 cn_5001 | 72 | 1152 | 0 cn_5002 | 73 | 1168 | 0(6 rows)
  • pg_stat_get_stream_replications() 描述:显示当前DN上所有的复制统计信息。 返回值类型:record 函数返回信息如下: 表5 pg_stat_get_stream_replications() 名称 类型 描述 local_role text 本地的角色 static_connections integer 连接统计 db_state text 数据库状态 detail_information text 详细信息 示例: 12345 SELECT * FROM pg_stat_get_stream_replications(); local_role | static_connections | db_state | detail_information------------+--------------------+----------+-------------------- Normal | 0 | Normal | Normal(1 row)
  • pg_stat_get_wal_receiver() 描述:显示当前DN上所有的WAL复制接收线程的统计信息。 返回值类型:record 函数返回信息如下: 表4 pg_stat_get_wal_receiver() 名称 类型 描述 receiver_pid integer 当前receiver的pid local_role text 本地的角色 peer_role text 远端的角色 peer_state text 远端的状态 state text 当前receiver的复制状态 sender_sent_location text 发送端发送的LSN位置 sender_write_location text 发送端write的LSN位置 sender_flush_location text 发送端flush的LSN位置 sender_replay_location text 发送端replay的LSN位置 receiver_received_location text 接收端received的LSN位置 receiver_write_location text 接收端write的LSN位置 receiver_flush_location text 接收端flush的LSN位置 receiver_replay_location text 接收端replay的LSN位置 sync_percent text 同步百分比 channel text WALReceiver的信道信息
  • pg_stat_xlog_space() 描述:显示当前DN上Xlog空间使用信息。 返回值类型:record 函数返回信息如下: 表6 pg_stat_xlog_space() 名称 类型 描述 xlog_files bigint pg_xlog目录下,去除backup、archive_status等子目录,所有识别为xlog文件的数目。 xlog_size bigint pg_xlog目录下,去除backup、archive_status等子目录,所有识别为xlog文件的文件大小之和,单位为MB。 other_size bigint pg_xlog目录下backup、archive_status等子目录文件的大小之和,单位为MB。 示例: 12345 SELECT * FROM pg_stat_xlog_space(); xlog_files | xlog_size | other_size------------+-----------+------------ 79 | 1264 | 0(1 row)
  • pg_logical_slot_peek_changes('slot_name', 'LSN', upto_nchanges, 'options_name', 'options_value') 描述:解码并不推进流复制槽(下次解码可以再次获取本次解出的数据)。该函数在9.1.0.200及之后版本已废弃,为兼容历史版本功能保留该函数。 参数说明: slot_name 流复制槽名称。 取值范围:字符串,不支持除字母,数字,以及(_?-.)以外的字符。 LSN 日志的LSN,表示只解码小于等于此LSN的日志。 取值范围:字符串(LSN,格式为xlogid/xrecoff),如'1/2AAFC60'。为NULL时表示不对解码截止的日志位置做限制。 upto_nchanges 解码条数(包含begin和commit)。假设一共有三条事务,分别包含3、5、7条记录,如果upto_nchanges为4,那么会解码出前两个事务共8条记录。解码完第二条事务时发现解码条数记录大于等于upto_nchanges,会停止解码。 取值范围:非负整数。 LSN和upto_nchanges中任一参数达到限制,解码都会结束。 options:此项为可选参数。 include-xids 解码出的data列是否包含xid信息。 取值范围:0或1,默认值为1。 0:设为0时,解码出的data列不包含xid信息。 1:设为1时,解码出的data列包含xid信息。 skip-empty-xacts 解码时是否忽略空事务信息。 取值范围:0或1,默认值为0。 0:设为0时,解码时不忽略空事务信息。 1:设为1时,解码时会忽略空事务信息。 include-timestamp 解码信息是否包含commit时间戳。 取值范围:0或1,默认值为0。 0:设为0时,解码信息不包含commit时间戳。 1:设为1时,解码信息包含commit时间戳。 返回值类型:text, uint, text 备注:函数返回解码结果,每一条解码结果包含三列,对应上述返回值类型,分别表示LSN位置、xid和解码内容。
  • pg_stat_get_data_senders() 描述:显示当前DN上所有的数据页复制发送线程的统计信息。 返回值类型:record 函数返回信息如下: 表2 pg_stat_get_data_senders()字段 名称 类型 描述 pid bigint 线程pid sender_pid integer 当前sender的pid local_role text 本地的角色 peer_role text 对端的角色 state text 当前sender的复制状态 catchup_start timestamp with time zone catchup启动的时间 catchup_end timestamp with time zone catchup结束的时间 queue_size text 数据队列大小 queue_lower_tail text 数据队列尾1位置 queue_header text 数据队列头位置 queue_upper_tail text 数据队列尾2位置 send_position text 发送端发送的位置 receive_position text 接收端接收的位置 catchup_type text catchup方式为全量还是增量 catchup_bcm_filename text catchup当前执行的bcm文件 catchup_bcm_finished integer catchup已操作完成的bcm文件数量 catchup_bcm_total integer catchup总共需要操作的bcm文件数量 catchup_percent text catchup已经操作完成的百分比 catchup_remaining_time text catchup预估剩余时间
  • pg_replication_slot_advance ('slot_name', 'LSN') 描述:直接推进流复制槽到指定LSN,不输出解码结果。 参数说明: slot_name 流复制槽名称。 取值范围:字符串,不支持除字母,数字,以及(_?-.)以外的字符。 LSN 推进到的日志LSN位置,下次解码时只会输出提交位置比该LSN大的事务结果。如果输入的LSN比当前流复制槽记录的推进位置还要小,则直接返回;如果输入的LSN比当前最新物理日志LSN还要大,则推进到当前最新物理日志LSN。 取值范围:字符串(LSN,格式为xlogid/xrecoff)。 返回值类型:name, text 备注:返回值分别对应slot_name和实际推进至的LSN。
  • pg_create_logical_replication_slot('slot_name', 'plugin_name') 描述:创建逻辑复制槽。该函数在9.1.0.200及之后版本已废弃,为兼容历史版本功能保留该函数。 参数说明: slot_name 流复制槽名称。 取值范围:字符串,不支持除字母,数字,以及(_?-.)以外的字符。 plugin_name 插件名称。 取值范围:字符串,当前只支持“mppdb_decoding”。 返回值类型:name, text 备注:第一个返回值表示slot_name,第二个返回值表示该逻辑复制槽解码的起始LSN位置。
  • pg_get_replication_slots() 描述:显示当前DN上所有的复制槽信息。 返回值类型:record 函数返回信息如下: 表1 pg_get_replication_slots()字段 名称 类型 描述 slot_name text 复制槽的名称 plugin name 逻辑复制槽对应的输出插件名 slot_type text 复制槽的类型 datoid oid 复制槽的数据库OID active boolean 复制槽是否为激活状态 xmin xid 复制槽事务标识 catalog_xmin text 逻辑复制槽对应的最早解码事务标识 restart_lsn text 复制槽的Xlog文件信息 dummy_standby boolean 复制槽是否为从备 示例: 12345 SELECT * FROM pg_get_replication_slots(); slot_name | plugin | slot_type | datoid | active | xmin | catalog_xmin | restart_lsn | dummy_standby-----------------+--------+-----------+--------+--------+------+--------------+-------------------+--------------- gs_roach_common | | physical | 0 | f | | 602861775 | FFFFFFFF/FFFFFFFF | f(1 row)
  • pg_logical_slot_get_changes('slot_name', 'LSN', upto_nchanges, 'options_name', 'options_value') 描述:解码并推进流复制槽。该函数在9.1.0.200及之后版本已废弃,为兼容历史版本功能保留该函数。 参数说明: 与pg_logical_slot_peek_changes一致,详细内容请参见pg_logical_slot_peek_changes('slot_name', 'LSN', upto_nchanges, 'options_name', 'options_value')。
  • pg_stat_get_wal_senders() 描述:显示当前DN上所有的WAL复制发送线程的统计信息。 返回值类型:record 函数返回信息如下: 表3 pg_stat_get_wal_senders()字段 名称 类型 描述 pid bigint 线程pid sender_pid integer 当前sender的pid local_role text 本地的角色 peer_role text 对端的角色 peer_state text 对端的状态 state text 当前sender的复制状态 catchup_start timestamp with time zone catchup启动的时间 catchup_end timestamp with time zone catchup结束的时间 sender_sent_location text 发送端发送的LSN位置 sender_write_location text 发送端write的LSN位置 sender_flush_location text 发送端flush的LSN位置 sender_replay_location text 发送端replay的LSN位置 receiver_received_location text 接收端received的LSN位置 receiver_write_location text 接收端write的LSN位置 receiver_flush_location text 接收端flush的LSN位置 receiver_replay_location text 接收端replay的LSN位置 sync_percent text 同步百分比 sync_state text 同步状态(异步复制,同步复制,还是潜在同步者) sync_priority integer 同步复制的优先级(0表示异步) sync_most_available text 在备机同步失败时,是否阻塞主机 channel text WALSender的信道信息
  • pg_create_physical_replication_slot ('slot_name', isDummyStandby) 描述:创建物理复制槽。 参数说明: slot_name 流复制槽名称。 取值范围:字符串,不支持除字母,数字,以及(_?-.)以外的字符。 isDummyStandby 复制槽是否为从备。 取值范围:布尔值,支持true或false。 返回值类型:name, text 备注:第一个返回值表示slot_name,第二个返回值表示该物理复制槽解码的起始LSN位置。
  • pg_advisory_lock(key bigint) 描述:获取会话级别的排它咨询锁。 返回值类型:void 备注:pg_advisory_lock锁定应用程序定义的资源,该资源可以用一个64位或两个不重叠的32位键值标识。如果已经有另外的会话锁定了该资源,则该函数将阻塞到该资源可用为止。这个锁是排它的。多个锁定请求将会被压入栈中,因此,如果同一个资源被锁定了三次,它必须被解锁三次以将资源释放给其他会话使用。
  • create_audit_csv_foregion_table() 描述:创建读审计日志的分区外表。用户调用该函数生成审计日志外表pgxc_audit_logs,通过读取pgxc_audit_logs可以读取放在obs上的审计日志信息。该函数仅8.3.0及以上集群支持。 入参: obs_server:text类型,obs server名称 file_path:text类型,obs文件路径 返回值类型:record 示例: --创建obs serverCREATE SERVER obs_server FOREIGN DATA WRAPPER DFS_FDW OPTIONS ( address 'obs.example.xxx:xxx', encrypt 'true', access_key 'xxxxxxxxx', secret_access_key 'xxxxxxxxxxxxxx', type 'obs' );--调用该函数生成审计日志外表SELECT * FROM pg_catalog.create_audit_csv_foregion_table('obs_server','/obs-audit/test/'); create_audit_csv_foregion_table--------------------------------- t(1 row)--读取放在obs上的审计日志信息SELECT * FROM pgxc_audit_logs where year=2023 and month=7 and date=24; year | month | date | begintime | endtime | operation_type | audit_type | result | username | database | client_conninfo | object_name | object_details |command_text| detail_info | transaction_xid | query_id | node_name | session_id | local_port | remote_port | result_rows | error_code------+-------+------+----------------------------+----------------------------+----------------+-------------------+--------+----------+----------+-----------------+--------------------------------+----------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+-------------+-----------------+--------------------+-----------+------------------------------------+------------+-------------+-------------+------------ 2023 | 7 | 24 | 2023-07-24 09:56:40.727+08 | 2023-07-24 09:56:42.215+08 | dml | dml_action_select | ok | dbadmin | gaussdb | gsql@[local] | public.pgxc_audit_logs | | select * from pgxc_audit_logs where year=2023 and date=24 and month=7;
  • pg_query_audit_details() 描述:查看审计日志并将审计日志中的object_name和object_details字段由json格式解析出来。该函数仅8.2.1.100及以上集群版本支持。 返回值类型:record 函数返回字段如下: 表4 pg_query_audit()函数返回字段 名称 类型 描述 begintime timestamp with time zone 操作的执行开始时间。 endtime timestamp with time zone 操作的执行结束时间。 operation_type text 操作类型,具体类型见表2。 audit_type text 审计类型,具体类型见表3。 result text 操作结果。 username text 执行操作的用户名。 database text 数据库名称。 client_conninfo text 客户端连接信息,即gsql,jdbc或odbc。 transaction_xid text 事务ID。 query_id text 查询ID。 node_name text 节点名称。 session_id text 会话ID。 local_port text 本地端口。 remote_port text 远端端口。 object_name text 表名、函数名、视图名。 column_name text 列名。 type_of_use text 对象的使用类型: 1:仅涉及(在实际使用中,此标志位暂不存在) 2:执行过程中访问(语句中出现的列以及在解析过程中访问到的列) 4:条件中发现(条件类型语句中,不包括条件表达式及函数) 8:inner join中发现 16:outer join中发现 32:聚合节点中发现(包括distinct、group by、聚集函数) 64:full join中发现 该列数值为叠加显示的数值。 use_type text type_of_use解析出的具体类型: 1:Reference only 2:Access 4:Conditional 8:Inner join 16:Outer join 32:Sum 64:Full join command_text text 操作的执行命令。 示例: 查询审计语句中所有对象的列及其在语句中使用的类型: 12 SET audit_object_details = on;SELECT object_name,object_details,result_rows,error_code,command_text FROM pg_query_audit('2023-05-12-03 8:00:00','2023-05-12 22:55:00') where command_text like '%student%'; 查询结果如下: 123456 object_name | object_details | result_rows | error_code | command_text------------------------------------------------------------------+------------------------------------------------------------------------------------------+-------------+------------+------------------------------------------------------------------------------------------------------------------------------------------------------- student | | 0 | | CREATE TABLE student(stuNo int, stuName TEXT); studentscore | | 0 | | CREATE TABLE studentscore(stuNo int, stuscore int); ["public.student_view01","public.studentscore","public.student"] | | 0 | | CREATE OR REPLACE VIEW student_view01 AS SELECT * FROM student t1 where t1.stuNo in (select stuNo from studentscore t2 where t1.stuNo = t2.stuNo); ["public.student_view01","public.student","public.studentscore"] | {"public.student":[{"stuno":"6"},{"stuname":"2"}],"public.studentscore":[{"stuno":"6"}]} | 0 | | SELECT * FROM student_view01 查询结果object_details中显示部分语句执行过程中,涉及到的列及其使用类型,使用json格式进行记录。 使用pg_query_audit_details函数对object_name和object_details列进行解析: 1 SELECT database,object_name,column_name,type_of_use,use_type FROM pg_query_audit_details('2021-02-03 8:00:00','2024-02-03 22:55:00','current') where command_text like '%student%'; 查询结果如下: 1 2 3 4 5 6 7 8 9101112131415161718 database | object_name | column_name | type_of_use | use_type----------+-----------------------+-------------+-------------+-------------------- gaussdb | student | | 2 | Access gaussdb | | | 2 | Access gaussdb | studentscore | | 2 | Access gaussdb | | | 2 | Access gaussdb | public.student_view01 | | 2 | Access gaussdb | public.studentscore | | 2 | Access gaussdb | public.student | | 2 | Access gaussdb | | | 2 | Access gaussdb | public.student | stuno | 6 | Access,Conditional gaussdb | public.student | stuname | 2 | Access gaussdb | public.studentscore | stuno | 6 | Access,Conditional gaussdb | public.student_view01 | | 2 | Access gaussdb | public.student | | 2 | Access gaussdb | public.studentscore | | 2 | Access gaussdb | | | 2 | Access(15 rows)
  • pg_query_audit() 描述:查看当前CN节点审计日志。 返回值类型:record 函数返回字段如下: 表1 pg_query_audit()函数返回字段 名称 类型 描述 begintime timestamp with time zone 操作的执行开始时间。 endtime timestamp with time zone 操作的执行结束时间。 operation_type text 操作类型,具体类型见表2。 audit_type text 审计类型,具体类型见表3。 result text 操作结果。 username text 执行操作的用户名。 database text 数据库名称。 client_conninfo text 客户端连接信息,即gsql,jdbc或odbc。 object_name text 操作对象名称。 object_details text 记录语句中涉及的列及其使用类型。 command_text text 操作的执行命令。 detail_info text 执行操作详细信息。 transaction_xid text 事务ID。 query_id text 查询ID。 node_name text 节点名称。 session_id text 会话ID。 local_port text 本地端口。 remote_port text 远端端口。 result_rows text 语句执行返回的记录数。 error_code text 语句执行错误时的错误码。 表2 operation_type操作类型项 操作类型 描述 audit_switch 表示对用户打开和关闭审计日志操作场景进行审计。 login_logout 表示对用户登录和登出操作场景进行审计。 system 表示对系统的启停、实例切换操作场景进行审计。 sql_parse 表示对SQL语句解析场景进行审计。 user_lock 表示对用户锁定和解锁操作的场景进行审计。 grant_revoke 表示对用户权限授予和回收操作场景进行审计。 violation 表示对用户访问存在越权的场景进行审计。 ddl 表示对DDL操作场景进行审计,因为DDL操作会根据操作对象进行更细粒度控制,仍然沿用审计开关audit_system_object,即由audit_system_object控制对哪些对象的DDL操作进行审计(此处不配置ddl,只要配置了audit_system_object,审计也会生效)。 dml 表示对DML操作场景进行审计。 select 表示对SELECT操作场景进行审计。 internal_event 表示对内部事件操作场景进行审计。 user_func 表示对用户自定义函数、存储过程、匿名块操作场景进行审计。 说明: 如果自定义函数、存储过程中有fetch语句,则审计fetch语句时,其中common_text字段记录的为其对应的CURSOR内容。 special_func 表示对特殊函数调用操作场景进行审计,特殊函数包括:pg_terminate_backend和pg_cancel_backend。 copy 表示对COPY操作场景进行审计。 set 表示对SET操作场景进行审计。 transaction 表示对事务操作场景进行审计。 vacuum 表示对VACUUM操作场景进行审计。 analyze 表示对ANALYZE操作场景进行审计。 cursor 表示对游标操作的场景进行审计。 anonymous_block 表示对匿名块操作场景进行审计。 explain 表示对EXPLAIN操作场景进行审计。 show 表示对SHOW操作场景进行审计。 lock_table 表示对锁表操作场景进行审计。 comment 表示对COMMENT操作场景进行审计。 preparestmt 表示对PREPARE、EXECUTE、DEALLOCATE操作场景进行审计。 cluster 表示对CLUSTER操作场景进行审计。 constraints 表示对CONSTRAINTS操作场景进行审计。 checkpoint 表示对CHECKPOINT操作场景进行审计。 barrier 表示对BARRIER操作场景进行审计。 cleanconn 表示对CLEAN CONNECTION操作场景进行审计。 seclabel 表示对安全标签操作进行审计。 notify 表示对通知操作进行审计。 load 表示对加载操作进行审计。 discard 表示对清理当前会话所有的全局临时表信息场景进行审计。 表3 audit_type审计类型项 审计类型 描述 audit_open/audit_close 表示审计类型为打开和关闭审计日志操作。 user_login/user_logout 表示审计类型为用户登录/退出成功的操作和用户。 system_start/system_stop/system_recover/system_switch 表示审计类型为系统的启停、实例切换操作。 sql_wait/sql_parse 表示审计类型为SQL语句解析。 lock_user/unlock_user 表示审计类型为用户锁定和解锁成功的操作。 grant_role/revoke__role 表示审计类型为用户权限授予和回收的操作。 user_violation 表示审计类型为用户访问存在越权的操作。 ddl_数据库对象 表示审计类型为DDL操作,因为DDL操作由会根据操作对象进行更细粒度控制,仍然沿用审计开关audit_system_object,即由audit_system_object控制对哪些对象的DDL操作进行审计(此处不配置ddl,只要配置了audit_system_object,审计也会生效)。 例如:ddl_sequence表示审计类型为序列相关操作。 dml_action_insert/dml_action_delete/dml_action_update/dml_action_merge/dml_action_select 表示审计类型为INSERT、DELETE、UPDATE、MERGE等DML操作。 internal_event 表示审计类型为内部事件。 user_func 表示审计类型为用户自定义函数、存储过程、匿名块操作。 说明: 如果自定义函数、存储过程中有fetch语句,则审计fetch语句时,其中common_text字段记录的为其对应的CURSOR内容。 special_func 表示审计类型为特殊函数调用操作,特殊函数包括:pg_terminate_backend和pg_cancel_backend。 copy_to/copy_from 表示审计类型为COPY相关操作。 set_parameter 表示审计类型为SET操作。 trans_begin/trans_commit/trans_prepare/trans_rollback_to/trans_release/trans_savepoint/trans_commit_prepare/trans_rollback_prepare/trans_rollback 表示审计类型为事务相关操作。 vacuum/vacuum_full/vacuum_merge 表示审计类型为VACUUM相关操作。 analyze/analyze_verify 表示审计类型为ANALYZE相关操作。 cursor_declare/cursor_move/cursor_fetch/cursor_close 表示审计类型为游标相关操作。 codeblock_execute 表示审计类型为匿名块。 explain 表示审计类型为EXPLAIN操作。 show 表示审计类型为SHOW操作。 lock_table 表示审计类型为锁表操作。 comment 表示审计类型为COMMENT操作。 prepare/execute/deallocate 表示审计类型为PREPARE、EXECUTE或DEALLOCATE操作。 cluster 表示审计类型为CLUSTER操作。 constraints 表示审计类型为CONSTRAINTS操作。 checkpoint 表示审计类型为CHECKPOINT操作。 barrier 表示审计类型为BARRIER操作。 cleanconn 表示审计类型为CLEAN CONNECTION操作。 seclabel 表示审计类型为安全标签操作。 notify 表示审计类型为通知操作。 load 表示审计类型为加载操作。 discard 表示审计类型为DISCARD操作。
  • login_audit_messages(flag boolean) 描述:查看登录用户的登录信息。 返回值类型:元组 示例: 查看上一次登录认证通过的日期、时间和IP等信息: 12345 SELECT * FROM login_audit_messages(true); username | database | logintime | type | result | client_conninfo | session_id------------+----------+------------------------+---------------+--------+--------------------+----------------------------------------- dbadmin | gaussdb | 2017-06-02 15:28:34+08 | login_success | ok | gsql@[local] | 1663745305.140192538154752.coordinator1(1 row) 查看上一次登录认证失败的日期、时间和IP等信息: 1234 SELECT * FROM login_audit_messages(false) ORDER BY logintime desc limit 1; username | database | logintime | type | result | client_conninfo | session_id------------+----------+------------------------+--------------+--------+-------------------------+------------(0 rows) 查看自从最后一次认证通过以来失败的尝试次数、日期和时间: 1234 SELECT * FROM login_audit_messages(false); username | database | logintime | type | result | client_conninfo | session_id------------+----------+------------------------+--------------+--------+-------------------------+------------(0 rows)
  • gs_password_deadline() 描述:显示当前账户距离密码过期的时间。密码过期后提示用户修改密码。与GUC参数password_effect_time相关。 返回值类型:interval 示例: 12345 SELECT gs_password_deadline(); gs_password_deadline ------------------------- 83 days 17:44:32.196094(1 row)
  • gs_password_expiration() 描述:显示当前账户距离密码过期的时间。密码过期后用户无法登录数据库。与创建用户的DDL语句PASSWORD EXPIRATION period相关,函数返回值大于等于-1,如果创建用户时未指定PASSWORD EXPIRATION period,该函数的缺省值为-1,表示没有过期限制。 返回值类型:interval 示例: 12345 SELECT gs_password_expiration(); gs_password_expiration ------------------------- 29 days 23:59:49.731482(1 row)
  • login_audit_messages_pid(flag boolean) 描述:查看登录用户的登录信息。与login_audit_messages的区别在于结果基于当前backendid向前查找。所以不会因为同一用户的后续登录,而影响本次登录的查询结果。也就是查询不到该用户后续登录的信息。 返回值类型:元组 示例: 查看上一次登录认证通过的日期、时间和IP等信息: 12345 SELECT * FROM login_audit_messages_pid(true); username | database | logintime | type | result | client_conninfo | backendid | session_id------------+----------+------------------------+---------------+--------+--------------------+----------------------------------------- dbadmin | postgres | 2017-06-02 15:28:34+08 | login_success | ok | gsql@[local] | 140311900702464 | 1663745305.140192538154752.coordinator1(1 row) 查看上一次登录认证失败的日期、时间和IP等信息: 1234 SELECT * FROM login_audit_messages_pid(false) ORDER BY logintime desc limit 1; username | database | logintime | type | result | client_conninfo | backendid | session_id------------+----------+------------------------+--------------+--------+-------------------------+------------(0 rows) 查看自从最后一次认证通过以来失败的尝试次数、日期和时间: 1234 SELECT * FROM login_audit_messages_pid(false); username | database | logintime | type | result | client_conninfo | backendid | session_id------------+----------+------------------------+--------------+--------+-------------------------+------------(0 rows)
  • pg_read_binary_file(filename text [, offset bigint, length bigint,missing_ok boolean]) 描述:返回一个二进制文件的内容。 返回值类型:bytea 备注:pg_read_binary_file的功能与pg_read_file类似,除了结果的返回值为bytea类型不一致,相应地不会执行编码检查。与convert_from函数结合,这个函数可以用来读取用指定编码的一个文件。 1 SELECT convert_from(pg_read_binary_file('filename'), 'UTF8');
  • pg_stat_file(filename text) 描述:返回一个文本文件的状态信息。 返回值类型:record 备注:pg_stat_file返回一条记录,其中包含:文件大小、最后访问时间戳、最后更改时间戳、最后文件状态修改时间戳以及标识传入参数是否为目录的boolean值。典型的用法: 1 SELECT * FROM pg_stat_file('filename'); 1 SELECT (pg_stat_file('filename')).modification; 示例: 123456789 SELECT * FROM pg_stat_file('postmaster.pid'); size | access | modification | change | creation | isdir ------+------------------------+------------------------+------------------------+----------+------- 117 | 2017-06-05 11:06:34+08 | 2017-06-01 17:18:08+08 | 2017-06-01 17:18:08+08 | | f(1 row) 12345 SELECT (pg_stat_file('postmaster.pid')).modification; modification ------------------------ 2017-06-01 17:18:08+08(1 row)
  • pg_ls_dir(dirname text) 描述:列出目录中的文件。 返回值类型:setof text 备注:pg_ls_dir返回指定目录里面的除了特殊项“.”和“..”之外所有名字。 示例: 1 2 3 4 5 6 7 8 9101112131415161718192021222324252627282930313233343536 SELECT pg_ls_dir('./'); pg_ls_dir ---------------------- .postgresql.conf.swp postgresql.conf pg_tblspc PG_VERSION pg_ident.conf core server.crt pg_serial pg_twophase postgresql.conf.lock pg_stat_tmp pg_notify pg_subtrans pg_ctl.lock pg_xlog pg_clog base pg_snapshots postmaster.opts postmaster.pid server.key.rand server.key.cipher pg_multixact pg_errorinfo server.key pg_hba.conf pg_replslot .pg_hba.conf.swp cacert.pem pg_hba.conf.lock global gaussdb.state(32 rows)
  • pg_read_file(filename text, offset bigint, length bigint) 描述:返回一个文本文件的内容。 返回值类型:text 备注:pg_read_file返回一个文本文件的一部分,从offset开始,最多返回length字节(如果先达到文件结尾,则小于这个数值)。如果offset是负数,则它是相对于文件结尾回退的长度。如果省略了offset和length,则返回整个文件。 示例: 1 2 3 4 5 6 7 8 91011 SELECT pg_read_file('postmaster.pid',0,100); pg_read_file --------------------------------------- 53078 + /srv/BigData/hadoop/data1/coordinator+ 1500022474 + 8000 + /var/run/dws + localhost + 2(1 row)
  • pg_cancel_backend(pid int) 描述:取消一个后端的当前查询。 返回值类型:boolean 备注:pg_cancel_backend向由pid标识的后端进程发送一个查询取消(SIGINT)信号。一个活动的后端进程的PID可以从pg_stat_activity视图的pid字段找到,或者在服务器上用ps列出数据库进程。 示例: 1 2 3 4 5 6 7 8 91011 SELECT pid FROM pg_stat_activity WHERE stmt_type ='RESET'; pid----------------- 281471222065200(1 row)SELECT pg_cancel_backend(281471222065200); pg_cancel_backend------------------- t(1 row)
  • pg_terminate_backend(pid int) 描述:终止一个后台线程。 返回值类型:boolean 备注:如果成功,函数返回true,否则返回false。 示例: 1 2 3 4 5 6 7 8 910111213141516171819 SELECT pid FROM pg_stat_activity; pid ----------------- 140657876268816 140433774061312 140433587902208 140433656592128 140433723717376 140433637189376 140433552770816 140433481983744 140433349310208(9 rows)SELECT pg_terminate_backend(140657876268816); pg_terminate_backend ---------------------- t(1 row)
共100000条
提示

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