当前位置: 主页 > 数据库

数据库中的数据表-在vfp中,数据库表和自由表

发布时间:2023-02-09 14:07   浏览次数:次   作者:佚名

摘要: 在项目交付中,经常有人问“如何查询数据库中表的创建时间?”,那么如何在GaussDB(DWS)中查找对象的创建时间呢? 本文提供了三种方法供参考数据库中的数据表,分别是dba_objects视图查看方法、审计日志查看方法和CN日志查看方法。

本文分享自华为云社区《GaussDB(DWS)实践系列——GaussDB(DWS)如何查询对象(表)的创建时间?》数据库中的数据表,原作者:Clover。

一、背景说明

在项目交付中,经常有人问“如何查询数据库中表的创建时间?”,那么如何在GaussDB(DWS)中查找对象的创建时间呢? 本文提供了三种方法供参考,分别是dba_objects视图查看方法、审计日志查看方法和CN日志查看方法。

二、操作演练方法一:视图查询法

DBA_OBJECTS 视图存储有关数据库中所有数据库对象的信息。 GaussDB(DWS)支持通过DBA_OBJECTS 视图进行查询。 字段及详细信息如下:

在vfp中,数据库表和自由表_数据库中的数据表_sql a表数据更新到b表

注意:需要系统管理员权限才能访问。

对象的object_type字段会包括TABLE、INDEX、VIEW、RULE、PROCEDURE、TYPE、OPERATOR等,查询时可以根据该字段进行过滤:

数据库中的数据表_sql a表数据更新到b表_在vfp中,数据库表和自由表

1.创建测试表

创建测试表,用于后续查询测试。

--定义一个表,使用HASH分布。
CREATE TABLE employee_info
(
    id INTEGER NOT NULL,

在vfp中,数据库表和自由表_数据库中的数据表_sql a表数据更新到b表

name VARCHAR(16) NOT NULL, tel VARCHAR(11), addr varchar(10) )DISTRIBUTE BY HASH(id); --查看当前系统时间。 select current_timestamp;

创建测试表后,查看当前系统时间作为参考。

数据库中的数据表_在vfp中,数据库表和自由表_sql a表数据更新到b表

2.查询创建时间

通过DBA_OBJECTS 视图查看表对象的创建时间。

select * from dba_objects where object_type='TABLE' and object_name='employee_info';

查询结果如下:

数据库中的数据表_在vfp中,数据库表和自由表_sql a表数据更新到b表

在vfp中,数据库表和自由表_sql a表数据更新到b表_数据库中的数据表

3.更新测试表

更新测试表employee_info,测试dba_objects视图是否可以保存对象的最后修改时间。 修改行为​​包括ALTER操作和GRANT、REVOKE操作:

--向表中增加一个varchar列group_info。
ALTER TABLE employee_info ADD group_info varchar(30);
--查看当前系统时间。
select current_timestamp;

相关信息记录如下:

数据库中的数据表_sql a表数据更新到b表_在vfp中,数据库表和自由表

4.查看最后更新时间

通过DBA_OBJECTS视图查看对象的最后更新时间。

select * from dba_objects where object_type='TABLE' and object_name='employee_info';

查询结果如下:

数据库中的数据表_sql a表数据更新到b表_在vfp中,数据库表和自由表

方式二:审计日志查看方式

数据库中的数据表_sql a表数据更新到b表_在vfp中,数据库表和自由表

审计日志统计比较完整,打开审计总开关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位二进制数组合而成,分别代表GaussDB(DWS)的19种数据库对象。 如果对应二进制位的值为0,则表示不审计对应数据库对象的CREATE、DROP、ALTER操作; 如果值为1,则表示审计对应数据库对象的CREATE、DROP、ALTER操作。 这19个二进制位所代表的具体审计内容见表2。

数据库中的数据表_sql a表数据更新到b表_在vfp中,数据库表和自由表

sql a表数据更新到b表_在vfp中,数据库表和自由表_数据库中的数据表

12295转换成19位二进制就是15387295596 0000 0111。修改第三位为1,表示审计TABLE对象的CREATE、DROP、ALTER、TRUNCATE操作。 修改后的值为 12303(对应的 19 位二进制为 15387295596 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"

sql a表数据更新到b表_在vfp中,数据库表和自由表_数据库中的数据表

参数设置命令截图:

数据库中的数据表_sql a表数据更新到b表_在vfp中,数据库表和自由表

设置成功:

数据库中的数据表_在vfp中,数据库表和自由表_sql a表数据更新到b表

按照方法一的流程创建和更新测试表,记录系统当前时间作为参考:

sql a表数据更新到b表_数据库中的数据表_在vfp中,数据库表和自由表

查看审计日志:

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';

截图如下:

sql a表数据更新到b表_在vfp中,数据库表和自由表_数据库中的数据表

方法三:CN日志查看法

配置postgresql.conf配置文件,通过记录表的DDL信息来确定表的创建时间。

log_statement参数介绍:

log_statement参数说明:控制记录SQL语句。

在vfp中,数据库表和自由表_数据库中的数据表_sql a表数据更新到b表

该参数属于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"

参数设置命令截图:

数据库中的数据表_在vfp中,数据库表和自由表_sql a表数据更新到b表

查看相应时间点的CN日志,记录表的创建时间。 详情如下。

数据库中的数据表_在vfp中,数据库表和自由表_sql a表数据更新到b表

点击关注,第一时间了解华为云的新鲜技术~