zoukankan      html  css  js  c++  java
  • 在数据库中如何查询表的创建时间?

    摘要:在项目交付中,经常有人会问“如何在数据库中查询表的创建时间?” ,那么究竟如何在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等。通过修改该配置参数的值,可以只审计需要的数据库对象的操作。
    取值范围:整型,0524287
    Ø  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日志,可以记录表的创建时间,详细如下。

     

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

  • 相关阅读:
    VS 2008潜在强大的功能:提取EXE文件中的ICO等资源
    园友们注意:淘宝网上QQ会员 4钻 3元 等都为骗子行为
    Comet Async Process Request Handler
    WCF(Sender) to MSMQ to WCF(Receiver)
    ASP.NET Web Form GridView DetailsView Query Edit
    WCF NetTcp AsyncQueue Service
    Xml CDATA 序列化
    Sync Invoke Remoting Async Invoke
    .Net 4.0 Remoting ConcurrentQueue
    Socket Async Receive Data to LinkedList Buffer (telnet proxy server)
  • 原文地址:https://www.cnblogs.com/huaweiyun/p/14985783.html
Copyright © 2011-2022 走看看