首页 > 数据库 >达梦数据库运维常用基础SQL(二)

达梦数据库运维常用基础SQL(二)

时间:2022-10-29 19:01:55浏览次数:40  
标签:name 运维 数据库 信息 查询 索引 达梦 SQL select


作为数据库DBA运维人员,经常需要查询和监控数据库的运行情况,定位某些问题,为此我们整理出部分常用运维SQL,帮助大家更好的使用达梦数据库。本次整理出数据库、表和索引等相关维护SQL供大家参考。

一、数据库信息查询

1.1、查看数据库信息(是否开启归档等):

查询数据库是否开启归档(Y表示开启归档)

select t.name, t.arch_mode from V$DATABASE t;

其他数据库信息也可在此视图查询,用来区分是否集群环境等。包含数据库名,最后启动时间、DSC集群节点数、主备节点等:

select * from V$DATABASE t;

1.2、查询实例信息

查询数据库实例启动状态:

select name, status$ from v$instance;

其他实例信息包含实例名、状态、DSC集群节点、主备集群等也可在此视图中查询:

select * from V$INSTANCE;

1.3、查询license信息

查询license信息,EXPIRED_DATE表示过期时间。License到期后,数据库将自动关闭。

select * from V$LICENSE;

1.4、归档配置查询

查询v$dm_arch_ini动态视图可获取归档目录等配置信息,也可以查看dmarch.ini配置文件。

select * from v$dm_arch_ini;

二、当前模式/用户/会话信息查询

2.1、查看当前用户

查看当前的连接用户,如下三个语句均可查看:

select sys_context('USERENV','CURRENT_USER');
select current_user;
select user;

2.2、查看当前模式/切换当前模式

sys_context是DM提供的获取环境上下文信息的预定义函数。USERENV为系统默认的上下文名字空间,保存了用户的上下文信息,可以从此函数中获取当前用户、模式、当前会话等信息。

select sys_context('USERENV','CURRENT_SCHEMA');

使用set schema语句可以切换当前模式到其他模式(DM8新版本支持不同用户下模式的切换)。

set schema hr;

2.3、查询当前会话ID

如下两个语句都可查询当前会话ID。

select sys_context('USERENV','SID');
select sessid;

三、表相关

3.1、某模式/用户下表占用空间大小排序:

在生成环境中,如果表数据过大,可能造成查询较慢,使用此sql可查询出占用空间较大的表信息及占用大小。如果要查询某张表的空间占用,可以增加segment_name条件。

select  t.segment_name,
t.segment_type,
t.tablespace_name,
t.owner,
t.bytes,
t.bytes/1024 byte_kb,
t.bytes/1024 byte_mb
from dba_segments t
where t.owner = 'DMHR' -- 用户/模式名
and t.SEGMENT_TYPE = 'TABLE'
order by t.bytes desc;

3.2、查询某个模式/用户下表的记录数:

此sql查询前需收集表的统计信息 (LAST_ANALYZED字段在DM8新版本中支持):

select t.owner, t.table_name, t.tablespace_name, t.num_rows, t.last_analyzed
from dba_tables t
where t.owner = 'DMHR' -- 用户/模式名
order by t.num_rows desc;

3.3、修改表的存储空间(表空间):

修改表的存储空间是DM8数据库的新特性;如果某张表存储的表空间已满,可以将表的存储空间(表空间)转移到另一个表空间下。如下将T_EMP迁移到MAIN表空间(注意:不要在业务繁忙时间操作;DM8表转移表空间不会导致索引失效,因此不需要手工重建该表上的索引)。

alter table t_emp move tablespace main;

3.4、查看表字段信息:

如果要查看表的列详细信息,比如列名、列类型、是否非空、列默认值等信息,可查询如下数据字典:

select t.TABLE_NAME,
t.COLUMN_NAME,
t.COLUMN_ID,
t.DATA_TYPE,
t.DATA_LENGTH,
t.DATA_PRECISION,
t.DATA_SCALE,
t.NULLABLE,
t.DATA_DEFAULT
from user_tab_columns t
where t.TABLE_NAME = 'EMPLOYEE' -- 表名
order by t.COLUMN_ID;

四、索引相关

4.1、某用户索引占用空间大小排序:

表越大,其表上索引空间占用也越大,使用如下sql可以查看索引的空间占用大小:

select  t.segment_name,
t.segment_type,
t.tablespace_name,
t.bytes,
t.bytes/1024 byte_kb,
t.bytes/1024 byte_mb
from user_segments t
where t.segment_type = 'INDEX'
order by t.bytes desc;

4.2、查看索引信息:

查看某张表上的索引信息:

select t.INDEX_NAME, t.TABLE_OWNER, t.INDEX_TYPE, t.TABLE_NAME, t.UNIQUENESS, t.TABLESPACE_NAME
from user_indexes t
where t.TABLE_NAME = 'DEPARTMENT'; -- 表名

查询某张表的索引列信息:

select *
from user_ind_columns t
where t.table_name ='EMPLOYEE'; -- 表名

4.3、开启/关闭索引监控:

DM8新版本支持索引监控的功能,可以单独对某个索引开启监控,监控一段时间后,如果系统用到该索引,则索引可保留,如果索引没有使用,则可以考虑删除该索引。执行如下语句打开DMHR模式下ix_emp_empid索引的监控功能:

alter index dmhr.ix_emp_empid monitoring usage;

开启索引监控后,查询动态视图v$object_usage,可以看到索引的监控信息。其中,USED字段表示索引是否使用,YES表示已使用,NO表示未使用。

select * from v$object_usage;

索引开启监控一段时间后,可关闭其监控,避免不必要的性能消耗:

alter index dmhr.ix_emp_empid nomonitoring usage;

标签:name,运维,数据库,信息,查询,索引,达梦,SQL,select
From: https://blog.51cto.com/jackin/5806331

相关文章

  • 达梦数据库运维常用基础SQL(一)
    作为数据库DBA运维人员,经常需要查询和监控数据库的运行情况,定位某些问题,本章整理出部分常用运维SQL,帮助大家更好的使用达梦数据库。1、查询数据库版本:查询数据库大版本号:Se......
  • 新零售系统mysql设计(供应商表 供应商关联商品表)
    作者:陈业贵文章目录​​sql(供应商表)​​​​解析(供应商表)​​​​字段:​​​​类型:​​​​索引​​​​数据​​​​sql(商品表)​​​​解析(商品表)​​​​数据​​......
  • 新零售系统mysql设计(评价表)
    作者:陈业贵文章目录​​sql(评价表)​​sql(评价表)CREATETABLEt_rating(idintunsignedPRIMARYKEYAUTO_INCREMENTCOMMENT"评价id",order_idintunsignednotnul......
  • pikachu sql inject bool盲注
    输入框中输入已知用户名kobe显示了用户信息youruid:3youremailis:kobe@pikachu输入kobe'看一下情况显示您输入的username不存在,请重新输入!这还不能确定是否......
  • pikachu sql inject header 注入
    使用admin登录显示以下内容朋友,你好,你的信息已经被记录了:点击退出你的ip地址:172.17.0.1你的useragent:Mozilla/5.0(X11;Ubuntu;Linuxx86_64;rv:105.0)Gecko......
  • PostgreSQL/GreenPlum Merge Inner Join解密
    PostgreSQL/GreenPlumMergeInnerJoin解密1、什么是MergeJoin合并连接是一种匹配算法,其中外表的每个记录与内表的每个记录进行匹配,直到存在连接子句匹配的可能性为止。仅......
  • pikachu SQL-inject insert注入
    insert注入注册页面,用户处输入1'发现报错信息YouhaveanerrorinyourSQLsyntax;checkthemanualthatcorrespondstoyourMySQLserverversionfortherig......
  • SqlServer 查询数据重复
    SQLServer查询数据重复1、查询单列重复select*fromtestwherenamein(selectnamefromtestgroupbynamehavingcount(name)>1)2、查询多列重复SELECT......
  • SQL 的查询语句
    1.查询说到查询,我们要回答两个问题:1.查询什么?2.从哪查询?我们可以使用SQL的SELECT子句来表达要查询什么。使用FROM子句来表达从哪查询。举个例子,我们要从数据库order......
  • 记一次mysql8.0安装过程
    首先从官网下载相对应的zip压缩包 第二步:压缩到指定目录准备好一个安装MySQL程序的目录,这里解压后的目录为:C:\ProgramFiles\mysql-8.0.31,此目录下的文件如下所示......