表空间管理
达梦数据库默认有哪些表空间和作用?
V$tablespace dba_tablespaces; v$huge_tablespace dba_data_files;
SQL> select tablespace_name,status from dba_tablespaces;
- System:数据字典和全局的系统数据
- Roll: 存放了数据库运行过程中产生的回滚记录。
- TEMP:临时表空间
- Main:数据库默认的表空间。创建数据对象的时候,如果不指定存放的位置,默认存放在该表空间。
- HMAIN:HUGE表空间
相关参数:
Undo_retention :单位秒
# 查询所有表空间
SQL> select name from v$tablespace union select name from v$huge_tablespace;
规划表空间
# 案例1:
SQL> create tablespace tbs1 datafile '/dm7/data/DAMENG/tbs1_01.dbf' size 31;
# 报错 大小无效
SQL> create tablespace tbs1 datafile '/dm7/data/DAMENG/tbs1_01.dbf' size 32;
初始文件大小是页的4096倍。 4096*8K =32M
# 案例2:创建一个表空间,初始大小50M,最大100M
SQL> create tablespace tbs2 datafile '/dm7/data/DAMENG/tbs2_01.dbf' size 50 autoextend on maxsize 100;
SQL> select tablespace_name,status from dba_tablespaces;
# 案例3:创建一个表空间,初始大小50M,
# 表空间由2个数据文件组成,分别存储在不同磁盘上,每次扩展1m,每个数据文件最大100M.
SQL> create tablespace tb3 datafile '/dm7/data/DAMENG/tbs3_01.dbf' size 50 auto
extend on next 1 maxsize 100,'/dm7/data/DAMENG/tbs3_02.dbf' size 50 autoextend on next 1 maxsize 100;
维护表空间
表空间不足,如何去维护表空间:
- 创建大表空间,数据导出,导入。
- Resize 数据文件大小。
- 增加数据文件。
SQL> alter tablespace tbs1 add datafile '/dm7/data/DAMENG/tbs1_02.dbf' size 32;
更换存储位置
达梦表空间的状态:
- 0:---online
- 1:---offline
注意:system,roll. Temp不能offline;
# 1、表空间offine
SQL> alter tablespace tb3 offline;
# 2、修改存储位置
SQL> alter tablespace tb3 rename datafile '/dm7/data/DAMENG/tbs3_02.dbf' to '/dm7/data/tbs3_02.dbf';
# 3、表空间online;
SQL> alter tablespace tb3 online;
# 删除表空间
SQL> drop tablespace tbs2;
用户管理
概念
在DM数据库中用户管理主要涉及到三块,用户,权限,角色。
- 权限:执行特定类型sql或是访问其他模式对象的权利。
- 系统权限:数据库对象的创建、删除、修改等等。
- 对象权限:对数据库对象中的数据的操作权限。
- 角色:是将具有相同权限的用户组织在一起,这一组具有相同权限的用户称为角色。角色是一组权限的集合。一个权限可以赋予不同的角色。
数据库预定义角色三个:DBA,PUBLIC,RESOUCE
三权分立和四权分立。
-
三权分立:数据库管理员,数据安全员,数据库审计员。
-
四权分立:数据库管理员,数据库对象操作员,数据库安全员,数据库审计员。
-
默认的账号:
- 数据库管理员:sysdba
- 数据库对象操作员:sysdbo :只有在安全版里面才会有
-
数据库安全员: syssso
- 数据库审计员:sysauditor
所有账号的默认口令都与用户名一致大写。
SQL> select username from dba_users;
规划用户
- 名字:字母开头,a-z,0-9,$#_
- 位置:对应的表空间
- 密码:口令策略
- 0:无策略
- 1:禁止与用户名相同
- 2:口令长度不小于9
- 4:至少包含一个大写字母
- 8:至少包含一个数字
- 16:至少包含一个标点符号(英文的状态下输入,除空格和“”)
口令可以单独使用,也可以组合使用,比如说需要策略1和2 则设置口令策略为3.
创建用户语句 password policy 子句来指定口令策略。用户密码最长为48个字节。
- Faild_login_attemps :密码尝试登录次数
- Password_lock_time :密码失败后锁定时间
- Password_life_time :密码过期时间。
用户视图:sysuser , all_user, dba_user
案例1:建立用户test,用户可以创建自己的表,有属于自己独立的表空间,用户密码要求每60天变更一次。
SQL> create tablespace test datafile '/dm7/data/DAMENG/test01.dbf' size 32;
SQL> create user test identified by dameng123 limit password_life_time 60 default tablespace test;
SQL> select * from all_users;
SQL> select user;
SQL> grant create table to test;
如何查看用户权限
SQL> select grantee,granted_role from dba_role_privs where grantee='TEST';
SQL> select grantee,privliege from dba_sys_privs where grantee='PUBLIC';
案例2:规划一个用户,用户每60天变更一次密码,密码尝试连接2次失败,账号锁定5分钟,用户能查询dmhr.employee表。
SQL> create user test1 identified by dameng123 limit password_life_time 60,failed_login_attemps 2,password_lock_time 5;
SQL> select username,account_status,lock_date from dba_users;
SQL> alter user test account unlock;
SQL> grant select on dmhr.employee to test1;
SQL> revoke select on dmhr.employee from test1;
SQL> grant select(employee_name,hire_date) on dmhr.employee to test1;
SQL> select employee_name,hire_date from dmhr.employee;
案例3:企业招聘一批录入人员,权限固定,只能录入city表。
SQL> create user test2 identified by dameng123;
SQL> create role r1;
SQL> grant insert on dmhr.city to r1;
SQL> grant r1 to test2;
# try
SQL> conn test2/dameng123
SQL> insert into dmhr.city values('aa','bbbb',7);
# 没有引用 [REGION] 权限
SQL> grant references any table to test2;
# try
SQL> conn test2/dameng123
SQL> insert into dmhr.city values('aa','bbbb',7);
# succeed
SQL> commit;
用户维护
# 收回权限:revoke
SQL> revoke r1 from test2;
# 修改用户密码:
SQL> alter user test2 identified by 123456789;
# 锁定用户:
SQL> alter user test2 account lock;
# 解锁用户:
SQL> alter user test2 account unlock;
# 删除用户:
SQL> drop user test2;
SQL> drop user r1;
SQL> drop user test1 cascade;---慎重,最好备份