达梦连接工具如何查看表结构

说白了,德盟查看表结构有三种方式:图形工具最直观,SQL最快,存储过程最全。
但在实际使用中,效率的差异是相当明显的。

图形工具适合临时查看。
去年我们跑了一个3 000表的项目,开发过程中半夜换了场。
单击两次即可完成更改。
其次,像 DBAConsole 这样的工具带有预览功能,可以让您直接查看列类型和约束,从而无需记住 SQL 语法。
还有一个非常重要的细节。
例如,如果要更改注释列,更改后图形界面会自动保存,这比提交后编写 SQL 更好。

之前我以为SQL命令是万能的,后来发现是错误的。
当表名特别长或包含特殊符号时,由图形工具自动补全会更方便。
等等,还有一件事。
用行话来说,这称为雪崩效应。
事实上,前端的一个小延迟就会导致其余的问题——例如使用DESC命令检查数百个表,终端卡住半天,但存储过程可以批量运行。

最后还有一个危险:当你使用SQL查看别人的表时,未经许可,你查到的所有内容都将是空的。
表格中使用较少的图形建议这样做并为更多表编写脚本,但不要忘记添加 USER_TAB_COLUMNS 和 DBA_TAB_COLUMNS 权限开关。

达梦数据库怎么查看表的创建时间

抱歉,有很多方法可以查看大盟数据库中表的创建时间。
我以前在论坛上看到过这个,现在详细告诉你。

首先我们要知道,在大梦数据库中,建表时间信息可以通过两种方式进行验证:要么通过系统表,要么通过系统函数。

先说第一种方法,就是通过系统表查询。
这种方法很简单,只包含两张系统表,一张是DBA_TABLES,一张是DBA_OBJECTS。
DBA_TABLES表记录了所有表的元数据信息,比如创建时间等。
但是这个表不能被任何人检查,必须有DBA权限。
只有普通用户可以使用 USER_TABLES 表,该表仅显示当前用户创建的表。
例如,如果您想检查名为“您的表名”的表何时创建,您可以这样编写 SQL:SELECT TABLE_NAME, CREATED FROM DBA_TABLES WHERE TABLE_NAME = '您的表名';。

我们先来说说DBA_OBJECTS表,它包含了数据库中所有对象的信息,包括表、视图、索引等。
CREATED字段还记录了对象创建的时间。
如果要检查特定表的创建时间,可以编写如下: SELECT OBJECT_NAME AS TABLE_NAME, CREATED FROM DBA_OBJECTS WHERE OBJECT_TYPE = 'TABLE' AND OBJECT_NAME = 'Name of your table';。

第二种方式是通过系统函数获取。
例如,DBMS_METADATA.GET_DDL函数可以获取表的DDL语句,其中有时包括创建时间。
但是,该函数返回一个字符串,您必须自己提取时间部分。
写法如下:SELECT DBMS_METADATA.GET_DDL('TABLE', '你的表名') FROM DUAL;。

还有一个SYS_CONTEXT函数。
该函数主要用于获取当前会话的信息,但无法直接获取日程创建时间。
它必须与系统表一起使用。

需要注意的事情,第一个是权限问题。
要访问DBA_TABLES和DBA_OBJECTS等系统表,您必须具有DBA权限或相应的系统权限,例如SELECTANYTABLE。
其次,时间格式可能会因数据库NLS设置的不同而有所不同。
您可以通过 ALTER SESSION SET NLS_DATE_FORMAT = 'YYYY-MM-DDHH2 4 :MI:SS'; 设置格式。

最后是临时表和系统表的问题。
临时表的创建时间可能不会记录在系统表中。
通过上述方法可以查询系统表(如SYS User下的表)的创建时间,但这样做要小心。
我不明白这个秘密当时是这样,但是后来我渐渐明白了。

达梦库查询表是不是锁了

说实话,这几年我发现了一些技巧,对于判断大梦库中的时钟是否被锁定非常有用。
想想看,这感觉就像你的手表被锁了一样。
就像你想检查一些数据,但其他人占用了它,你吓得要死。

我通常使用的第一个技巧是查看对话正在等待什么。
大萌有一个动态视图V$SESSION_WAIT,里面包含了很多线索。
比如上次遇到业务突然卡住的情况。
当我检查这个视图时,我发现有一个会话正在等待 TX 锁。
说实话,TX锁是和事务有关的,很有可能和表操作有关。
我当时心里想,这次谈话一定是在和某个时钟竞争。
您可以尝试以下查询: SELECT FROM V$SESSION_WAIT WHERE EVENT LIKE '%TX%';如果EVENT字段中有“TX”,则可能意味着存在锁定。
更狠的是,你可以把V$SESSION和V$SESSION_WAIT一起检查,通过SID比较直接判断是哪个会话出了问题。

第二个技巧是我更习惯看案件的进展情况。
V$TRANSACTION 视图非常有趣。
上次有一张桌子特别卡。
经过检查,发现有一个事务已经挂起几个小时没有提交,而且这个事务显然是在目标表上。
这种情况下可以直接使用: SELECT FROM V$TRANSACTION WHERE STATUS = 'ACTIVE';找到一堆活动事务并将其与 V$SQL 结合起来看看正在做什么,您通常可以猜测大约 7 0% 到 8 0%。
例如,我有一个客户检查V$SQL,发现所有SQL语句都在卡住的表上操作。
现在锁定问题几乎可以肯定了。

第三个技巧是直接锁定视图V$LOCK。
这东西比前两招更直接。
我记得上次有一张桌子锁得很紧。
我使用: SELECT FROM V$LOCK WHERE OBJ_NAME = 'tablename';直接找到哪个表被锁定。
该视图拥有最完整的信息,包括锁类型、持有者以及对象名称。
使用起来非常方便。

说白了,这些方法各有千秋。
这取决于您是否可以组合使用它们。
有时 V$SESSION_WAIT 可以为您提供线索,但对于该特定表,您需要依赖 V$LOCK。
这十几年我逛论坛,发现DB高手往往不会只用一种方法,而是手里准备好几张牌,根据情况一张一张地扔掉。
你可以尝试一下这些,它比仅仅依靠感觉更可靠。