达梦数据库安装及使用简单介绍
达dream数据库通过不断的迭代与进化,在借鉴主流database产品优点的同时, 也逐步形成了自身的特点, 得到业界和用户的广泛认可。本文着重阐述DM8的简单安装及操作步骤。
1.tmp 空间
安装过程中tmp空间不能太小,查看所分配的空间大小和使用情况。
df -h
tmpfs 2.0G 586M 1.5G 29% /tmp
如果 小于 2g 临时增大 tmp 空间
vim /etc/fstab
tmpfs /tmp tmpfs defaults,size=2G,noatime,mode=1777 0 0
reboot;// 修改后重启
2.设置可视化图形界面配置
export DISPLAY=clientIp:0.0 // ssh端
echo $DISPLAY // linux 端 输出 :2.0
export DISPLAY=:2.0
xhost +

3.安装用户和用户组
创建用户组和用户:
groupadd dinstall
useradd -g dinstall -m -d /home/dmdba -s /bin/bash dmdba
passwd dmdba
创建安装目录并赋权限:
mkdir /dm8
给用户目录赋权
chown dmdba:dinstall /dm8
安装前需要先挂载.iso 文件。
mkdir /mnt/dm
mount /opt/dm8_20220304_x86_rh6_64.iso /mnt/dm
图形化安装:
su - dmdba
cd /mnt/dm
./DMInstall.bin ( ./DMInstall.bin -i)
创建数据库实例:
/dm8/tool/dbca.sh // 注册或创建实例
将文件'DmServiceDMSERVER.service'从'dm8/bin/'移动至'/usr/lib/systemd/system/DmServiceDMServer.service'
systemctl enable DmServiceDMSERVER.service
systemctl start DmServiceDMSERVER.service
ps -ef|grep dmserver //查看实例
netstat -anlp|grep 5236 //查看实例
如果该界面弹出文件打开数过小,需要设置下文件打开数:
[dmdba@KylinDCA04 dm]$ ulimit -a
open files (-n) 102400
dmdba@KylinDCA04 dm]$ ulimit -n 20480 (当前会话生效)
永久生效方法,修改/etc/security/limits.conf 文件:
root@KylinDCA04 opt]# vim /etc/security/limits.conf
-
hard nofile 20000
-
soft nofile 15000
DM 数据库的状态:
select status from vinstance;
alter database mount;
alter database open;
管理服务器/系统管理
后台启动查看数据库:
/dm8/bin
./DmServiceDMSERVER status
./DmServiceDMSERVER stop
./DmServiceDMSERVER start
数据库体系结构:
安装目录:
/dm8/data/DAMENG
dm.ini:配置参数文件
dm.ctl:控制文件
DM 提供 dmctlcvt 工具可以将控制文件转换为文本文件。
/dm8/bin/dmctlcvt help
//转换
/dm8/bin/dmctlcvt type=1 src=dm.ctl dest=dmctl.txt
运行此脚本命令以设置类型为1,并指定源文件路径和目标文件路径
ctl_bak:备份目录
修改参数:
(1)修改dm.ini 文件
(2) console 控制台
(3)sql语句
alter system set “参数名” = 参数值 both|spfile|memory;
指定为spfile的范围仅限于本地存储;不会影响内存;即在下次数据库启动时才会生效;某些特定参数仅能通过这种方式进行更新
2、scope=memory 仅仅更改内存,不改spfile。也就是下次启动就失效了
3、scope=both 内存和spfile都更改
4、不指定scope搜索参数,等同于scope=both.
alter system set 'UNDO_RETENTION'=180 both; // 事务提交后回滚页保持时间
alter system set 'UNDO_RETENTION'=300 memory;
alter session set 'LIST_TABLE'=1; // 默认情况下,创建的表不是堆表,0:否;1:是
alter system set 'BUFFER'= 500 spfile; //修改数据缓冲区大小为500M
alter system set 'COMPATIBLE_MODE' =2 spfile; // 兼容oracle
alter system set 'PWD_POLICY' = 31 both; //密码策略
(4)函数修改:sp_set_para_value(2,LIST_TABLE,0);
(scope,paraname,value)
select name, value, SYS_VALUE, FILE_VALUE, type from v$parameter where name = 'LIST_TABLE'
修改系统口令策略:
于指定系统支持的口令策略,包含:
⚫ 1 禁止与用户名相同
⚫ 2 口令长度不小于9
⚫ 4 至少包含一个大写字母(A-Z)
⚫ 8 至少包含一个数字(0-9)
⚫ 16 至少包含一个标点符号(英文输入法状态下,除“和空格外的所有符号)
口令策略既可以单独使用,也可以以组合形式应用.当需要同时应用多个策略时,在设置口令策略时只需将所需的所有策略编号相加即可.
用户/角色/表空间:
create tablespace DMTBS DATAFILE 'DMTBS01.DBF' SIZE 32; // 创建表空间
创建一个名为DMTBS的数据文件表空间,并将其设置为自动扩展下一个2M区间,并将最大容量设置为10G
alter TABLESPACE DMTBS RENAME TO dmtest; //表空间重命名
alter table dmtest.T_TESTPID move tablespace main; //修改表的表空间
//表空间迁移 数据文件的迁移:
alter tablespace dmtest offline;
alter tablespace dmtest RENAME DATAFILE 'DMTBS02.DBF'
to '/dm8/data/DAMENG/DMTEST/DMTBS02.DBF';
alter tablespace dmtest online;
归档管理:
(1) SQL 方式
--开启归档
alter database mount;
alter database ARCHIVELOG;
执行命令用于在数据库中创建日志文件的日志类型设置为本地,并将目标存储路径指定为/dm8/arch文件夹,并设置日志文件大小为64字节以及空间限制为10240字节。
alter database open;
--关闭归档
alter database mount;
alter database NOARCHIVELOG;
remove from the database the log file named 'ARCHIVELOG' with the following specifications: type is local, destination is /dm8/arch, file size is 64 bytes, and space limit is 10240 characters;
alter database open;
// 创建用户
create a user named hrtest identified by Dameng123 with a default tablespace setting of DMTBS; this action is carried out to establish a new user account within the specified database structure.
alter user hrtest limit SESSIONPERUSER 3; //最大会话数
set account input hrtest limit 5; //设置账户输入错误次数限制为5次后将被禁用3分钟
alter user hrtest ACCOUNT UNLOCK; --手动解锁
alter user hrtest ACCOUNT LOCK; --手动锁定
//系统权限:
grant create table to hrtest; // 赋予用户创建表权限
grant create any table to hrtest; //默认dba角色的any 权限不可转授
grant create schema to hrtest; //赋予用户创建模式权限
revoke create table from hrtest; // 收回用户权限
//对象权限的赋予:
grant select on dmhr.department to hrtest;
select grant from dmhr.employe into hrtest;
//如果赋予表更新、删除权限,需要赋予该表查询权限才能更新或删除。
grant update on t_test to hrtest;
grant select on t_test to hrtest;
//角色管理:
create role r1; //创建角色
grant create table to r1; //给角色赋予创建表的权限
grant r1 to hrtest; //给用户赋予角色
revoke r1 from hrtest; //收回用户角色
当在配置系统权限时,在满足某些条件的情况下(如管理员认证通过),允许将权限下放给子用户以获得更高的访问权限。
授予对象权限时,请允许设置与他人共享权限以满足用户的转权需求。
revoke select on sysdba.t_test from hrtest CASCADE; --级联回收转授的权限
//模式管理:
define table structure sche1 under AUTHORIZATION hrtest; //为数据库表添加权限设置
//创建表:
创建表SCHE1.t_testpid,并包含字段:
- pid:整数型
- pname:长度限制为10个字符的varchar类型
- logtime:datetime类型,默认值设为当前日期
- sex:二进制型/位型
),该表位于存储空间DMTBS中
create table SCHE1.t_emp01 as select * from 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; //删除列
导入:
disql hrtest/'"Dameng@123"';
start /dm8/backup/dts/t_department.sql;
添加约束信息:
创建并附加表结构dmtest.t_testpid,并在其上创建并附加名为pk_testpid_pid的Primary Key Constraint on pid列。
create table dmtest.t_testchild(
childid int primary key , //主键
childname varchar(10) not null, // 非空
logtime datetime DEFAULT sysdate, //日期
email varchar(20) CONSTRAINT uk_email unique, //唯一约束
sex bit) tablespace HRTBS; //指定表空间
//索引
create index ix_emp01_empname ON t_emp01 (employee_name); // 创建索引
alter index ix_emp01_deptid MONITORING USAGE; // 给索引创建监控
select * from SYS."V$OBJECT_USAGE"; // 查看索引监控
//视图
create view v_emp as select * from t_emp01 where DEPARTMENT_ID = 1001;
create or replace view v_emp as a SELECT subquery from the table t_emp_2 where department_id = 555 and employee_id in (select employee_id from t_employees where salary > 8999);
// gui 数据导入
'/path/*.sql;
commit;
备份还原:
ps -ef|grep dmap;
select * from v$parameter t where name in ('BAK_PATH', 'BAK_USE_AP'); // 查看备份
checkpoint(100); //不连续的备份执行此命令
联机备份;
表空间和表的备份仅限于进行 联机 备份;
而 manager 则提供了便捷的操作界面用于实现 联机 备份功能。
联机备份;
表空间和表的备份仅限于进行 联机 备份;
而 manager 则提供了便捷的操作界面用于实现 联机 备份功能。
backup database; //执行备份
$full_database_backup = backupset('/dm8/Backup/Full', 'fullbak01'); // 全量备份
copy the database incrementally into the incremental backup set incrbak01; //增量备份
表空间备份: backup tablespace HRTBS;
Create an incremental backup of the HRTBS tablespace by backing up the directory located at '/dm8/backup/full' to incrhrtbsbak01 as part of the incremental backup set, which includes backing up '/dm8/backup/incr' as well.
表的备份: backup table dmhr.employee;
归档备份: backup ARCHIVELOG ALL;
脱机备份与还原数据库:为确保数据安全需先关闭数据库并进行相关操作,并支持库级及归档级别的数据复制及存储备份功能。该系统提供一个基于图形界面的管理界面用于完成DM系列脱机数据备份及恢复操作。
DmServiceDMSERVER stop //关闭数据库服务。
tool/./console-->配置-->添加-->选择备份路径--->获取备份
console-->新建备份
DMRMAN是DM脱机备份和还原的命令行工具。
dmrman // bin 目录下命令
将数据库文件'/dm8/data/DAMENG/dm.ini'复制到指定位置'/dm8/backup fuller fullbak0415'
// 表空间的还原与恢复需要在脱机状态下完成
dmrman // bin 目录下命令
restores the database '/dm8/data/DAMENG/dm.ini' tablespace primary from the full backup set '/dm8/backup/full/CONSOLEFULLBAK'
recover database '/dm8/data/DAMENG/dm.ini' tablespace main;
// 测试删除 SYSTEM.DBF,进行恢复
Revert the database '/dm8/data/DAMENG/dm.ini' to the backup set '/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;
// 切换到bin下 逻辑备份 导出
./dxCmd username=sysdba root="root@123321":5236 dm8BackupDir/dxp /file=full.dmp/log=full.log/full=y
全库导出:
./dexp username=sysdba/SYSDBA:5238 path=/dm8/backup/dexp file=full.dmp log=full.log full=y=yes
按用户导出:
./dexp ./user account name=sysdba/SYSDBA:5238 working directory=/dm8/backup/dexp file=dmtest.dmp log=dmtest.log owner=user account name=dmtest
按模式导出:
./dexp username systemdba:5238 folder:/dm8/backup/dexp fileset=DMTESTSCHE.DMP journal=DMTESTSCHE.LOG schema=DMTEST
按表导出:
The script path is ./dexp, which specifies the user account sysdba/SYSDBA with a password of 5238. This configuration is applied to the backup directory /dm8/backup/dexp for the data file t_dept.dmp and its corresponding log file t_dept.log, detailing the table structure SYSDBA.t_dept.
// 导入
./DIMP命令将系统用户名sysdba设置为密码信息Root@123321,并指定数值5236作为参数值运行该操作。该操作将执行以下设置:
- 指定目录为/dm8/backup/dexp
- 文件路径设为t_dept.dmp
- 日志文件设为t_dept.log
- 数据表结构设为SYSdba中的t_dept表
// 指定用户的schema
./dimp username=sysdba/SYSDBA:5238 folder=/dm8/backup/dexp file location=t_dept.dmp log file=t_dept.log data tables=SYSDBA.t_dept schema remapping=SYSDBA:DMHR
// 作业
代理-->创建代理-->作业--->新建作业
select * from user_jobs; // 查看作业
call dbms_job.run(1650357053); //运行作业
select * from SYSJOB.SYSJOBHISTORIES2; //查看作业
// odbc 配置
tar -zxvf /opt/unixODBC-2.3.0.tar.gz
//切换到解压目录执行
./configure
make
make install
修改 /usr/local/etc/ 文件 odbcinst.ini
cat odbcinst.ini
===============
[DM8 ODBC DRIVER]
Description = ODBC DRIVER FOR DM8
Driver = /dm8/bin/libdodbc.so
==================
-------------- /usr/local/etc/odbc.ini
cat odbc.ini
=================
[DM8]
Description = DM ODBC DSN
Driver = DM8 ODBC DRIVER
SERVER = localhost
UID = SYSDBA
PWD = Dameng123
TCP_PORT = 5238
====================
isql dm8 -v

如果该界面弹出文件打开数过小,需要设置下文件打开数:
永久生效方法,修改/etc/security/limits.conf 文件:
[root@KylinDCA04 opt]# vim /etc/security/limits.conf
ulimit -n 20480 (当前会话生效)
