摘要:在我的项目交付中,常常有人会问“如何在数据库中查问表的创立工夫?” ,那么到底如何在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_profilegs_guc reload -Z coordinator -Z datanode -N all -I all -c "log_statement=ddl"

参数设置命令截图:

查看对应工夫点的CN日志,能够记录表的创立工夫,具体如下。

点击关注,第一工夫理解华为云陈腐技术~