达梦数据库日常管理

达梦数据库日常管理

一、用命令方式初始化建立数据库

  1. 创建实例
[dmdba@dm01 bin]$ ./dminit PATH=/home/dmdba/dmdbms/data LOG_PATH=/home/dmdba/dmdbms/data/dmredo01.log LOG_PATH=/home/dmdba/dmdbms/data/dmredo02.log LOG_PATH=/home/dmdba/dmdbms/data/dmredo03.log LOG_SIZE=2048 DB_NAME=PROD INSTANCE_NAME=TEST
initdb V8
db version: 0x7000a
file dm.key not found, use default license!
License will expire on 2021-06-01
 log file path: /home/dmdba/dmdbms/data/dmredo01.log
 log file path: /home/dmdba/dmdbms/data/dmredo02.log
 log file path: /home/dmdba/dmdbms/data/dmredo03.log
write to dir [/home/dmdba/dmdbms/data/PROD].
  1. 创建服务
[root@dm01 ~]# /home/dmdba/dmdbms/script/root/dm_service_installer.sh -t dmserver -p TEST -dm_ini /home/dmdba/dmdbms/data/PROD/dm.ini
Created symlink from /etc/systemd/system/multi-user.target.wants/DmServiceTEST.service to /usr/lib/systemd/system/DmServiceTEST.service.
创建服务(DmServiceTEST)完成

二、达梦数据库的状态

  • 用户可以通过 SQL 语句进行数据库状态切换:
    • 1.Open 状态与 Mount 状态可以相互切换;
    • 2.Open 状态与 Suspend 状态可以相互切换;
    • 3.Mount 和 Suspend 状态不能直接转换;
    • 4.其他状态为系统内部状态,用户不能主动干预。

Suspend 状态,一旦产生redo 日志,操作就会被挂起,不回回滚事务

  • 查看状态
    SQL> select status$ from v$instance;
    
    LINEID     STATUS$
    ---------- -------
    1          OPEN
    used time: 85.956(ms). Execute id is 504.
    

三、数据库的启动方式

  1. 启动数据库
  • 方式一
    在达梦安装bin目录下:./dmserver /dm7/data/DM01/dm.ini
[dmdba@dm01 ~]$ dmserver /home/dmdba/dmdbms/data/DAMENG/dm.ini
file dm.key not found, use default license!
version info: develop
Use normal os_malloc instead of HugeTLB
Use normal os_malloc instead of HugeTLB
DM Database Server x64 V8 1-1-87-20.06.01-122565-ENT  startup...
Database mode = 0, oguid = 0
License will expire on 2021-06-01
file lsn: 34896
ndct db load finished
ndct fill fast pool finished
iid page's trxid[3006]
NEXT TRX ID = 3007
pseg_collect_items, collect 0 active_trxs, 0 cmt_trxs, 0 pre_cmt_trxs, 0 active_pages, 0 cmt_pages, 0 pre_cmt_pages
pseg_process_collect_items end, 0 active trx, 0 active pages, 0 committed trx, 0 committed pages
total 0 active crash trx, pseg_crash_trx_rollback sys_only(0) begin ...
pseg_crash_trx_rollback end
purg2_crash_cmt_trx end, total 0 page purged
set EP[0]'s pseg state to inactive
pseg recv finished
nsvr_startup end.
aud sys init success.
aud rt sys init success.
systables desc init success.
ndct_db_load_info success.
nsvr_process_before_open begin.
nsvr_process_before_open success.
total 0 active crash trx, pseg_crash_trx_rollback sys_only(0) begin ...
pseg_crash_trx_rollback end
SYSTEM IS READY.
exit
Server is stopping...
listener closed  and all sessions disconnected
purge undo records in usegs...OK
full check point starting...
generate force checkpoint, rlog free space[536764928], used space[97792]
ckpt_lsn, ckpt_fil, ckpt_off are set as (35233, 0, 7741952)
checkpoint: 189 pages flushed.
checkpoint finished, rlog free space, used space is (536765440, 97280)
full check point end.
shutdown audit subsystem...OK
shutdown schedule subsystem...OK
shutdown timer successfully.
pre-shutdown MAL subsystem...OK
shutdown worker threads subsystem...OK
shutdown local parallel threads pool successfully.
shutdown replication subsystem...OK
shutdown sequence cache subsystem...OK
wait for mtsk link worker to exit..OK
shutdown mpp session subsystem...OK
wait for rapply is all over... OK
rapply worker threads exit successfully.
pre ending task & worker threads...OK
shutdown dblink subsystem...OK
shutdown session subsystem...OK
shutdown rollback segments purging subsystem...OK
shutdown rps subsystem...OK
shutdown transaction subsystem...OK
shutdown locking subsystem...OK
shutdown dbms_lock subsystem...OK
ending tsk and worker threads...OK
ckpt2_exec_immediately begin.
ckpt_lsn, ckpt_fil, ckpt_off are set as (36154, 0, 7839232)
checkpoint: 0 pages flushed.
checkpoint finished, rlog free space, used space is (536847360, 15360)
ckpt_lsn, ckpt_fil, ckpt_off are set as (36288, 0, 7854592)
checkpoint: 0 pages flushed.
checkpoint finished, rlog free space, used space is (536862720, 0)
ckpt_lsn, ckpt_fil, ckpt_off are set as (36288, 0, 7854592)
checkpoint: 0 pages flushed.
checkpoint finished, rlog free space, used space is (536862720, 0)
shutdown archive subsystem...OK
shutdown redo log subsystem...OK
shutdown MAL subsystem...OK
shutdown message compress subsystem successfully.
shutdown task subsystem...OK
shutdown trace subsystem...OK
shutdown svr_log subsystem...OK
shutdown plan cache subsystem...OK
shutdown file subsystem...OK
shutdown database dictionary subsystem...OK
shutdown mac cache subsystem...OK
shutdown dynamic login cache subsystem...OK
shutdown ifun/bifun/sfun/afun cache subsystem...OK
shutdown crypt subsystem...OK
shutdown pipe subsystem...OK
shutdown compress component...OK
shutdown slave redo subsystem...OK
shutdown kernel buffer subsystem...OK
shutdown SQL capture subsystem...OK
shutdown control file system...OK
shutdown dtype subsystem...OK
shutdown huge buffer and memory pools...OK
close lsnr socket
DM Database Server shutdown successfully.

这种方式。窗口关闭了,或者再窗口中输入exit,数据库就关闭了,适合临时启动数据库,数据库服务没有注册到OS。

  • 方式二
  1. linux6中
[root@dm01 ~]# service DmServiceDAMENG start
Redirecting to /bin/systemctl start DmServiceDAMENG.service      [ OK ]
  1. linux7中
[root@dm01 ~]# systemctl start DmServiceDAMENG.service
  1. 判断数据库是否启动
[root@dm01 ~]# netstat -nltp | grep 5236
tcp6       0      0 :::5236                 :::*                    LISTEN      2917/dmserver 
[root@dm01 ~]# ps -ef | grep dmserver
dmdba      2917      1  0 19:32 ?        00:00:00 /home/dmdba/dmdbms/bin/dmserver /home/dmdba/dmdbms/data/DAMENG/dm.ini -noconsole
root       3035   2831  0 19:35 pts/1    00:00:00 grep --color=auto dmserver

四、数据库的体系结构

达梦数据是由数据库和实例构成的

  • 数据库
    DM 数据库指的是磁盘上存放在 DM 数据库中的数据的集合,一般包括:数据文件、日志文件、控制文件以及临时数据文件等。
  • 实例
    实例一般是由一组正在运行的 DM 后台进程/线程以及一个大型的共享内存组成。

1.逻辑存储结构

	DM 数据库为数据库中的所有对象分配逻辑空间,并存放在数据文件中。在 DM 数据库内部,所有的数据文件组合在一起被划分到一个或者多个表空间中,所有的数据库内部对象都存放在这些表空间中。 同时,表空间被进一步划分为段、簇和页(也称块)。通过这种细分,可以使得 DM 数据库能够更加高效地控制磁盘空间的利用率。

可以看出,在 DM8 中存储的层次结构如下:

  • 1.数据库由一个或多个表空间组成;
  • 2.每个表空间由一个或多个数据文件组成;
  • 3.每个数据文件由一个或多个簇组成;
  • 4.段是簇的上级逻辑单元,一个段可以跨多个数据文件;
  • 5.簇由磁盘上连续的页组成,一个簇总是在一个数据文件中;
  • 6.页是数据库中最小的分配单元,也是数据库中使用的最小的 IO 单元。

注意事项

  1. 一般一个db对应一个实例,但是DSC(共享集群)多个实例对一个数据库。
  2. 达梦服务器组成:客户端+服务器(实例+数据库)
  3. 客户端不能直接去访问数据库,客户端把请求交给实例,实例去访问数据库,把访问信息返回给实例,实例交给客户端。

2.达梦的物理存储结构

	DM 数据库使用了磁盘上大量的物理存储结构来保存和管理用户数据。典型的物理存储结构包括:用于进行功能设置的配置文件;用于记录文件分布的控制文件;用于保存用户实际数据的数据文件、重做日志文件、归档日志文件、备份文件;用来进行问题跟踪的跟踪日志文件等,

3.各个类型文件的说明

文件说名
配置文件dm.ini,dmarch.ini ………,用来配置数据库的
控制文件dm.ctl,记录数据库重要信息的文件
数据文件以dbf结尾的文件
重做日志文件可以在初始化时候命名,默认DAMENG01.log
归档文件归档日志文件,就是在归档模式下,重做日志被连续写入到归档日志后, 所生成归档日志文件
备份文件以bak结尾的文件

五、日志的管理

1. 查看日志信息

SQL> select path from v$rlogfile;

LINEID     PATH
---------- -------------------------------------------
1          /home/dmdba/dmdbms/data/DAMENG/DAMENG01.log
2          /home/dmdba/dmdbms/data/DAMENG/DAMENG02.log

used time: 10.990(ms). Execute id is 4.

2.增加一个日志文件

SQL> alter database add logfile '/home/dmdba/dmdbms/data/DAMENG/DAMENG03.log' size 200;
executed successfully
used time: 11.866(ms). Execute id is 5.

3.修改日志文件大小

SQL> alter database resize logfile '/home/dmdba/dmdbms/data/DAMENG/DAMENG03.log' to 300;
executed successfully
used time: 4.897(ms). Execute id is 6.

六、表空间管理

1.表空间介绍

  1. 查看表空间和状态

    SQL> select TABLESPACE_NAME,STATUS from dba_tablespaces;
    
    LINEID     TABLESPACE_NAME STATUS
    ---------- --------------- -----------
    1          SYSTEM          0
    2          ROLL            0
    3          TEMP            0
    4          MAIN            0
    5          HMAIN           NULL
    
    used time: 15.941(ms). Execute id is 7.
    
  2. 表空间的概述

表空间说明
system表空间数据字典和全局的系统数据
TEMP表空间临时表空间
MAIN表空间数据库默认的表空间,创建数据对象时,如果不指定存储位置,默认存放到该表空间
HMAIN表空间huge 表空间
ROLL表空间存放了数据库运行过程中产生的回滚记录
  1. 查所有表空间信息:

    SQL> select name from v$tablespace union select name from v$huge_tablespace;
    
    LINEID     NAME
    ---------- ------
    1          SYSTEM
    2          ROLL
    3          TEMP
    4          MAIN
    5          HMAIN
    
    used time: 1.058(ms). Execute id is 9.
    
  2. 增加表空间

    SQL> create tablespace tab1 datafile '/home/dmdba/dmdbms/data/DAMENG/tab1_01.dbf' size 32;
    executed successfully
    used time: 36.327(ms). Execute id is 10.
    
  3. 创建一个表空间,初始大小50M,最大100M.

    SQL> create tablespace tab2 datafile '/home/dmdba/dmdbms/data/DAMENG/tab2_01.dbf' size 50 autoextend on maxsize 100;
    executed successfully
    used time: 20.947(ms). Execute id is 11.
    
  4. 创建一个表空间,初始50M,每次扩展1M,最大100M

    SQL> create tablespace tab3 datafile '/home/dmdba/dmdbms/data/DAMENG/tab3_01.dbf' size 50 autoextend on next 1 maxsize 100;
    executed successfully
    used time: 65.943(ms). Execute id is 12.
    
  5. 创建一个表空间,初始50M,表空间由2个数据文件组成,分别存储到不同的磁盘上,每次扩展1m,每个数据文件最大100M

    SQL> create tablespace tab4 datafile '/home/dmdba/dmdbms/data/DAMENG/tab4_01.dbf' size 50 autoextend on next 1 maxsize 100 , '/home/dmdba/dmdbms/data/DAMENG/tab4_02.dbf' size 50 autoextend on next 1 maxsize 100;
    executed successfully
    used time: 23.640(ms). Execute id is 14.
    

2.维护表空间

  • 表空间不足,如何去维护表空间:
    • 1、创建大表空间,数据导出,导入。
    • 2、Resize 数据文件大小。
    • 3、增加数据文件
    SQL> alter tablespace tab2 add datafile '/home/dmdba/dmdbms/data/DAMENG/tab2_02.dbf' size 50 autoextend on maxsize 100;
    executed successfully
    used time: 10.672(ms). Execute id is 15.
    

3. 更换存储位置

  1. 达梦表空间的状态:
    0 是online
    1 是 offline

注意:SYSTEM,ROLL, TEMP 不能offline;

  1. 更换tab1的存储位置
-- 表空间offline
SQL> alter tablespace tab1 offline;
executed successfully
used time: 91.077(ms). Execute id is 17.
-- 修改文件位置
SQL> alter tablespace tab1 rename datafile '/home/dmdba/dmdbms/data/DAMENG/tab1_01.dbf' to '/home/dmdba/dmdbms/data/tab1_01.dbf';
executed successfully
used time: 329.691(ms). Execute id is 18.
-- 表空间online
SQL> alter tablespace tab1 online;
executed successfully
used time: 4.082(ms). Execute id is 19.
  1. 删除表空间
SQL> drop tablespace tab1 ;
executed successfully
used time: 105.619(ms). Execute id is 20.

七、用户管理

1.查询有哪些用户

SQL> select username from dba_users;

LINEID     USERNAME
---------- ----------
1          SYSDBA
2          SYS
3          SYSSSO
4          SYSAUDITOR

used time: 59.470(ms). Execute id is 21.

2.用户说明

用户说明
sys达梦数据库的内置管理用户,不能登录数据库,数据库使用的大部分的数据字典和动态性能视图
sysdba数据库的管理员
sysauditor审计用户
syssso安全用户
sysdbo数据操作员

3.如何规划用户

  • 名称:用户名在服务器中必须唯一
  • 密码:使用口令策略:
    • 1.用户密码最长为48个字节,创建用户语句使用 password policy子句来指定口令策略。(DM.INI PWD_POLICY)
    • 2.系统支持的口令策略:
      • 0 无策略
      • 1 禁止与用户名相同
      • 2 口令长度不小于9
      • 4 至少包含一个大写字母(A-Z)
      • 8 至少包含一个数字(0-9)
      • 16 至少包含一个标点符号(英文状态输入,除”和空格外)
    • 3.口令可以单独使用,也可以组合使用,比如需要应策略1和2,则设置口令策略为:3
    • 4.密码尝试登录次数 FAILED_LOGIN_ATTEMPS
    • 5.密码失败锁定时间 PASSWORD_LOCK_TIME
    • 6.密码过期时间 PASSWORD_LIFE_TIME

4.用户的权限管理

  • 权限的定义
权限说明
系统权限对数据库操作的权限
对象权限对数据对象操作的权限
  • 查看用户权限

    SQL> select grantee,granted_role from dba_role_privs where grantee='TEST';
    
    LINEID     GRANTEE GRANTED_ROLE
    ---------- ------- ------------
    1          TEST    PUBLIC
    2          TEST    SOI
    
    used time: 2.777(ms). Execute id is 25.
    
  • 查询角色所拥有的权限

    SQL> select grantee,privilege from dba_sys_privs where grantee='PUBLIC';
    
    LINEID     GRANTEE PRIVILEGE
    ---------- ------- ----------------
    1          PUBLIC  INSERT TABLE
    2          PUBLIC  UPDATE TABLE
    3          PUBLIC  DELETE TABLE
    4          PUBLIC  SELECT TABLE
    5          PUBLIC  REFERENCES TABLE
    6          PUBLIC  GRANT TABLE
    7          PUBLIC  INSERT VIEW
    8          PUBLIC  UPDATE VIEW
    9          PUBLIC  DELETE VIEW
    10         PUBLIC  SELECT VIEW
    11         PUBLIC  GRANT VIEW
    
    LINEID     GRANTEE PRIVILEGE
    ---------- ------- ------------------------
    12         PUBLIC  EXECUTE PROCEDURE
    13         PUBLIC  GRANT PROCEDURE
    14         PUBLIC  SELECT SEQUENCE
    15         PUBLIC  GRANT SEQUENCE
    16         PUBLIC  EXECUTE PACKAGE
    17         PUBLIC  GRANT PACKAGE
    18         PUBLIC  SELECT ANY DICTIONARY
    19         PUBLIC  SELECT MATERIALIZED VIEW
    20         PUBLIC  GRANT DOMAIN
    21         PUBLIC  USAGE DOMAIN
    22         PUBLIC  DUMP TABLE
    
    22 rows got
    
    used time: 2.996(ms). Execute id is 26.
    

5.用户的操作

  1. 创建一个有自己的独立表空间,且密码60天变更一次的TEST用户

    SQL> create tablespace test datafile '/home/dmdba/dmdbms/data/DAMENG/test01.dbf' size 32;
    executed successfully
    used time: 20.568(ms). Execute id is 22.
    SQL> create user test identified by dameng123 limit password_life_time 60 default tablespace test;
    executed successfully
    used time: 20.054(ms). Execute id is 23.
    
  2. 给test用户创建表的权限;

    SQL> grant create table to test;
    executed successfully
    used time: 3.987(ms). Execute id is 27.
    
  3. 使用test用户创建test表

    SQL> conn test/dameng123
    
    Server[LOCALHOST:5236]:mode is normal, state is open
    login used time: 6.627(ms)
    SQL> create table t1(id int);
    executed successfully
    used time: 14.903(ms). Execute id is 28.
    

6.用户维护

  1. 撤回权限revoke
SQL> revoke create table from test;
executed successfully
used time: 5.725(ms). Execute id is 30.
  1. 修改用户密码
SQL> alter user test identified by dameng123456;
executed successfully
used time: 6.763(ms). Execute id is 31.
  1. 修改用户锁定状态
SQL> alter user test account lock;
executed successfully
used time: 4.344(ms). Execute id is 32.
SQL> alter user test account unlock;
executed successfully
used time: 3.434(ms). Execute id is 33.
  1. 删除用户
SQL> drop user test cascade;
executed successfully
used time: 105.215(ms). Execute id is 34.

drop user test cascade ----慎用,会删除用户下的所有对象

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值