达梦数据库安装及操作

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;

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

你可能感兴趣的:(数据库)