之前Mac平台的docker 环境已经安装好了:
Mac 安装 Docker 并修改源
https://www.cndba.cn/dave/article/116440Docker 命令大全
https://www.cndba.cn/dave/article/4104
本篇看下mac平台下docker 安装达梦数据库。
1. 下载并导入Docker 安装包
官网的链接如下:
https://eco.dameng.com/document/dm/zh-cn/start/dm-install-docker.html
达梦docker 镜像下载地址:
https://download.dameng.com/eco/dm8/dm8_20220822_rev166351_x86_rh6_64_ctm.tar
进入docker文件目录后执行导入命令:
david@DaviddeMBP DM % pwd
/Users/david/Documents/Software/DM
david@DaviddeMBP DM % docker load -i dm8_20220822_rev166351_x86_rh6_64_ctm.tar
644879075e24: Loading layer 117.9MB/117.9MB
d7ff1dc646ba: Loading layer 15.87kB/15.87kB
686245e78935: Loading layer 14.85kB/14.85kB
d73dd9e65295: Loading layer 5.632kB/5.632kB
2de391e51d73: Loading layer 3.072kB/3.072kB
5d3893664e8e: Loading layer 42.94MB/42.94MB
86739628cd5d: Loading layer 275.5MB/275.5MB
a8cca048a547: Loading layer 4.608kB/4.608kB
8af79446e96a: Loading layer 2.56kB/2.56kB
a28e591b0aad: Loading layer 4.608kB/4.608kB
Loaded image: dm8_single:v8.1.2.128_ent_x86_64_ctm_pack4
david@DaviddeMBP DM % docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
dm8_single v8.1.2.128_ent_x86_64_ctm_pack4 ccb727ce9dce 5 months ago 432MB
david@DaviddeMBP DM %
2. 创建容器
david@DaviddeMBP data % docker run -d -p 5236:5236 --name dm8 --privileged=true -e PAGE_SIZE=16 -e LD_LIBRARY_PATH=/opt/dmdbms/bin -e INSTANCE_NAME=dm8 -v /Users/david/Documents/Software/DM/data:/opt/dmdbms/data dm8_single:v8.1.2.128_ent_x86_64_ctm_pack4
WARNING: The requested image's platform (linux/amd64) does not match the detected host platform (linux/arm64/v8) and no specific platform was requested
b608c67d6f5a52f1fe1acc8028c7077a0a9a9d7d8351da053d6d21ce478894b7
查看容器状态:
david@DaviddeMBP data % docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
b608c67d6f5a dm8_single:v8.1.2.128_ent_x86_64_ctm_pack4 "/bin/bash /opt/star…" 15 seconds ago Up 12 seconds 0.0.0.0:5236->5236/tcp dm8
david@DaviddeMBP data %
查看日志:
david@DaviddeMBP data % docker logs b608c67d6f5a
file dm.key not found, use default license!
License will expire on 2023-08-04
Normal of FAST
Normal of DEFAULT
Normal of RECYCLE
Normal of KEEP
Normal of ROLL
log file path: /opt/dmdbms/data/DAMENG/DAMENG01.log
log file path: /opt/dmdbms/data/DAMENG/DAMENG02.log
write to dir [/opt/dmdbms/data/DAMENG].
create dm database success. 2023-02-17 23:05:04
initdb V8
db version: 0x7000c
Init DM success!
Start DmAPService...
Starting DmAPService: [ OK ]
/opt/dmdbms/conf/dm.ini does not exist, use default dm.ini
Start DMSERVER success!
Dmserver is running.
DM Database is not OK, please wait...
DM Database is not OK, please wait...
DM Database is OK
Finished soft link DM current dm_DMSERVER_202302.log to dm_DMSERVER.log
* Starting periodic command scheduler cron
...done.
2023-02-17 23:05:32.527 [INFO] database P0000000120 T0000000000000000200 total 0 active crash trx, pseg_crash_trx_rollbacksys_only(0) begin ...
2023-02-17 23:05:32.527 [INFO] database P0000000120 T0000000000000000200 pseg_crash_trx_rollback end, total 0 active crash trx, include 0 empty_trxs, 0 empty_pages which only need to delete mgr recs.
2023-02-17 23:05:32.527 [INFO] database P0000000120 T0000000000000000200 pseg_crash_trx_rollback end
2023-02-17 23:05:32.527 [INFO] database P0000000120 T0000000000000000200 hpc_clear_active_trx adjust n_crash_active_trx from 0 to 0.
2023-02-17 23:05:32.535 [INFO] database P0000000120 T0000000000000000120 backup control file /opt/dmdbms/data/DAMENG/dm.ctl to file /opt/dmdbms/data/DAMENG/dm_20230217230532_533427.ctl
2023-02-17 23:05:32.539 [INFO] database P0000000120 T0000000000000000120 backup control file /opt/dmdbms/data/DAMENG/dm.ctl to file /opt/dmdbms/data/DAMENG/ctl_bak/dm_20230217230532_537538.ctl succeed
2023-02-17 23:05:32.540 [INFO] database P0000000120 T0000000000000000120 local instance name is DMSERVER, mode is NORMAL, status is OPEN.
2023-02-17 23:05:32.540 [INFO] database P0000000120 T0000000000000000120 SYSTEM IS READY.
2023-02-17 23:05:32.540 [INFO] database P0000000120 T0000000000000000120 set g_dw_stat from UNDEFINED to NONE success, g_dw_recover_stop is 0
2023-02-17 23:05:33.532 [INFO] database P0000000120 T0000000000000000202 trx4_min_tid_collect set min_active_id_opt, min_active_id: 3643, first_tid: 3006
2023-02-17 23:08:20.032 [INFO] database P0000000120 T0000000000000000249 checkpoint requested, rlog free space[527585280], used space[9277440]
2023-02-17 23:08:20.033 [INFO] database P0000000120 T0000000000000000249 checkpoint generate by ckpt_interval
2023-02-17 23:08:20.034 [INFO] database P0000000120 T0000000000000000192 checkpoint begin, used_space[9277440], free_space[527585280]...
2023-02-17 23:08:20.046 [INFO] database P0000000120 T0000000000000000192 ckpt2_log_adjust: full_status: 160, ptx_reserved: 0
2023-02-17 23:08:20.047 [INFO] database P0000000120 T0000000000000000192 ckpt2_log_adjust: ckpt_lsn(37715), ckpt_fil(0), ckpt_off(9252864), cur_lsn(37828), l_next_seq(4643), g_next_seq(4643), cur_free(9282560), total_space(536862720), used_space(29696), free_space(536833024), n_ep(1)
2023-02-17 23:08:20.047 [INFO] database P0000000120 T0000000000000000192 checkpoint end, 0 pages flushed, used_space[29696], free_space[536833024].
david@DaviddeMBP data %
查看本地映射文件:
david@DaviddeMBP data % pwd
/Users/david/Documents/Software/DM/data
david@DaviddeMBP data % ll
zsh: command not found: ll
david@DaviddeMBP data % ls -l
total 0
drwxr-xr-x 18 david staff 576 2 17 23:05 DAMENG
david@DaviddeMBP data % cd DAMENG
david@DaviddeMBP DAMENG % ls -l
total 133192
-rw-r--r-- 1 david staff 268435456 2 17 23:09 DAMENG01.log
-rw-r--r-- 1 david staff 268435456 2 17 23:05 DAMENG02.log
drwxr-xr-x 2 david staff 64 2 17 23:05 HMAIN
-rw-r--r-- 1 david staff 134217728 2 17 23:05 MAIN.DBF
-rw-r--r-- 1 david staff 134217728 2 17 23:08 ROLL.DBF
-rw-r--r-- 1 david staff 52428800 2 17 23:08 SYSTEM.DBF
-rw-r--r-- 1 david staff 27262976 2 17 23:05 TEMP.DBF
drwxr-xr-x 2 david staff 64 2 17 23:05 bak
drwxr-xr-x 4 david staff 128 2 17 23:05 ctl_bak
-rw-r--r-- 1 david staff 5632 2 17 23:05 dm.ctl
-rw-r--r-- 1 david staff 59755 2 17 23:05 dm.ini
-rw-r--r-- 1 david staff 633 2 17 23:05 dm_service.prikey
-rw-r--r-- 1 david staff 973 2 17 23:05 dminit20230217230501.log
-rw-r--r-- 1 david staff 12 2 17 23:05 rep_conflict.log
-rw-r--r-- 1 david staff 481 2 17 23:05 sqllog.ini
drwxr-xr-x 2 david staff 64 2 17 23:05 trace
david@DaviddeMBP DAMENG %
启动和关闭容器:
david@DaviddeMBP DAMENG % docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
b608c67d6f5a dm8_single:v8.1.2.128_ent_x86_64_ctm_pack4 "/bin/bash /opt/star…" 6 minutes ago Up 6 minutes 0.0.0.0:5236->5236/tcp dm8
david@DaviddeMBP DAMENG % docker stop b608c67d6f5a
b608c67d6f5a
david@DaviddeMBP DAMENG % docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
b608c67d6f5a dm8_single:v8.1.2.128_ent_x86_64_ctm_pack4 "/bin/bash /opt/star…" 6 minutes ago Exited (137) 3 seconds ago dm8
david@DaviddeMBP DAMENG % docker start b608c67d6f5a
b608c67d6f5a
david@DaviddeMBP DAMENG % docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
b608c67d6f5a dm8_single:v8.1.2.128_ent_x86_64_ctm_pack4 "/bin/bash /opt/star…" 6 minutes ago Up 3 seconds 0.0.0.0:5236->5236/tcp dm8
david@DaviddeMBP DAMENG %
3. 进入容器并操作DM 数据库
- 如果使用 docker 容器里面的 disql,进入容器后,先执行 source /etc/profile 防止中文乱码。
- 新版本 Docker 镜像中数据库默认用户名/密码为 SYSDBA/SYSDBA001。
david@DaviddeMBP ~ % docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
b608c67d6f5a dm8_single:v8.1.2.128_ent_x86_64_ctm_pack4 "/bin/bash /opt/star…" 14 minutes ago Up 7 minutes 0.0.0.0:5236->5236/tcp dm8
david@DaviddeMBP ~ % docker exec -it dm8 bash
root@b608c67d6f5a:/# source /etc/profile
root@b608c67d6f5a:/# cd /opt/dmdbms/bin
root@b608c67d6f5a:/opt/dmdbms/bin# ./disql SYSDBA/SYSDBA001
Server[LOCALHOST:5236]:mode is normal, state is open
login used time : 22.175(ms)
disql V8
SQL> select * from v$version;
LINEID BANNER
---------- ---------------------------------
1 DM Database Server 64 V8
2 DB Version: 0x7000c
3 08134283904-20220804-166351-20005
used time: 32.583(ms). Execute id is 500.
SQL>
然后就可以进行相关的操作。
因为我们这里没有给容器创建独立的网络,如果是用DBeaver客户端工具连接,直接使用127.0.0.1:5236 进行连接即可。
david@DaviddeMBP ~ % docker network ls
NETWORK ID NAME DRIVER SCOPE
47c7849a5cec bridge bridge local
2566e6b16470 host host local
efbfe7aeff74 none null local
david@DaviddeMBP ~ %
我们这里创建一个示例用户:
DM7 达梦 数据库 示例用户 安装 说明
https://www.cndba.cn/cndba/dave/article/3712
因为创建容器的时候做了目录映射:
/Users/david/Documents/Software/DM/data:/opt/dmdbms/data
所以直接将sql文件放到/Users/david/Documents/Software/DM/data 目录下即可,当然也可以使用cp命令进行复制。
root@b608c67d6f5a:/opt/dmdbms/data/DAMENG# ls
DAMENG01.log HMAIN ROLL.DBF TEMP.DBF ctl_bak dm.ctl dm_service.prikey dminit20230217230501.log sqllog.ini
DAMENG02.log MAIN.DBF SYSTEM.DBF bak dave.ini dm.ini dmhr.sql rep_conflict.log trace
root@b608c67d6f5a:/opt/dmdbms/data/DAMENG# pwd
/opt/dmdbms/data/DAMENG
root@b608c67d6f5a:/opt/dmdbms/data/DAMENG# which disql
root@b608c67d6f5a:/opt/dmdbms/data/DAMENG# /opt/dmdbms/bin/disql SYSDBA/SYSDBA001
Server[LOCALHOST:5236]:mode is normal, state is open
login used time : 24.071(ms)
disql V8
SQL> ` dmhr.sql
SQL> CREATE TABLESPACE DMHR DATAFILE 'DMHR.DBF' size 128;
executed successfully
used time: 159.420(ms). Execute id is 900.
SQL> /
CREATE TABLESPACE DMHR DATAFILE 'DMHR.DBF' size 128;
[-3401]:Error in line: 2
tablespace [DMHR] is already exist.
used time: 0.857(ms). Execute id is 0.
SQL>
CREATE SCHEMA DMHR;
executed successfully
used time: 17.517(ms). Execute id is 901.
SQL> CREATE TABLE "DMHR"."REGION"
(
"REGION_ID" INT NOT NULL,
"REGION_NAME" VARCHAR(25) NULL
);
……
SQL> ALTER TABLE "DMHR"."JOB_HISTORY" ADD CONSTRAINT "JHIST_EMP_ID_ST_DATE_PK" PRIMARY KEY("EMPLOYEE_ID","START_DATE");
executed successfully
used time: 19.026(ms). Execute id is 1889.
SQL> ALTER TABLE "DMHR"."JOB_HISTORY" ADD CONSTRAINT "JHIST_JOB_FK" FOREIGN KEY("JOB_ID") REFERENCES "DMHR"."JOB"("JOB_ID");
executed successfully
used time: 15.954(ms). Execute id is 1890.
SQL> ALTER TABLE "DMHR"."JOB_HISTORY" ADD CONSTRAINT "JHIST_DEPT_FK" FOREIGN KEY("DEPARTMENT_ID") REFERENCES "DMHR"."DEPARTMENT"("DEPARTMENT_ID");
executed successfully
used time: 17.068(ms). Execute id is 1891.
SQL> ALTER TABLE "DMHR"."JOB_HISTORY" ADD CONSTRAINT "JHIST_EMP_FK" FOREIGN KEY("EMPLOYEE_ID") REFERENCES "DMHR"."EMPLOYEE"("EMPLOYEE_ID");
executed successfully
used time: 18.192(ms). Execute id is 1892.
SQL> ALTER TABLE "DMHR"."JOB_HISTORY" ADD CHECK ("END_DATE" > "START_DATE");
executed successfully
used time: 9.631(ms). Execute id is 1893.
SQL>
SQL> select * from dmhr.city;
LINEID CITY_ID CITY_NAME REGION_ID
---------- ------- --------- -----------
1 BJ 北京 1
2 SJZ 石家庄 1
3 SH 上海 2
4 NJ 南京 2
5 GZ 广州 3
6 HK 海口 3
7 WH 武汉 4
8 CS 长沙 4
9 SY 沈阳 5
10 XA 西安 6
11 CD 成都 7
11 rows got
used time: 8.376(ms). Execute id is 1894.
SQL>
版权声明:本文为博主原创文章,未经博主允许不得转载。
- 上一篇:Mac 安装 Docker 并修改源
- 下一篇:达梦数据库内置示例库DMHR脚本