一、安装及初始化数据库实例
环境:NeoKyin 7
达梦数据库:DM8
安装要求:
Linux(glibc 2.3 以上, 内核 2.6, 已安装 KDE/GNOME 桌面环境, 建议预先安装 UnixODBC 组件 gcc 包),
安装数据库建议最小内存 1G(物理内存至少为 1G, swap 分区一般是物理内存的 1.5 倍),
/tmp临时目录至少 600M
1、操作系统配置
查看操作系统信息
[root@localhost 桌面]# uname -a
查询glibc的版本
[root@localhost 桌面]# rpm -aq|grep glibc
配置防火墙
[root@localhost 桌面]# iptables -I INPUT -p tcp --dport 5901 -j ACCEPT
[root@localhost 桌面]# iptables -I INPUT -p tcp --dport 5902 -j ACCEPT
规划用户和安装目录
[root@localhost 桌面]# mkdir /dm8
[root@localhost 桌面]# groupadd dinstall
[root@localhost 桌面]# useradd -g dinstall dmdba
[root@localhost 桌面]# passwd dmdba
[root@localhost 桌面]# chown -R dmdba:dinstall /dm8
设置文件最大打开数目
[root@localhost 桌面]# ulimit -a
[root@localhost 桌面]# vi /etc/security/limits.conf
dmdba soft nofile 65536
dmdba hard nofile 65536
配置环境变量
[root@localhost 桌面]# su - dmdba
[dmdba@localhost 桌面]# vi ~/.bash_profile
export DM_HOME=“/dm8”
export PATH=DM_HOME/tool:$PATH:%HOME/bin
配置图形界面显示
[dmdba@localhost 桌面]# export DISPLAY=localhost:0.0
[dmdba@localhost 桌面]# xhost +
- 开始安装
将dm8安装包拷贝到指定目录,此处以拷贝/opt目录为例
[root@localhost opt]# mount -o loop /opt/dm8_setup.iso /mnt
[root@localhost opt]# su - root
[dmdba@localhost opt]# cd /mnt
(1)图形化安装
[dmdba@localhost mnt]# ./DMInstall.bin
按照顺序安装及配置即可
(2)命令行安装
[dmdba@localhost mnt]# ./DMInstall.bin -i
按提示进行选择
[dmdba@localhost mnt]# ./DMInstall.bin -i
[dmdba@localhost mnt]# su - root
[dmdba@localhost mnt]# cd /dm8/script/root/
[dmdba@localhost root]# ./root_installer.sh
- 新建实例
(1)图形化创建
[dmdba@localhost mnt]# cd /dm8/tool
[dmdba@localhost tool]# ./dbca.sh
按照提示完成实例创建
(2)命令行创建
[dmdba@localhost tool]# cd /dm8/bin
[dmdba@localhost bin]# ./dminit PATH=/dm8/data DB_NAME=DM01 INSTANCE_NAME=DM01 PORT_NUM=5236 SYSDBA_PWD=dameng123
[dmdba@localhost bin]# su
[root@localhost bin]# /dm8/script/root/dm_service_installer.sh -t dmserver -dm_ini /dm8/data/DM01/dm.ini -p DM01
[root@localhost bin]# systemctl enable DmServiceDM01
[root@localhost bin]# systemctl startDmServiceDM01
- 启动/重启/停止数据库实例
图形化操作
[root@localhost bin]# /dm8/tool/dmservice.sh
[root@localhost bin]# systemctl stop DmServiceDM01
二、DM8体系结构
物理存储结构
配置文件
/dm8/data/DAMENG *.ini文件
控制文件*(不建议随便去修改控制文件)*
/dm8/data/DAMENG *.ctl文件
数据文件
/dm8/data/DAMENG *.dbf文件
(数据文件的起始大小最小值是: 4096*页的大小。)
(表空间中数据文件的总数不超过 256 个)
重做日志文件
/dm8/data/DAMENG *.log文件
(查询重做日志文件 select path from v$rlogfile)
(重做日志不能删除, 所有日志文件大小要求一致)
备份文件(备份集: .bak 数据备份文件 .meta 元数据文件)
/dm8/data/DAMENG *.bak文件
归档日志文件
/dm8/data/DAMENG/dmarch.ini
跟踪日志文件
跟踪文件记录了系统各会话执行的 sql 语句, 错误信息, 主要错误和
性能问题, 启动跟踪日志, 对系统性能有较大的影响, 所以默认情况
下跟踪日志是关闭的。
DM.INI SVR_LOG 参数为 1 就打开了跟踪日志。
跟踪日志文件
DM_HOME/log目录下 命令格式为: DM_实例名_日期
记录了数据库运行期间的关键事件, 如启动, 关闭, 内存申请失败,io 错误等一致命的错误
逻辑存储结构
数据库: DM 数据库指的是磁盘上存放在 DM 数据库中的数据的集合
一般包括: 数据文件, 日志文件, 控制文件及临时文件等。
实例: 实例一般是由一组正在运行的 DM 后台进程/线程以及一个大
型的共享内存组成
页-----簇----段-----数据文件----表空间-----数据库
页: 是最小的逻辑单元, 是数据库最小的分配单位。
簇: 磁盘上连续的页组成, 一个簇总是在一个数据文件中。
段: 是一组簇的集合, 是簇的上级逻辑单位, 一个段可以跨多个数据
文件。
数据文件: 由一个或多个段组成
每一个表空间由一个或多个数据文件组成
数据库由一个或多个表空间组成。
页: 数据块, 大小是: 4k,8k,16k,32 默认值是 8k
数据页包含 4 个部分: 页头控制信息, 数据, 空闲空间, 行偏行移数
组。
簇: 是 16 个或 32 连续的页组成的, 默认 16
DM8内存结构
DM8 服务器使用的内存大概分为 3 个部分
缓冲区:
数据缓冲区
日志缓冲区
字典缓冲区
SQL 缓冲区
内存池:
共享内存池
其他运行时内存池
其他内存区:
排序区
HASH 区
具体内存结构可以查询相关资料进一步学习,
需要注意的是:DM8和Oracle类似 都是属于单个进程多个实例的数据库
三、工具及手册使用
DM8安装目录介绍:
bin:达梦数据库命令和lib库
bin2:UTF8
doc:用户手册和操作手册
driver:达梦数据库相关驱动包
include:c语言的头文件
jar:jar包(导入导出,快速加载,日志挖掘)
log:日志文件
jdk:java包
tool:客户端
script:脚本文件
web:dem平台类似oracle oem
工具介绍:
tool/dmservice.sh 查看DM数据库服务
tool/manager 可视化数据库管理工具
tool/dts 数据库迁移工具
tool/monitor 性能监测工具
tool/console 控制台工具
四、图形化界面操作数据库
主要是通过manager 进行数据库的操作
五、DMSQL操作数据库
1、用户与权限管理
创建用户
create user TEST0 identified by dameng123 default tablespace TB0;
查询用户状态
select username,account_status,lock_date from dba_users;
锁定用户
alter user TEST account lock;
解锁用户
alter user TEST account unlock;
查看权限
select grantee,granted_role from SYS.DBA_ROLE_PRIVS where grantee='TEST';
赋予权限
grant select on DMHR.EMPLOYEE to TEST;
收回权限
revoke SELECT on DMHR.EMPLOYEE from TEST;
2、表空间管理
查询表空间
select tablespace_name from user_tablespaces;
创建表空间
create tablespace "TBS" datafile '/dm8/data/DAMENG/TBS01.DBF' size 32;
维护表空间
查询表空间文件
select FILE_NAME,STATUS,TABLESPACE_NAME from dba_data_files;
1、表空间不足
方法一:alter tablespace TBS add datafile '/dm8/data/DAMENG/TBS02.DBF' size 32; 增加数据文件
方法二:alter tablespace TBS resize datafile '/dm8/data/DAMENG/TBS01.DBF' to 256; resize表空间大小
方法三:创建大表空间, 数据导出, 导入
2、更换存储位置
设置表空间脱机状态(offline)
alter tablespace TBS ine;
select tablespace_name,status from dba_tablespaces; TBS表空间的STATUS为1
修改存储位置
alter tablespace TBS rename datafile '/dm8/data/DAMENG/TBS01.DBF' to '/dm8/data/test.dbf';
表空间联机状态(online)
alter tablespace TBS online;
查询临时表空间
select para_name,para_value from v$dm_ini where para_name like 'TEMP%';
ROLL 表空间(不能脱机)
Roll空间不足时的resize:
alter tablespace roll resize datafile '/dm8/data/DAMENG/ROLL.DBF' to 1024;
删除表空间:
drop tablespace TBS;
3、表管理
创建表
CREATE TABLE "DMHR"."STU"
(
"ID" CHAR(10) NOT NULL,
"SNAME" VARCHAR(20) NOT NULL,
"SEX" CHAR(1),
"AGE" INT,
"TEL" VARCHAR(15) NOT NULL,
"ADDRESS" VARCHAR(50),
CLUSTER PRIMARY KEY("ID")) STORAGE(ON "DMHR", CLUSTERBTR) ;
增加注释
comment on table "DMHR"."STU" is 'stu info';
删除列
alter TABLE DMHR.STU DROP column company;
指定约束
非空约束
CREATE TABLE "DMHR"."STU0" ("ID" CHAR(10) NOT NULL);
alter table DMHR.STU modify SNAME VARCHAR not null;
唯一约束
CREATE TABLE "DMHR"."STU1" ("ID" CHAR(10) unique);
alter table DMHR.STU modify SNAME VARCHAR unique;
主键约束
CREATE TABLE "DMHR".STU1 ("ID" CHAR(10) primary KEY);
alter TABLE DMHR.STU0 modify ID primary KEY;
检查约束
create table DMHR.STU2(ID int CHECK(ID >= 5));
alter TABLE DMHR.STU2 modify ID check(ID <3);
外键约束(外键一定是其他表的主键!)
create table DMHR.STU3(SID int primary KEY);
create table DMHR.STU4(ID int primary KEY, SID int FOREIGN KEY REFERENCES DMHR.STU3(SID));
对列增加注释
comment on column DMHR.STU4.ID is '编号';
查看约束
select CONSTRAINT_NAME,CONSTRAINT_TYPE,TABLE_NAME,STATUS from dba_constraints where TABLE_NAME='STU4';
查看所有注释
select * from dba_col_comments where table_name='STU4';
把数据导入表中
插入单个数据
insert into DMHR.STU4(ID) values(4 );
通过sql脚本导入
start /home/dmdba/a.sql
表重命名
alter TABLE DMHR.STU RENAME to STU00;
启用和禁用约束
select CONSTRAINT_NAME,CONSTRAINT_TYPE,TABLE_NAME,STATUS from dba_constraints where TABLE_NAME='STU4';
找到约束名称后:
alter table DMHR.STU enable constraint 约束名;
4、索引管理
查看表的索引
select table_name,index_name from dba_indexes where table_name='STU';
创建索引表空间INDEX1
create tablespace INDEX1 datafile '/dm8/data/DAMENG/index1_01.dbf' size 32;
建立索引
create table test.emp as select * from DMHR.EMPLOYEE;
create index ind_emp on TEST0.emp(NAME) tablespace index1;
重建索引
alter index TEST0.ind_emp rebuild ;
查看表的执行计划
explain select * from TEST0.emp where NAME!=NULL;
收集统计信息
begin dbms_stats.gather_table_stats('TEST0','EMP');
end;
5、视图管理
查询视图
select * from DBA_VIEWS;
创建视图
create view V0 AS SELECT * from DMHR.STU1;
修改视图
create or replace view V0 as select ID from DMHR.STU2;
6、备份与还原
数据库备份就是制作数据库的“副本”
防止数据库丢失数据
在数据丢失后重建数据库
完全备份是指一个备份包含指定数据库或表空间的所有数据
增量备份是指在一次全备份或上一次增量备份后, 以后每次的备份只
需备份与前一次相比增加或者被修改的文件。
备份的方式 : 物理备份和逻辑备份
备份的介质: 磁盘, 磁带, 光盘
集群: 数据守护, dsc (rac)
(1)物理备份
冷备(dmap 服务是打开的, 数据库实例需要停止)
图形化界面:
使用console工具
命令行:
使用dmrman工具(到bin目录下执行dmrman) backup database '/dm8/data/DAMENG/dm.ini';
热备( dmap 服务是打开的, 数据库实例是打开的, 数据库是归档模式)
图形化界面:manager工具(菜单:管理服务器)
设置打归档状态mount(在菜单:管理服务器)
系统管理从打开->配置->设置归档状态-点击转换-确定。
-归档设置->添加归档目标(arch目录)-确定,
-系统管理-状态转换设置成打开-点击转换-确定
再执行 select name,status$ ,arch_mode from v$database;
新建备份
备份-库备份
SQL命令:
select name,status$,arch_mode from v$database; 看状态
alter database mount; 切换到mount状态
alter database add archivelog 'type=local,dest=/dm8/backup,file_size=64,space_limit=0';
alter database archivelog; 启用归档模式archivelog
alter database open; 切换到open状态
select name,status$,arch_mode from v$database; 看状态
(2)逻辑备份
逻辑导出(使用工具dexp):
./bin/dexp sysdba/dameng123@localhost:5236 file=dexp01.dmp log=dexp01.log directory=/dm8/backup/dexp full=y
逻辑导入(工具dimp):
./bin/dimp sysdba/SYSDBA@localhost:5239 file=/dm8/backup/dexp/dexp01.dmp log=/dm8/backup/dexp/dimp01.log
(2)数据库还原(脱机还原)
备份后
破坏表空间(举例:mv test.dbf test.dbf.bak)
重启数据库实例,表空间处于脱机状态
使用bin/dmrman工具:、
校验备份集
check backupset '/dm8/data/DAMENG/bak/DB_DAMENG_FULL_2020_09_16_15_47_25';
还原表空间
restore database '/dm8/data/DAMENG/dm.ini' tablespace "test" from backupset '/dm8/data/DAMENG/bak/DB_DAMENG_FULL_2020_09_16_15_47_25';
恢复表空间
recover database '/dm8/data/DAMENG/dm.ini' tablespace "test";
六、DM8开发:ODBC安装配置
达梦支持的语言: c c++ java python php perl .net
检查gcc
[root@localhost ~]# rpm -aq|grep gcc
[root@localhost ~]# cd /opt
解压
[root@localhost opt]# tar -xzvf unixODBC-2.3.0.tar.gz
配置odbc
[root@localhost unixODBC-2.3.0]# ./configure --enable-gui=no
编译
[root@localhost unixODBC-2.3.0]# make && make install
看版本
[root@localhost unixODBC-2.3.0]# odbc_config --version
查看ini文件路径
[root@localhost unixODBC-2.3.0]# odbcinst -j
配置 odbc.ini 和 odbcinst.ini
vi /usr/local/etc/odbc.ini
输入:
[dm8]
Description = DM ODBC DSND
Driver = DM8 ODBC DRIVER
SERVER = localhost
UID = SYSDBA
PWD = Dameng123
TCP_PORT = 5237
vi /usr/local/etc/odbcinst.ini
输入:
[DM8 ODBC DRIVER]
Description = ODBC DRIVER FOR DM8
Driver = /dm8/bin/libdodbc.so
验证是否安装完成
su - dmdba
isql dm8
安装完成!