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= D M H O M E / b i n : DM_HOME/bin: DMHOME/bin:DM_HOME/tool: H O M E / b i n : 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、注册服务并启动服务
[root@dca01~]# /dm7/script/root/dm_service_installer.sh -t dmserver -p TEST1 -i /dm7/data/DM01/dm.ini
[root@dca01 ~]#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;
注意:创建用户的时候会生成一个与用户同名的模式,如果你创建用户,模式名已经存在,用户无法创建。