失眠网,内容丰富有趣,生活中的好帮手!
失眠网 > 达梦数据库——DM8安装操作及体系架构介绍

达梦数据库——DM8安装操作及体系架构介绍

时间:2021-12-04 18:28:06

相关推荐

达梦数据库——DM8安装操作及体系架构介绍

文章目录

一、数据库行业的发展趋势二、国产数据库的现状1、自主研发三、达梦公司的介绍和达梦产品1、达梦公司的由来2、达梦公司的产品线四、DM8的安装及实例的管理1、软件信息收集2、硬件信息收集3、规划安装路径4、用户的规划5、配置环境变量6、设置文件最大打开数目7、选择相应的安装包8、安装数据库软件9、创建数据库10、连接数据库的两种方式11、达梦数据库模式及状态五、DM8工具及手册的使用1、数据库管理工具2、控制台工具3、性能监测工具4、达梦数据库手册的使用六、DM8体系架构1、物理存储结构2、逻辑存储结构3、内存结构4、DM线程管理七、DM8数据库结构介绍1、表空间管理2、用户管理3、模式对象管理4、DMSQL5、备份还原6、作业7、DM8开发

一、数据库行业的发展趋势

目前,对于数据库行业来说主要的数据库分类有自研系列、开源系列、引进混元系列、非关系型系列这几种,大概的可以看以下图中几种。

二、国产数据库的现状

其实从上个世纪80年代开始,国产数据库就已经开始慢慢的被人挖掘开发,国内的话也有不少的企业对于这方面在不断的投入、进步。以下是我分享的几个国产数据库,以及对国产数据库的看法。

1、自主研发

达梦:华中科技大学冯裕才老师(教授)创办,完全自主研发,有自己的一套产品体系。主要是以oracle为参数进行追赶的对象。人大金仓:人民大学王珊教授创办,自主研发。关系型数据库。神舟通用:神舟与南大能用合作开发的关系型数据库。更多用于数据分析领域。南大通用:自主研发,基于gbase的列存储,面向数据分析、数据仓库的数据库系统。

这些是我目前了解到的国内做数据库的厂商,如有其余的厂商欢迎评论区补充。

三、达梦公司的介绍和达梦产品

1、达梦公司的由来

达梦公司是在1980年的时候成立的课题组,因为当时日本人在我们中国把3卡车的数据库资料全部都销毁了,所以冯裕才教授立志一定打造国内自己的数据库,之后课题组就成立了,80年-92年之间,也是冯裕才老师以及他的学习经过坚持不懈努力的过程,不过天无绝人之路,到92年经过长达的研究,第一款产品DM1出来了,也成立了自己的研究所。

2、达梦公司的产品线

1980——课题组成立1992——研究所成立1993——DM11996——DM22000——成立武汉达梦数据库公司、DM3问世2001——成立上海达梦数据库公司2002——成立北京、成都、广州达梦数据库公司——DM4——DM5——DM6——DM7——DM8

四、DM8的安装及实例的管理

1、软件信息收集

(1)操作系统

[root@hdfeng03 ~]# uname -raLinux hdfeng03 3.10.0-1062.el7.x86_64 #1 SMP Wed Aug 7 18:08:02 UTC x86_64 x86_64 x86_64 GNU/Linux

(2)RPM安装包

[root@hdfeng03 ~]# rpm -qa | grep glibcglibc-common-2.17-292.el7.x86_64glibc-headers-2.17-292.el7.x86_64glibc-2.17-292.el7.x86_64glibc-devel-2.17-292.el7.x86_64

2、硬件信息收集

[root@hdfeng03 ~]# cat /proc/cpuinfo1、查看是哪个公司的芯片,需要使用相应的DM软件安装包进行安装,不然会不兼容[root@hdfeng03 ~]# free -mtotal used freeshared buff/cache availableMem: 7802 1877 138 7 5787 5647Swap:409519 40762、安装数据库的话建议最小内存1GSWAP分区的话按物理内存的1.5倍来配置(如果内存足够大,可以适当减小swap大小)[root@hdfeng03 ~]# fdisk -l[root@hdfeng03 ~]# df -h3、安装达梦程序,需要规划好硬盘大小以及sql日志的存放,安装时需要扩大/tmp分区,至少600M网络要求,至少要百兆网卡,可以使用以下命令进行查看[root@hdfeng03 ~]# ethtool eth0Speed: 1000Mb/s4、远程访问时数据库时,需要注意设置防火墙和selinux策略5、对于系统的要求Linux(glibc2.3以上,内核2.6,已安装KDE/GNOME桌面环境,建议先安装UnixODBC组件gcc包)

3、规划安装路径

安装路径[root@hdfeng /]# mkdir -p /dm8

4、用户的规划

一般的话使用DM数据库都会创建一个dmdba的帐号还有一个dinstall的组

[root@hdfeng ~]# groupadd dinstall创建所属组[root@hdfeng ~]# useradd -g dinstall dmdba创建所属用户[root@hdfeng ~]# id dmdbauid=1001(dmdba) gid=1001(dinstall) groups=1001(dinstall)[root@hdfeng ~]# passwd dmdba修改用户名密码Changing password for user dmdba.New password:BAD PASSWORD: The password is shorter than 8 charactersRetype new password:passwd: all authentication tokens updated successfully.[root@hdfeng ~]# chown -R dmdba:dinstall /dm8给所属目录附权

5、配置环境变量

进到变量文件到文件最后加以下两条语句即可[root@hdfeng ~]# vim /etc/profileexport DM_HOME=/dm8export PATH=$PATH:$HOME/.local/bin:$HOME/bin:$DM_HOME/bin:$DM_HOME/tool[root@hdfeng ~]# source /etc/profile配置完别忘了source /etc/profile哟!

6、设置文件最大打开数目

方法一:[root@hdfeng ~]# ulimit -n 65535计算机临时使用,重启以后失效,一般用这种也可。方法二:[root@hdfeng ~]# vim /etc/security/limits.conf* soft nofile 65535* hard nofile 65535dmdba soft nofile 65535dmdba hard nofile 65535添加dmdba用户或者添加全部

7、选择相应的安装包

达梦数据库的版本:

开发版:不能商用标准版:一般小型应用安全版:在企业版的基础上做了安全特性,增加了强访问控制,四权分立,一般会用到涉密机或者安全部较高的机器。企业版:生产环境中应用最多的一个版本,三权分立

我们可以进行相应的版本进行选择!这里的话因为是做测试用就选择了开发版!

8、安装数据库软件

此次我们选择图形化的安装,准备好相应的dm8安装包进行安装,在我们DM官网可以下载到相应的开发版安装包,附上网址:达梦官方安装包下载

1、进行安装包的挂载[root@hdfeng opt]# mount -o loop /opt/dm8_setup.iso /mnt/mount: /dev/loop0 is write-protected, mounting read-only[root@hdfeng opt]# cd /mnt/[root@hdfeng mnt]# lltotal 633569-r-xr-xr-x 1 root root 645819977 Apr 29 16:51 DMInstall.bin-r-xr-xr-x 1 root root 2951496 Apr 29 16:04 DM_Install.pdf-r-xr-xr-x 1 root root 848 Apr 29 16:07 release_en.txt-r-xr-xr-x 1 root root 953 Apr 29 16:07 release_zh.txt然后进行安装,进行图形化界面的附权[root@hdfeng ~]# export DISPLAY=:0.0[root@hdfeng ~]# xhost +access control disabled, clients can connect from any host[root@hdfeng ~]# su - dmdba Last login: Sun Jul 12 17:01:15 CST on pts/1-sh-4.2$ bash [dmdba@hdfeng ~]$ export DISPLAY=:0.0[dmdba@hdfeng ~]$ xhost +access control disabled, clients can connect from any host然后使用bin包开始安装数据库[dmdba@hdfeng mnt]$ ./DMInstall.bin The Temp Directory's size is too small, please set the size more than 800M. Or set DM_INSTALL_TMPDIR environment variable to assign the temporary directory of DM Installer.如果遇到以上报错,则进行/tmp目录的扩容[root@hdfeng mnt]# sudo mount -t tmpfs -o size=1G none /tmp[root@hdfeng mnt]# df -Th /tmpFilesystemType Size Used Avail Use% Mounted onnone tmpfs 1.0G0 1.0G 0% /tmp/tmp目录如果小于800M,会导致数据库无法进行安装,一般给1G即可

图形化安装步骤:

(1)进行图形化的安装

(2)在这一步如果是开发版,没有key的话就直接下一步即可

(3)选择刚才创建的目录

(4)至此数据库安装完成

(5)软件的卸载

[dmdba@hdfeng dm8]# cd /dm8/[dmdba@hdfeng dm8]# ./uninstall.sh到dm8目录下执行uninstall.sh脚本即可卸载。

命令行安装数据库:

[dmdba@hdfeng mnt]# ./DMInstall.bin -i 请选择安装语言(C/c:中文 E/e:英文) [C/c]:c解压安装程序......... core file size(blocks, -c) 0data seg size (kbytes, -d) unlimitedscheduling priority (-e) 0file size(blocks, -f) unlimitedpending signals (-i) 63342max locked memory (kbytes, -l) 64max memory size (kbytes, -m) unlimitedopen files (-n) 65535pipe size (512 bytes, -p) 8POSIX message queues(bytes, -q) 819200real-time priority (-r) 0stack size (kbytes, -s) 8192cpu time(seconds, -t) unlimitedmax user processes (-u) 63342virtual memory(kbytes, -v) unlimitedfile locks (-x) unlimited可打开文件数过少,建议至少设置为65536或更多。欢迎使用达梦数据库安装程序是否输入Key文件路径? (Y/y:是 N/n:否) [Y/y]:n是否设置时区? (Y/y:是 N/n:否) [Y/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]:21安装类型:1 典型安装2 服务器3 客户端4 自定义请选择安装类型的数字序号 [1 典型安装]:1所需空间: 1056M请选择安装目录 [/opt/dmdbms]:/dm8可用空间: 55G是否确认安装路径(/dm8)? (Y/y:是 N/n:否) [Y/y]:y安装前小结安装位置: /dm8所需空间: 1056M可用空间: 55G版本信息: 有效日期: 安装类型: 典型安装是否确认安装? (Y/y:是 N/n:否):y-07-12 20:04:39 [INFO] 安装达梦数据库...-07-12 20:04:40 [INFO] 安装 基础 模块...-07-12 20:04:42 [INFO] 安装 服务器 模块...-07-12 20:04:42 [INFO] 安装 客户端 模块...-07-12 20:04:42 [INFO] 安装 驱动 模块...-07-12 20:04:42 [INFO] 安装 手册 模块...-07-12 20:04:42 [INFO] 安装 服务 模块...-07-12 20:04:44 [INFO] 移动ant日志文件。-07-12 20:04:44 [INFO] 更改安装目录权限完成。-07-12 20:04:44 [INFO] 正在启动DmAPService服务...-07-12 20:04:45 [INFO] 启动DmAPService服务成功。-07-12 20:04:45 [INFO] 安装达梦数据库完成。安装结束

9、创建数据库

一、使用图形化的方式创建数据库

(1)图形化界面安装数据库使用/dm8/tool/dbca.sh脚本

(2)选择相应的数据库目录

(3)修改数据库名、实例名、端口号,我们这里选择默认

(4)这一步我们能选择控制文件,数据文件,日志文件、初始化日志的存放目录

(5)选择数据库的簇、页大小等等,可以按自己的需求进行设置

(6)设置数据库的命令,默认用户密码都是DMDBA

(7)示例库的创建,我们这里不做演示就不选择创建了。

(8)数据库的概要

(9)执行以下命令来完成对数据库实例的服务注册即可

[root@hdfeng mnt]# mv /dm8/bin/DmServiceDMSERVER.service /usr/lib/systemd/system/DmServiceDMSERVER.service[root@hdfeng mnt]# systemctl enable DmServiceDMSERVER.serviceCreated symlink from /etc/systemd/system/multi-user.target.wants/DmServiceDMSERVER.service to /usr/lib/systemd/system/DmServiceDMSERVER.service.[root@hdfeng mnt]# systemctl start DmServiceDMSERVER.service自己使用命令行的试进行进行服务的创建:[root@hdfeng root]# ./dm_service_installer.sh -t dmserver -dm_ini /dm8/data/DM02/dm.ini -p DM02Created symlink from /etc/systemd/system/multi-user.target.wants/DmServiceDM02.service to /usr/lib/systemd/system/DmServiceDM02.service.创建服务(DmServiceDM02)完成

二、使用命令行的方式创建数据库

[dmdba@hdfeng bin]$ ./dminit path=/dm8/data DB_NAME=DM02 INSTANCE_NAME=DM02 PORT_NUM=5237initdb V8db version: 0x7000afile dm.key not found, use default license!License will expire on -04-28log file path: /dm8/data/DM02/DM0201.loglog file path: /dm8/data/DM02/DM0202.logwrite to dir [/dm8/data/DM02].create dm database success. -07-12 20:31:00

10、连接数据库的两种方式

有两种方式进行数据库的连接:

方式一:使用/bin目录下的disql进行登录

[root@hdfeng bin]# ./disql SYSDBA/SYSDBA服务器[LOCALHOST:5236]:处于普通打开状态登录使用时间: 2.663(毫秒)disql V8SQL>

方式二:使用图形化界面脚本进行登录

11、达梦数据库模式及状态

(一)数据库模式

1、普通模式:用户可以正常访问数据库,操作没有限制2、主库模式:用户可以正常访问数据库,对数据库对象的修改强制生成redo日志,在归档有效的时候,发送redo日志到备库。3、备库模式:接收主库发送作业的redo日志并重做日志,数据库对用户只读。

(二)数据库的状态

1、mount:配置状态2、open:打开状态3、suspend:挂起状态4、shutdown:关闭状态

(三)状态切换

对于数据库的状态切换有以下几种:

mount——open:根据控制文件,打开所有的数据文件和重做日志文件open——mountshutdown——openshutdown——mount:分配共享内存,启动后台的进程或线程,打开控制文件

状态切换的命令:

[dmdba@hdfeng bin]$ disql SYSDBA/SYSDBASQL> select status$ from v$instance;行号STATUS$---------- -------1OPEN已用时间: 0.459(毫秒). 执行号:533.SQL> alter database mount ;操作已执行已用时间: 00:00:01.761. 执行号:0.SQL> select status$ from v$instance;行号STATUS$---------- -------1MOUNT已用时间: 0.370(毫秒). 执行号:534.SQL> alter database open;操作已执行已用时间: 00:00:01.719. 执行号:0.

服务的状态、启停方式以及判断DM数据库是否启动:

服务的启停:[dmdba@hdfeng bin]$ ./dmserver /dm8/data/DAMENG/dm.ini [dmdba@hdfeng bin]$ ./DmServiceDMSERVER start[dmdba@hdfeng bin]$ systemctl stop DmServiceDMSERVER.service 服务的判断:[dmdba@hdfeng bin]$ netstat -nlp | grep 523*[dmdba@hdfeng bin]$ ps -ef | grep dmserver

五、DM8工具及手册的使用

DM8目录介绍

bin:达梦数据库命令和lib库bin2:UTF8doc:用户手册和操作手册driver:达梦数据库相关驱动包include:c语言的头文件jar:jar包(导入导出,快速加载,日志挖掘)log:日志文件jdk:java包tool:客户端script:脚本文件web:dem平台类似oracle oem

1、数据库管理工具

一共两种

disql:使用命令行登录数据库[dmdba@hdfeng tool]$ ./manager使用图形化界面登录数据库

2、控制台工具

控制台管理工具主要是用来查看、修改实例的参数

[dmdba@hdfeng tool]$ ./console

备份还原工具:

主要是用做各数据库之间的迁移,以及SQL的导入导出使用

[dmdba@hdfeng tool]$ ./dts

3、性能监测工具

主要用来监控数据库服务是否正常,监控表空间大小、类型是否正常。

[dmdba@hdfeng tool]$ ./monitor

4、达梦数据库手册的使用

[dmdba@hdfeng doc]$ lltotal 29620-rwxr-xr-x 1 dmdba dinstall 11009446 Jul 12 20:04 DM8_SQL语言使用手册.pdf-rwxr-xr-x 1 dmdba dinstall 2951496 Jul 12 20:04 DM8安装手册.pdf-rwxr-xr-x 1 dmdba dinstall 6836801 Jul 12 20:04 DM8程序员手册.pdf-rwxr-xr-x 1 dmdba dinstall 9521659 Jul 12 20:04 DM8系统管理员手册.pdfdrwxr-xr-x 2 dmdba dinstall4096 Jul 12 20:04 special[dmdba@hdfeng doc]$ ll special/total 35084-rwxr-xr-x 1 dmdba dinstall 1389891 Jul 12 20:04 DM8_dexp和dimp使用手册.pdf-rwxr-xr-x 1 dmdba dinstall 901011 Jul 12 20:04 DM8_Disql使用手册.pdf-rwxr-xr-x 1 dmdba dinstall 498747 Jul 12 20:04 DM8_dmdbchk使用手册.pdf-rwxr-xr-x 1 dmdba dinstall 1335002 Jul 12 20:04 DM8_dmfldr使用手册.pdf-rwxr-xr-x 1 dmdba dinstall 1094239 Jul 12 20:04 DM8_dminit使用手册.pdf-rwxr-xr-x 1 dmdba dinstall 1014554 Jul 12 20:04 DM8_dmPython使用手册.pdf-rwxr-xr-x 1 dmdba dinstall 531123 Jul 12 20:04 DM8_Linux服务脚本使用手册.pdf-rwxr-xr-x 1 dmdba dinstall 1176413 Jul 12 20:04 DM8_PROC使用手册.pdf-rwxr-xr-x 1 dmdba dinstall 1725377 Jul 12 20:04 DM8SQL程序设计.pdf-rwxr-xr-x 1 dmdba dinstall 2116892 Jul 12 20:04 DM8作业系统使用手册.pdf-rwxr-xr-x 1 dmdba dinstall 3611210 Jul 12 20:04 DM8共享存储集群.pdf-rwxr-xr-x 1 dmdba dinstall 4241475 Jul 12 20:04 DM8备份与还原.pdf-rwxr-xr-x 1 dmdba dinstall 1974907 Jul 12 20:04 DM8大规模并行处理MPP.pdf-rwxr-xr-x 1 dmdba dinstall 1949878 Jul 12 20:04 DM8安全管理.pdf-rwxr-xr-x 1 dmdba dinstall 6564729 Jul 12 20:04 DM8数据守护与读写分离集群V4.0.pdf-rwxr-xr-x 1 dmdba dinstall 4815259 Jul 12 20:04 DM8系统包使用手册.pdf-rwxr-xr-x 1 dmdba dinstall 952838 Jul 12 20:04 DM8集群代理使用手册.pdf

以上都是我们DM数据库对于数据库接口以及一些功能使用的手册,感兴趣的小伙伴可以通过这些手册进行学习!

六、DM8体系架构

1、物理存储结构

(一)配置文件

在实例目录下,所有以ini结尾的文件都是DM数据库的实例配置文件

[dmdba@hdfeng DAMENG]$ ll *.ini -rw-r--r-- 1 dmdba dinstall 907 Jul 12 20:19 dmarch_example.ini-rw-r--r-- 1 dmdba dinstall 2147 Jul 12 20:19 dmdcr_cfg_example.ini-rw-r--r-- 1 dmdba dinstall 631 Jul 12 20:19 dmdcr_example.ini-rw-r--r-- 1 dmdba dinstall 49012 Jul 12 20:19 dm.ini-rw-r--r-- 1 dmdba dinstall 1537 Jul 12 20:19 dminit_example.ini-rw-r--r-- 1 dmdba dinstall 2070 Jul 12 20:19 dmmal_example.ini-rw-r--r-- 1 dmdba dinstall 1277 Jul 12 20:19 dmmonitor_example.ini-rw-r--r-- 1 dmdba dinstall 288 Jul 12 20:19 dmmpp_example.ini-rw-r--r-- 1 dmdba dinstall 1679 Jul 12 20:19 dmtimer_example.ini-rw-r--r-- 1 dmdba dinstall 2146 Jul 12 20:19 dmwatcher_example.ini-rw-r--r-- 1 dmdba dinstall 635 Jul 12 20:19 sqllog_example.ini-rw-r--r-- 1 dmdba dinstall 479 Jul 12 20:19 sqllog.ini

(二)控制文件

以ctl为后缀的都是DM数据库实例的控制文件,里面的内容主要是一些数据库实例的路径等信息

[dmdba@hdfeng DAMENG]$ ll *.ctl -rw-r--r-- 1 dmdba dinstall 5120 Jul 12 20:20 dm.ctl

(三)数据文件

数据文件都是以.DBF结尾的,数据文件的起始大小最小都是以4096*页大小的。

各表空间里面的数据文件大小总数也不能超过256个。

以下是数据库实例默认的4个表空间:

[dmdba@hdfeng DAMENG]$ ll *.DBF-rw-r--r-- 1 dmdba dinstall 134217728 Jul 12 20:19 MAIN.DBF-rw-r--r-- 1 dmdba dinstall 134217728 Jul 12 20:55 ROLL.DBF-rw-r--r-- 1 dmdba dinstall 44040192 Jul 12 20:55 SYSTEM.DBF-rw-r--r-- 1 dmdba dinstall 27262976 Jul 12 20:20 TEMP.DBF

(四)重做日志文件

以实例名.log结尾的文件都是重做日志文件,以下为重做日志文件

[dmdba@hdfeng DAMENG]$ ll DAMENG*.log-rw-r--r-- 1 dmdba dinstall 268435456 Jul 13 00:45 DAMENG01.log-rw-r--r-- 1 dmdba dinstall 268435456 Jul 12 20:20 DAMENG02.log

(五)备份文件

在数据库实例中,以.bak为扩展名的文件都是数据备份文件.meta为元数据文件

(六)归档日志文件

归档日志文件也可以在dm.ini的同级目录下,不过需要手动创建,实例创建时不会自动生成,归档日志可以将系统恢复到故障发生的前一刻,也可以还原到指定的时间点,如果没有这个归档日志,只能用备份进行恢复

(六)跟踪日志文件

跟踪文件记录了各会话执行的sql语句,数据库错误信息,还有一些性能问题,开启跟踪日志,对系统的性能影响会有较大的影响,一般情况下跟踪日志都是关闭的。

在数据库实例目录下dm.ini配置文件中SVR_LOG参数为1时则是打开跟踪日志。

(七)事件日志文件

事件日志文件一般存放在数据库下,里面记录了数据库实例的运行时的一些关键事件,比如说数据库的启动,关闭、内存的申请情况,以及io的一些情况,在本方中,对于数据库的安装目录为/dm8,所以日志就在/dm8/log目录下。

注:一般事件日志文件命令格式为:

[dmdba@hdfeng log]$ ll-rw-r--r-- 1 dmdba dinstall 33497 Jul 13 00:55 dm_DMSERVER_20.logDM_实例名_日期

2、逻辑存储结构

(一)数据库

一般指在磁盘上存储DM数据库中的数据的集合,一般包括:数据文件、日志文件、控制文件以及临时文件等。

(二)实例

实例一般由一组正在运行的DM后台进程、线程以及一个大型的共享内存组成的

数据库的组成:

页——簇——段——数据文件——表空间——数据库

页:页是最小的逻辑单元,数据库最小的分配单位,DM的页的话一般大小有以下几种4K/8K/16K/32k,默认数据库为8K(页包含的信息:数据、free space、行偏行移数组)

簇:在磁盘上连续的页组成的即簇,一个簇总是在一个数据文件中。一般由16或32个连续页组成,DM数据库中默认是16

段:是一组簇的集合,族的上组逻辑单元,一个段可以跨多个数据文件

数据文件:是由一个或多个段组成

表空间:由一个或多个数据文件组成

数据库:由一个或多个表空间组成

3、内存结构

(一)共享内存

共享内存的话其实是在实例启动的时候从操作系统那里申请了一大片的内存,实例中所有使用的都可在这个共享内存池中进行申请或者释放,可以在dm.ini配置文件中进行配置。

MEMORY_TARGET=0表示不限制大小MEMORY_POOL公共池共享内存池中包括:公共池、hash区、排序区、重做日志缓冲区、数据缓冲区、字典缓冲区、sql缓冲区

(二)数据缓冲区

数据缓冲的参数的话主要是buffer。

缓存使用的是数据块,能使用数据缓冲区增加逻辑读、提高修改、查询的性能。

在DM数据库中的话可以使用v$parameter来查看缓冲的参数类型

SQL> select name,type from v$parameter where name='BUFFER';行号NAME TYPE---------- ------ -------1BUFFER IN FILE已用时间: 5.479(毫秒). 执行号:535.可以使用以下系统过程来对buffer的大小进行修改,不过要重启数据库生效SQL> sp_set_para_value(2,'buffer',1024);

(三)字典缓冲区、sql缓冲区、重做日志缓冲区、排序区、hash区、ssd缓冲区

字典缓冲区:主要存的是一些数据字典的信息如模式信息,表信息,列 信息,触发器信息等。实例会将部分的数据字黄信息加载到字典缓冲 区中,并采用 LRU算法进行字典信息的控制。

SQL缓冲区:主要是用来存储执行计划、包信息、结果集的缓存等,对于一些SQL类别比较多,PKG比较多、比较复杂的系统建议把该缓冲区调大

重做日志缓冲区:主要是存储入重做日志,避免日志直接对io进行读写影响数据库的性能。

排序区:提供排序所需要的内存空间,如果是该空间无法完成的会转到磁盘上,其实对于磁盘上的排序受sort_buf_size参数的影响,如果是内存放不下的会根据以下三种方式进行处理:

1、MTAB(普通临时表)

2、FTAB(临时文件表)

3、MMT(内存映射表)

HASH区:hash内存片其实在服务器上没有专门的内存给hash使用,这个缓冲区是虚拟缓冲区

hash的相应参数:

HJ_BUF_GLOBAL_SIZE全局hash join 最大的内存空间,如果hash过多,需要设置的大一些HJ_BUF_SIZE单次hash join操作的最大空间,每个会话都会占用一次这个空间HAGR_BUF_SIZE单次hash分组最大的内存空间

SSD缓冲区:内存缓冲与普通磁盘之间的缓冲层,默认是关闭的,启动后设置ssd_buf_size为0并且指定ssd_file_path的路径即可。

(四)其它运行的内存池

主要的话有两种:

1、一种是直接从内存池申请需要的内存大小2、直接从操作系统申请一大片内存来做成自己模块的内存池来使用例:VM_POOL/SESS_POOL/RT_HEAP等。

4、DM线程管理

(一)监听线程

在服务器端口上进行循环监听,有客户进行连接请求,该线程会生成会话申请任务,加入工作线程,等待后续的工作线程进行处理。

(二)IO线程

主要处理不在缓冲区中的数据块,将数据块读入缓冲区缓冲区满或者关闭时,将部分脏数据读入磁盘 检查点到来时,将脏数据读入磁盘

(三)工作线程(两种)

普通内核线程用户态线程

(四)调度线程

接管系统中需要调度的任务每秒进行轮询一次

(五)日志重做线程

用于系统故障恢复,根据redo日志进行并行故障恢复

(六)日志归档线程(两种)

同步归档线程:负责本地归档、远程归档任务异步归档线程:负责远程异步归档

(七)日志刷新线程

作用:用于将事务提交或者检查点到达时将日志缓冲区中的redo日志写到日志文件中。如配置了归档日志,flush线程日志刷盘前,将日志通过网络直接发到实时备机

七、DM8数据库结构介绍

1、表空间管理

(1)表空间的介绍

表空间是由一个或多个数据文件组成的,表空间其实是数据库的一个容器用来存放数据库的一些数据对象(表、索引、视图、元数据等等)

DM默认的表空间有以下几种:

SYSTEM:数据字典和全局的系统数据ROLL:存入数据库运行过程中生产的回滚记录TEMP:临时表空间MAIN:存放对象数据的表空间,创建相应的对象(模式)不指定表空间则默认放到该表空间下HMAIN:HUGE表空间

查询表空间:

SQL> select tablespace_name from user_tablespaces;行号TABLESPACE_NAME---------- ---------------1SYSTEM2ROLL3TEMP4MAIN5HMAIN已用时间: 3.657(毫秒). 执行号:536.

创建表空间:

一般在自己规划的时候就要进行表空间的创建,预估后面表空间大概需要使用多大,也可以使用resize对原表空间进行扩容。

普通创建:SQL> create tablespace "test" datafile '/dm8/data/DAMENG/test01.DBF' size 128;操作已执行已用时间: 14.874(毫秒). 执行号:537.自增长创建:SQL> create tablespace "test1" datafile '/dm8/data/DAMENG/test02.DBF' size 128 autoextend on next 1 maxsize 1024,'/dm8/data/DAMENG/test03.DBF' size 128 autoextend on next 1 maxsize 1024 CACHE=NORMAL;操作已执行已用时间: 19.540(毫秒). 执行号:538.

表空间的状态(两种)

脱机状态联机状态

查看创建的表空间:

SQL> select FILE_NAME,STATUS,TABLESPACE_NAME FROM dba_data_files;行号FILE_NAME STATUS TABLESPACE_NAME---------- --------------------------- --------- ---------------1/dm8/data/DAMENG/SYSTEM.DBF AVAILABLE SYSTEM2/dm8/data/DAMENG/test03.DBF AVAILABLE test13/dm8/data/DAMENG/test02.DBF AVAILABLE test14/dm8/data/DAMENG/test01.DBF AVAILABLE test5/dm8/data/DAMENG/MAIN.DBF AVAILABLE MAIN6/dm8/data/DAMENG/TEMP.DBF AVAILABLE TEMP7/dm8/data/DAMENG/ROLL.DBF AVAILABLE ROLL7 rows got已用时间: 4.799(毫秒). 执行号:539.在已有的表空间添加数据文件:SQL> alter tablespace "test" add datafile '/dm8/data/DAMENG/test04.DBF' size 128;操作已执行已用时间: 10.944(毫秒). 执行号:543.

修改表空间状态:

SQL> alter tablespace "test" offline;操作已执行已用时间: 90.001(毫秒). 执行号:544.SQL> alter tablespace "test" online;操作已执行已用时间: 3.949(毫秒). 执行号:545.

修改表空间位置:(只能在表空间为脱机状态下使用)

SQL> alter tablespace "test" rename datafile '/dm8/data/DAMENG/test01.DBF' to '/dm8/test01.DBF';操作已执行已用时间: 114.615(毫秒). 执行号:547.SQL> alter tablespace "test" rename datafile '/dm8/data/DAMENG/test04.DBF' to '/dm8/test02.DBF';操作已执行已用时间: 108.152(毫秒). 执行号:548.

(2)临时表空间

临时表空间的查看:

SQL> select para_name,para_value from v$dm_ini where para_name like 'TEMP%';行号PARA_NAME PARA_VALUE---------- ---------------- ----------------1TEMP_PATH /dm8/data/DAMENG2TEMP_SIZE 103TEMP_SPACE_LIMIT 0已用时间: 4.131(毫秒). 执行号:550.

(3)ROLL表空间

ROLL表空间在实际场景中使用到的不多,这里不过多的讲解,用法其实和普通表空间类似。

(4)删除表空间

SQL> drop tablespace "test";操作已执行已用时间: 123.176(毫秒). 执行号:551.

2、用户管理

概念:

在数据库中用户管理分三块用户、权限、角色

权限:

(1)权限:执行特定类型sql或访问其它模式对象的权利

(2)系统权限:对数据库对象的创建、删除、修改等等。

(3)对象权限:对数据库对象数据的操作权限。

数据库自带用户:

SYSDBA:数据库管理员SYS:内置用户无法登录SYSSSO:数据库安全员SYSAUDITOR:数据库审计员SYSDBO:数据库对象操作员

创建用户示例:

示例1:建立用户test,可以创建自己的表、有属于自己的表空间,密码要求60天变更一次

SQL> create user "test" identified by "test123123" limit failed_login_attemps 3,password_life_time 60,password_lock_time 1,password_grace_time 10 default tablespace "test1";操作已执行已用时间: 26.402(毫秒). 执行号:553.

查看用户的权限:

查看test用户所拥有的权限SQL> SELECT * FROM SYS.DBA_ROLE_PRIVS WHERE GRANTEE='TEST';行号GRANTEE GRANTED_ROLE ADMIN_OPTION DEFAULT_ROLE---------- ------- ------------ ------------ ------------1TEST PUBLIC N NULL已用时间: 1.553(毫秒). 执行号:559.查看public所拥有的权限SQL> SELECT * FROM SYS.DBA_SYS_PRIVS WHERE GRANTEE='PUBLIC';行号GRANTEE PRIVILEGE ADMIN_OPTION---------- ------- ---------------- ------------1PUBLIC INSERT TABLENO2PUBLIC UPDATE TABLENO3PUBLIC DELETE TABLENO4PUBLIC SELECT TABLENO5PUBLIC REFERENCES TABLE NO6PUBLIC GRANT TABLENO7PUBLIC INSERT VIEWNO8PUBLIC UPDATE VIEWNO9PUBLIC DELETE VIEWNO10 PUBLIC SELECT VIEWNO11 PUBLIC GRANT VIEW NO行号GRANTEE PRIVILEGEADMIN_OPTION---------- ------- ------------------------ ------------12 PUBLIC EXECUTE PROCEDURE NO13 PUBLIC GRANT PROCEDURENO14 PUBLIC SELECT SEQUENCENO15 PUBLIC GRANT SEQUENCE NO16 PUBLIC EXECUTE PACKAGENO17 PUBLIC GRANT PACKAGE NO18 PUBLIC SELECT ANY DICTIONARY NO19 PUBLIC SELECT MATERIALIZED VIEW NO20 PUBLIC GRANT DOMAIN NO21 PUBLIC USAGE DOMAIN NO22 PUBLIC DUMP TABLENO22 rows got已用时间: 1.413(毫秒). 执行号:560.附创建表权限给用户testSQL> grant create table to TEST;操作已执行已用时间: 1.881(毫秒). 执行号:561.用户创建表成功SQL> connect test密码:服务器[LOCALHOST:5236]:处于普通打开状态登录使用时间: 2.691(毫秒)SQL> create table t1(id int);操作已执行已用时间: 5.763(毫秒). 执行号:563.

示例2:创建用户test1,用户60天更改一次密码,密码尝试连接2次失败,帐号锁定5分钟,能查询TEST.T1表

使用manager管理工具创建用户:

点击确定即可完成用户的创建。

用户的状态查询:

SQL> select username,account_status,lock_date from dba_users;行号USERNAME ACCOUNT_STATUS LOCK_DATE---------- ---------- -------------- ---------1SYSSSOOPEN NULL2TEST OPEN NULL3SYSDBAOPEN NULL4TEST1OPEN NULL5SYS OPEN NULL6SYSAUDITOR OPEN NULL6 rows got已用时间: 8.813(毫秒). 执行号:628.

用户的解锁与锁定:

SQL> alter user test1 account lock;操作已执行已用时间: 2.158(毫秒). 执行号:629.SQL> alter user test1 account unlock;操作已执行已用时间: 3.655(毫秒). 执行号:630.

给用户赋(删)权限:

SQL> grant delete on TEST.T1 to TEST1;操作已执行已用时间: 2.528(毫秒). 执行号:632.SQL> revoke select on TEST.T1 FROM TEST1;操作已执行已用时间: 3.183(毫秒). 执行号:633.

示例3:公司招聘一批人员,要求权限固定,只能录入test表的权限,角色为一组固定权限的集合。

SQL> create role r1;操作已执行已用时间: 3.069(毫秒). 执行号:641.SQL> grant insert on TEST.T1 TO r1;操作已执行已用时间: 2.156(毫秒). 执行号:642.SQL> grant references any table to r1;操作已执行已用时间: 1.937(毫秒). 执行号:643.SQL> grant r1 to test1;操作已执行已用时间: 1.891(毫秒). 执行号:644.SQL> connect TEST1;密码:服务器[LOCALHOST:5236]:处于普通打开状态登录使用时间: 2.542(毫秒)SQL> insert into TEST.T1 VALUES(2);影响行数 1已用时间: 1.459(毫秒). 执行号:692.SQL> commit;操作已执行已用时间: 0.218(毫秒). 执行号:645.

删除用户和角色:

SQL> drop user test1 cascade;操作已执行已用时间: 20.268(毫秒). 执行号:646.SQL> drop role r1;操作已执行已用时间: 2.489(毫秒). 执行号:647.

3、模式对象管理

(一)模式

模式其实就是类似mysql里面的一个库,里面可以很多对象,这些对象可以是表、视图、索引等等还有一些其它对象

(二)模式对象

指的是在模式下面的一些内容。例:表、视图、约束、索引、序列、包、同义词、存储过程、函数、类、域。

在DM8以及以往版本中,创建用户时会同时创建一个同名的模式,如果有同名的模式存在,该同名用户无法创建。同时一个用户下可以拥有多个模式。

(三)表的管理

达梦支持的表有以下几种:

索引组织表、堆表、临时表、分区表、外部表。

表的定义:

表的命名、表的数据类型、表的存储位置 、表的约束、注释等等

示例1:

(1)创建一张学生表

条件:表名STUDENT 学号 id char(10) 姓名 sname varchar(15) not null

年龄 age int 性别 sex char(1) 电话 phone varchar(11) not null 家庭地址 addredss varchar(100)

表空间 TEST1 约束 主键 id sname/phone 非空列 备注 student information

create table TEST.STUDENT ("id" char(10) not null,"sname" varchar(20) not null,"sex" char(1),"age" int,"phone" varchar(11) not null,"address" varchar(100),primary key("id"))storage(initial 1,next 1,minextents 1,fillfactor 0,on "test1");comment on table TEST.STUDENT is 'student information';

给表增加列

SQL> alter table TEST.STUDENT ADD COLUMN(AGE INT);操作已执行已用时间: 9.183(毫秒). 执行号:697.

删除列:

SQL> alter table TEST.STUDENT DROP COLUMN AGE;操作已执行已用时间: 9.031(毫秒). 执行号:698.

创建表时指定约束:

1、非空约束

SQL> create table test.t2(id int);操作已执行已用时间: 2.824(毫秒). 执行号:699.SQL> alter table test.t2 modify id int not null;操作已执行已用时间: 5.471(毫秒). 执行号:700.

2、唯一约束

SQL> create table test.t3(id int,name varchar(10) unique);操作已执行已用时间: 4.499(毫秒). 执行号:701.SQL> insert into test.t3 values(1,'sdfsf');影响行数 1已用时间: 0.566(毫秒). 执行号:702.SQL> insert into test.t3 values(2,'sdfsf');insert into test.t3 values(2,'sdfsf');[-6602]:违反表[T3]唯一性约束.已用时间: 0.419(毫秒). 执行号:0.SQL> insert into test.t3 values(3,null);影响行数 1已用时间: 0.416(毫秒). 执行号:704.SQL> insert into test.t3 values(4,null);影响行数 1已用时间: 0.356(毫秒). 执行号:705.

3、主键约束(一张表只能有一个主键约束)

SQL> create table test.t4(id int primary key,name varchar(20));操作已执行已用时间: 4.756(毫秒). 执行号:706.

4、检查约束

SQL> create table test.t6(id int check(id>=5));操作已执行已用时间: 4.263(毫秒). 执行号:707.

5、外键约束

SQL> create table test.t7(id int primary key,pid int);操作已执行已用时间: 3.945(毫秒). 执行号:708.SQL> create table test.t8(sid int primary key,id int foreign key references test.t7(id));操作已执行已用时间: 6.422(毫秒). 执行号:709.

6、对表中的字段加备注

SQL> comment on column test.t8.sid is 'idcard';操作已执行已用时间: 1.972(毫秒). 执行号:710.

7、查看约束

SQL> select constraint_name,constraint_type,table_name,status from dba_constraints where table_name='T8';行号CONSTRAINT_NAME CONSTRAINT_TYPE TABLE_NAME STATUS---------- --------------- --------------- ---------- -------1CONS134218767 PT8 ENABLED2CONS134218768 RT8 ENABLED已用时间: 8.082(毫秒). 执行号:712.SQL> select * from dba_col_comments where table_name='T8';行号OWNER TABLE_NAME COLUMN_NAME COMMENTS---------- ----- ---------- ----------- --------1TEST T8 SID idcard2TEST T8 IDNULL已用时间: 3.135(毫秒). 执行号:713.

8、使用sql脚本导入数据

[root@hdfeng opt]# cat test.sqlinsert into test.t1 values(1);insert into test.t1 values(2);insert into test.t1 values(3);insert into test.t1 values(4);insert into test.t1 values(5);insert into test.t1 values(6);insert into test.t1 values(7);insert into test.t1 values(8);insert into test.t1 values(9);commit;SQL> start /opt/test.sqlSQL> insert into test.t1 values(1);影响行数 1已用时间: 0.508(毫秒). 执行号:723.SQL> insert into test.t1 values(2);影响行数 1已用时间: 0.170(毫秒). 执行号:724.SQL> insert into test.t1 values(3);影响行数 1已用时间: 0.165(毫秒). 执行号:725.SQL> insert into test.t1 values(4);影响行数 1已用时间: 0.177(毫秒). 执行号:726.SQL> insert into test.t1 values(5);影响行数 1已用时间: 0.162(毫秒). 执行号:727.SQL> insert into test.t1 values(6);影响行数 1已用时间: 0.169(毫秒). 执行号:728.SQL> insert into test.t1 values(7);影响行数 1已用时间: 0.160(毫秒). 执行号:729.SQL> insert into test.t1 values(8);影响行数 1已用时间: 0.179(毫秒). 执行号:730.SQL> insert into test.t1 values(9);影响行数 1已用时间: 0.161(毫秒). 执行号:731.SQL> commit;操作已执行已用时间: 0.725(毫秒). 执行号:732.

9、重命名表名,启用和禁用约束

SQL> alter table test.t01 rename to t1;操作已执行已用时间: 6.154(毫秒). 执行号:735.SQL> select constraint_name,constraint_type,table_name,status from dba_constraints where table_name='T8';行号CONSTRAINT_NAME CONSTRAINT_TYPE TABLE_NAME STATUS---------- --------------- --------------- ---------- -------1CONS134218767 PT8 ENABLED2CONS134218768 RT8 ENABLED已用时间: 1.788(毫秒). 执行号:742.启用和禁用约束SQL> alter table TEST.T8 disable constraint CONS134218768;操作已执行已用时间: 3.951(毫秒). 执行号:743.SQL> alter table TEST.T8 enable constraint CONS134218768;操作已执行已用时间: 6.361(毫秒). 执行号:744.

10、删除表

SQL> drop table test.T1;操作已执行已用时间: 10.154(毫秒). 执行号:746.

(四)视图

视图分为以下几类:

简单视图复杂视图物化视图

1、简单视图的使用

创建视图SQL> create view test.view1 as select * from test.T2;操作已执行已用时间: 7.807(毫秒). 执行号:747.修改视图SQL> create or replace view test.view1 as select * from test.T2 limit 5;操作已执行已用时间: 6.878(毫秒). 执行号:748.视图的删除SQL> DROP VIEW TEST.VIEW1;操作已执行已用时间: 9.423(毫秒). 执行号:753.视图的查询SQL> SELECT * FROM DBA_VIEWS WHERE OWNER='TEST';行号OWNER VIEW_NAME TEXT_LENGTH TEXT TYPE_TEXT_LENGTH TYPE_TEXT OID_TEXT_LENGTH OID_TEXT VIEW_TYPE_OWNER VIEW_TYPE SUPERVIEW_NAME EDITIONING_VIEW READ_ONLY---------- ----- --------- ----------- ----------------------------------------- ---------------- --------- --------------- -------- --------------- --------- -------------- --------------- ---------1TEST VIEW141 SELECT TEST.T2.ID FROM TEST.T2 LIMIT( 5) NULL NULLNULL NULLNULL NULLNULL NULL NULL已用时间: 2.316(毫秒). 执行号:752.

(五)索引

索引主要是为了加快sql语句对于数据记录查询,对数据库进行DML操作的时候,数据库也会进行索引的维护,索引会在数据库中占一部分的表空间

在DM8数据库中,支持的索引有以下几种:

二级索引、位图索引、唯一索引、复合索引、函数索引、分区索引等等。

需要建索引的列有以下几种情况:

1、经常查询的列,数据量比较大的2、连接条件列,有多表连接的,数据量大的3、经常有谓词(where)条件出现的sql也需要建索引

不建议建索引的情况:

1、列上有大量重复值的2、列上面有大量的null3、已经具有其它索引的列

查看表索引的语句:

SQL> select table_name,index_name from dba_indexes where table_name='T2';行号TABLE_NAME INDEX_NAME---------- ---------- -------------1T2 INDEX33555454已用时间: 174.137(毫秒). 执行号:755.

建索引表空间,主要是用来存放索引的,建索引存放到索引表空间下

SQL> create tablespace index1 datafile '/dm8/data/DAMENG/index_01.DBF' size 128;操作已执行已用时间: 15.969(毫秒). 执行号:789.SQL> create table test.student1 as select * from test.student;操作已执行已用时间: 3.738(毫秒). 执行号:757.SQL> create table test.student2 as select * from test.student;操作已执行已用时间: 5.052(毫秒). 执行号:758.SQL> create index student_index on test.student1('id') tablespace index1;操作已执行已用时间: 4.987(毫秒). 执行号:790.

查看表的执行计划:

SQL> explain select * from test.student1 where 'id'<20;1 #NSET2: [0, 1, 252]2#PRJT2: [0, 1, 252]; exp_num(7), is_atom(FALSE)3 #SLCT2: [0, 1, 252]; var1 < 204 #CSCN2: [0, 1, 252]; INDEX33555463(STUDENT1)已用时间: 0.689(毫秒). 执行号:0.

从以上执行计划可以看出,直接使用了全盘扫描,并没有走我们创建的索引,所以需要新建数据进行统计信息

创建DMSQL的存储过程,进行统计

SQL> begin2 dbms_stats.gather_table_stats('TEST','STUDENT1');3 END;4 /DMSQL 过程已成功完成已用时间: 44.156(毫秒). 执行号:791.

索引重建以及索引的删除:

SQL> alter index test.student_index rebuild;操作已执行已用时间: 5.093(毫秒). 执行号:930.SQL> drop index test.student_index ;操作已执行已用时间: 10.546(毫秒). 执行号:931.

注:DM的统计信息需要手动收集,系统不会自动收集,所以可以使用作业来定时的收集统计信息。

4、DMSQL

DM8中的DMSQL其实也是类似于mysql的DDL/DML/DCL/DQL

在DM8中也分为这么几种:

DDL:数据定义语句例:create、dropDML:数据操作语句例:insert、update、deleteDCL:数据控制语句例:grant/revoke/commit/rollback/lock/unlockDQL:数据查询语句例:select

本章内容较简单,主要都是一些SQL语句的使用,在我前面的MySQL章节中已经详细介绍在这里不一一展开!

5、备份还原

备份还原的作用:

1、主要是给数据库制作一个类似快照的副本,能在数据库故障的情况下,把备份还原回去,恢复正常2、防止数据库数据丢失无法找回3、也可以在数据库损坏以后进行数据重建

备份的逻辑:

全量备份:把数据库中所有数据都进行备份增量备份:在上一次的全备或者增量备份后,每次只备份增加部署的内容

备份的方式:

物理备份:主要是把磁盘上的所有文件进行拷贝逻辑备份:主要是把数据库中的语句进行备份,然后通过重新执行的方式还原回去。

备份的介质主要有磁盘、磁带和光盘,一般用在集群中比较多,比如说没有主备的rac集群是非常需要备份的,同时DM8也支持爱数、鼎甲这一类的第三方备份软件

(一)物理备份

物理备份分为:

冷备:dmap服务为启用,数据库实例则是关闭状态1、可以通过console的图形化管理工具去备份,进行脱机还原时,需要先还原再进行恢复2、通过DMRMAIN脚本工具通过命令行进行恢复(/dm8/bin目录下)备份命令[root@hdfeng bin]# ./dmrmandmrman V8RMAN> backup database '/dm8/data/DAMENG/dm.ini';backup database '/dm8/data/DAMENG/dm.ini';file dm.key not found, use default license!Database mode = 0, oguid = 0EP[0]''s cur_lsn[37919]BACKUP DATABASE [DAMENG],execute......CMD CHECK LSN......BACKUP DATABASE [DAMENG],collect dbf......CMD CHECK ......DBF BACKUP SUBS......total 1 packages processed...total 2 packages processed...total 3 packages processed...total 4 packages processed...total 5 packages processed...total 6 packages processed...DBF BACKUP MAIN......BACKUPSET [/dm8/data/DAMENG/bak/DB_DAMENG_FULL__013548_660676] END, CODE [0]......META GENERATING......file [DB_DAMENG_FULL__013548_660676.bak] finished, name:[DB_DAMENG_FULL__013548_660676.bak],created time:[-07-14 01:35:49],expire time:[2105-12-31 23:59:59],label:[],comment:[]file [DB_DAMENG_FULL__013548_660676.meta] finished, name:[DB_DAMENG_FULL__013548_660676.meta],created time:[-07-14 01:35:49],expire time:[2105-12-31 23:59:59],label:[],comment:[]total 10 packages processed...total 10 packages processed...total 10 packages processed!CMD END.CODE:[0]backup successfully!time used: 995.342(ms)到这里即可备份成功!热备:dmap服务是需要打开的,数据库实例也是需要打开的,还需要开启数据库归档模式使用命令行的方式打开归档:[root@hdfeng bin]# ./disql SYSDBA/SYSDBA服务器[LOCALHOST:5236]:处于普通打开状态登录使用时间: 2.901(毫秒)disql V8SQL> alter database mount ;操作已执行已用时间: 00:00:01.770. 执行号:0.SQL> alter database add archivelog 'type=local,dest=/dm8/arch,file_size=64,space_limit=0';操作已执行已用时间: 0.930(毫秒). 执行号:0.SQL> alter database archivelog;操作已执行已用时间: 5.280(毫秒). 执行号:0.SQL> alter database open;操作已执行已用时间: 00:00:01.727. 执行号:0.SQL> select name,status$,arch_mode from v$database;行号NAME STATUS$ARCH_MODE---------- ------ ----------- ---------1DAMENG 4 Y已用时间: 1.881(毫秒). 执行号:4.使用manager管理工具比较简单,在这里不再进行扩展。使用命令行的方式进行全备,增量备:全备:SQL> backup database full backupset '/dm8/backup/fullbak2';操作已执行已用时间: 817.578(毫秒). 执行号:6.增量备:SQL> backup database increment backupset '/dm8/backup/incr_bak';操作已执行已用时间: 00:00:02.571. 执行号:7.

表空间的还原:

表空间的还原只能使用脱机还原,所以需要关闭数据库实例

模拟表空间test1损坏[root@hdfeng DAMENG]# mv test02.DBF test02.DBF.bak此时系统会处于mount状态,无法进行数据库操作,现在就需要把数据库实例进行关闭,然后进行还原恢复[root@hdfeng bin]# ./DmServiceDMSERVER restartStopping DmServiceDMSERVER: [ OK ]Starting DmServiceDMSERVER: 上一次登录:二 7月 14 02:21:26 CST [ OK ][root@hdfeng bin]# ./disql SYSDBA/SYSDBA服务器[LOCALHOST:5236]:处于普通配置状态登录使用时间: 3.060(毫秒)disql V8SQL> select status$ from tablespace;select status$ from tablespace;第1 行附近出现错误[-510]:系统处于MOUNT状态.已用时间: 1.822(毫秒). 执行号:0.进行校验备份集:RMAN> check backupset '/dm8/backup/fullbak2';check backupset '/dm8/backup/fullbak2';CMD END.CODE:[0]check backupset successfully.time used: 7.871(ms)还原表空间:RMAN> restore database '/dm8/data/DAMENG/dm.ini' tablespace "test1" from backupset '/dm8/backup/fullbak2';restore database '/dm8/data/DAMENG/dm.ini' tablespace "test1" from backupset '/dm8/backup/fullbak2';RESTORE TABLESPACE[test1] IN DB[/dm8/data/DAMENG/dm.ini] CHECK......Database mode = 0, oguid = 0begin redo pwr log collect, last ckpt lsn: 41716 ...redo pwr log collect finishedmain rfil[/dm8/data/DAMENG/DAMENG01.log]'s grp collect 0 valid pwr record, discard 0 invalid pwr recordEP[0]'s cur_lsn[41716]RESTORE TABLESPACE[test1] IN DB[/dm8/data/DAMENG/dm.ini],dbf collect......RESTORE TABLESPACE[test1] IN DB[/dm8/data/DAMENG/dm.ini],ts status and dbf refresh ......RESTORE BACKUPSET [/dm8/backup/fullbak2] START......total 2 packages processed...total 6 packages processed...RESTORE TABLESPACE[test1] IN DB[/dm8/data/DAMENG/dm.ini],UPDATE ctl file......total 6 packages processed...total 6 packages processed!CMD END.CODE:[0]restore successfully.time used: 376.620(ms)恢复表空间:RMAN> recover database '/dm8/data/DAMENG/dm.ini' tablespace "test1";recover database '/dm8/data/DAMENG/dm.ini' tablespace "test1";Database mode = 0, oguid = 0[WARN]tablespace test1 is corrupted(state: 2), restore or drop please.begin redo pwr log collect, last ckpt lsn: 41716 ...redo pwr log collect finishedmain rfil[/dm8/data/DAMENG/DAMENG01.log]'s grp collect 0 valid pwr record, discard 0 invalid pwr recordEP[0]'s cur_lsn[41716]RECOVER TABLESPACE[test1] IN DB[/dm8/data/DAMENG/dm.ini] CHECK......begin redo pwr log collect, last ckpt lsn: 41716 ...redo pwr log collect finishedmain rfil[/dm8/data/DAMENG/DAMENG01.log]'s grp collect 0 valid pwr record, discard 0 invalid pwr recordEP[0]'s cur_lsn[41716]EP:0 total 2 pkgs applied, percent: 18%EP:0 total 4 pkgs applied, percent: 36%EP:0 total 6 pkgs applied, percent: 54%EP:0 total 8 pkgs applied, percent: 72%EP:0 total 10 pkgs applied, percent: 90%EP:0 total 11 pkgs applied, percent: 100%Recover from archive log finished, time used:0.007s.CMD END.CODE:[0]recover successfully.time used: 429.420(ms)

至此恢复成功,后面重启实例即可!

(二)逻辑备份

逻辑备份的导入导出使用以下两个工具:

dexp:逻辑备份导出工具dimp:逻辑备份导入工具

逻辑备份能备份以下四个等级,并且不能同时存在:

1、数据库级别2、用户3、模式4、表级

逻辑导出:

[root@hdfeng bin]# ./dexp SYSDBA/SYSDBA@localhost:5236 file=dexp1.dmp log=dexp1.log directory=/dm8/backup/dexp full=ydexp V8.1.1.78-Build(.04.28-121039)ENT导出第 1 个SYSPACKAGE_DEF: SYS_VIEW...成功导出 第3 个SCHEMA :SYSDBA共导出 3 个SCHEMA整个导出过程共花费 0.196 s成功终止导出, 没有出现警告

逻辑导入:

[root@hdfeng bin]# ./dimp SYSDBA/SYSDBA@localhost:5236 file=/dm8/backup/dexp/dexp1.dmp log=/dm8/backup/dexp/dimp1.logdimp V8.1.1.78-Build(.04.28-121039)ENT导入 GLOBAL 对象……导入 SYSPACKAGES_DEF 对象……...开始导入模式[SYSDBA]......导入模式中的 NECESSARY GLOBAL 对象……模式中的 NECESSARY GLOBAL 对象导入完成……导入模式中的 GLOBAL 对象……模式中的 GLOBAL 对象导入完成……模式[SYSDBA]导入完成......整个导入过程共花费 0.935 s成功终止导入, 但出现警告

6、作业

作业的使用的话一定要先初始化代理环境:

可以使用命令行做,也可以使用图形化工具做,这里我们使用图形化界面做

步骤1:新建作业01,每周六23:00进行全备

选择完成以后点确定即可!

使用语句则是:

call SP_CREATE_JOB('JOB01',1,0,'',0,0,'',0,'');call SP_JOB_CONFIG_START('JOB01');call SP_ADD_JOB_SCHEDULE('JOB01', 'test1', 1, 2, 1, 64, 0, '23:00:00', NULL, '-07-14 03:17:11', NULL, '');call SP_JOB_CONFIG_COMMIT('JOB01');

7、DM8开发

达梦还支持多种语句的开发接口:

c、c++、java、python、php、perl、.net等等

下面介绍如何使用ODBC连接DM数据库:

一、检查gcc包是否安装

[root@hdfeng bin]# rpm -qa | grep gccgcc-4.8.5-39.el7.x86_64gcc-c++-4.8.5-39.el7.x86_64libgcc-4.8.5-39.el7.x86_64

二、安装rpm包

[root@hdfeng opt]# rpm -ivh unixODBC-2.3.1-11.el7.x86_64.rpm

三、查看ODBC是否安装完成、查看相应版本

[root@hdfeng opt]# odbc_config --version2.3.1

四、查看ODBC配置文件的路径

[root@hdfeng opt]# odbcinst -junixODBC 2.3.1DRIVERS............: /etc/odbcinst.iniSYSTEM DATA SOURCES: /etc/odbc.iniFILE DATA SOURCES..: /etc/ODBCDataSourcesUSER DATA SOURCES..: /root/.odbc.iniSQLULEN Size.......: 8SQLLEN Size........: 8SQLSETPOSIROW Size.: 8

五、配置odbc.ini和odbcinst.ini来进行对数据库的连接

[root@hdfeng opt]# cat /etc/odbc.ini[dm8]Description = DM ODBC DSNDDriver = DM8 ODBC DRIVERSERVER = localhostUID = SYSDBAPWD = SYSDBATCP_PORT = 5236[root@hdfeng opt]# cat /etc/odbcinst.ini[DM8 ODBC DRIVER]Description = ODBC for DM8Driver = /dm8/bin/libdodbc.so使用dmdba帐号连接[root@hdfeng opt]# su - dmdba上一次登录:二 7月 14 02:44:13 CST -sh-4.2$ bash[dmdba@hdfeng ~]$ isql dm8+---------------------------------------+| Connected! || || sql-statement|| help [tablename] || quit || |+---------------------------------------+SQL>连接成功!

到这里DM8最基本的一些应用都在这里啦,一般用户的话看了我以上的教程应该是都能对自己的数据库进行操作啦,后续还会出各方面更深入的博文,期待大家多多关注!有相关问题可以在评论区留言,我会及时解答!

如果觉得《达梦数据库——DM8安装操作及体系架构介绍》对你有帮助,请点赞、收藏,并留下你的观点哦!

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。