达梦客户端
下载地址 选择X86平台
#下载文件 dm8_20220714_x86_win_64_ent.zip
docker方式安装数据库服务
#下载文件 dm8_20220822_rev166351_x86_rh6_64_ctm.tar
#加载镜像
docker load -i dm8_20220822_rev166351_x86_rh6_64_ctm.tar
#启动 忽略大小写-e CASE_SENSITIVE=0
docker run -d -p 5236:5236 --restart=always --name dm8_01 --privileged=true -e CASE_SENSITIVE=0 -e PAGE_SIZE=16 -e LD_LIBRARY_PATH=/opt/dmdbms/bin -e INSTANCE_NAME=dm8_01 -v /data/dm8_01:/opt/dmdbms/data dm8_single:v8.1.2.128_ent_x86_64_ctm_pack4
#1.如果使用 docker 容器里面的 disql,进入容器后,先执行 source /etc/profile 防止中文乱码。
#2.新版本 Docker 镜像中数据库默认用户名/密码为 SYSDBA/SYSDBA001。
#1 为大小写敏感,0 为大小写不敏感
SELECT SF_GET_CASE_SENSITIVE_FLAG();
简单使用
达梦属于Oracle系,很多基础资料可以查看Oracle
在逻辑结构中,Oracle从大到下,分别是如下的结构:数据库实例 -> 表空间 -> 数据段(表) -> 区 -> 块
二、创建表空间
CREATE tablespace test datafile 'test.dbf' size 64;
-- 查询当前用户拥有的所的有表空间
SELECT * FROM user_tablespaces;
三、创建用户并指定表空间,并为其授予权限
--创建用户并指定表空间
CREATE user ddrsql identified BY pwd123456 DEFAULT tablespace test;
--赋予用户DBA权限
GRANT resource,dba TO ddrsql;
--修改表空间
ALTER user ddrsql DEFAULT tablespace main;
--删除用户没有相关数据
DROP user test
--删除用户下有数据
DROP user test cascade
四、创建表(数据段)
--在test表空间下创建dog表
CREATE TABLE dog
(
name varchar(12),
age varchar(12)
)
tablespace test;
--跨用户查询表
SELECT * FROM DDRSQL."Blogs";
-- 查看TEST表空间下的所有表
SELECT tablespace_name, table_name FROM user_tables
WHERE tablespace_name = 'TEST';
-- 组装删除表空间下表语句
SELECT CONCAT('drop table DDRSQL."',table_name,'" cascade;') FROM user_tables WHERE tablespace_name = 'TEST';
常用
--查询当前数据库名
SELECT * FROM v$database;
--查询当前数据库实例名
SELECT * FROM v$instance;
--查看表空间数据文件信息
SELECT * FROM dba_data_files;
--查看数据文件空闲信息
SELECT * FROM dba_free_space;
--表空间创建
CREATE tablespace TEST datafile 'C:\dmdbms\data\DAMENG\TEST.DBF' size 128 autoextend ON NEXT 4 maxsize 10240;
--增加数据文件:
ALTER tablespace TEST ADD datafile 'C:\dmdbms\data\DAMENG\TEST01.DBF' size 128;
--修改数据文件大小:
ALTER tablespace TEST resize datafile 'TEST01.DBF' TO 256;
--修改文件扩展属性:
ALTER tablespace TEST datafile 'TEST01.DBF' autoextend OFF;
ALTER tablespace TEST datafile 'TEST01.DBF' autoextend ON NEXT 4 maxsize 1024;
--普通表空间可以在脱机状态下修改数据文件路径和文件名,修改数据文件路径时需保证修改后的数据文件路径存在。
--将表空间置为脱机状态
ALTER tablespace TEST OFFLINE;
--修改数据文件路径
ALTER tablespace TEST rename datafile 'TEST02.dbf' TO 'C:\dmdbms\data\DAMENG\TEST01.DBF';
--表空间联机状态下支持重命名表空间,脱机状态下不支持重命名表空间。用户自定义表空间可以重命名,SYSTEM、ROLL、TEMP、MAIN和HMAIN表空间不支持重命名操作。
--将表空间置为联机状态
ALTER tablespace TEST ONLINE;
rename tablespace TEST TO TEST01;
--对于不在使用的表空间,可以选择删除(已经使用的表空间不能删除)。删除表空间之前, 需清除表空间中的表和数据,否则会删除失败。
--SYSTEM、ROLL、TEMP、MAIN和HMAIN表空间不允许删除
DROP tablespace TEST;
数据迁移参考
Avalonial中使用EF增删改查DM数据库
dmdbms目录在安装客户端后创建,此处使用EFCore.Dm5.0下包
界面代码
<Grid>
<Grid.RowDefinitions>
<RowDefinition Height="30"></RowDefinition>
<RowDefinition Height="10"></RowDefinition>
<RowDefinition Height="30"></RowDefinition>
<RowDefinition Height="10"></RowDefinition>
<RowDefinition Height="100"></RowDefinition>
<RowDefinition Height="100"></RowDefinition>
</Grid.RowDefinitions>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="120"></ColumnDefinition>
<ColumnDefinition Width="120"></ColumnDefinition>
<ColumnDefinition Width="120"></ColumnDefinition>
<ColumnDefinition Width="120"></ColumnDefinition>
</Grid.ColumnDefinitions>
<StackPanel Orientation="Horizontal" Grid.ColumnSpan="4">
<TextBlock Text="DM数据库:"/>
<Button Name="BtnDMInsert" Command="{Binding DMInsertAsync}">DMInsert</Button>
<Button Name="BtnDMDelete" Command="{Binding DMDeleteAsync}">DMDelete</Button>
<Button Name="BtnDMUpdate" Command="{Binding DMUpdateAsync}">DMUpdate</Button>
<Button Name="BtnDMSelect" Command="{Binding DMSelectAsync}">DMSelect</Button>
</StackPanel>
<StackPanel Grid.Row="4" Grid.ColumnSpan="4">
<TextBlock FontSize="16" Text="Simple Bindings"/>
<ScrollViewer HorizontalScrollBarVisibility="Auto" VerticalScrollBarVisibility="Auto" Height="100">
<TextBox Watermark="Two Way" UseFloatingWatermark="True" Text="{Binding Path=StringValue}" Name="first"/>
</ScrollViewer>
<!--FontFamily="Microsoft YaHei,Simsun,微软雅黑,苹方-简,宋体-简"-->
<ScrollViewer HorizontalScrollBarVisibility="Auto" VerticalScrollBarVisibility="Auto" Height="100">
<TextBox Watermark="One Way" UseFloatingWatermark="True" Text="{Binding Path=StringValue, Mode=OneWay}"/>
</ScrollViewer>
<ScrollViewer HorizontalScrollBarVisibility="Auto" VerticalScrollBarVisibility="Auto" Height="100">
<TextBox Watermark="One Time" UseFloatingWatermark="True" Text="{Binding Path=StringValue, Mode=OneTime}"/>
</ScrollViewer>
</StackPanel>
</Grid>
连接字符串
//配置DM连接字符串
optionsBuilder.UseDm("Server=192.168.x.xx;User ID=ddrsql;PWD=qwe123456;PORT=5236;");
增删改查
public async Task DMInsertAsync()
{
using (var db = new DMBloggingContext())
{
await db.Blogs.AddAsync(new Blog { Url = "http://blogs.msdn.com/adonet", CreateTime = DateTime.Now,Price = 1.2M });
var count = await db.SaveChangesAsync();
Console.WriteLine("{0} records saved to database", count);
Console.WriteLine();
Console.WriteLine("All blogs in database:");
var temp = string.Empty;
foreach (var blog in db.Blogs)
{
Console.WriteLine(" - {0}", blog.Url);
temp += DateTime.Now + JsonConvert.SerializeObject(blog) + "\r";
}
StringValue = temp;
}
}
public async Task DMDeleteAsync()
{
using (var db = new DMBloggingContext())
{
var url = "http://blogs.msdn.com/adonet";
var blog = await db.Blogs.Where(p => p.Url == url).AsNoTracking().FirstOrDefaultAsync();
if (blog != null)
{
db.Blogs.Remove(blog);
await db.SaveChangesAsync();
await DMSelectAsync();
}
}
}
public async Task DMUpdateAsync()
{
using (var db = new DMBloggingContext())
{
var url = "http://blogs.msdn.com/adonet";
var blog = await db.Blogs.Where(p => p.Url == url).AsNoTracking().FirstOrDefaultAsync();
if(blog != null)
{
blog.Url = "123";
db.Blogs.Update(blog);
await db.SaveChangesAsync();
await DMSelectAsync();
}
}
}
public async Task DMSelectAsync()
{
var temp = string.Empty;
using (var db = new DMBloggingContext())
{
var blog = await db.Blogs.AsNoTracking().ToListAsync();
foreach(var item in blog)
{
temp += DateTime.Now + JsonConvert.SerializeObject(item) + "\r";
}
}
StringValue = temp;
}
问题
事务级别问题
使用 Abp UnitOfWork 由于默认事务级别是 ReadUncommitted 会出现如下问题
An exception occurred in the database while saving changes for context type 'xxDbContext'.
Microsoft.EntityFrameworkCore.DbUpdateException: An error occurred while updating the entries. See the inner exception for details. ---> System.ArgumentException: Parameter '__EF_FILTER__xx_0' not found in the collection.
at Dm.DmParameterCollection.do_GetParameter(String parameterName)
at Dm.DmCommand.BindParameters(Int32& rowCount, DmDataReader rd, CommandBehavior behavior)
at Dm.DmCommand.do_ExecuteDbDataReader(CommandBehavior behavior)
at System.Data.Common.DbCommand.ExecuteDbDataReaderAsync(CommandBehavior behavior, CancellationToken cancellationToken)
DM数据事务隔离级别为ReadCommitted,设置即可解决
Configuration.UnitOfWork.IsolationLevel = IsolationLevel.ReadCommitted;
标签:DM,--,db,EF,改查,blog,var,tablespace,TEST
From: https://www.cnblogs.com/ddrsql/p/17103365.html