0%

docker安装dm达梦数据库

docker安装dm达梦数据库

1.docker安装dm达梦数据库

  • 1.官网下载docker镜像包:

    1
    https://eco.dameng.com/docs/zh-cn/start/dm-install-docker.html
  • 2.将镜像包导入docker:

    1
    docker import dm8_docker.tar dm8:v1
  • 3.先启动容器(不挂载目录):

    1
    docker run -itd -p 5236:5236 --name dm8 dm8:v1 /bin/bash /startDm.sh
  • 4.查看刚刚启动的容器id:

    1
    docker ps 
  • 5.将容器中的/dm8路径下的所有文件拷贝到本机的/Users/ux/Downloads/copy目录下:

    注:42df80d462d9是docker ps 查看到的dm8容器id。

    1
    2
    3
    docker cp 42df80d462d9:/dm8 /Users/ux/Downloads/copy

    注:格式:docker cp [dm8容器id]:/dm8 [宿主机目录存放dm8的目录]
  • 6.启动容器(挂载目录,将容器中的目录/dm8挂载到宿主机/Users/ux/Applications/docker/dm8/下):

    【直接拷贝的命令 \后有空格,需要删除,否则报错】

    1
    2
    3
    docker run -itd -p 5236:5236 \
    -v /Users/ux/Applications/docker/dm8/:/dm8/ \
    --name dm8 dm8:v1 /bin/bash /startDm.sh
  • 7.查看日志:

    1
    docker logs -f  dm8
  • 8.容器初始化成功后,默认用户名密码:

    1
    2
    SYSDBA
    SYSDBA

2.设置sql语句大小写为 不区分大小写

  • 【废弃】添加–env CASE_SENSITIVE=0 参数是不可行的【已验证,不可行】
1
2
3
4
5
6
7
8
9
docker run -itd -p 5236:5236 \
--env CASE_SENSITIVE=0 \
-v /Users/ux/Applications/docker/dm8/:/dm8/ \
--name dm8 dm8:v1 /bin/bash /startDm.sh

不可行原因:
1.达梦数库,初始化实例的时候,默认是区分大小写,目前我们提供的docker镜像默认也是大小写敏感的。
达梦数据库实例默认在初始化的时候指定大小写,后面就没有办法进行调整。
2.在容器里面,你可以删除当前的实例,再重新初始化实例,在初始化时,可以指定大小是否敏感。
  • 【可行:设置sql语句大小写为 不区分大小写】进入docker容器,删除默认实例,再重建实例:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
1.进入dm8/data目录下:
cd /dm8/data

2.ls后可以看到DAMENG实例目录:
ls
DAMENG

3.删除实例目录:
rm -rf DAMENG

4.重新初始化DAMENG实例:
cd /dm8/bin
./dminit

5.初始化参数填写【查看DM8_dminit使用手册,查看各个参数详细解释】:

License will expire on 2021-11-06
## 1.data目录路径
input system dir: /dm8/data

## 2.实例名,默认DAMENG
input db name: DAMENG

## 3.端口,默认5236
input port num: 5236

## 4.数据文件使用的页大小。默认8
input page size(4, 8, 16, 32): 8

## 5.数据文件使用的簇大小。默认16
input extent size(16, 32, 64): 16

## 6.权限管理模式。0:TRADITION,表示传统模式;1:BMJ,表示专用机模式;2:EVAL,表示 EVAL 测评模式。默认为 0
input sec priv mode(0, 1, 2): 0

## 7.时区。中国时区:+8:00
input time zone(-12:59,+14:00): +8:00

## 8.标识符大小写敏感。默认值Y,此处选:N,否则表名等会区分大小写,十分麻烦。
string case sensitive? ([Y]es, [N]o): N

## 9.字符集,默认0,此处选:1
which charset to use? (0[GB18030], 1[UTF-8], 2[EUC-KR]): 1

## 10.VARCHAR 类型对象的长度是否以字符为单位,默认N
length in char? ([Y]es, [N]o): N

## 11.数据库加密。选N
enable database encrypt? ([Y]es, [N]o): N

## 12.指定数据页加解密的分片大小。默认值为 4096
input slice size(0, 512, 4096): 4096

## 13.页检查模式。默认:0
page check mode? (0/1/2): 0

## 14.指定初始化过程中生成的日志文件所在路径。
input elog path: /dm8/log

## 15.是否仅允许创建事务型 HUGE 表。默认值为 1。
only create huge table with delta? (0/1): 1

## 16.是否生成 HUGE 表 REDO 日志。默认值为 0。此处选:1
rlog generate for huge? (0/1): 1

## 17.是否仅使用管理段记录事务信息。默认值为 0
pseg_mgr_flag (0/1): 0

## 18.是否覆盖建库目录下所有同名文件。: 0 不覆盖;1 部分覆盖;2 完全覆盖。默认值为 0【查看DM8_dminit使用手册】
auto_overwrite mode? (0/1/2): 0

6.重启docker容器,启动正常,导入数据,测试,大小写不敏感已经正常。

3.兼容性设置(可以兼容mysql/oracle等,并非兼容全部语法)

  • 1.通过DataGrip或其他数据库连接工具连接DM数据库,通过命令直接设置兼容性:

  • 2.查看当前兼容模式:

    1
    2
    SELECT *FROM V$dm_ini where para_name='COMPATIBLE_MODE';
    SELECT para_name,para_value,description FROM V$dm_ini where para_name='COMPATIBLE_MODE';
  • 3.设置兼容模式为4,即:兼容mysql

    1
    sp_set_para_value(2,'COMPATIBLE_MODE',4)
  • 4.重启dm容器,再次执行步骤3,即可看到已经兼容mysql

  • 5.兼容性设置参考链接:

    https://www.pianshen.com/article/35851106972/

    https://blog.csdn.net/weixin_43389023/article/details/105475686