-
GaussDB(DWS)如何查询表的创建时间?一、 摘要在项目交付中,经常有人会问“如何在数据库中查询表的创建时间?” ,那么究竟如何在GaussDB(DWS)中查找对象的创建时间呢?本文提供3种方法作为参考,包括dba_objecs视图查看方法、审计日志查看方法和CN日志查看方法。二、 操作演练方法1:视图查询方法DBA_OBJECTS视图存储了数据库中所有数据库对象的相关信息, GaussDB(DWS)支持通过DBA_OBJECTS视图进行查询,字段和详细说明如下:表1 DBA_OBJECTS视图字段名称类型描述ownername对象的所有者object_namename对象的名称object_idoid对象的OIDobject_typename对象的类型namespaceoid对象所在的命名空间createdtimestamp with time zone对象的创建时间last_ddl_timetimestamp with time zone对象最后修改时间,修改行为包括ALTER操作和GRANT、REVOKE操作。注意:需要有系统管理员权限才可以访问。其中对象的类型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。 表2 audit_system_object取值含义说明二进制位含义取值说明第0位是否审计DATABASE对象的CREATE、DROP、ALTER操作。0表示不审计该对象的CREATE、DROP、ALTER操作;1表示审计该对象的CREATE、DROP、ALTER操作。第1位是否审计SCHEMA对象的CREATE、DROP、ALTER操作。0表示不审计该对象的CREATE、DROP、ALTER操作;1表示审计该对象的CREATE、DROP、ALTER操作。第2位是否审计USER对象的CREATE、DROP、ALTER操作。0表示不审计该对象的CREATE、DROP、ALTER操作;1表示审计该对象的CREATE、DROP、ALTER操作。第3位是否审计TABLE对象的CREATE、DROP、ALTER、TRUNCATE操作。0表示不审计该对象的CREATE、DROP、ALTER、TRUNCATE操作;1表示审计该对象的CREATE、DROP、ALTER、TRUNCATE操作。第4位是否审计INDEX对象的CREATE、DROP、ALTER操作。0表示不审计该对象的CREATE、DROP、ALTER操作;1表示审计该对象的CREATE、DROP、ALTER操作。第5位是否审计VIEW对象的CREATE、DROP操作。0表示不审计该对象的CREATE、DROP操作;1表示审计该对象的CREATE、DROP操作。第6位是否审计TRIGGER对象的CREATE、DROP、ALTER操作。0表示不审计该对象的CREATE、DROP、ALTER操作;1表示审计该对象的CREATE、DROP、ALTER操作。第7位是否审计PROCEDURE/FUNCTION对象的CREATE、DROP、ALTER操作。0表示不审计该对象的CREATE、DROP、ALTER操作;1表示审计该对象的CREATE、DROP、ALTER操作。第8位是否审计TABLESPACE对象的CREATE、DROP、ALTER操作。0表示不审计该对象的CREATE、DROP、ALTER操作;1表示审计该对象的CREATE、DROP、ALTER操作。第9位是否审计RESOURCE POOL对象的CREATE、DROP、ALTER操作。0表示不审计该对象的CREATE、DROP、ALTER操作;1表示审计该对象的CREATE、DROP、ALTER操作第10位是否审计WORKLOAD对象的CREATE、DROP、ALTER操作。0表示不审计该对象的CREATE、DROP、ALTER操作;1表示审计该对象的CREATE、DROP、ALTER操作第11位是否审计SERVER FOR HADOOP对象的CREATE、DROP、ALTER操作。0表示不审计该对象的CREATE、DROP、ALTER操作;1表示审计该对象的CREATE、DROP、ALTER操作第12位是否审计DATA SOURCE对象的CRAETE、DROP、ALTER操作。0表示不审计该对象的CREATE、DROP、ALTER操作;1表示审计该对象的CREATE、DROP、ALTER操作。第13位是否审计NODE GROUP对象的CREATE、DROP操作。0表示不审计该对象的CREATE、DROP操作;1表示审计该对象的CREATE、DROP操作。第14位是否审计ROW LEVEL SECURITY对象的CREATE、DROP、ALTER操作。0表示不审计该对象的CREATE、DROP、ALTER操作;1表示审计该对象的CREATE、DROP、ALTER操作。第15位是否审计TYPE对象的CREATE、DROP、ALTER操作。0表示不审计TYPE对象的CREATE、DROP、ALTER操作;1表示审计TYPE对象的CREATE、DROP、ALTER操作。第16位是否审计TEXT SEARCH对象(CONFIGURATION和DICTIONARY)的CREATE、DROP、ALTER操作。0表示不审计TEXT SEARCH对象的CREATE、DROP、ALTER操作;1表示审计TEXT SEARCH对象的CREATE、DROP、ALTER操作。第17位是否审计DIRECTORY对象的CREATE、DROP、ALTER操作。0表示不审计DIRECTORY对象的CREATE、DROP、ALTER操作;1表示审计DIRECTORY对象的CREATE、DROP、ALTER操作。第18位是否审计SYNONYM对象的CREATE、DROP、ALTER操作。0表示不审计SYNONYM对象的CREATE、DROP、ALTER操作;1表示审计SYNONYM对象的CREATE、DROP、ALTER操作。 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语句也同样被记录。默认值:nonelog_statement参数设置方法:--登录CN所在的数据节点,执行source /opt/huawei/Bigdata/mppdb/.mppdbgs_profilegs_guc reload -Z coordinator -Z datanode -N all -I all -c "log_statement=ddl"参数设置命令截图:查看对应时间点的CN日志,可以记录表的创建时间,详细如下。
-
【摘要】 在一些局点的交付过程中,ISV需要使用行级访问策略进行用户访问权限控制,省级用户具有全部查询权限,部分市级用户设置行级访问权限。如果行级访问控制使用不好,会导致影响整体查询的执行效率,例如在业务系统建表的过程中,创建1个行级访问策略并增加case when条件,根据登录用户名(current_user)判断用户属性(省级用户还是市级用户),并进行访问控制,实际测试过程中省级用户查询执行耗时17秒。行级访问策略优化实践一、 背景描述 在一些局点的交付过程中,ISV需要使用行级访问策略进行用户访问权限控制,省级用户具有全部查询权限,部分市级用户设置行级访问权限。如果行级访问控制使用不好,会导致影响整体查询的执行效率,例如在业务系统建表的过程中,创建1个行级访问策略并增加case when条件,根据登录用户名(current_user)判断用户属性(省级用户还是市级用户),并进行访问控制,实际测试过程中省级用户查询执行耗时17秒,不符合预期,需要进行优化。 行级访问控制介绍:行级访问控制特性将数据库访问控制精确到数据表行级别,控制表中行级数据可见性,使数据库达到行级访问控制的能力。用户可以在数据表创建行访问控制(Row Level Security)策略,该策略是指针对特定数据库用户、特定SQL操作生效的表达式。当数据库用户对数据表访问时,若SQL满足数据表特定的Row Level Security策略,在查询优化阶段将满足条件的表达式应用到执行计划上。不同用户执行相同的SQL查询操作,读取到的结果是不同的。二、 优化分析对应业务表的行级访问策略如下图所示,使用case when进行访问用户区分,省级用户对应的编号为14400000000,市级用户需要根据else分支逻辑判断是否符合权限设置:实际使用省级用户执行,执行explain analyze select count(1) from kf_bz.hxzg_sb_zys,打印执行计划如下,SQL执行时间需要17S左右:行级访问权限控制是把权限控制约束作为查询的一个过滤条件,然后整个SQL一起做计划,性能和执行方式跟行访问控制的表达式相关,因为case判断条件均为执行过程中动态生成的,需要先补全分支条件再进行剪枝,PG处理机制类似。行级控制策略中case when中省级用户的行级控制权限逻辑简单,但是else分支的市级用户行级控制权限逻辑相对复杂,执行耗时,拖慢了整体的执行速度。三、 解决办法 行级访问控制策略可以绑定用户和角色(rolename),显式拆分省级和市级的用户组替换case when语句,市级的所有用户添加到市级用户组,省级用户添加到省级用户组,例如create row level security POLICY auth_hxzg_sb_zys on kf_bz.hxzg_sb_zys to rolename,在安全策略中指定rolename,并创建两个行级访问策略,一个策略针对省级用户组生效,另一个策略对市级用户组生效。(例如省级role_sj_root,市级role_ds_root),分别对省级和市级两类用户设置行级访问控制)。调整策略后省级用户执行效率提升到1s内返回,符合预期,执行计划如下:省级用户查询:市级用户查询:
-
【操作步骤&问题现象】版本 8.1.0hetu 部件版本 1.0.1drop表时报错 drop table is disabled in this catalog同时对于各个catlog数据源支持程度是否有说明文档?
-
【功能模块】客户 9个join的sql语句执行缓慢【操作步骤&问题现象】1、查询pgxc_stat_activity 视图 有租户为 waiting in ccn queue【截图信息】【日志信息】(可选,上传日志内容或者附件)
-
在GaussDB匿名块中,当有SQL发生报错时,会将整个匿名块的SQL进行回滚操作。案例:BEGIN DELETE FROM .......; --需要执行的SQL语句一; INSERT INTO LOG......; --将语句一的执行信息写入日志表,如执行时间、修改行数等。 DELETE FROM .......; --需要执行的SQL语句二; INSERT INTO LOG......; --将语句二的执行信息写入日志表EXCEPTION WHEN OTHERS THEN INSERT INTO LOG......; --将报错的SQL的信息写入日志表。END;问题:现在假如当SQL语句三报错时,SQL语句1和语句2的日志写入就会被回滚,只写入了EXCEPTION模块中的报错日志。 请问:怎么才能让匿名块中有SQL报错时,已经执行完成的操作不会被回滚。(针对单条SQL不回滚或者整个匿名块都不回滚)
-
【操作步骤&问题现象】sql及现象如下:
-
【功能模块】 项目启动阶段_数据库连接 【操作步骤&问题现象】 1、数据库由甲方提供,给了用户名、密码、host、port等基本信息 2、项目数据库配置信息如下: spring: datasource: driverClassName: com.huawei.gauss200.jdbc.Driver url: jdbc:gaussdb://host:port/scfwk username: xxxx password: xxxx@1234 3、项目启动时,报错信息: ERROR: invalid value for parameter "client_encoding":"utf8mb4"
-
【功能模块】【DWS】【高可用】云上DWS集群,是BMS的高可用更好一些,还是I3的虚拟机更好一些?【操作步骤&问题现象】环境选型时需要考虑【截图信息】【日志信息】(可选,上传日志内容或者附件)
-
在8.0的manager界面只看到对接HDFS,Oracle等,能否跨集群访问elk
-
【版本信息】GaussDB 300【问题现象】集群状态正常,但是etcd有超过一半出现down了,om_monitor日志如下:【问题根因】看om_monitor日志有bad certificate的报错,怀疑是etcd证书损坏了,在每个etcd节点上查询ectd证书的时间发现都是不一样的,确定是etcd证书损坏导致,在将证书替换后,重启集群后,etcd恢复正常【修复方案】注:以下操作均使用omm用户执行一、在集群任一数据节点搭建ca,生成根私钥、根证书、客户端证书和客户端私钥具体步骤如下:1、搭建CA环境在一个数据节点执行如下步骤:source ${BIGDATA_HOME}/mppdb/.mppdbgs_profilemkdir testcd testmkdir private certs newcertsecho '01'> serialtouch index.txttouch index.txt.attr2、执行如下命令生成需要的私钥和证书openssl req -config ${BIGDATA_HOME}/mppdb/core/share/sslcert/etcd/openssl.cnf -new -nodes -keyout private/ca.key -out certs/ca.csr -subj "/CN=cn"openssl ca -startdate 170101000000Z -config ${BIGDATA_HOME}/mppdb/core/share/sslcert/etcd/openssl.cnf -extensions v3_ca -selfsign -batch -keyfile private/ca.key -out certs/etcdca.crt -infiles certs/ca.csropenssl req -config ${BIGDATA_HOME}/mppdb/core/share/sslcert/etcd/openssl.cnf -new -nodes -keyout private/client.key -out certs/client.csr -subj "/CN=cn"sed s/yes/no/g -i index.txt.attropenssl ca -startdate 170101000000Z -config ${BIGDATA_HOME}/mppdb/core/share/sslcert/etcd/openssl.cnf -extensions etcd_client -batch -keyfile private/ca.key -cert certs/etcdca.crt -out certs/client.crt -infiles certs/client.csr3、将生成的ca.key、etcdca.crt、client.key、client.crt分发到集群的各个节点的${BIGDATA_HOME}/mppdb/core/share/sslcert/etcd/目录下(以下以本节点拷贝为例)cp private/ca.key ${BIGDATA_HOME}/mppdb/core/share/sslcert/etcd/cp certs/etcdca.crt ${BIGDATA_HOME}/mppdb/core/share/sslcert/etcd/cp private/client.key ${BIGDATA_HOME}/mppdb/core/share/sslcert/etcd/cp certs/client.crt ${BIGDATA_HOME}/mppdb/core/share/sslcert/etcd/执行完成后删除创建的test目录二、分别在各个etcd节点执行如下步骤生成服务端证书私钥和证书1、搭建CA环境source ${BIGDATA_HOME}/mppdb/.mppdbgs_profilemkdir testcd testmkdir private certs newcertsecho '01'> serialtouch index.txttouch index.txt.attr2、执行如下步骤生成服务端证书私钥和证书export SAN="IP:10.10.10.10"注:10.10.10.10为当前部署ETCD的客户端ipopenssl req -config ${BIGDATA_HOME}/mppdb/core/share/sslcert/etcd/openssl.cnf -new -nodes -keyout private/etcd.key -out certs/etcd.csr -subj "/CN=cn"openssl ca -startdate 170101000000Z -config ${BIGDATA_HOME}/mppdb/core/share/sslcert/etcd/openssl.cnf -extensions etcd_server -batch -keyfile ${BIGDATA_HOME}/mppdb/core/share/sslcert/etcd/ca.key -cert ${BIGDATA_HOME}/mppdb/core/share/sslcert/etcd/etcdca.crt -out certs/etcd.crt -infiles certs/etcd.csr3、将生成的服务端证书私钥和证书拷贝到etcd目录下cp private/etcd.key /srv/BigData/mppdb/etcdcp certs/etcd.crt /srv/BigData/mppdb/etcd执行完成后删除创建的test目录至此修复etcd证书完成修复etcd证书完成后重启集群即可【etcd日志路径】etcd的日志一般生成在om_monitor日志里日志路径:$GAUSSLOG/cm/om_monitor/
-
JDBC的连接URL这么写有问题不,时区显示设置成PRC。同时如果集群是UTC的时区,但是库设置了PRC,那通过jdbc连接的时候,将mysql库内的时间字段通过代码映射到dws的对应字段进行数据导入是否会因为集群的时区是UTC的原因,使得dws内存放的时间数据与mysql源库的时间数据不一致?
-
【功能模块】【操作步骤&问题现象】1、https://support.huaweicloud.com/dws_faq/dws_03_0018.html 是这么说的:OBS外表支持CSV格式文件,或者文本类型的其他格式文件,二者主要不同如下:CSV由记录组成,每条记录被分隔符分隔为字段,且每条记录都有同样的字段序列。可以有效处理数据列中的换行符,但对一些特殊字符处理有欠缺。TEXT可以有效处理一些特殊字符,但无法正确处理数据列中的换行符。2、在最佳实践的三个业务实践中(交通卡口,供应链、百货公司),外表都是使用CSV格式(OPTIONS设置 format 'csv')那“对一些特殊字符处理有欠缺”,该如何理解呢?具体有哪些特殊字符?具体是什么欠缺?会导致导入失败吗?因为外表里有近10亿条数据,导入失败回滚会比较麻烦吧?比较费时间吧?那为了避免这个欠缺的发生,导入前准备的外表文件,是不是要做一下数据的规范性检查?【截图信息】【日志信息】(可选,上传日志内容或者附件)
-
大大们,GaussDB A搭建集群时修改了ssh的默认端口22,然后manager安装成功之后,用fusioninsight manager搭建集群,显示找不到主机,能帮忙看看可能什么原因吗?个人认为是端口的问题,修改完能该的配置文件重新安装了一下,但是还是不行,不知道是什么原因FusionInsight_SetupTool/preinstall/tools/cluster/lib/remote.shFusionInsight_SetupTool/preinstall/tools/cluster/cluster.iniFusionInsight_SetupTool/preinstall/script/function/remote.shFusionInsight_SetupTool/preinstall/script/function/005.check_ini.shFusionInsight_SetupTool/upgrade/func/constants.sh
-
问题现象: 集群创建失败,报DWS.6004,BMS.0010错误编码,执行到30%失败,到子任务到RdsCreateInstanceTask处ERROR分析过程:查看BMS.0010,为镜像查询失败,需要核查镜像是否配置正确1.检查镜像ID配置用op_cdk_sso登录cloudscope--》cdk--》服务管理--》服务查询--》刷选ei_dbs_xx,命名空间dws--》找到dwscontroller服务--》升级--》筛选版本比如 8_1_0_3检查镜像ID参数:BMS镜像:dws_imageId_version_8_1_0_3_bms_arm,dws_imageId_version_8_1_0_3_bms ECS镜像:dws_imageId_version_8_1_0_3_dws_arm,dws_imageId_version_8_1_0_3_dws2.补充缺失的配置从serviceOM--》镜像资源--》公共镜像获取镜像ID,补充到对应的参数,CDK中升级服务,再重启dwscontroller容器重新下发集群
-
如题
上滑加载中
推荐直播
-
华为云码道Agent集成与鸿蒙实战2026/08/11 周二 19:00-21:00
王一男-华为云码道产品规划专家;李炎-华为云码道产品专家;彭江敏-华为云鸿蒙端云一体化开发专家
本次直播带你解读华为云码道7月份产品新特性、新功能。更有专家演示码道Agent Space × 钉钉机器集成实战,从0到1打通消息通道;码道鸿蒙端云一体化实战,快速搭建员工签到系统。
回顾中 -
华为云开发者AI素养直播课·第五期2026/09/04 周五 16:00-18:00
林华鼎-华为云AI开发者运营负责人;蒋春阳-华为云AI开发者案例开发专家
本期直播内容: AI工具体验营 · 第5-8课连讲。Agent-Team 多智能体协作完成毕业设计实践
回顾中 -
华为云开发者AI素养ClassRoom·第六期2026/09/08 周二 19:00-20:00
樊渊-2026华为软件挑战赛冠军
高手来了:看软挑高手解析二维排样问题—从工业难题到算法突破
回顾中
热门标签