DM数据库基础运维
打开、关闭归档
打开归档:
修改dm.ini参数ARCH_INI = 1,即可打开归档 --注:修改dm.ini配置文件,需要重启数据库服务
关闭归档:修改dm.ini参数ARCH_INI = 0,即可关闭归档
注:打开和关闭归档都需要重启数据库
SQL跟踪日志(用于跟踪慢SQL和应用报错的使用)
将dm.ini中的参数SVR_LOG设置为1,配置sqllog.ini即可打开;
在管理工具或DISQL界面执行:SP_SET_PARA_VALUE(1,'SVR_LOG',1);
SQL查询优化代价估算
开启ENABLE_MONITOR=1和MONITOR_SQL_EXEC=2即可;
在管理工具或DISQL界面执行:
SP_SET_PARA_VALUE(1,'ENABLE_MONITOR',1);
SP_SET_PARA_VALUE(1,'MONITOR_SQL_EXEC',1);
常用系统视图及查询语句
常用的系统视图:
dba_objects:显示数据库中所有的对象,例如想查询数据库中有没有某个对象
select * from dba_objects where owner='test' and object_name='对象名';
v$sessions:显示会话的具体信息,如执行的 sql 语句、主库名、当前会话状态、用户名等等
v$lock:查看当前数据库中锁的信息
v$mem_pool:显示所有的内存池信息
V$deadlock_history:记录死锁的历史信息
V$TABLESPACE:显示表空间信息,不包括回滚表空间信息
V$TRX:显示所有活动事务的信息。通过该视图可以查看所有系统中所有的事务以及相关信息,如锁信息等。
管理模式对象
模式是一个架构,从概念上可以将其看作是包含表、视图和权限定义的对象。在 DM 中,一个用户可以创建多个模式,一个模式中的对象(表、视图)可以被多个用户使用。系统为每一个用户自动建立了一个与用户名同名的模式作为默认模式,用户还可以用模式定义语句建立其它模式。
模式对象包括表、视图、约束、索引、触发器、序列、存储过程/函数、包、同义词、类、域。
系统默认模式
SYS模式:系统模式,存放系统对象,不可修改
SYSDBA:创建数据库实例后的默认模式,为默认的dba用户所拥有
SYSAUDITOR:数据库审计模式,为审计用户SYSAUDITOR拥有,该模式只能使用审计账号登录使用,数据库审计员可以设置要审计的对象和操作、定义新的数据库审计员、查看和分析审计记录。通过设置审计,几乎可以跟踪任何人在系统内执行的任何操作,为事后追查提供便利。
SYSSSO:数据库安全员模式,只能由数据库安全员用户使用,数据库安全员的主要任务就是制定安全策略,定义新的数据库安全员,设置系统的安全等级、范围和组,并为主、客体定义安全标记,从而全面提升系统安全性。
SYS,SYSDBA,SYSAUDITOR,SYSSSO等默认模式
查看、创建、删除模式
查看所有模式
select distinct owner from dba_objects;
创建模式:
create schema test authorization sysdba;--创建test模式默认拥有者为sysdba
删除模式:
drop schema test;
表对象管理
1、 普通B树表
Create table DMTEST.test(id int,name varchar(20));
2、 堆表
建表的例子;
创建test表有并发分支 2 个,非并发分支 4 个
Create table DMTEST.test1(id int,name varchar(20)) storage(branch (2,4));
3、 分区表
达梦支持四种分区方式的分区表,分别是范围水平分区,哈希水平分区,列表水平分区,多级分区
创建范围水平分区表
CREATE
TABLE DMTEST.callinfo
(
caller CHAR(15),
callee CHAR(15),
time DATETIME,
duration INT
)
PARTITION BY RANGE
(
time
)
(
PARTITION p1 VALUES LESS THAN ('2010-04-01'),
PARTITION p2 VALUES LESS THAN ('2010-07-01'),
PARTITION p3 VALUES LESS THAN ('2010-10-01'),
PARTITION p4 VALUES EQU
OR LESS THAN ('2010-12-31') --'2010-12-31'也可替换为 MAXVALUE
);
创建哈希水平分区表:
CREATE
TABLE DMTEST.sales01
(
sales_id INT ,
saleman CHAR(20),
saledate DATETIME,
city CHAR(10)
)
PARTITION BY HASH
(
city
)
(
PARTITION p1,
PARTITION p2,
PARTITION p3,
PARTITION p4
);
创建列表分区表:
CREATE TABLE DMTEST.sales(
sales_id INT,
saleman CHAR(20),
saledate DATETIME,
city CHAR(10)
)
PARTITION BY LIST(city)(
PARTITION p1 VALUES ('北京', '天津'),
PARTITION p2 VALUES ('上海', '南京', '杭州'),
PARTITION p3 VALUES ('武汉', '长沙'),
PARTITION p4 VALUES ('广州', '深圳')
);
创建多级分区表
CREATE TABLE DMTEST.SALES1(
SALES_ID INT,
SALEMAN CHAR(20),
SALEDATE DATETIME,
CITY CHAR(10)
)
PARTITION BY LIST(CITY)
SUBPARTITION BY RANGE(SALEDATE) SUBPARTITION TEMPLATE(
SUBPARTITION P11 VALUES LESS THAN ('2012-04-01'),
SUBPARTITION P12 VALUES LESS THAN ('2012-07-01'),
SUBPARTITION P13 VALUES LESS THAN ('2012-10-01'),
SUBPARTITION P14 VALUES EQU OR LESS THAN (MAXVALUE))
(
PARTITION P1 VALUES ('北京', '天津')
(
SUBPARTITION P11_1 VALUES LESS THAN ('2012-10-01'),
SUBPARTITION P11_2 VALUES EQU OR LESS THAN (MAXVALUE)
),
PARTITION P2 VALUES ('上海', '南京', '杭州'),
PARTITION P3 VALUES (DEFAULT)
);
用户管理
预定义用户包括SYSDBA、SYSAUDITOR和SYSSSO,预定义用户不能被删除,不建议将预定义用户做口令有效器等资源限制,不建议锁定,因为当预定义用户被锁定之后,其他用户没有权限对它们进行解锁。此时如果其他用户被锁定后,数据库将无法使用。
和ORACLE的sys用户相比,SYSDBA用户并具备超级权限,数据库的审计和安全设置权限已经分别独立到SYSAUDITOR和SYSSSO。在Oracle中数据库所有数据字典的基表和视图都是存放在sys用户模式下,DM7中的基表和视图并不是存放在SYSDBA用户模式下而是sys模式。
自定义用户
创建用户
一般语法
CREATE USER <用户名> IDENTIFIED BY <口令> [<ACCOUNT LOCK | ACCOUNT UNLOCK >] DEFAULT TABLESPACE <表空间名>
一般创建:
create user "TEST" identified by "31415926535" ;
指定默认表空间:
前提:表空间要先创建完成,建议在实际使用中限制上限空间,保证在运行过程中存储空间在可控范围内,毕竟扩容不是短时间可以解决的问题。定期监控表空间的情况,定期进行表空间扩容
create user "TEST" identified by "******" default tablespace "TEST1";
修改用户密码
alter user "TEST" identified by "Chh31415926535" ;
锁定/解锁用户
说明:锁定用户和解锁用户需要“ALTER USER”或者DBA权限。
锁定用户:
alter user "TEST" ACCOUNT LOCK;
解锁用户:
alter user "TEST" ACCOUNT UNLOCK;
修改用户默认表空间:
前提:新的表空间要预先创建好
例如:将TEST用户的默认表空间由MAIN改为TEST:
alter user "TEST" default tablespace "TEST";
删除用户:
drop user "TEST"
当该用户模式中存在数据时需要指定关键字“cascade”
drop user "TEST" cascade;
用户权限管理
登录权限
当新用户创建好后,如果没有锁定账户,默认情况下这个账户是可以直接登录数据库的。一般用户只需要要授予RESOURCE和PUBLIC两个角色即可。
授予命令:
grant "PUBLIC" to "TEST";
grant "RESOURCE" to "TEST";
查看当前可授权给用户的角色:
select * from SESSION_ROLES
2、查看用户当前拥有的权限
用户通过USER_SYS_PRIVS视图可以查询到当前拥有的系统权限
select * from USER_SYS_PRIVS
通过USER_ROLE_PRIVS视图库查询到当前用户拥有的角色权限:
select * from USER_ROLE_PRIVS
查询能够被赋予用户的系统权限
DBA用户可以通过DBA_SYS_PRIVS视图可以查询到哪些系统权限可以赋予用户
select * from DBA_SYS_PRIVS
授予特定系统权限
当用户确定好需要的系统权限后,可以向管理员申请授予相关权限,如需要修改任何用户的权限:
GRANT CREATE USER TO TEST;
权限转授
如果用户希望新将授予的权限转授给其他用户时需要指定 WITH ADMIN OPTION选项。
GRANT CREATE USER TO TEST WITH ADMIN OPTION;
对象权限
对象权限是指针对具体用户对象的DML权限,包括表或视图及其列的SELECT、INSERT、DELETE、UPDATE、REFERENCES和DUMP权限,序列的查询权限,函数、包、类、存储过程的EXECUTE权限,以及上述权限的转授权限。
1、配置对象权限
1.1、表权限的配置
以SYSDBA用户的TEST表为例:
授予TEST用户查询权限:
grant SELECT on "SYSDBA"."test" to "TEST";
授予TEST用户插入权限
grant INSERT on "SYSDBA"."test" to "TEST";