共计 2723 个字符,预计需要花费 7 分钟才能阅读完成。
摘要:在我的项目交付中,常常有人会问“如何在数据库中查问表的创立工夫?”,那么到底如何在 GaussDB(DWS)中查找对象的创立工夫呢?本文提供 3 种办法作为参考,包含 dba_objecs 视图查看办法、审计日志查看办法和 CN 日志查看办法。
本文分享自华为云社区《GaussDB(DWS)实际系列 -GaussDB(DWS)如何查问对象 (表) 的创立工夫?》,原文作者:四叶草。
一、背景形容
在我的项目交付中,常常有人会问“如何在数据库中查问表的创立工夫?”,那么到底如何在 GaussDB(DWS)中查找对象的创立工夫呢?本文提供 3 种办法作为参考,包含 dba_objecs 视图查看办法、审计日志查看办法和 CN 日志查看办法。
二、操作演练
办法 1:视图查询方法
DBA_OBJECTS 视图存储了数据库中所有数据库对象的相干信息, GaussDB(DWS)反对通过 DBA_OBJECTS 视图进行查问,字段和具体阐明如下:
留神:须要有系统管理员权限才能够拜访。
其中对象的类型 object_type 字段会包含 TABLE、INDEX、VIEW、RULE, PROCEDURE、TYPE、OPERATOR 等,查问时可依据该字段进行筛选:
1. 创立测试表
创立测试表,用于后续查问测试。
-- 定义一个表,应用 HASH 散布。CREATE TABLE employee_info
(
id INTEGER NOT NULL,
name VARCHAR(16) NOT NULL,
tel VARCHAR(11),
addr varchar(10)
)DISTRIBUTE BY HASH(id);
-- 查看以后零碎工夫。select current_timestamp;
测试表创立实现后查看以后零碎工夫作为参考。
2. 查问创立工夫
通过 DBA_OBJECTS 视图查看表对象创立工夫。
select * from dba_objects where object_type='TABLE' and object_name='employee_info';
查问后果如下:
3. 更新测试表
更新测试表 employee_info,测试 dba_objects 视图是否能够保留对象的最初批改工夫,批改行为包含 ALTER 操作和 GRANT、REVOKE 操作:
-- 向表中减少一个 varchar 列 group_info。ALTER TABLE employee_info ADD group_info varchar(30);
-- 查看以后零碎工夫。select current_timestamp;
相干信息记录如下:
4. 查看最初更新工夫
通过 DBA_OBJECTS 视图查看对象的最初更新工夫。
select * from dba_objects where object_type='TABLE' and object_name='employee_info';
查问后果如下:
办法 2:审计日志查看办法
审计日志统计信息更全,关上审计总开关 audit_enabled=on,并设置审计项 audit_system_object。
audit_system_object 参数阐明:该参数决定是否对 GaussDB A 数据库对象的 CREATE、DROP、ALTER 操作进行审计。GaussDB A 数据库对象包含 DATABASE、USER、schema、TABLE 等。通过批改该配置参数的值,能够只审计须要的数据库对象的操作。取值范畴:整型,0~524287
Ø 0 代表敞开数据库对象的 CREATE、DROP、ALTER 操作审计性能。Ø 非 0 代表只审计某类或者某些数据库对象的 CREATE、DROP、ALTER 操作。默认值:12295 换算成 19 位二进制为 000 0011 0000 0000 0111
取值阐明:该参数的值由 19 个二进制位的组合求出,这 19 个二进制位别离代表 GaussDB (DWS)的 19 类数据库对象。如果对应的二进制位取值为 0,示意不审计对应的数据库对象的 CREATE、DROP、ALTER 操作;取值为 1,示意审计对应的数据库对象的 CREATE、DROP、ALTER 操作。这 19 个二进制位代表的具体审计内容请参见表 2。
12295 换算成 19 位二进制为 000 0011 0000 0000 0111,批改第 3 位的值为 1,示意审计 TABLE 对象的 CREATE、DROP、ALTER、TRUNCATE 操作,批改后的值为 12303(对应的 19 位二进制为 000 0011 0000 0000 1111)
参数设置如下:
gs_guc reload -Z coordinator -Z datanode -N all -I all -c "audit_enabled=on"
gs_guc reload -Z coordinator -Z datanode -N all -I all -c "audit_system_object=12303"
参数设置命令截图:
设置胜利:
依照办法 1 中的流程创立并更新测试表,记录零碎以后工夫作为参照:
查看审计日志:
select * from pgxc_query_audit('2021-05-27 16:10:00','2021-05-27 16:20:00') where operation_type='ddl' and object_name='employee_info';
截图如下:
办法 3:CN 日志查看办法
配置 postgresql.conf 配置文件,通过记录表的 DDL 信息,从而确定表的创立工夫。
log_statement 参数介绍:
log_statement 参数阐明:管制记录 SQL 语句。该参数属于 SUSET 类型参数,请参考表 1 中对应设置办法进行设置。即便 log_statement 设置为 all,蕴含简略语法错误的语句也不会被记录,因为仅在实现根本的语法分析并确定了语句类型之后才记录日志。取值范畴:枚举类型
•none 示意不记录语句。•ddl 示意记录所有的数据定义语句,比方 CREATE、ALTER 和 DROP 语句。•mod 示意记录所有 DDL 语句,还包含数据批改语句 INSERT、UPDATE、DELETE、TRUNCATE 和 COPY FROM。•all 示意记录所有语句,PREPARE、EXECUTE 和 EXPLAIN ANALYZE 语句也同样被记录。默认值:none
log_statement 参数设置办法:
-- 登录 CN 所在的数据节点,执行
source /opt/huawei/Bigdata/mppdb/.mppdbgs_profile
gs_guc reload -Z coordinator -Z datanode -N all -I all -c "log_statement=ddl"
参数设置命令截图:
查看对应工夫点的 CN 日志,能够记录表的创立工夫,具体如下。
点击关注,第一工夫理解华为云陈腐技术~