Loading [MathJax]/jax/output/CommonHTML/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >专栏 >在企业级数据库GaussDB中如何查询表的创建时间?

在企业级数据库GaussDB中如何查询表的创建时间?

原创
作者头像
用户1685462
修改于 2021-07-19 02:54:13
修改于 2021-07-19 02:54:13
3.8K00
代码可运行
举报
文章被收录于专栏:网站教程网站教程
运行总次数:0
代码可运行

一、 背景描述

在项目交付中,经常有人会问“如何在数据库中查询表的创建时间?” ,那么究竟如何在GaussDB(DWS)中查找对象的创建时间呢?本文提供3种方法作为参考,包括dba_objecs视图查看方法、审计日志查看方法和CN日志查看方法。

二、 操作演练

方法1:视图查询方法

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

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

其中对象的类型object_type字段会包括TABLE、INDEX、VIEW、RULE, PROCEDURE、TYPE、OPERATOR等,查询时可根据该字段进行筛选:

1. 创建测试表

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

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
--定义一个表,使用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视图查看表对象创建时间。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
select * from dba_objects where object_type='TABLE' and object_name='employee_info';

查询结果如下:

3. 更新测试表

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

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
--向表中增加一个varchar列group_info。
ALTER TABLE employee_info ADD group_info varchar(30);
--查看当前系统时间。
select current_timestamp;

相关信息记录如下:

4. 查看最后更新时间

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

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
select * from dba_objects where object_type='TABLE' and object_name='employee_info';

查询结果如下:

方法2:审计日志查看方法

审计日志统计信息更全,打开审计总开关audit_enabled=on,并设置审计项audit_system_object。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
audit_system_object参数说明:
该参数决定是否对GaussDB A数据库对象的CREATEDROPALTER操作进行审计。GaussDB A数据库对象包括DATABASEUSER、schema、TABLE等。通过修改该配置参数的值,可以只审计需要的数据库对象的操作。
取值范围:整型,0524287
Ø  0代表关闭数据库对象的CREATEDROPALTER操作审计功能。
Ø  非0代表只审计某类或者某些数据库对象的CREATEDROPALTER操作。
默认值: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

参数设置如下:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
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中的流程创建并更新测试表,记录系统当前时间作为参照:

查看审计日志:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
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参数介绍:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
log_statement参数说明:控制记录SQL语句。
该参数属于SUSET类型参数,请参考表1中对应设置方法进行设置。即使log_statement设置为all,包含简单语法错误的语句也不会被记录,因为仅在完成基本的语法分析并确定了语句类型之后才记录日志。
取值范围:枚举类型
•none表示不记录语句。
•ddl表示记录所有的数据定义语句,比如CREATEALTERDROP语句。
•mod表示记录所有DDL语句,还包括数据修改语句INSERTUPDATEDELETETRUNCATECOPY FROM 。
•all表示记录所有语句,PREPAREEXECUTEEXPLAIN ANALYZE语句也同样被记录。
默认值:none

log_statement参数设置方法:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
--登录CN所在的数据节点,执行
source /opt/huawei/Bigdata/mppdb/.mppdbgs_profile
gs_guc reload -Z coordinator -Z datanode -N all -I all -c "log_statement=ddl"

参数设置命令截图:

查看对应时间点的CN日志,可以记录表的创建时间,详细如下。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
PostgreSQL 审计怎么搞
PostgreSQL 的审计还是要借助PostgreSQL的扩展pgaudit 来进行。有些熟悉PG的同学可能说,不是可以log_statement = all 来记录所有的语句吗,干嘛那么麻烦,自己去查日志不就好了。实际上如果公司有审计部门的情况下,这样是过不了关的,需要一个与商业数据功能相差无几的方式来面对审计部门的“亲和力”。
AustinDatabases
2020/02/13
2.7K0
PostgreSQL  审计怎么搞
Oracle常用数据库系统表单以及SQL的整理
  因为最近涉及到了一些数据库的归档,备份等工作,所以一部分的重心放在了数据库上,毕竟之前对数据库的了解也只停留在了一般的建表,查询,最多最多再写一写触发器之类的东西。
Rekent
2018/09/04
7880
【DB笔试面试828】在Oracle中,什么是审计(Audit)?
审计(Audit)用于监视用户所执行的数据库操作,审计信息可存储于数据字典表,称为审计记录。审计记录存储在SYSTEM表空间中的SYS.AUD表中,可通过视图DBA_AUDIT_TRAIL查看。审计记录也可以存储在操作系统文件中(默认位置为ORACLE_BASE/admin/ORACLE_SID/adump/)。若审计表不存在,则可以通过脚本ORACLE_HOME/rdbms/admin/cataudit.sql来创建。
AiDBA宝典
2020/06/24
2.2K0
【DB笔试面试671】在Oracle中,如何监控数据库中的非常耗费性能SQL语句?
在前边的触发器章节中介绍了如何利用系统触发器监控用户的登陆登出问题,并且可以记录所有的数据库DDL语句,这对数据库的安全审计是非常有帮助的。利用触发器还可以限制用户在某一段固定时间才能登陆数据库。接下来介绍一下如何利用SQL的实时监控特性来监控数据库中的非常耗费性能SQL语句。
AiDBA宝典
2019/10/30
1.8K0
【DB笔试面试671】在Oracle中,如何监控数据库中的非常耗费性能SQL语句?
Oracle数据库的安全性措施概述
本文介绍了Oracle数据库的安全性措施,包括用户标识和鉴定、授权和检查机制以及审计技术。Oracle还允许用户通过触发器定义特殊的更复杂的用户级安全措施。
用户1148526
2018/01/03
2K0
【连载】如何掌握openGauss数据库核心技术?秘诀五:拿捏数据库安全(4)
openGauss在部署完成后,实际上会有多个用户参与数据管理。除了管理员用户外,更多的是创建的普通用户直接进行数据管理。用户的多样性会导致数据库存在一些不可预期的风险。如何快速发现和追溯到这些异常的行为,则需要依赖审计机制和审计追踪机制。
数据和云
2022/02/25
3280
【DB笔试面试622】在Oracle中,说说COUNT(*)计算行数有哪些优化手段?
位图索引可以按很高密度存储数据,因此往往比B树索引小很多,前提是在基数比较小(列重复度比较高)的情况下。位图索引是保存空值的,因此可以在COUNT中利用。位图索引不太适合OLTP类型数据库。物化视图是应用在数据要求不怎么及时的场景下。若表频繁更新,则不适合缓存结果集。
AiDBA宝典
2019/09/29
9710
Oracle创建表空间和表「建议收藏」
Oracle创建表同SQL Server一样,使用CREATE TABLE命令来完成。创建约束则使用如下命令:
全栈程序员站长
2022/09/08
5.9K0
Oracle创建表空间和表「建议收藏」
表段、索引段上的LOGGING与NOLOGGING
在有些情况下,对于表段和索引段可以采用记录日志的模式,也可以使用不记录日志的模式。如在对表段、索引段使用数据泵导入时,可以
Leshami
2018/08/07
1.8K0
数据库系统:第四章 数据库安全性
一些黑客(Hacker)和犯罪分子在用户存取数据库时猎取用户名和用户口令,然后假冒合法用户偷取、修改甚至破坏用户数据。数据库管理系统提供的安全措施主要包括用户身份鉴别、存取控制和视图等技术。
Here_SDUT
2022/08/09
1.5K0
数据库系统:第四章 数据库安全性
Oracle知识集锦:对Oracle数据库进行监控检查
execute dbbms_workload_repository.create_snapshot();
星哥玩云
2022/08/16
1.1K0
Oracle海量数据优化-01分区的渊源
当我们看到这条语句时,会想到什么呢? 一条再简单不过的按照条件删除数据库的操作。 如果大量存在,会不会引起系统性能问题呢?
小小工匠
2021/08/16
3970
探寻大表删除字段慢的原因
《大表删除字段为何慢?》的案例中,提到删除一张大表的字段,产生了很多等待,但是测试环境模拟的现象,看起来和生产,略有区别。
bisal
2019/01/30
1.3K0
【DB笔试面试556】在Oracle中,虚拟索引的作用有哪些?
在数据库优化中,索引的重要性是不言而喻的。但是,在性能调整过程中,一个索引是否能被查询用到,在索引创建之前是无法确定的,而创建索引是一个代价比较高的操作,尤其是当数据量较大的时候。这种情况下,创建虚拟索引是一个很好的选择。
AiDBA宝典
2019/09/29
5590
MySQL数据库与JDBC编程
表结构删除,表对象不再存在;表的所有数据被删除;该表所有相关的索引、约束也被删除。
小锋学长生活大爆炸
2020/08/13
3.7K0
【DB宝93】PG审计插件之pgaudit
PostgreSQL可以通过log_statement=all 提供日志审计,但是没有提供审计要求的详细程度。PostgreSQL Audit Extension (pgAudit)能够提供详细的会话和对象审计日志,是PG的一个扩展插件。pgAudit通过标准PostgreSQL日志记录工具提供详细的会话和/或对象审核日志记录。
AiDBA宝典
2022/04/11
1.9K0
SQL 基础-->创建和管理表
(列名 数据类型 [ default 默认值] [ 约束条件] [ , ......] )
Leshami
2018/08/07
9880
【DB笔试面试448】Oracle中有哪几类触发器?
Oracle数据库有4种触发器,分别是DML、替代触发器(INSTEAD OF触发器)、DDL和系统触发器,一般的应用系统中都使用到DML、替代触发器,而DDL和系统触发器是DBA管理数据库用得比较多。下图是Oracle触发器的分类图:
AiDBA宝典
2019/09/30
2.1K0
【DB笔试面试448】Oracle中有哪几类触发器?
数据库审计方案(包括login,logout,DML,DDL等)
数据库审计方案(包括login,logout,DML,DDL等) 如下: 数据库审计方案(包括login,logout,DML,DDL等) /*=============================================================================== ||文件名:数据库审计事件记录脚本 ||说明:为了对数据库事件进行审计,而进行相关设计 =========================================================
python与大数据分析
2022/03/11
1.2K0
N天爆肝数据库——MySQL(1)
数据库 DB 存储数据的仓库 数据库管理系统 DBMS 操纵和管理数据库的大型软件 SQL 操作关系型数据库的编程语言,定义了用一套操作关系型数据库同意标准
学编程的小程
2023/10/11
1810
N天爆肝数据库——MySQL(1)
推荐阅读
相关推荐
PostgreSQL 审计怎么搞
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验