赞
踩
开发版与企业版功能相同,平时工作使用开发版即可,授权期限为一年
支持集群特性,需要购买授权码
不支持集群特性
增加了访问控制等安全特性,用于SM机上
使用以下两个命令查看CPU相关信息,并选择对应的达梦版本进行下载安装
lscpu
或者
cat /proc/cpuinfo
注意:内核版本需要在2.6以上,否则在安装过程中会报错
root@linux:~# cat /proc/version
Linux version 5.15.0-76-generic (buildd@bos02-arm64-019) (gcc (Ubuntu 11.3.0-1ubuntu1~22.04.1) 11.3.0, GNU ld (GNU Binutils for Ubuntu) 2.38) #83-Ubuntu SMP Thu Jun 15 19:21:56 UTC 2023
root@linux:~# uname -a
Linux linux 5.15.0-76-generic #83-Ubuntu SMP Thu Jun 15 19:21:56 UTC 2023 aarch64 aarch64 aarch64 GNU/Linux
glibc需要在2.3以上,否则在安装过程中会报错
root@linux:~# ldd --version
ldd (Ubuntu GLIBC 2.35-0ubuntu3.1) 2.35
Copyright (C) 2022 Free Software Foundation, Inc.
This is free software; see the source for copying conditions. There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
Written by Roland McGrath and Ulrich Drepper.
安装odbc的时候,需要gcc包依赖,没有安装的话需要进行安装
root@linux:~# gcc --version
gcc (Ubuntu 11.3.0-1ubuntu1~22.04.1) 11.3.0
Copyright (C) 2021 Free Software Foundation, Inc.
This is free software; see the source for copying conditions. There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
至少需要20G,推荐给25G以上
root@linux:~# df -h
Filesystem Size Used Avail Use% Mounted on
tmpfs 197M 1.6M 196M 1% /run
/dev/mapper/ubuntu--vg-ubuntu--lv 30G 16G 13G 55% /
tmpfs 984M 0 984M 0% /dev/shm
tmpfs 5.0M 4.0K 5.0M 1% /run/lock
/dev/sda2 2.0G 261M 1.6G 15% /boot
/dev/sda1 1.1G 6.4M 1.1G 1% /boot/efi
iCloud 461G 207G 255G 45% /media/psf/iCloud
tmpfs 197M 132K 197M 1% /run/user/1000
如果tmp容量小于1G,使用以下命令扩容
# 使用root用户执行
mount -o remount,size=2G /tmp
推荐3G以上,Swap正常分区即可,银河麒麟比较吃内存,建议多给点
root@linux:~# free -m
total used free shared buff/cache available
Mem: 1967 1012 296 111 658 759
Swap: 2047 10 2037
# 创建用户组
groupadd dinstall
# 创建用户
useradd -g dinstall -m -d /home/dmdba -s /bin/bash dmdba
# 创建完成后使用以下命令查看是否成功
id dmdba
# 设置密码
passwd dmdba
# 创建达梦安装路径
mkdir /dm8
# 更改文件夹的所属用户组、所属用户
chown dmdba:dinstall /dm8
# 查看是否更改成功
ll -ld /dm8
查看最大可打开文件数,如果是CentOS的话,默认是比较小的,可能会导致安装过程中报错,所以这边我们提前查看并设置
# 查看最大可打开文件数
ulimit -a
# 临时设置(当前会话生效)
ulimit -n 20480
# 永久设置,需要用root用户操作
vim /etc/security/limits.conf
dmdba soft nofile 102400
dmdba hard nofile 102400
root soft nofile 102400
root hard nofile 102400
将下载的iso镜像文件上传到服务器上后,进行挂载操作
# 在mnt下创建dm目录
mkdir /mnt/dm
# 挂载镜像 mount /镜像地址 /挂载的目标路径
mount /opt/dm8_20210818_x86_rh6_64_ent_8.4.2.18_pack14.iso /mnt/dm
挂载成功后
# 切换到dmdba用户下
su - dmdba
# 查看挂载目录
cd /mnt/dm
ll
# 登陆到服务器上后,打开命令行(root用户)
xhost +
# 查看DISPLAY值
echo $DISPLAY
# 切换到dmdba用户
su - dmdba
# 查看DISPLAY值
echo $DISPLAY
# 设置DISPLAY值(具体以环境查询出来的值为准)
export DISPLAY=:0.0
# 进入到挂载目录
cd /mnt/dm
# 查看目录下的文件
ll
# 执行安装程序
./DMInstall.bin
一直点下一步直到
安装完成,提示运行脚本:
可能会碰到以下问题,提示说tmp文件过小,就是因为1.2.5步骤没有执行,需要重新使用root用户执行,然后再执行1.5.1.2,然后再执行安装程序即可
./DMInstall.bin -i 请选择安装语言(C/c:中文 E/e:英文) [C/c]: 解压安装程序.......... 欢迎使用达梦数据库安装程序 是否输入 Key 文件路径? (Y/y:是 N/n:否) [Y/y]:n 是否设置时区? (Y/y:是 N/n:否) [Y/y]: 设置时区: [ 1]: GTM-12=日界线西 [ 2]: GTM-11=萨摩亚群岛 [ 3]: GTM-10=夏威夷 [ 4]: GTM-09=阿拉斯加 [ 5]: GTM-08=太平洋时间(美国和加拿大) [ 6]: GTM-07=亚利桑那 [ 7]: GTM-06=中部时间(美国和加拿大) [ 8]: GTM-05=东部部时间(美国和加拿大) [ 9]: GTM-04=大西洋时间(美国和加拿大) [10]: GTM-03=巴西利亚 [11]: GTM-02=中大西洋 [12]: GTM-01=亚速尔群岛 [13]: GTM=格林威治标准时间 [14]: GTM+01=萨拉热窝 [15]: GTM+02=开罗 [16]: GTM+03=莫斯科 [17]: GTM+04=阿布扎比 [18]: GTM+05=伊斯兰堡 [19]: GTM+06=达卡 [20]: GTM+07=曼谷,河内 [21]: GTM+08=中国标准时间 [22]: GTM+09=汉城 [23]: GTM+10=关岛 [24]: GTM+11=所罗门群岛 [25]: GTM+12=斐济 [26]: GTM+13=努库阿勒法 [27]: GTM+14=基里巴斯 请选择设置时区 [21]: 安装类型: 1 典型安装 2 服务器 3 客户端 4 自定义 请选择安装类型的数字序号 [1 典型安装]: 所需空间: 1178M 请选择安装目录 [/home/dmdba/dmdbms]:/dm8 目录(/dm8)下不为空,请选择其他目录。 请选择安装目录 [/home/dmdba/dmdbms]:/dm8 可用空间: 14G 是否确认安装路径(/dm8)? (Y/y:是 N/n:否) [Y/y]:y 安装前小结 安装位置: /dm8 所需空间: 1178M 可用空间: 14G 版本信息: 有效日期: 安装类型: 典型安装 是否确认安装? (Y/y:是 N/n:否):y 2023-07-14 19:33:00 [INFO] 安装达梦数据库... 2023-07-14 19:33:00 [INFO] 安装 基础 模块... 2023-07-14 19:33:03 [INFO] 安装 服务器 模块... 2023-07-14 19:33:03 16 / 127 17 / 127 [INFO] 安装 客户端 模块... 2023-07-14 19:33:05 [INFO] 安装 驱动 模块... 2023-07-14 19:33:05 [INFO] 安装 手册 模块... 2023-07-14 19:33:05 [INFO] 安装 服务 模块... 2023-07-14 19:33:06 [INFO] 移动日志文件。 2023-07-14 19:33:07 [INFO] 安装达梦数据库完成。 请以 root 系统用户执行命令: /dm8/script/root/root_installer.sh 安装结束 [root@linux ~]# /dm8/script/root/root_installer.sh 移动 /dm8/bin/dm_svc.conf 到/etc 目录 修改服务器权限 创建 DmAPService 服务 Created symlink /etc/systemd/system/multi-user.target.wants/DmAPService.service → /usr/lib/systemd/system/DmAPService.service. 创建服务(DmAPService)完成 启动 DmAPService 服务
# 进入到dm工具包目录
cd /dm8/tool
# 打开数据库配置助手
./dbca.sh
簇大小、页大小、字符集、大小写敏感、VARCHAR 类型以字符为单位等一旦指定,数据库
创建完成将无法更改。
页是达梦数据库的最小存储单元,簇是由连续的页组成。
簇是达梦数据库的最小分配单元。
达梦中 varchar 类型长度默认不能大于页大小的一半。
界面提示使用 root 用户执行脚本:
# 进入到目录
cd /dm8/bin
# 初始化数据库
./dminit path=/dm8/data db_name=DMTEST instance_name=DMTEST port_num=5237 page_size=16 SYSDBA_PWD=Dameng123
# 进入到目录,root用户执行
cd /dm8/script/
# 执行注册数据库服务
./dm_service_installer.sh -t dmserver -p 服务名后缀(前缀是定死的,后缀一般为数据库实例名称) -dm_ini /dm8/data/DMTEST/dm.ini
./dm_service_installer.sh -t dmserver -p DMTEST -dm_ini /dm8/data/DMTEST/dm.ini
# 取消注册服务
./dm_service_uninstaller.sh -n 服务名称
./dm_service_uninstaller.sh -n DmServiceDMTEST
# 查看DISPLAY值,如果没有则需要按照1.5.1.1 设置DISPLAY值
echo $DISPLAY
# 打开配置助手(这边使用了root用户,如果用dmdba的话,到最后一部会提示有几个命令要用root身份执行)
cd /dm8/tool/
./dbca.sh
点击“完成”,界面提醒使用 root 执行脚本:
# 进入到达梦根目录(root用户执行,如果是dmdba用户执行,到最后会弹出以root用户执行命令的窗口)
./uninstall.sh
# 进入到达梦根目录
./uninstall.sh -i
# 进入到bin目录
cd /dm8/bin
# 使用disql连接,本地连接可省略ip
./disql SYSDBA/SYSDBA:5236
# 连接远程服务器需要加上ip
./disql SYSDBA/SYSDBA@192.168.31.124:5236
如果已经登陆到数据库中,可以直接使用conn命令进行连接到其他数据库
# 连接本机,ip可省略
conn SYSDBA/Dameng123@192.168.31.124:5237
# 加上ip地址
conn SYSDBA/Dameng123@192.168.31.124:5237
对应到
Oracle
的Scope
both
:既修改内存中的值,也修改配置文件中的值,重启不重启都一样生效
spfile
:只修改配置文件中的值,重启数据库生效
memory
:只修改内存中的值,重启数据库后恢复设置前的样子
达梦根据参数类型可分为,静态参数和动态参数两种,这两种均支持通过系统函数、SQL命令进行修改
静态参数:只能修改配置文件中的值,对内存中的值不进行修改,所以静态参数修改后使其生效的话,需要对数据库进行重启
动态参数:既能修改内存中的值,也能修改配置文件中的值,所以动态参数修改后是立即生效的
只读参数,不能通过系统函数、SQL命令达到修改参数的目的,只能从dm.ini配置文件中进行修改
静态参数,可以通过系统函数、SQL命令达到修改参数的目的
动态参数(系统级),可以通过系统函数、SQL命令达到修改参数的目的
动态参数(会话级),可以通过系统函数、SQL命令达到修改参数的目的,可针对某个会话进行修改,便于调试(不然要应用到整个线上系统,一旦出错,影响面就广了)
不修改内存中的值,修改的是配置文件中的值,
需要重启后生效
cd /dm8/tool
./console
修改完成后,需要重启
# 后面跟的是参数范围
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;
查看可以使用的系统函数
select name,id from v$ifun t where name like '%SP_SET%_PARA%';
查看系统函数的参数类型
select * from v$ifun_arg t where id=584;
考试的时候可能会让你修改数据缓冲区大小,没有特殊指明的话就是修改Normal缓冲区的大小,参数对应的是BUFFER
Normal对应参数BUFFER、Fast对应参数为FAST_POOL_PAGES、Recycle对应参数为RECYCLE、Keep对应参数为KEEP
alter system set 'BUFFER'=2000 spfile;
查看表空间
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;
迁移时注意:新的表空间路径,
必须是由安装数据库的用户进行创建,或者把这个文件夹授予数据库安装用户读写权限
,否则会因权限问题报数据库文件路径错误
# 先将表空间离线
alter tablespace 表空间名 offline;
# 重命名数据文件名,并迁移
alter tablespace 表空间名 rename datafile '重命名的数据文件名' to '路径';
# 将表空间上线
alter tablespace 表空间名 online;
# 务必注意,后面的文件夹路径必须是由安装数据库的用户创建的,否则会因权限问题报数据库文件路径错误
alter tablespace dmtest offline;
alter tablespace dmtest rename datafile 'DMTBS01.DBF' to '/dm8/data/DAMENG/DMTEST/DMTBS01.DBF';
alter tablespace dmtest rename datafile 'DMTBS02.DBF' to '/dm8/data/DAMENG/DMTEST/DMTBS02.DBF';
alter tablespace dmtest online;
重做日志:用于记录redo信息,重做日志默认为256M,数据库中的增、删、改操作都会记录redo和undo信息
redo信息写入联机日志文件,undo写入roll表空间对应的数据文件中
达梦的联机日志只支持系统自动切换,不支持手动切换(oracle支持)
查看联机日志
## 当前正在使用的联机日志
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/DAMENG/DAMENG03.log' to 256;
# 将数据库状态设置为mount状态
alter database mount;
alter database rename logfile '原日志路径' to '迁移到的日志路径';
# 将数据库状态设置为open状态
alter database open;
alter database mount;
alter database rename logfile '/dm8/data/DAMENG/DAMENG01.log' to '/dm8/data/DAMENG/REDO/DAMENG01.log';
alter database rename logfile '/dm8/data/DAMENG/DAMENG02.log' to '/dm8/data/DAMENG/REDO/DAMENG02.log';
alter database rename logfile '/dm8/data/DAMENG/DAMENG03.log' to '/dm8/data/DAMENG/REDO/DAMENG03.log';
alter database open;
归档是对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;
# 查看归档状态是否开启,0关闭、1开启
cat dm.ini|grep ARCH_INI
create user 用户名 identified by 密码 default tablespace 表空间名;
create user hrtest identified by "Dmeng123";
设置密码的时候,需要查询下密码策略是什么
select * from v$parameter where name = 'PWD_POLICY';
如果想调整密码策略
alter system set 'PWD_POLICY' = 下图策略相加 both;
调整密码错误次数参数,默认输错3次后锁定账号,并且1分钟后自动解锁
# 将密码输错锁定次数改为5次,锁定时间为3分钟
alter user 用户名 limit FAILED_LOGIN_ATTEMPS 5,PASSWORD_LOCK_TIME 3;
手动锁定或解锁账号
# 手动解锁
alter user 用户名 account unlock;
# 手动锁定
alter user 用户名 account lock;
# 查看用户资源限制,例如最大并发数
select * from dba_users a,sysusers b where a.user_id = b.id;
创建角色,并授予角色权限
create role 角色名;
grant 权限 to 角色名;
create role r1;
赋予用户角色
grant 角色名 to 用户名;
grant r1 to dmtest;
设置指定用户最大并发量
# 设置用户名为hrtest的用户,最大连接数为3
alter user hrtest limit SESSION_PER_USER 3;
grant select on 模式名.表名 to 用户名;
grant select on dmhr.department to hrtest;
不能只授予修改、删除权限,还要授予查询权限
grant select on 模式名.表名 to 用户名;
grant update on 模式名.表名 to 用户名;
grant delete on 模式名.表名 to 用户名;
revoke 角色名 from 用户名;
revoke 具体权限 from 用户名;
revoke r1 from dmtest;
revoke create table from dmtest;
什么是模式:
模式是一个特定的对象集合,在概念上可将其看作是包含表、视图、索引等若干对象的对象集
什么是模式对象:
表、视图、约束、索引、序列、触发器、存储过程/函数、包、同义词、类、域
模式与用户的关系
当系统建立一个用户时,会自动生成一个对应的模式,用户和模式是一对多的关系(Oracle是一对一)
注意:如果在disql中执行此语句,空行后需要加上/再回车
# 创建模式前需要授予用户创建模式的权限
# 创建模式
create schema 模式名 authorization 用户名;
/
# 授予用户创建模式权限
grant create schema to 用户名;
查询系统中所有模式
select * from SYSOBJECTS a where a."TYPE$" = 'SCH'
查询模式和所属用户
select a.id scheid, a.name schename, b.id userid, b.name username
from SYS.SYSOBJECTS a, SYS.SYSOBJECTS b
where a."TYPE$" = 'SCH' and a.pid = b.id;
查询当前模式
select sys_context('USERENV','CURRENT_SCHEMA');
查询当前用户,两种都可以
select user;
select sys_context('USERENV','CURRENT_USER');
注意:
这个切换只对当前会话生效
,咨询过老师,目前没有方法可以设置永久生效
set schema 模式名;
表名是区分大小写的
create table dmtest.t_testpid(
pid int,
pname varchar(10),
logtime datetime DEFAULT sysdate,
sex bit
) tablespace HRTBS;
从别的表复制
# 只复制表结构(不带约束信息)
create table t_emp03 as select * from dmhr.employee where 1=0;
# 复制表结构+表数据
create table t_emp01 as select * from dmhr.employee;
create table t_emp02 like dmhr.employee;
# 添加字段
alter table dmtest.t_testpid add email varchar(20);
# 修改字段
alter table dmtest.t_testpid modify email varchar(30);
# 删除字段
alter table dmtest.t_testpid drop email;
UK_表名_字段名
PK_表名_字段名
FK_表名_字段名
CK_表名_字段名
主键约束和唯一约束的区别:一张表只能有一个主键,但是可以有多个唯一约束。
注意:字段如果为小写需要小写并且加上双引号,字段为大写不需要加双引号
# 添加主键约束
alter table dmtest.t_testpid add CONSTRAINT pk_testpid_pid PRIMARY key("pid");
# 添加外键约束,注意REFERENCES表里的字段必须是主键或者是添加了唯一索引的字段
alter table dmtest.t_testchild add CONSTRAINT fk_testchild_pid FOREIGN key("pid") REFERENCES dmtest.t_testpid("pid");
# 添加校验约束
alter table dmtest.t_testchild add CONSTRAINT ck_testchild_salary CHECK ("salary">=3000);
alter table 模式名.表名 disable constraint "约束名"
alter table 模式名.表名 enable constraint "约束名"
create index idx_表名_字段名 ON 表名 (字段名,字段名);
create or replace view 视图名称 as
select * from aaa where age > 10
dexp在达梦的bin目录下
注意需要先创建目录,而且导出用户和导入用户都使用dmdba
./dexp userid=sysdba/SYSDBA:5238 directory=/dm8/backup/dexp file=full.dmp log=full.log full=y
./dexp userid=sysdba/SYSDBA:5238 directory=/dm8/backup/dexp file=dmtest.dmp log=dmtest.log owner=dmtest
在disql里执行的话使用以下命令
start sql文件路径
在达梦客户端工具里执行的话,使用以下命令
` sql文件路径;
commit;
# 全库备份到默认路径下
backup database
# 全库备份到指定路径下(备份目录不带文件名)
backup database full backupset '备份目录';
# 基于基础备份集的增量备份,并备份到指定目录
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';
./console
命令行方式创建代理环境
SP_INIT_JOB_SYS(1);
图形化方式创建代理环境
tar -zxvf /opt/unixODBC-2.3.0.tar.gz
cd unixODBC-2.3.0
./configure
make
make install
cd /usr/local/etc/
vim odbc.ini
[DM8] # 这个按要求改
Description = DM ODBC DSN
Driver = DM8 ODBC DRIVER # 要和下面对应
SERVER = localhost
UID = SYSDBA
PWD = SYSDBA
TCP_PORT = 5236
vim odbcinst.ini
[DM8 ODBC DRIVER] # 这块要和上边对应
Drscription = ODBC DRIVER FOR DM8
Driver = /dm8/bin/libdodbc.so
切换到dmdba用户,进行登陆即可
su -dmdba
isql dm8 -v
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。