欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

达梦数据库安装及操作

程序员文章站 2022-06-03 11:53:57
...

1.数据库安装

1.1、回退方案

删除Linux安装目录下的所有文件

cd /dm7

rm -rf *

cd /etc/dm_svc.conf

rm -rf dm_svc.conf

chkconfig --del DmAPService

1.2、创建安装用户组 dinstall 安装用户 dmdba

groupadd dinstall 添加组

useradd -g dinstall dmdba 添加用户

passwd dmdba 设置密码

1.3、创建安装目录

mkdir /dm7 创建目录

chown dmdba.dinstall -R /dm7 分配文件夹权限

1.4、配置环境变量(可选项),方便使用达梦命令

cd /home/dmdba
vi .bash_profile
键盘输入i
export
DM_HOME=/dm7
export
PATH=DMHOME/bin:DM_HOME/bin:DM_HOME/tool:HOME/bin:HOME/bin:PATH
键盘输入ESC :wq

1.5、设置用户文件最大打开数

ulimit -a
vi /etc/security/limits.conf
dmdba soft nofile 4096
dmdba hard nofile 65536

1.6、挂载安装包

cd /opt/soft
mount -o loop dm7_setup_rh6_64_ent.iso /mnt
su – dmdba
export LANG=en_US

1.7、安装达梦软件

su - dmdba
cd /mnt
./DMinstall.bin
注意:用图形界面进行安装数据库可以直接建库,命令行安装请用./DMinstall.bin -i
安装过程略,选择需要的类型

1.8、命令行建库
su - dmdba
./dminit
path=/dm7/data db_name=DM01 instance_name=TEST1 port_num=5236

1.9、注册服务并启动服务
[[email protected]~]# /dm7/script/root/dm_service_installer.sh -t dmserver -p TEST1 -i /dm7/data/DM01/dm.ini
[[email protected] ~]#service DmServiceTEST1 start

1.10、连接数据库
disql SYSDBA/SYSDBA
disql SYSDBA/[email protected]:5236 密码一定要大写,默认密码是SYSDBA,如果不是默认端口,要加上端口号和IP。默认端口是 5236

至此,建立完毕。

2、数据库的实例管理

2.1启动关闭数据库实例

//查看服务状态:

ps -ef|grep dmserver

netstat -nt|grep 5236

DM服务查看器:桌面–计算机–右键打开–文件系统–root–dm7–desktop

//服务启动和停止:

service DmServerDMSERVER stop

service DmServiceDMSERVER start

/etc/init.d/DmServiceDMSERVER stop

/etc/init.d/DmServiceDMSERVER start

DM服务查看器重启

//前台启动:

cd /dm7/bin

./dmserver
/dm7/data/DAMENG/dm.ini 关闭exit

DM查看器停止

2.2
数据库的状态

shutdown:关闭
mount:配置模式
open:打开

2.3
启动过程

1.shutdown ==> mount

​ 分配共享内存,启动后台的进程或者进程,打开控制文件

2.mount ==> open

​ 根据控制文件,打开所有的数据文件和重做日志文件

2.4
数据库的状态切换

// 数据库状态查看

SQL> select status$ from
v$instance;

// open到mount

SQL> alter database mount;

// mount 状态到open

SQL> alter database open;

3.DM7的体系结构

实例:共享内存+后台的进程或线程

数据库:存放到磁盘的文件

一般是一个数据库对应一个实例,但是DSC(DM共享集群)是多个实例对应一个数据库

达梦的服务器组成:客户端+服务器(实例+数据库)

客户端不能直接去访问数据库,客户端把请求交给实例,实例去访问数据库,数据库把访问信息返还给实例,实例再交给客户端

3.1
DM逻辑结构

数据库由一个或多个表空间组成

每个表空间由一个或多个数据文件组成

每个数据文件由一个或多个簇组成

页是数据库中最小的分配单位,也是数据库中使用的最小的IO单元

3.2
DM物理存储结构

配置文件:dm.ini,dmarch.ini

数据文件:数据文件以dbf为扩展名

重做日志文件:重做日志文件又叫redo日志,主要用于数据库的备份和恢复

归档文件:利用归档日志,系统可被恢复至故障发生的前一刻,也可以还原到指定的时间点,如果没有归档日志文件,则只能利用备份进行恢复。

逻辑日志文件

备份文件:以bak为扩展名的文件

日志文件:跟踪日志,事件日志

3.3
DM的内存结构

3.3.1 共享内存

// 总空间查询:0表示不限制

SQL> select para_name,para_value
from v$dm_ini where para_name=‘MEMORY_TARGET’;

// 系统内存池大小(减少系统调用)

SQL> select para_name,para_value
from v$dm_ini where para_name=‘MEMORY_POOL’;

3.3.2 数据缓冲区:buffer

存放的内容:LRU(最小使用算法)链表

状态:free,dirty,clean,pending

如何去设置buffer的大小

// 查看大小

SQL> select para_name,para_value
from v$dm_ini where para_name=‘BUFFER’;

// 查看最大值

SQL> select para_name,para_value
from v$dm_ini where para_name=‘MAX_BUFFER’;

// 建议:

OLTP:BUFFER大小设置为整个物理内存的40-60%

OLAP:BUFFER大小设置为整个物理内存的60-80%

// 查看参数类型:IN FILE,静态参数

select name,type from v$parameter
where name=‘BUFFER’;

行号 NAME
TYPE



1 BUFFER IN FILE

// 修改参数

// 1:修改配置文件和内存;2:只配置文件,需要重启服务后生效

SQL>
sp_set_para_value(2,‘BUFFER’,64);

SQL> select para_name,para_value
from v$dm_ini where para_name=‘BUFFER’;

行号 PARA_NAME PARA_VALUE



1 BUFFER 64

达梦的参数类型:

sys/session:动态参数,要同时修改内存和配置文件

read only:数据库运行状态下是不能修改的,在mount状态修改

in file:静态参数,修改配置文件即可,生效需要重启服务

3.3.3 字典缓冲区

SQL> select para_name,para_value
from v$dm_ini where para_name like ‘%DICT%’;

行号 PARA_NAME PARA_VALUE



1 DICT_BUF_SIZE 5

2 PLN_DICT_HASH_THRESHOLD 20

// DICT_BUF_SIZE:字典缓冲区的大小

//
PLN_DICT_HASH_THRESHOLD:关联登记

当cache_pool_size的值大于等于该值的时候,记录执行计划中关联的数据字典。

12345678

3.3.4 sql缓冲区

分析:一条sql的执行过程?Select id,name from abc where id=1;

语法分析

语义分析(存放数据的数据字典表,产生物理读)

权限判断

查找数据块是否内存(在内存,逻辑读,不在内存,把数据块从磁盘读到buffer)

找是否有可用的执行计划。有的直接按照执行计划把结果展示出来。如果没有,生成执行计划,再把数据展示出来

Sql缓冲区中存放的是:最近使用的sql,DMSQL代码,执行计划和最近查询的结果集,减少硬解析

SQL> select para_name,para_value
from v$dm_ini where para_name=‘CACHE_POOL_SIZE’;

3.3.5 日志缓冲区

改变数据块信息

update/delete的时候

达梦:每3s写一次或是commit

SQL> select para_name,para_value
from v$dm_ini where para_name like ‘%RLOG%’;

3.3.6 排序区

// 对数据进行排序,如果内存排序无法完成,把部分排序转到磁盘(temp)

SQL> select para_name,para_value
from v$dm_ini where para_name like ‘%SORT%’;

3.3.7 HASH区

SQL> select para_name,para_value
from v$dm_ini where para_name like ‘%HJ%’;

3.3.8 重做日志文件的管理

查看日志文件

SQL> select path, rlog_size from
v$rlogfile;

增加一个日志文件

SQL> alter database add logfile
‘/dm7/data/DAMENG/DAMENG04.log’ size 512;

SQL> select path, rlog_size from
v$rlogfile;

修改日志文件的大小

SQL> alter database resize logfile
‘/dm7/data/DAMNEG/DAMENG04.log’ to 1024;

注:生产环境中建议所有日志文件的大小要一致

4表空间管理

4.1
达梦表空间介绍

// 达梦表空间有哪些?

SQL> select tablespace_name from
dba_tablespaces;

行号 TABLESPACE_NAME



1 SYSTEM

2 ROLL

3 TEMP

4 MAIN

5 DMHR

6 HMAIN

// SYSTEM:系统表空间,存放数据字典和全局的系统数据

// ROLL:回滚表空间,存放了数据库运行过程中产生的回滚记录

// TEMP:临时表空间,临时字段,临时表都默认存放在临时表控件

// MAIN:数据库默认的一个表空间,创建数据对象时,如果不指定存储位置,默认存放到该表空间

// HMAIN:huge表空间

4.2
如何去规划表空间及相关案例

案例1:创建一个表空间

SQL> create tablespace tbs1 datafile
‘/dm7/data/DAMENG/tbs1_01.dbf’ size 32;

// 表空间初始文件大小是页大小的4096倍 select page:8192;

案例2:创建一个表空间,初始大小是32M,最大100M

SQL> create tablespace tbs2
datafile ‘/dm7/data/DAMENG/tbs2_01.dbf’ size 32 autoextend on maxsize 100;

//指定最大值一定要打开自动扩张。

//查看表空间大小:

select tablespace_name,bytes/1024/1024
from dba_free_space where tablespace_name=‘TBS2’;

案例3:创建一个表空间,初始值32M,每次扩展1M,最大33M

SQL> create tablespace tbs3
datafile ‘/dm7/data/DAMENG/tbs3_01.dbf’ size 32 autoextend on next 1 maxsize 33;

案例4:创建一个表空间,初始32M,表空间由2个数据文件组成,分别存储到不同的磁盘上,每次扩展1M,每个数据文件最大100M

SQL> create tablespace tbs4 datafile
‘/dm7/data/DAMENG/tbs4_01.dbf’ size 32 autoextend on next 1 maxsize 100,
‘/dm7/data/tbs4_02.dbf’ size 32 autoextend on next 1 maxsize 100;

4.3
维护表空间

表空间不足的时候,如何去维护表空间?

A:创建一个大的表空间数据再导出导入。

B:把表空间数据文件resize

c(推荐)增加数据文件

SQL> alter tablespace tbs2 add
datafile ‘/dm7/data/DAMENG/tbs2_02.dbf’ size 32 autoextend on maxsize 100;

//一个表空间多个数据文件时,是交替使用,可以分散IO。

// 查看表空间

SQL> select
file_name,tablespace_name from dba_data_files;

表空间更换存储位置:(注意:表空间更换存储位置,要求表空间必须脱机)

SQL> select
tablespace_name,file_name from dba_data_files
where tablespace_name=‘TBS’;

SQL> alter tablespace tbs offline;(才能改控制文件)

SQL> alter tablespace tbs rename
datafile ‘/dm7/data/DAMENG/TBS.dbf’ to ‘/dm7/tbs/TSB.dbf’;

SQL> alter tablespace tbs online;

4.4
删除表空间

SQL> drop tablespace tbs3;

// 如果表空间存在数据,不允许直接删除

5、用户管理

5.1
达梦数据库有哪些用户

SQL> select username from
dba_users;

5.2规划用户

1名字(字母开头和$#_ 三个符号 )

2存储位置(建议一个用户一个表空间)

3密码安全策略(尝试登录次数)

4权限(系统,对象)

规划用户test,用户默认表空间为tbs2,尝试登录3次失败了锁定时间1分钟,密码有效期30天。

desc sysusers

create user test identified by
‘dameng123’ limit FAILED_LOGIN_ATTEMPS 3,password_lock_time
1,password_lift_time 30 default tablespace tbs2;

密码尝试登录次数:FAILED_LOGIN_ATTEMPS

密码锁定时间:PASSWORD_LOCK_TIME

密码过期时间:PASSWORD_LIFE_TIME

5.3
规划用户权限

系统权限:create drop alter 能够对数据库做什么操作。
对象权限: (表,视图,过程等等)select
,delete,update,insert

// 查看角色

SQL> select role from dba_roles;

// 查看用户角色

SQL> select grantee,granted_role
from dba_role_privs where grantee=‘TEST’;

// 创建角色

SQL> create role r1;

// 赋予权限给角色

SQL> grant select on dmhr.city to
r1;

// 创建用户

SQL> create user test2 identified
by Dameng123;

// 赋予角色给用户

SQL> grant r1 to test2;

5.4
用户维护

// 删除权限

SQL> revoke select on dmhr.ctiy from
r1;

// 修改密码

SQL> alter user test2 identified
by Dameng12345;

// 锁定/解锁账户

SQL> alter user test2 account
lock/unlock;

// 删除账号

SQL> drop user test2;

// 删除账号(用户下有创建表),慎用!删除前记得做备份

SQL> drop user test2 cascade;

// 删除角色

SQL> drop role r1;

//禁用和启用角色0禁用 1启用

SQL> sp_set_role(‘R1’,0)

drop role r1;

注意:创建用户的时候会生成一个与用户同名的模式,如果你创建用户,模式名已经存在,用户无法创建。

相关标签: 达梦数据库