1.安装达梦8
1.1 达梦8版本介绍
开发版 : 开发版与企业版功能相同,平时工作使用开发版即可,授权期限为一年
企业版:支持集群特性,需要购买授权码
标准版: 不支持集群特性
安全版: 增加了访问控制等安全特性,用于SM机上
1.2 安装前环境检查
查看操作系统信息
cat /etc/system-release
cat /proc/version
注意:内核版本需要在2.6以上,否则在安装过程中会报错
uname -a
查看CPU信息
lscpu

cat /proc/cpuinfo

glibc版本
ldd --version
rpm -qa|grep glibc
glibc需要在2.3以上,否则在安装过程中会报错


查看gcc版本
gcc --version
rpm -qa|grep gcc
安装odbc的时候,需要gcc包依赖,没有安装的话需要进行安装


查看磁盘容量
df -h
tmp 容量不能小于1G. 用户可以可以扩展/tmp目录或者通过设置环境变量 DM_INSTALL_TMPDIR 指定安装程序的临时目录:
#直接扩展
mount -o remount,size=2G /tmp
#以 BASH 为例:
mkdir -p /mount_point/dir_name
DM_INSTALL_TMPDIR=/mount_point/dir_name
export DM_INSTALL_TMPDIR

查看内存
free -h
为了保证 DM 的正确安装和运行,要尽量保证操作系统至少 1GB 的可用内存(RAM)

1.3 安装规划
创建用户组和用户
groupadd -g 12349 dinstall
useradd -u 12345 -g dinstall -m -d /home/dmdba -s /bin/bash dmdba
echo "Dameng@123" | passwd --stdin dmdba

创建安装目录
mkdir /dm8
chown -R dmdba:dinstall /dm8
设置最大可打开文件数
echo "
#dm
dmdba soft nofile 65536
dmdba hard nofile 65536
dmdba soft nproc 10240
dmdba hard nproc 10240
#dm " >> /etc/security/limits.conf

1.4 挂载镜像文件
mount -o loop dm8_20220720_x86_rh7_64_ent_8.1.2.114_pack11.iso /mnt

1.5 开始安装
1.5.1 图形化界面安装
设置DISPLAY值
# 登陆到服务器上后,打开命令行(root用户)
xhost +
# 查看DISPLAY值
echo $DISPLAY
# 切换到dmdba用户
su - dmdba
#添加环境变量
echo "export DISPLAY=:0.0" >> .bash_profile
#应用环境变量
source .bash_profile
# 查看DISPLAY值
echo $DISPLAY
# 设置DISPLAY值
export DISPLAY=:0.0

执行安装程序
##dmdba用户
cd /mnt
./DMInstall.bin








点击"安装".


使用root用户,执行脚本



数据库软件安装完毕.

1.5.2 命令行形式安装
使用dmdba
./DMInstall.bin -i



使用root用户执行脚本

1.6 创建数据库
1.6.1 图像化方式
# 进入到dm工具包目录
cd /dm8/tool
# 打开数据库配置助手
./dbca.sh





增加日志文件






使用root用户,执行脚本




1.6.2 命令行方式
# 进入到目录
cd /dm8/bin
# 初始化数据库
dminit PATH=/dm8/data DB_NAME=DMDB INSTANCE_NAME=DMDB PORT_NUM=5236 EXTENT_SIZE=32 PAGE_SIZE=16 CASE_SENSITIVE=1 CHARSET=0
[dmdba@dmdb ~]$ dminit help -- 查看帮助
initdb V8
db version: 0x7000c
file dm.key not found, use default license!
License will expire on 2023-07-20
version: 03134283890-20220720-165295-10045 Pack11
格式: ./dminit KEYWORD=value
例程: ./dminit PATH=/public/dmdb/dmData PAGE_SIZE=16

注册服务
su - root
cd /dm8/script/root/
./dm_service_installer.sh -t dmserver -dm_ini /dm8/data/DMDB/dm.ini -p DMDB

启动服务
systemctl start DmServiceDMDB

2.数据库连接(
2.1 使用命令行连接
# 进入到bin目录
cd /dm8/bin
# 使用disql连接,本地连接可省略ip
./disql SYSDBA/SYSDBA:5236
# 连接远程服务器需要加上ip
./disql SYSDBA/SYSDBA@192.168.2.181:5236

2.2 使用图形化工具连接
2.2.1 图形化界面开启语法提示
manager &

3.参数配置
3.1 参数类型
达梦根据参数类型可分为,静态参数和动态参数两种,这两种均支持通过系统函数、SQL命令进行修改
静态参数:只能修改配置文件中的值,对内存中的值不进行修改,所以静态参数修改后使其生效的话,需要对数据库进行重启
动态参数:既能修改内存中的值,也能修改配置文件中的值,所以动态参数修改后是立即生效的
READ ONLY: 只读参数,不能通过系统函数、SQL命令达到修改参数的目的,只能从dm.ini配置文件中进行修改
SYS: 静态参数,可以通过系统函数、SQL命令达到修改参数的目的
IN FILE: 动态参数(系统级),可以通过系统函数、SQL命令达到修改参数的目的
SESSION: 动态参数(会话级),可以通过系统函数、SQL命令达到修改参数的目的,可针对某个会话进行修改,便于调试(不然要应用到整个线上系统,一旦出错,影响面就广了)
3.2 参数修改方式
3.2.1 使用dm.ini修改
# 直接编辑文件修改即可
vim /dm8/data/服务名称 dm.ini
#重启服务
DmServiceDMDB restart
3.2.2 使用图形化修改
cd /dm8/tool
./console &


#修改完成后,需要重启数据库DmServiceDMDB restart
3.2.3 SQL语句修改
# 后面跟的是参数范围
alter system set '参数名'='参数值' both | spfile | memory;
修改兼容参数
# 查询兼容参数类型
select name,value,sys_value,file_value,type,description from v$parameter where name = 'COMPATIBLE_MODE';
# 修改兼容参数类型
alter system set 'COMPATIBLE_MODE'=2 spfile;
修改UNDO_RETENTION
select name, value,type ,t.DESCRIPTION from v$parameter t where t.name like 'UNDO_RETENTION%';
alter SYSTEM set 'UNDO_RETENTION' = 180 both ;
select name, value,type ,t.DESCRIPTION from v$parameter t where t.name like 'UNDO_RETENTION%'; -- 修改后要查证
修改LIST_TABLE
select name, value,type ,t.DESCRIPTION from v$parameter t where t.name like 'LIST_TABLE%';
alter session set 'LIST_TABLE' = 1 ;
select name, value,type ,t.DESCRIPTION from v$parameter t where t.name like 'BUFFER%';
alter system set 'BUFFER'=2000 spfile;
4.表空间管理(必考)
4.1 表空间类型
-
SYSTEM:系统表空间,存放的是数据字典信息,包含表定义、视图定义、用户权限等
-
ROLL:回滚表空间,存放undo信息。INSERT、UPDATE、DELETE都会产生undo信息
-
MAIN:用户默认表空间,创建用户时,没有指定表空间,则使用MAIN表空间
-
TEMP:临时表空间,用于存放临时表数据、索引、大量数据排序等产生的数据
-
HMAN:HUGE表(列存储表)的默认表空间
修改temp表空间大小,需要修改temp_size
select name, value,type ,t.DESCRIPTION from v$parameter t where t.name like 'TEMP_SIZE%';
alter system set 'TEMP_SIZE'=64 spfile;
4.2 操作表空间
4.2.1 命令行方式
查看表空间
select * from dba_tablespaces;
select * from dba_data_files;
创建表空间
create tablespace 表空间名 datafile '数据文件路径' SIZE 数据文件大小(单位为mb);
create tablespace dbtbs datafile 'DMTBS01.DBF' SIZE 32;
# 查询页大小的4096倍,并换算成MB
select page*4096/1024/1024 ;
修改表空间大小
# 修改表空间大小
alter tablespace 表空间名 resize datafile '数据文件路径' to 数据文件大小(单位为mb);
alter tablespace dmtbs resize datafile 'DMTBS01.DBF' to 64;
# 修改表空间开启自动增长,增长步长,最大表空间
alter tablespace 表空间名 datafile '数据文件路径' autoextend on next 增长步长 maxsize 文件最大值
alter tablespace dmtbs datafile 'DMTBS01.DBF' autoextend on next 2 maxsize 10240;
删除表空间
drop tablesapce 表空间名;
drop tablespace dmtest;
表空间添加数据文件
alter tablespace 表空间名 add datafile '数据文件路径' size 数据文件大小(单位为mb);
alter tablespace dmtbs add datafile 'DMTBS02.DBF' size 64;
修改表空间名称
alter tablespace 修改前表空间名 rename to 修改后表空间名;
alter tablespace dmtbs rename to dmtest;
5.重做日志文件
重做日志:用于记录redo信息,重做日志默认为256M,数据库中的增、删、改操作都会记录redo和undo信息
redo信息写入联机日志文件,undo写入roll表空间对应的数据文件中
达梦的联机日志只支持系统自动切换,不支持手动切换(oracle支持)
5.1 重做日志命令行方式
查看联机日志
## 当前正在使用的联机日志
select * from v$rlog;
select * from v$logfile;
创建连接日志、修改连接日志大小
alter database add logfile '日志名称' size 日志大小(单位MB);
alter database add logfile 'DAMENG03.log' size 128
alter database resize logfile '日志路径' to 日志大小(单位MB);
alter database resize logfile '/dm8/data/DMDB/DAMENG03.log' to 256;
5.2 重做日志迁移
# 将数据库状态设置为mount状态
alter database mount;
alter database rename logfile '原日志路径' to '迁移到的日志路径';
# 将数据库状态设置为open状态
alter database open;
alter database mount;
alter database rename logfile '/dm8/data/DMDB/DAMENG01.log' to '/dm8/data/DMDB/REDO/DAMENG01.log';
alter database rename logfile '/dm8/data/DMDB/DAMENG02.log' to '/dm8/data/DMDB/REDO/DAMENG02.log';
alter database rename logfile '/dm8/data/DMDB/DAMENG03.log' to '/dm8/data/DMDB/REDO/DAMENG03.log';
alter database open;
6.归档管理
归档是对REDO的归档,备份归档是为了防止数据丢失,利用归档文件可以恢复数据库里的数据
归档开启
# 将数据库状态设置为mount
alter database mount;
# 打开归档
alter database archivelog;
# 归档配置,配置归档路径,归档文件大小(超过就新建一个文件),归档文件总的大小(超过限制,就会删除老的)
alter database add archivelog 'type=local,dest=/dm8/arch,file_size=64,space_limit=10240';
# 将数据库状态设置为open
alter database open;
# 查询归档状态
select arch_mode from v$database;
# 查看归档文件
select * from SYS."V$ARCH_FILE";
# 查询归档配置
select * from v$dm_arch_ini;
归档关闭
alter database mount;
# 关闭归档
alter database noarchivelog;
# 删除归档文件
alter database delete archivelog 'type=local,dest=/dm8/arch';
# 将数据库状态设置为open
alter database open;
# 查询归档状态
select arch_mode from v$database;
7.用户管理
创建用户
create user 用户名 identified by 密码 default tablespace 表空间名;
create user hrtest identified by "Dmeng123";
#查询下密码策略
select * from v$parameter where name = 'PWD_POLICY';
#修改密码策略
0 无限制。但总长度不得超过 48 个字节
1 禁止与用户名相同
2 口令长度需大于等于 INI 参数 PWD_MIN_LEN 设置的值
4 至少包含一个大写字母(A-Z)
8 至少包含一个数字(0-9)
16 至少包含一个标点符号(英文输入法状态下,除“和空格外的所有符号)
2+4+8
select * from SYS."V$PARAMETER" t where name ='PWD_POLICY';
alter system set 'PWD_POLICY' = 14 BOTH;
修改用户配置
# 将密码输错锁定次数改为3次,锁定时间为5分钟
alter user 用户名 limit FAILED_LOGIN_ATTEMPS 3,PASSWORD_LOCK_TIME 5;
用户的锁定和解锁
# 手动解锁 alter user 用户名 account unlock;
# 手动锁定 alter user 用户名 account lock;
用户授权
查询权限
select * from DBA_SYS_PRIVS where grantee = '用户名';
select * from dba_tab_privs where grantee = '用户名';
select * from dba_role_privs where grantee = '用户名';
select * from dba_col_privs where grantee = '用户名';
授权:
grant 角色名 to 用户名;
grant 具体权限 to 用户名;
grant public ,resource, soi,svi ,vti to 'app' ;
回收:
revoke 角色名 from 用户名;
revoke 具体权限 from 用户名;
资源限制
# 设置用户名为hrtest的用户,最大连接数为5
alter user app limit SESSION_PER_USER 5 ;
8. 角色管理
创建角色,并授予角色权限
create role 角色名;
grant 权限 to 角色名;
create role r1;
grant 角色名 to 用户.
9.表管理
表名是区分大小写的
创建表
create table app.test( id int, name varchar(10), logtime datetime DEFAULT sysdate, sex bit ) tablespace PROD_TBS;
create app.test as select * from hr.emp where 1=2 ;
字段调整
# 添加字段
alter table app.test add email varchar(20);
# 修改字段
alter table app.test modify email varchar(30);
# 删除字段
alter table app.test drop email;
删除表
drop table 表名 ;
drop table app.test
添加约束
#添加主键约束
alter table t_testpid add CONSTRAINT pk_testpid PRIMARY KEY(pid);
#添加唯一约束
alter table t_testpid add CONSTRAINT uk_testpid_pname UNIQUE(pname);
alter table t_testpid add CONSTRAINT uk_testpid_email UNIQUE(email,sex);
#添加非空约束
alter table "APP"."DEPT" alter column "DEPARTMENTID" set not null;
#添加外键约束
alter table "DMTEST"."T_TESTCHILD" add constraint "FK_TESTCHILD_PID"
foreign key("PID") references "DMTEST"."T_TESTPID"("PID");
#添加检查约束
alter table t_testpid add CONSTRAINT ck_testpid_logdatetime CHECK(logdatetime >= '2020-01-01');
#查询指定表上的约束
select * from SYS.DBA_CONSTRAINTS a where a.OWNER = 'APP' and a.TABLE_NAME = 'EMP' ;
禁用和启用约束
#禁用
alter table 模式名.表名 disable constraint "约束名"
#启用
alter table 模式名.表名 enable constraint "约束名"
创建索引
create index 索引名 ON 表名 (字段名,字段名);
删除索引
drop index 索引名 ;
10.视图管理
创建视图
create or replace view 视图名称 as 查询语句 ;
删除视图
drop view 视图名 ;
查询视图
select * from SYS.DBA_VIEWS a where a.OWNER = 'app' ;
11.备份与还原
逻辑导出,导入
#库逻辑导出
./dexp userid=sysdba/SYSDBA:5236 directory=/dm8/backup file=full.dmp log=full.log full=y
#用户逻辑导出
./dexp userid=sysdba/SYSDBA:5236 directory=/dm8/backup file=app.dmp log=app.log owner=app
#库逻辑导入
./imp userid=sysdba/SYSDBA:523 directory=/dm8/backup file=app.dmp FULL=Y LOG=imp.log
#用户逻辑导入
./imp userid=sysdba/SYSDBA:5236 directory=/dm8/backup file=app.dmp log=app.log
联机备份
# 全库备份到默认路径下
backup database ;
# 全库备份到指定路径下(备份目录不带文件名)
backup database full backupset '备份目录';
# 基于基础备份集的增量备份,并备份到指定目录
backup database increment to incrbak01 backupset '/dm8/backup/';
# 基于指定备份集的增量备份,并备份到指定目录
backup database increment with BACKUPDIR '/dm8/backup/full' to incrbak02 backupset '/dm8/backup/incr/incrbak02';
数据库恢复
#数据库为关闭状态,使用dmrman 恢复数据库
#数据库转储
restore database '<数据库目录>/dm.ini' from backupset '备份集';
#数据库恢复
recover database '<数据库目录>/dm.ini' from database '备份集' ;
#数据库更新
recover database '<数据库目录>/dm.ini' update db_magic ;
12 .作业管理


作业步骤

作业调度


13.odbc配置
#解压ODBC
tar -zxvf unixODBC-2.3.0.tar.gz
cd unixODBC-2.3.0
./configure --enable-gui=no && make && make install
#配置
odbc_config -j
vim /usr/local/etc/odbc.ini
[dm8]
description=dm8
driver=odbc dm8
server=192.168.2.181
uid=sysdba
pwd=EnmoEdu123
tcp_port=5236
vim /usr/local/etc/odbcinst.ini
[odbc dm8]
description=odbc dm8
driver=/opt/dm8/drivers/odbc/libdodbc.so
#测试
[dmdba@enmoedu1 ~]$ isql dm8
https://eco.dameng.com