达梦数据库是类似于Oracle的一款国产数据库,在诸多政府和企业单位被应用。其绝大部分的逻辑结构和操作语言都与Oracle类似。
达梦的官网和社区网站是不一样的。达梦的社区网站:https://eco.dameng.com
我们可以在上面的网站下载,当然也可以在官网下载,不同的是,在官网下载前需要注册。
课程学习使用的操作系统是银河麒麟V10,虚拟桌面软使用的是VMware Workstation 15。
DM管理工具提供了sql助手,sql助手类似于oracle的pl/sql。DM的dem是企业管理器,可以做到DM管理工具客户端的功能,也做到了dts数据迁移的功能,还可以部署dsc集群环境。同时还可以监控达梦数据库主机,以及它的会话,内存,cpu、硬盘等等。dem就是一个界面话的工具,能够让部署、维护更加简单。
接下来介绍一下安装的流程:
在安装DM8之前,我们要先要查看open files,在实际生产过程中,如果open files数值不够大,可能导致我们连不上数据库。打开数的设置(open files):
1. 可通过执行口令 vim /etc/security/limits.conf, 在 #End of file 一行的上方添加如下代码:
dmdba soft nofile 102400
dmdba hard nofile 204800
root soft nofile 102400
root hard nofile 204800
2. 也可通过执行口令 ulimit -n 102400 进行临时设置,只对当前会话生效。
挂载镜像文件成功后,在我们使用图形化界面安装达梦8时,如果是第一次登陆操作系统,要在root用户下先执行如下代码:
xhost + ---可以用其他用户打开图形化界面
echo $DISPLAY ---当前登录用户的DISPLAY变量
su -dmdba ---从root用户切换到dmdba用户
export DISPLAY=:0.0 ---这里需要把执行echo $DISPLAY语句后得到的变量设置给DISPLAY,具体情况根据输出值来定
然后我们再去挂载目录下执行安装文件DMInstall.bin就可以了。
在安装过程中,如果系统报tmp不足,用户可以通过设置环境变量DM_INSTALL_TMPDIR指定安装程序的临时目录:
mkdir -p /mount_point/dir_name
DM_INSTALL_TMPDIR=/mount_point/dir_name
export DM_INSTALL_TMPDIR
用root用户执行以上语句,再把 /mount_point/dir_name 的访问权限赋给dmdba用户。
安装完成之后,我们需要创建数据库及数据库实例。如果是通过数据库配置助手创建数据库,我们需要切换到dm8的tool目录下执行dbca.sh来打开图形化界面:
cd /dm8/tool
./dbca.sh
注意,我们一般不使用root用户进行数据库的安装,所以在安装前会切换到dmdba用户。在创建数据库时,初始化参数要设置准确,一旦设置将无法再更改。在安装过程中会有提示“要执行以下脚本命令”,一般都是要求以“root”身份运行,我们需要开启一个root窗口来执行出现的执行命令。
成功创建数据库实例后,我们需要连接数据库,连接的方法有以下两种:
方法一:
disql 命令行工具(用法类似 sqlplus)
[dmdba@KylinDCA04 ~]$ cd /dm8/bin
[dmdba@KylinDCA04 bin]$ ./disql SYSDBA/SYSDBA:5236
在sql里切换到别的数据库
SQL> conn SYSDBA/Dameng123:5238
连接其他IP地址的数据库:
[dmdba@KylinDCA04 bin]$ ./disql SYSDBA/Dameng123@192.168.88.5:5238
方法二:DM管理工具图形化界面
cd /dm8/tool
./manager
注意,如果我们是在新的会话中执行上面的命令,需要重新设置以下DISPLAY变量。如果端口号没有指定,默认的是5236,所以尽量指定端口号。
查看、开启、关闭数据库服务
root用户:
systemctl status DmServiceDMSERVER.service
systemctl stop DmServiceDMSERVER.service
systemctl start DmServiceDMSERVER.service
dmdba用户:
方法一:
[dmdba@KylinDCA04 bin]$ ./DmServiceDMSERVER stop(start)
方法二(没有注册数据库服务,就要这样启动数据库):
[dmdba@KylinDCA04 bin]$ ./dmserver /dm8/data/DMTEST/dm.ini mount
在安装了数据库并创建了数据库实例后,我们可以对DM数据库的参数进行修改。
数据缓冲区(buffer)有四种类型Normal、fast、Recycle、Keep,它们对应dm.ini中的配置参数BUFFER、FAST_POOL_PAGES、RECYCLE、KEEP。修改参数的方式有以下三种:
1. 编辑 dm.ini 文本文件
2. 使用 console 控制台工具图形化界面修改(最终修改的是配置文件)
3.SQL语句:alter system set ‘参数名’ = xxx spfile (both, memory);
要修改一个参数首先要知道它的类型:
Select name, value, sys_value, file_value, type from v$parameter where name = ‘COMPATIBLE_MODE’; (三个value分别是当前会话的值,内存值,参数文件中的值)
注意,使用sql语句时,DM的语法跟Oracle有些许不同。比如DM修改参数的语句是 alter system set 'COMPATIBLE_MODE' = 4 spfile,而Oracle是 alter system set 'COMPATIBLE_MODE' = 4 scope = spfile。在修改配置参数时,如果没有特别指明,我们一般默认操作对象时BUFFER类型。如果参数类型是SESSION时,上面sql语句中的system要改为session。
表空间管理过程中的注意事项:
1. 表空间正常的状态是联机---online。只有用户自己定义的表空间能进行脱机操作,系统自带的表空间是不能脱机的。修改数据文件存储的位置:需要将表空间置为脱机状态。
2. 数据文件的大小,最小值不能低于页大小的4096倍,最大值不能高于页大小的2的31次方-1。比如当我们执行 create tablespace tbs DATAFILE 'TBS01.DBF' SIZE 30 语句时,会报“数据文件大小无效”,语句应改成 create tablespace tbs DATAFILE 'TBS01.DBF' SIZE 64。
3. 创建表空间或添加数据文件时,对数据文件的目录要有读写权限,否则将会报错。
4. 在实际工作中,修改表空间时要注意,不要轻易用图形化界面的方式修改路径,这样会让数据库被置于脱机状态。
归档开启的方式(归档的开启,只有数据库处于mount状态下才能实现):sql方式;图形化界面;修改配置文件。
sql方式:
alter database mount;
alter database ARCHIVELOG;
alter database add ARCHIVELOG 'type=local,
dest=/dm8/arch, file_size=64, space_limit=10240';
alter database open;
用户、权限的管理:
用户管理:
create user TEST identified by Dameng123; --- 创建用户
alter user TEST identified by “Dameng@123”; ---修改用户密码
create user hrtest IDENTIFIED by "Dameng@123" DEFAULT tablespace HRTBS; --- 创建用户、默认表空间
权限管理:
系统权限的赋予:
grant create table to hrtest;
grant create any table to hrtest; --默认dba角色的any 权限不可转授
对象权限的赋予:
grant select on dmhr.department to hrtest;
grant select (employee_id, employee_name, department_id, email ) on
dmhr.employee to hrtest;
如果赋予表更新、删除权限,需要赋予该表查询权限才能更新或删除。
grant update on t_test to hrtest;
grant delete on t_test to hrtest;
模式对象管理:
Create schema DAMENG authorization SYSDBA;
创建 模式 模式名 归属于 用户名
查询当前模式和用户:
select sys_context('USERENV','CURRENT_SCHEMA');
select user;
select sys_context('USERENV','CURRENT_USER');
设置当前用户的模式:
set schema sche1;
数据库的备份:
1. 联机备份(要求要开归档)
sql语句:
backup database;
backup database full to fullbak01 backupset '/dm8/backup/full/fullbak01';
backup database increment to incrbak01 backupset '/dm8/backup/incr/incrbak01';
backup database increment with BACKUPDIR '/dm8/backup/full' to incrbak02 backupset '/dm8/backup/incr/incrbak02';
backup database increment CUMULATIVE with BACKUPDIR '/dm8/backup/full' to incrbak03
2. 脱机备份(数据库要关闭):
先关闭数据库:[dmdba@KylinDCA04 bin]$ ./DmServiceDMSERVER stop
再在bin目录下执行 ./dmrman
最后执行:RMAN> backup database '/dm8/data/DAMENG/dm.ini' to xxx backupset '/dm8/backup/full/xxx'; (如果要改成增量备份,就在to前加increment)
DM数据库整库的还原和恢复需要在关闭状态下操作,具体分为三步:基于备份集还原数据库,基于归档恢复到最新状态,更新数据库魔数。
- 到bin目录下执行 ./DmServiceDMSERVER stop
- 继续在bin下执行 ./dmrman
- 还原、恢复数据库:
restore database '/dm8/data/DAMENG/dm.ini' from backupset
'/dm8/backup/full/CONSOLEFULLBAK';
recover database '/dm8/data/DAMENG/dm.ini' with archivedir '/dm8/arch';
recover database '/dm8/data/DAMENG/dm.ini' update db_magic;
注意,表空间的备份要在DM管理工具里进行。表空间的备份、还原等比数据库的工程量小。表空间的还原只能在原库上进行。表空间的还原、恢复,不需要更新数据库魔数。
逻辑备份:
数据库要在开启的状态才行。导出有四种类型:全库导出:full=y; 按用户导出:owner=XXX; 按模式导出:schemas=XXX; 按表导出:tables=XXX
用dmdba用户执行下面的语句:
/dm8/bin/dexp userid=sysdba/Dameng123 directory=/dm8/backup/dexp file=dexpfull.dmp log=dexpfull.log full=y (如果没有full=y,就不是全库导出,而是默认的“按模式导出“)
逻辑导入(同样包含四种):
全库导入:
[dmdba@KylinDCA04 dexp]$ /dm8/bin/dimp userid=sysdba/Dameng123
directory=/dm8/backup/dexp file=dexpfull.dmp log=dimpfull.log full=y
DMHR 模式下对象导入到 DMTEST 中:
[dmdba@KylinDCA04 dexp]$ /dm8/bin/dimp userid=sysdba/Dameng123
directory=/dm8/backup/dexp file=dexpfull.dmp log=dimpdmhr.log
remap_schema=DMHR:DMTEST
注意,在我们创建用户时,不能给新用户起用已存在的“模式名”。因为在DM中,当系统创建用户时,会自动生成一个同名的模式,而且默认情况下,用户和模式是一对一的关系。表空间还原仅支持在源库上还原,表空间还原与恢复后不需要更新数据库魔数。
ODBC配置需要解压安装包,解压完成后,我们可以通过 "./configure" "make" "make install" 三个语句实现ODBC的配置,具体操作如下:
tar -zxvf unixODBC-2.3.0.tar.gz --解压
cd unixODBC-2.3.0
./configure ---配置
make ---编译
make install ---安装
使用 odbcinst -j 查看配置文件的位置:odbcinst.ini 和 odbc.ini
使用 vim odbc.ini 和 vim odbcinst.ini 编辑配置文件里的内容
最后,在dmdba用户下测试连接:
su – dmdba
isql dm8 –v
以上是达梦数据库DCA学习的大致总结,如果想把每个环节弄懂,需要学习的内容还是很多的。数据库的学习要非常注重细节,要弄清楚每个问题出现的原因和解决办法。希望越来越多的人参与到DM的学习中来,支持国产数据库的发展。