达梦(DM8)常用语句

表空间

查询有哪些表空间

select tablespace_name from dba_tablespaces;

创建表空间

create tablespace <表空间名称> datafile <数据库存储文件> size 512;
# 示例:create tablespace TEST datafile '/data/dmdbms/data/TEST/TEST.DBF' size 512;

用户

创建用户

# 创建用户并指定默认使用的表空间
create user "TESTUSER" identified by "TEST@2023" default tablespace "TEST" default index tablespace "TEST";

用户授权

授予用户DBA角色权限(权限大)

grant DBA to <用户名>;

授予用户除了DBA外的所有角色(仅限于在自己的模式下进行读写操作)

grant PUBLIC,RESOURCE,SOI,VTI to <用户名>;

授予用户其他模式的只读权限(自己的模式可以读写,其他的模式只能读)

grant SELECT TABLE,SELECT ANY TABLE,SELECT VIEW,SELECT ANY VIEW,SELECT SEQUENCE,SELECT ANY SEQUENCE,SELECT ANY DICTIONARY,SELECT MATERIALIZED VIEW,SELECT ANY MATERIALIZED VIEW to <用户名>;

授予用户指定模式的只读权限(按对象(表)授权)
方法一(直接执行):

DECLARE
    SQLSTMT STRING;
    CURSOR CUR FOR SELECT ID,NAME  FROM SYSOBJECTS  WHERE  TYPE$ = 'SCHOBJ' AND SUBTYPE$ IN ('STAB','UTAB')  AND (PID=-1 OR PID=0) AND  SCHID=(SELECT ID FROM SYSOBJECTS WHERE TYPE$='SCH' AND NAME='<用户名>' );
    TYPE MYREC IS CUR%ROWTYPE;
    REC_V MYREC;
    BEGIN
    FOR REC_V IN CUR LOOP
    SQLSTMT = 'grant SELECT ON "<模式名>"."'|| REC_V.NAME  || '" TO "<用户名>";';
    EXECUTE IMMEDIATE SQLSTMT;
    END LOOP;
    COMMIT;
END;

方法二(先构造SQL语句,然后手动执行):

#授予 TEST 用户对 SYSDBA 模式下所有表的只读权限
select 'grant select on SYSDBA.'||table_name||' to TEST' from dba_tables where owner='SYSDBA';

取消用户授权(回收权限)

REVOKE DBA FROM <用户名>;

查看当前用户拥有的权限

SELECT * FROM session_privs;

查询指定用户被授予的权限

SELECT * FROM dba_sys_privs where grantee='<用户名>';

用户锁定

alter user <用户名> account lock;

用户解锁

alter user <用户名> account unlock;

替换key

在达梦官网提供了开发版,没有任何的功能和连接限制,可以免费用一年,但到期后dmserver会停止服务,这个时候需要替换一下key。
两种方式替换:
1、已经停止服务:
将key文件更改为dm.key拷贝到$DM_HOME/bin目录下
重启服务即可。

2、未到过期时间,可以在线替换key:
先将key更改为dm.key拷贝到$DM_HOME/bin目录下
用SYSDBA登录数据库,执行以下命令

SP_LOAD_LIC_INFO();

查询新的license是否已生效

select * from v$license;

查看许可证到期时间

select EXPIRED_DATE  from v$license;

发表评论

邮箱地址不会被公开。 必填项已用*标注