银河麒麟V10下达梦8数据库的安装使用与C#连接DM8数据库

一、达梦8数据库的安装

1.DM8版本介绍

企业版:支持集群,适用于中大型企业
标准版:不支持集群,适用于中小型企业
开发版:和企业版功能相同,只是使用时间有限制,默认官网发布时间一年。
安全版:支持强制访问控制等安全特性。

2.安装程序下载

官网下载地址:产品下载-达梦数据

根据你的CPU和操作系统类型下载DM8开发版

X86平台的银河麒麟V10下载Redhat7版本

3.收集安装环境

操作系统(内核要求2.6以上)

cat /proc/version

GLIBC版本:要求2.3以上。 

ldd --version

网络、防火墙,如需远程连接服务器,需要关闭防火墙或者开放对应端口。

关闭防火墙

systemctl stop firewalld.service

开放端口

firewall-cmd --add-port=5236/tcp --zone=public --permanent
firewall-cmd –reload

4.安装规划

DM8不推荐使用root安装

软件安装路径:/dm8
数据库创建目录(用来存放数据文件等):/dm8/data
归档路径:/dm8/arch
备份路径:/dm8/backup
安装用户:dmdba
用户组:dm

①创建安装用户和用户组

groupadd dm
useradd -g dm -m -d /home/dmdba -s /bin/bash dmdba

修改dmdba密码

passwd dmdba

 ②创建安装路径并将路径授权dmdba:

mkdir /dm8
chown dmdba:dm /dm8

4.数据库安装

①挂载达梦安装包ISO文件

mount -o loop /opt/dm8_20220720_x86_rh7_64_ent_8.1.2.114_pack11.iso /mnt

其中/opt/dm8_20220720_x86_rh7_64_ent_8.1.2.114_pack11.iso是下载的DM8安装包存放路径

如果挂载mnt提示无权限错误使用下面语句

mount -o remount,rw /

②执行安装

DM8支持图形化界面和命令行安装,也可以使用Xmanager等工具进行远程图形化界面安装,Xmanager调用远程图形化界面的方法请自行查阅相关文章。

调用图形化界面安装的方法:

使用root进入命令行

xhost +
echo $DISPLAY

记住得到的值(:1.0或者:0.0)

切换到dmdba用户,配置图形界面其中:1.0是上一步得到的值

su - dmdba
export DISPLAY=:1.0

开始图形化界面安装

cd /mnt
./DMInstall.bin

命令行安装的方法: 

切换到dmdba用户,执行安装命令

su - dmdba
cd /mnt
./DMInstall.bin -i

如果使用虚拟机并且资源分配过少可能会报OpenJDK错误:

OpenJDK 64-Bit Server VM warning: Insufficient space for shared memory file:13413

则修改tmp大小,执行下面语句可以解决

sudo mount -t tmpfs -o size=2048M none /tmp

图形化安装过程 

 点击确定,然后下一步即可,提示需要KEY文件的地方试用版可以不选择KEY文件直接下一步。

此处选择我们之前规划的安装路径dm8,然后下一步,弹出提示选择确定

 到此步骤用root登录命令行,按照提示执行脚本,然后点击确定和完成

 

 完成后DM8数据库程序就安装完毕了,此时我们需要配置数据库实例,一个DM8可以包含多个数据库实例,按照下图勾选初始化数据库,点击初始化

 

选择创建数据库实例点击开始即可,图形化界面创建的实例会自动注册数据库服务,不需要自行再注册

开始创建后,可以根据自己的用途配置相应的参数,到初始化参数界面可以配置一下数据库的参数 

 

页大小、簇大小、字符集、大小写敏感、VARCHAR类型以字符为单位等参数一旦指定,数据库创建完成后将无法更改。
页大小:页是达梦数据库最小存储单元;达梦中varchar类型字段长度受页大小的限制,默认不能超过页大小的一半:

页大小Varchar长度
4K2000
8k4000
16K8000
32K8188


簇大小:簇是达梦数据库最小分配单元;
VARCHAR类型以字符为单位:
默认达梦,VARCHAR类型以字节为单位存储。
Varchar(10), 字符集是utf-8(一个中文占用三个字节),可以保存3个中文字符。
Varchar(10), 字符集是gb18030(一个中文占用两个字节), 保存5个中文字符。
如果勾选VARCHAR类型以字符为单位,Varchar(10)不管字符集是什么都能保存10个中文。
nvarchar新版本以字符为单位存储。

最后点击完成开始创建实例,安装过程中会弹出以下界面,按照提示用root登录命令行,执行脚本,最后点击确定。然后可能会提示需要抽取数据库,根据提示执行命令即可

 

 最后点击完成,数据库安装完毕

命令行安装

通图形化安装步骤一致,根据提示选择和修改参数即可,完成后需要根据提示执行脚本

请以root系统用户执行命令:
/dm8/script/root/root_installer.sh

完成数据库安装后需要,手动创建数据库实例,使用dminit命令行工具,根据位于安装目录的bin下,可以配置参数,如:数据文件路径,数据库名,实例名,端口号,密码等

使用dmdba用户

dminit创建的数据库实例,默认没有注册数据库服务。

su - dmdba
cd /dm8/bin
./dminit path=/dm8/data DB_NAME=DMService instance_name=DMSERVER port_num=5236 SYSDBA_PWD=Dameng123

 手动注册数据库服务,root用户执行安装目录/script/root下脚本,其中DMSERVER和dm.ini的路径为创建实例时指定的实例名和数据库名

su
cd /dm8/script/root
./dm_service_installer.sh -t dmserver -p DMSERVER -dm_ini /dm8/data/DMService/dm.ini

数据库服务启动

systemctl start DMServiceDMSERVER.service

自动启动

systemctl enable DMServiceDMSERVER.service

二、DM的客户端工具

(1) DM管理工具(manager)
联机工具。可以管理表空间、用户、角色、数据库备份、模式下对象(表、约束、索引、视图、触发器、函数、存储过程等)管理等。

cd /dm8/tool
./manager

(2) DM控制台工具(console)
脱机工具。数据库的物理冷备、数据库物理还原与恢复,参数配置。

(3) DTS数据迁移工具(dts)
支持Oracle、SQLServer、MySQL、DB2、PG等迁移到达梦数据库。

(4) DM性能监视工具(monitor)

(5) disql数据库连接工具
tool目录下disql调用的就是bin目录下disql,不同的是tool目录下disql需要使用connect命令连接数据库。 

三、DM数据库的几种状态

Shutdown:关闭状态。
MOUNT:配置状态,此状态下不能访问数据库中数据文件的数据,可以访问v$开头来源于控制文件或内存中的表数据。配置状态,数据库不能对外提供正常服务,业务不能正常运行。
设置归档、迁移联机日志、设置主备集群主机、备机需要在配置状态。
OPEN状态:打开状态,此时数据库对外提供正常服务。可以读写数据文件中的数据。
SUSPEND状态:挂起状态,此时数据库只能读不能写。
DM中mount和open可以相互转换,Oracle中mount只能到open,open不能到mount;
DM的suspend和open可以相互转换,但mount和suspend不能相互转换。
DM没有NOMOUNT状态(oracle有NOMOUNT状态)

四、.net连接DM数据库

dm提供了多种开发语言的驱动程序,位于数据库安装目录的drivers目录下。.net驱动位于该目录dotNet文件夹,我们使用DmProvider进行数据库连接,DmProvider实现了ADO.NET的接口

根据项目类型,复制相应的DmProvider.dll到项目中,并在项目中引用

注意不要使用VS中NuGet包管理中的下面包,此包不是官方提供,使用有问题

 DM数据库连接字符串如下

Server=localhost; User Id=SYSDBA; PWD=SYSDBA;

DM支持单用户多模式,使用多模式时SQL语句需要在表名前加上模式名.,如:

SELECT * FROM OA.TABLENAME

 由于DM实现了ADO.NET,使用方法与其他数据库如:SQL SERVER、My SQL相同,将类名改成DM的类名即可

以下为My SQL和DM的代码对比

/// <summary>
        /// 查询数据库将结果填充DataSet
        /// </summary>
        /// <param name="strSQL">Sql查询语句</param>
        /// <param name="objDS">要填充的DataSet对象</param>
        /// <param name="iStart">开始记录号</param>
        /// <param name="iCount">记录数量</param>
        /// <param name="strTableName">表名</param>
        /// <returns>所填充的记录数</returns>
        public override int FillDataSet(string strSQL, System.Data.DataSet objDS, int iStart, int iCount, string strTableName)
        {
            int iFillCount = 0;
            MySqlDataAdapter objAdapter = null;
            try
            {
                objAdapter = (MySqlDataAdapter)this.GetDataAdapter(strSQL);
                objAdapter.SelectCommand.CommandTimeout = base.iTimeOut;
                iFillCount = objAdapter.Fill(objDS, iStart, iCount, strTableName);
            }
            finally
            {
                objAdapter = null;
            }
            return iFillCount;
        }
/// <summary>
        /// 查询数据库将结果填充DataSet
        /// </summary>
        /// <param name="strSQL">Sql查询语句</param>
        /// <param name="objDS">要填充的DataSet对象</param>
        /// <param name="iStart">开始记录号</param>
        /// <param name="iCount">记录数量</param>
        /// <param name="strTableName">表名</param>
        /// <returns>所填充的记录数</returns>
        public override int FillDataSet(string strSQL, System.Data.DataSet objDS, int iStart, int iCount, string strTableName)
        {
            int iFillCount = 0;
            DmDataAdapter objAdapter = null;
            try
            {
                objAdapter = (DmDataAdapter)this.GetDataAdapter(strSQL);
                objAdapter.SelectCommand.CommandTimeout = base.iTimeOut;
                iFillCount = objAdapter.Fill(objDS, iStart, iCount, strTableName);
            }
            finally
            {
                objAdapter = null;
            }
            return iFillCount;
        }

其余更多使用请查阅DM手册,手册位于安装目录的doc文件夹下

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值