达梦DM-数据库常用命令整理

时间:2024-11-11 20:00:23

DM达梦数据库常用命令整理

  • 1.数据库自身信息
    • 1.1 查询实例信息
    • 1.2 查询数据库当前状态
    • 1.3 查询DB_MAGIC
    • 1.4 查询是否归档
    • 1.5 查询授权截止有效期
    • 1.6 查看等待情况
    • 1.7 查看数据库配置端口
    • 1.8 查询数据库最大连接数
    • 1.9 查询命令执行计划
    • 1.10 查询用户密码限制登录次数和密码过期天数
    • 1.11 查询数据库字符集
    • 1.12 修改密码策略
    • 1.13 查看密码策略
    • 1.14 查看每个用户的密码策略
  • 2.数据库文件/空间信息
    • 2.1 查询归档信息
    • 2.2 查看控制文件
    • 2.3 查询日志文件
    • 2.4 查询数据库占用空间
    • 2.5 查询数据文件位置
    • 2.6 查询表空间大小
    • 2.7 查看表空间使用情况
    • 2.8 查询当前用户模式
  • 3.数据库用户/角色信息
    • 3.1 查询数据库有哪些用户
    • 3.2 查询数据库用户信息
    • 3.3 查看数据库对象
    • 3.4 查询用户对象
    • 3.5 查看角色类型
    • 3.6 查看用户的角色和权限
    • 3.7 表空间脱机/在线
  • 4.数据库运维信息
    • 4.1 创建表空间
    • 4.2 查询总表数量
    • 4.3 关闭数据库
    • 4.4 创建用户
  • 5.数据库表/列/视图信息
    • 5.1 查询当前用户所有表
    • 5.2 查询表的大小
    • 5.3 创建新表
    • 5.4 增加表的列
    • 5.5 删除表的列
    • 5.6 重命名表名
    • 5.7 增加表注释
    • 5.8 查询表注释
    • 5.8 增加列注释
    • 5.9 查询列注释
    • 5.10 创建视图

说明: 主要对DM V8数据库,常用SQL命令进行整理,方便日后进行查找,以及对状态结果是否正确的确认。命令设计的均为简单的命令,即查询,创建,定义等方式成功即可,不涉及复杂的限制参数,参考条件等。此次使用的为DM V8单实例数据库,不涉及特殊模式下,个别特殊命令的查询。

1.数据库自身信息

1.1 查询实例信息

SQL> select name inst_name from v$instance;

行号     INST_NAME
---------- ---------
1          DMSERVER

已用时间: 11.211(毫秒). 执行号:15.

1.2 查询数据库当前状态

SQL> select status$ from v$instance;

行号     STATUS$
---------- -------
1          OPEN

1.3 查询DB_MAGIC

SQL> select db_magic from v$rlog;

行号     DB_MAGIC            
---------- --------------------
1          1040931148

1.4 查询是否归档

SQL> select arch_mode from v$database;

行号     ARCH_MODE
---------- ---------
1          N

1.5 查询授权截止有效期

SQL> select EXPIRED_DATE  from v$license;

行号     EXPIRED_DATE                                                                                        
---------- ------------------
1          2021-06-01

1.6 查看等待情况

SQL> select class_name,total_waits count from v$wait_class;
未选定行

已用时间: 116.087(毫秒). 执行号:27.

1.7 查看数据库配置端口

SQL> select para_name,para_value from v$dm_ini where para_name like '%PORT%';

行号     PARA_NAME            PARA_VALUE
---------- -------------------- ----------
1          PORT_NUM             5236
2          ELOG_REPORT_LINK_SQL 0
3          DFS_HUGE_SUPPORT     1
4          EXTERNAL_JFUN_PORT   6363
5          EXTERNAL_AP_PORT     4236
6          DCRS_PORT_NUM        6236
7          AP_PORT_NUM          0
8          DW_PORT              0
9          DCP_PORT_NUM         5237
10         HA_OTHER_INST_PORT   65534
11         HA_INST_CHECK_PORT   65534

11 rows got

已用时间: 96.994(毫秒). 执行号:8.

1.8 查询数据库最大连接数

SQL> select SF_GET_PARA_VALUE(2,'MAX_SESSIONS');

行号     SF_GET_PARA_VALUE(2,'MAX_SESSIONS')
---------- -----------------------------------
1          100

已用时间: 1.961(毫秒). 执行号:5.

1.9 查询命令执行计划

SQL>  explain select * from test_table;

1   #NSET2: [0, 1, 56] 
2     #PRJT2: [0, 1, 56]; exp_num(2), is_atom(FALSE) 
3       #CSCN2: [0, 1, 56]; INDEX33555607(TEST_TABLE)

已用时间: 3.655(毫秒). 执行号:0.

1.10 查询用户密码限制登录次数和密码过期天数

SQL> select ,p.FAILED_NUM,p.life_time from SYSUSERS p,dba_users u where  p.FAILED_NUM not in ('0') order by 1,2 ;

行号     USERNAME   FAILED_NUM  LIFE_TIME  
---------- ---------- ----------- -----------
1          SYS        3           0
2          SYSAUDITOR 3           0
3          SYSDBA     3           0
4          SYSSSO     3           0
5          TEST       3           0

已用时间: 12.079(毫秒). 执行号:66.

注释:life_time为0,表示不限制密码过期天数

1.11 查询数据库字符集

SQL> select SF_GET_UNICODE_FLAG();

行号     SF_GET_UNICODE_FLAG()
---------- ---------------------
1          0

已用时间: 0.321(毫秒). 执行号:38.
SQL> select  UNICODE ();

行号     UNICODE()  
---------- -----------
1          0

已用时间: 0.288(毫秒). 执行号:39.

注释:0 表示 GB18030,1 表示 UTF-8,2 表示 EUC-KR

1.12 修改密码策略

SQL> SP_SET_PARA_VALUE(1,'PWD_POLICY',3);
DMSQL 过程已成功完成
已用时间: 10.188(毫秒). 执行号:7.

系统支持的口令策略有:
0无策略
1禁止与用户名相同
2口令长度不小于9
4至少包含一个大写字母(A-Z)
8至少包含一个数字(0-9)
16至少包含一个标点符号(英文输入法状态下,除”和空格外的所有符号)

口令策略可单独应用,也可组合应用。比如我们即要求禁止用户名与密码相同,又要求口令至少包含一个大写字母,则设置口令策略为1+4=5即可。

1.13 查看密码策略

SQL> select * from v$dm_ini a where a.PARA_NAME = 'PWD_POLICY';

行号     PARA_NAME  PARA_VALUE MIN_VALUE MAX_VALUE MPP_CHK SESS_VALUE FILE_VALUE
---------- ---------- ---------- --------- --------- ------- ---------- ----------
           DESCRIPTION             PARA_TYPE
           ----------------------- ---------
1          PWD_POLICY 2          0         31        N       2          2
           Flag of password policy SYS


已用时间: 16.146(毫秒). 执行号:4.

1.14 查看每个用户的密码策略

SQL> select username,password_versions,account_status from dba_users;

行号     USERNAME   PASSWORD_VERSIONS ACCOUNT_STATUS
---------- ---------- ----------------- --------------
1          SYSDBA     0                 OPEN
2          SYS        0                 OPEN
3          TEST12345  3                 OPEN
4          TEST       2                 OPEN
5          SYSSSO     0                 OPEN
6          SYSAUDITOR 0                 OPEN

6 rows got

已用时间: 185.814(毫秒). 执行号:11.

2.数据库文件/空间信息

2.1 查询归档信息

SQL> select * from v$dm_arch_ini;

行号     ARCH_NAME      ARCH_TYPE ARCH_DEST                               ARCH_FILE_SIZE
---------- -------------- --------- --------------------------------------- --------------
           ARCH_SPACE_LIMIT ARCH_HANG_FLAG ARCH_TIMER_NAME ARCH_IS_VALID ARCH_WAIT_APPLY
           ---------------- -------------- --------------- ------------- ---------------
           ARCH_INCOMING_PATH ARCH_CURR_DEST                         
           ------------------ ---------------------------------------
1          ARCHIVE_LOCAL1 LOCAL     /home/dmdba/opt/dmdbms/data/DAMENG/arch 128
           5000             1              NULL            Y             NULL
           NULL               /home/dmdba/opt/dmdbms/data/DAMENG/arch


已用时间: 0.565(毫秒). 执行号:12.

2.2 查看控制文件

SQL> select para_value name from v$dm_ini where para_name='CTL_PATH';

行号     NAME                      
---------- --------------------------
1          /dmdbms/data/DAMENG/

已用时间: 31.907(毫秒). 执行号:11.

2.3 查询日志文件

SQL> select GROUP_ID ,FILE_ID,PATH,CLIENT_PATH from v$rlogfile;

行号     GROUP_ID    FILE_ID     PATH                                            CLIENT_PATH 
---------- ----------- ----------- ----------------------------------------------- ------------
1          2           0           /home/dmdba/opt/dmdbms/data/DAMENG/ 
2          2           1           /home/dmdba/opt/dmdbms/data/DAMENG/ 

2.4 查询数据库占用空间

注释:默认为M为单位

SQL> select sum(bytes/1024/1024)|| 'M' from dba_data_files;

行号     SUM(BYTES/1024/1024)||'M'
---------- -------------------------
1          289M

2.5 查询数据文件位置

SQL> select GROUP_ID , ID ,path,STATUS$ from v$datafile;

行号     GROUP_ID    ID          PATH                                          STATUS$    
---------- ----------- ----------- --------------------------------------------- -----------
1          0           0           /home/dmdba/opt/dmdbms/data/DAMENG/ 1
2          1           0           /home/dmdba/opt/dmdbms/data/DAMENG/   1
3          3           0           /home/dmdba/opt/dmdbms/data/DAMENG/   1
4          4           0           /home/dmdba/opt/dmdbms/data/DAMENG/   1

2.6 查询表空间大小

SQL> select FILE_NAME,FILE_ID,TABLESPACE_NAME,BYTES/1024/1024||'M'  from dba_data_files;

行号     FILE_NAME                                     FILE_ID     TABLESPACE_NAME BYTES/1024/1024||'M'
---------- --------------------------------------------- ----------- --------------- --------------------
1          /home/dmdba/opt/dmdbms/data/DAMENG/ 0           SYSTEM          23M
2          /home/dmdba/opt/dmdbms/data/DAMENG/   0           TEST            50M
3          /home/dmdba/opt/dmdbms/data/DAMENG/   0           MAIN            128M
4          /home/dmdba/opt/dmdbms/data/DAMENG/   0           TEMP            10M
5          /home/dmdba/opt/dmdbms/data/DAMENG/   0           ROLL            128M

2.7 查看表空间使用情况

SQL>  select  tablespace_name,
    t2.FREE_SIZE*SF_GET_PAGE_SIZE()/1024/1024 ||'M' free_space,
    t2.TOTAL_SIZE*SF_GET_PAGE_SIZE()/1024/1024 ||'M' total_space,
    t2.FREE_SIZE*100/t2.total_size "% FREE" 
    from V$TABLESPACE t1, V$DATAFILE t2 where =t2.GROUP_ID;

行号     TABLESPACE_NAME FREE_SPACE TOTAL_SPACE % FREE              
---------- --------------- ---------- ----------- --------------------
1          SYSTEM          17M        24M         74
2          MAIN            120M       128M        94
3          TEMP            9M         10M         99
4          ROLL            119M       128M        93

2.8 查询当前用户模式

SQL> SELECT SYS_CONTEXT ('userenv', 'current_schema') FROM DUAL;

行号     SYS_CONTEXT('userenv','current_schema')
---------- ---------------------------------------
1          SYSDBA

已用时间: 79.134(毫秒). 执行号:6.

3.数据库用户/角色信息

3.1 查询数据库有哪些用户

SQL> select username from dba_users;

行号     USERNAME  
---------- ----------
1          SYSDBA
2          SYS
3          SYSSSO
4          SYSAUDITOR

已用时间: 9.740(毫秒). 执行号:6.

3.2 查询数据库用户信息

SQL> select username,user_id,default_tablespace,profile from dba_users;

行号     USERNAME   USER_ID     DEFAULT_TABLESPACE PROFILE                                      
---------- ---------- ----------- ------------------ ---------------------------------------------
1          SYSDBA     50331649    MAIN               /home/dmdba/opt/dmdbms/data/DAMENG/
2          SYS        50331648    SYSTEM             /home/dmdba/opt/dmdbms/data/DAMENG/
3          SYSSSO     50331651    SYSTEM             /home/dmdba/opt/dmdbms/data/DAMENG/
4          SYSAUDITOR 50331650    SYSTEM             /home/dmdba/opt/dmdbms/data/DAMENG/

3.3 查看数据库对象

SQL>  select  owner,$ object_type, status,count(1) count# from sysobjects t1,sysobjects t2 where = and !=0 group by ,$,;

行号     OWNER      OBJECT_TYPE STATUS COUNT#              
---------- ---------- ----------- ------ --------------------
1          SYS        INDEX       Y      287
2          DEM        INDEX       Y      149
3          CTISYS     STAB        Y      1
4          CTISYS     CONS        Y      1
5          CTISYS     INDEX       Y      1
6          SYSSSO     STAB        Y      8
7          SYSSSO     CONS        Y      9
8          SYSSSO     INDEX       Y      9
9          SYSAUDITOR STAB        Y      4
10         SYSAUDITOR CONS        Y      2
11         SYSAUDITOR INDEX       Y      5

3.4 查询用户对象

select * from user_objects;

行号     OBJECT_NAME      SUBOBJECT_NAME OBJECT_ID DATA_OBJECT_ID OBJECT_TYPE
---------- ---------------- -------------- --------- -------------- -----------
           CREATED                                                                                             
           ----------------------------------------------------------------------------------------------------
           LAST_DDL_TIME                                                                                       
           ----------------------------------------------------------------------------------------------------
           TIMESTAMP                                                                                           
           ----------------------------------------------------------------------------------------------------
           STATUS TEMPORARY GENERATED SECONDARY NAMESPACE EDITION_NAME
           ------ --------- --------- --------- --------- ------------
312        ADMIN_AUDIT_SQL  NULL           1287      NULL           TABLE
           2020-08-20 18:07:18.521000
           2020-08-20 18:07:18.000000
           2020-08-20 18:07:18.521000
           VALID  N         N         NULL      NULL      NULL


312 rows got

已用时间: 793.928(毫秒). 执行号:55.

3.5 查看角色类型

SQL> select * from dba_roles;

行号     ROLE             PASSWORD_REQUIRED AUTHENTICATION_TYPE
---------- ---------------- ----------------- -------------------
1          DBA              NULL              NULL
2          DB_AUDIT_ADMIN   NULL              NULL
3          DB_AUDIT_OPER    NULL              NULL
4          DB_AUDIT_PUBLIC  NULL              NULL
5          DB_AUDIT_SOI     NULL              NULL
6          DB_AUDIT_VTI     NULL              NULL
7          DB_POLICY_ADMIN  NULL              NULL

7 rows got

已用时间: 5.827(毫秒). 执行号:9.

3.6 查看用户的角色和权限

SQL> select * from SYS.DBA_ROLE_PRIVS ;

行号     GRANTEE         GRANTED_ROLE     ADMIN_OPTION DEFAULT_ROLE
---------- --------------- ---------------- ------------ ------------
1          SYSDBA          DBA              Y            NULL
2          DBA             VTI              Y            NULL
3          SYSDBA          SYS_ADMIN        N            NULL
4          SYSDBA          SOI              Y            NULL
5          TEST            SOI              N            NULL
6          SYSDBA          RESOURCE         Y            NULL
7          SYSDBA          PUBLIC           Y            NULL
8          TEST            PUBLIC           N            NULL
9          DB_POLICY_ADMIN DB_POLICY_VTI    Y            NULL
10         SYSSSO          DB_POLICY_SOI    Y            NULL
11         SYSSSO          DB_POLICY_PUBLIC Y            NULL

行号     GRANTEE        GRANTED_ROLE    ADMIN_OPTION DEFAULT_ROLE
---------- -------------- --------------- ------------ ------------
12         SYSSSO         DB_POLICY_OPER  Y            NULL
13         SYSSSO         DB_POLICY_ADMIN Y            NULL
14         DB_AUDIT_ADMIN DB_AUDIT_VTI    Y            NULL
15         SYSAUDITOR     DB_AUDIT_SOI    Y            NULL
16         SYSAUDITOR     DB_AUDIT_PUBLIC Y            NULL
17         SYSAUDITOR     DB_AUDIT_OPER   Y            NULL
18         SYSAUDITOR     DB_AUDIT_ADMIN  Y            NULL

18 rows got

已用时间: 4.989(毫秒). 执行号:48.

3.7 表空间脱机/在线

SQL> alter tablespace "TEST" offline; 
操作已执行
已用时间: 280.323(毫秒). 执行号:4.
SQL> alter tablespace "TEST" online; 
操作已执行
已用时间: 121.133(毫秒). 执行号:5.

4.数据库运维信息

4.1 创建表空间

注释:默认大小为M

SQL> create tablespace TEST datafile '/home/dmdba/opt/dmdbms/data/DAMENG/' size 50;
操作已执行
已用时间: 15.041(毫秒). 执行号:28.

4.2 查询总表数量

SQL> select count(*) from dba_tables;

行号     COUNT(*)            
---------- --------------------
1          363

4.3 关闭数据库

SQL> shutdown normal;  关闭数据库
SQL> shutdown immediate;  正常方式关闭数据库
SQL> shutdown abort;  立即方式关闭数据库。数据库并不立即关闭,而是在执行某些清除工作后才关闭(终止会话、释放会话资源),需要10到20S。

4.4 创建用户

SQL> create user test1 identified by 123456789 default tablespace test;
操作已执行
已用时间: 13.383(毫秒). 执行号:36.

5.数据库表/列/视图信息

5.1 查询当前用户所有表

SQL> select table_name,tablespace_name from user_tables;

行号     TABLE_NAME                           TABLESPACE_NAME
---------- ------------------------------------ ---------------
1          ##PLAN_TABLE                         TEMP
2          ##HISTOGRAMS_TABLE                   TEMP
3          ADMIN_ROLE                           MAIN
4          ADMIN_SYS_CONFIG                     MAIN
5          ADMIN_USER                           MAIN
6          ADMIN_AUDIT                          MAIN
7          ADMIN_AUDIT_SQL                      MAIN
8          DBTOOL_DTS_TRANSFORM                 MAIN
9          DBTOOL_DTS_TRANSFORM_EXECUTE         MAIN

5.2 查询表的大小

注释:页数,默认8KB大小

SQL> SELECT TABLE_USED_SPACE ('SYS','SYSOBJECTS') ;

行号     TABLE_USED_SPACE('SYS','SYSOBJECTS')
---------- ------------------------------------
1          160

5.3 创建新表

SQL> create table tests ( id char not null) ;
操作已执行
已用时间: 97.526(毫秒). 执行号:16.

5.4 增加表的列

SQL> alter table test_rename add ids int;
操作已执行
已用时间: 76.447(毫秒). 执行号:8.

5.5 删除表的列

SQL> alter table test_table drop ids;
操作已执行
已用时间: 107.795(毫秒). 执行号:10.

5.6 重命名表名

SQL> alter table tests rename to test_rename;
操作已执行
已用时间: 128.985(毫秒). 执行号:26.

5.7 增加表注释

SQL> comment on table test_rename is 'AAAAAAA';
操作已执行
已用时间: 52.596(毫秒). 执行号:37.

5.8 查询表注释

SQL> select comments from user_tab_comments where table_name = 'TEST_RENAME';

行号     COMMENTS
---------- --------
1          AAAAAAA

已用时间: 2.094(毫秒). 执行号:39.

5.8 增加列注释

SQL> comment on column test_rename.id is 'Primary'; 
操作已执行
已用时间: 5.780(毫秒). 执行号:40.

5.9 查询列注释

SQL> select * from user_col_comments where owner = 'SYSDBA' and table_name = 'TEST_RENAME' and column_name = 'ID';

行号     OWNER  TABLE_NAME  COLUMN_NAME COMMENTS
---------- ------ ----------- ----------- --------
1          SYSDBA TEST_RENAME ID          Primary

已用时间: 66.837(毫秒). 执行号:48.

5.10 创建视图

SQL> create view v_test as select C1,C2 from T1 where C3='r';
操作已执行
已用时间: 123.383(毫秒). 执行号:12.