• DM7 表空间、用户管理


    表空间管理

    达梦数据库默认有哪些表空间和作用?
    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;
    

    维护表空间

    表空间不足,如何去维护表空间:

    1. 创建大表空间,数据导出,导入。
    2. Resize 数据文件大小。
    3. 增加数据文件。
    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;---慎重,最好备份
    
  • 相关阅读:
    C# 获得word中某一段落所在页的页码
    写一个安全的Java单例
    递归算法
    redis连接池连接失败的问题
    A query was run and no Result Maps were found for the Mapped Statement .....................
    解决maven默认JDK1.5报错
    mybatis控制台不报错数据库却没有值返回的问题
    LNMP 环境更换Nginx 服务器为Tengine
    简易的phpexcel导出柱状图
    Laravel学习基础篇之--路由
  • 原文地址:https://www.cnblogs.com/Forgenvueory/p/12757980.html
Copyright © 2020-2023  润新知