签到成功

知道了

CNDBA社区CNDBA社区

DM 达梦数据库 版本升级 说明与测试

2020-01-03 13:49 2116 0 原创 DM 达梦
作者: Dave

1 DM 数据库版本升级说明

DM数据库的版本一直在不断的的迭代。 对于DM 的数据库版本,我们分大版本和小版本。 https://www.cndba.cn/Dave/article/3904

  • 1)大版本:指DM6,DM7,DM8 这种。
  • 2)小版本:指同一个大版本子版本的变化,比如DM8的:8.1.0.147、8.1.1.19、8.1.1.48 三个版本。

因此达梦数据库的升级需要根据不同的版本来操作。https://www.cndba.cn/Dave/article/3904

https://www.cndba.cn/Dave/article/3904

  1. 对于小版本的升级,可以直接在停库的情况下,使用新版本的Bin 替换老版本的Bin。
  2. 对于大版本,因为不同版本之间DM系统表有所不同,旧的数据文件不能被新版的数据库直接识别和加载。因此对于大版本的升级,只能通过数据迁移的方式进行。 数据迁移可以使用数据迁移工具(DTS)也可以通过导出导入的方式进行。 数据迁移的方式升级大版本是一个系统工程,工作量大,周期也比较长,除了数据库升级之外,还需要前段软件进行测试。 这里不在描述。

2 小版本升级示例

我们这里演示一个DM 小版本升级的过程。我们将达梦从当前的8.1.1.19升级到8.1.1.48。 注意这里演示的是替换bin目录,实际上如果库不大的话,也可以直接将data 目录复制到新版本中。

2.1 创建实例并查看版本

[dave@www.cndba.cn ~]$ dminit path=/dm/dmdbms/data db_name=cndba instance_name=dave port_num=5236
initdb V8
db version: 0x7000a
file dm.key not found, use default license!
License will expire on 2020-09-16

 log file path: /dm/dmdbms/data/cndba/cndba01.log


 log file path: /dm/dmdbms/data/cndba/cndba02.log

write to dir [/dm/dmdbms/data/cndba].
create dm database success. 2020-01-03 13:11:19

[dave@www.cndba.cn ~]$ dmserver /dm/dmdbms/data/cndba/dm.ini 
file dm.key not found, use default license!
version info: develop
Use normal os_malloc instead of HugeTLB
Use normal os_malloc instead of HugeTLB
DM Database Server x64 V8 startup...
Database mode = 0, oguid = 0
License will expire on 2020-09-16

查看当前版本:

[dave@www.cndba.cn ~]$ disql SYSDBA/SYSDBA

服务器[LOCALHOST:5236]:处于普通打开状态
登录使用时间: 7.551(毫秒)
disql V8
SQL> set lineshow off
SQL> select t.LIC_VERSION,t.SERIES_NO,t.AUTHORIZED_CUSTOMER,t.SERVER_SERIES,expired_date,PRODUCT_TYPE from V$LICENSE t;

LIC_VERSION SERIES_NO AUTHORIZED_CUSTOMER SERVER_SERIES
----------- --------- ------------------- -------------
EXPIRED_DATE                                                                                        
----------------------------------------------------------------------------------------------------
PRODUCT_TYPE
------------
3.00        dm66n367  DEVELOP USER        D
2020-09-16
DM7


已用时间: 24.022(毫秒). 执行号:989.
SQL>

这里是一个临时的测试版DM8, 查询显示有问题。 实际版本是8.1.1.19。https://www.cndba.cn/Dave/article/3904https://www.cndba.cn/Dave/article/3904

2.2 安装新版本

安装8.1.1.48 版本软件。 我这里因为没有安装,所以这里需要先通过安装,再复制。 如果已经有8.1.1.48的bin目录,不要做步骤。

[dave@www.cndba.cn dm]$ ./DMInstall.bin -i
请选择安装语言(C/c:中文 E/e:英文) [C/c]:
解压安装程序......... 
……
请选择安装目录 [/home/dmdba/dmdbms]:/tmp/dmdbms
……

这里直接安装到tmp目录下,替换完直接删掉。

2.3 停库并备份bin目录

[dave@www.cndba.cn dmdbms]$ pwd
/dm/dmdbms
[dave@www.cndba.cn dmdbms]$ tar -zcvf bin.bak.20200103 bin

[dave@www.cndba.cn dmdbms]$ du -lh bin
24K    bin/client_ssl/DEVELOP
16K    bin/client_ssl/DMHR
16K    bin/client_ssl/SYSAUDITOR
16K    bin/client_ssl/SYSDBA
16K    bin/client_ssl/SYSDBO
16K    bin/client_ssl/SYSSSO
104K    bin/client_ssl
12K    bin/server_ssl
0    bin/lib
124K    bin/service_template
0    bin/bin/include
0    bin/bin/proc
0    bin/bin
8.0K    bin/pids
255M    bin
[dave@www.cndba.cn dmdbms]$ ll -lh bin.bak.20200103 
-rw-rw-r-- 1 dmdba dmdba 80M 1月   3 13:25 bin.bak.20200103
[dave@www.cndba.cn dmdbms]$

2.4 替换bin

删除旧版本的bin目录:https://www.cndba.cn/Dave/article/3904

[dave@www.cndba.cn dmdbms]$ pwd
/dm/dmdbms
[dave@www.cndba.cn dmdbms]$ rm -rf bin

将新版本的bin 复制过来:

https://www.cndba.cn/Dave/article/3904

[dave@www.cndba.cn dmdbms]$ cp -rf /tmp/dmdbms/bin /dm/dmdbms/
[dave@www.cndba.cn dmdbms]$ du -lh /dm/dmdbms/bin
24K    /dm/dmdbms/bin/client_ssl/DEVELOP
16K    /dm/dmdbms/bin/client_ssl/DMHR
16K    /dm/dmdbms/bin/client_ssl/SYSAUDITOR
16K    /dm/dmdbms/bin/client_ssl/SYSDBA
16K    /dm/dmdbms/bin/client_ssl/SYSDBO
16K    /dm/dmdbms/bin/client_ssl/SYSSSO
104K    /dm/dmdbms/bin/client_ssl
12K    /dm/dmdbms/bin/server_ssl
0    /dm/dmdbms/bin/lib
124K    /dm/dmdbms/bin/service_template
0    /dm/dmdbms/bin/bin/include
0    /dm/dmdbms/bin/bin/proc
0    /dm/dmdbms/bin/bin
0    /dm/dmdbms/bin/pids
254M    /dm/dmdbms/bin
[dave@www.cndba.cn dmdbms]$

2.5 启库验证版本

[dave@www.cndba.cn dmdbms]$ dmserver /dm/dmdbms/data/cndba/dm.ini 
file dm.key not found, use default license!
version info: develop
Use normal os_malloc instead of HugeTLB
Use normal os_malloc instead of HugeTLB
DM Database Server x64 V8 1-1-48-19.11.29-116408-ENT  startup...
#这里其实已经能看到版本了
Database mode = 0, oguid = 0
License will expire on 2020-11-29

我们在DISQL中在查询一次:

https://www.cndba.cn/Dave/article/3904
https://www.cndba.cn/Dave/article/3904

[dave@www.cndba.cn ~]$ disql SYSDBA/SYSDBA

服务器[LOCALHOST:5236]:处于普通打开状态
登录使用时间: 3.851(毫秒)
disql V8
SQL> set lineshow off
SQL>select t.LIC_VERSION,t.SERIES_NO,t.AUTHORIZED_CUSTOMER,t.SERVER_SERIES,expired_date,PRODUCT_TYPE from V$LICENSE t;

LIC_VERSION SERIES_NO AUTHORIZED_CUSTOMER SERVER_SERIES
----------- --------- ------------------- -------------
EXPIRED_DATE                                                                                        
----------------------------------------------------------------------------------------------------
PRODUCT_TYPE
------------
3.00        dm66n367  DEVELOP USER        D
2020-11-29
DM7


已用时间: 5.181(毫秒). 执行号:59.
SQL>

这里的disql 显示还是因为软件介质的问题。 正式发布版不会出现这种情况。

3 降低版本测试

突发奇想从8.1.1.48降到8.1.1.19 会怎样,测试结果如下:

删新版本并还原备份的旧版本:

[dave@www.cndba.cn dmdbms]$ rm -rf bin
[dave@www.cndba.cn dmdbms]$ ls
bin2              desktop  include  license_en.txt  release_en.txt  script     uninstall.sh
bin.bak.20200103  doc      jar      license_zh.txt  release_zh.txt  tool       web
data              drivers  jdk      log             samples         uninstall
[dave@www.cndba.cn dmdbms]$ tar xzvf bin.bak.20200103

于是启动库:https://www.cndba.cn/Dave/article/3904

[dave@www.cndba.cn dmdbms]$ dmserver /dm/dmdbms/data/cndba/dm.ini
file dm.key not found, use default license!
version info: develop
Use normal os_malloc instead of HugeTLB
Use normal os_malloc instead of HugeTLB
DM Database Server x64 V8 startup...
Database mode = 0, oguid = 0
License will expire on 2020-09-16
file lsn: 50709
ndct db load finished
ndct fill fast pool finished
iid page's trxid[7013]
NEXT TRX ID = 7014
pseg_collect_items, collect 0 active_trxs, 0 cmt_trxs, 0 pre_cmt_trxs, 0 active_pages, 0 cmt_pages, 0 pre_cmt_pages
pseg_process_collect_items end, 0 active trx, 0 active pages, 0 committed trx, 0 committed pages
total 0 active crash trx, pseg_crash_trx_rollback begin ...
pseg_crash_trx_rollback end
purg2_crash_cmt_trx end, total 0 page purged
set EP[0]'s pseg state to inactive
pseg recv finished
nsvr_startup end.
aud sys init success.
aud rt sys init success.
systables desc init success.
ndct_db_load_info success.
nsvr_process_before_open begin.
Server DM7_DCT_VERSION mismatch, version of data is 5, server version is 3.
Server DM8_DCT_VERSION mismatch, version of data is 16, server version is 8.
Please use the correct version of server or set the CHECK_SVR_VERSION=0 in dm.ini
[dave@www.cndba.cn dmdbms]$

直接报版本不一致无法启动。 但这里提示我们可以修改参数CHECK_SVR_VERSION=0来启动,修改后,启动成功。 这里仅仅是测试,生产环境,不要尝试。

[dave@www.cndba.cn dmdbms]$ dmserver /dm/dmdbms/data/cndba/dm.ini
file dm.key not found, use default license!
version info: develop
Use normal os_malloc instead of HugeTLB
Use normal os_malloc instead of HugeTLB
DM Database Server x64 V8 startup...
Database mode = 0, oguid = 0
License will expire on 2020-09-16
begin redo pwr log collect, last ckpt lsn: 50709 ...
redo pwr log collect finished
main rfil[/dm/dmdbms/data/cndba/cndba01.log]'s grp collect 0 valid pwr record, discard 1 invalid pwr record
EP[0]'s cur_lsn[50728]
begin redo log recover, last ckpt lsn: 50709 ...
redo log recover finished
ndct db load finished
ndct fill fast pool finished
iid page's trxid[8015]
NEXT TRX ID = 8016
pseg_collect_items, collect 0 active_trxs, 0 cmt_trxs, 0 pre_cmt_trxs, 0 active_pages, 0 cmt_pages, 0 pre_cmt_pages
pseg_process_collect_items end, 0 active trx, 0 active pages, 0 committed trx, 0 committed pages
total 0 active crash trx, pseg_crash_trx_rollback begin ...
pseg_crash_trx_rollback end
purg2_crash_cmt_trx end, total 0 page purged
set EP[0]'s pseg state to inactive
set EP[1]'s pseg state to inactive
set EP[2]'s pseg state to inactive
set EP[3]'s pseg state to inactive
set EP[4]'s pseg state to inactive
set EP[5]'s pseg state to inactive
set EP[6]'s pseg state to inactive
set EP[7]'s pseg state to inactive
set EP[8]'s pseg state to inactive
set EP[9]'s pseg state to inactive
set EP[10]'s pseg state to inactive
set EP[11]'s pseg state to inactive
set EP[12]'s pseg state to inactive
set EP[13]'s pseg state to inactive
set EP[14]'s pseg state to inactive
pseg recv finished
nsvr_startup end.
aud sys init success.
aud rt sys init success.
systables desc init success.
ndct_db_load_info success.
nsvr_process_before_open begin.
Server DM7_DCT_VERSION mismatch, version of data is 5, server version is 3.
Server DM8_DCT_VERSION mismatch, version of data is 16, server version is 8.
nsvr_process_before_open success.
total 0 active crash trx, pseg_crash_trx_rollback begin ...
pseg_crash_trx_rollback end
SYSTEM IS READY.

测试了一个DDL 操作,也正常:

[dave@www.cndba.cn ~]$ disql SYSDBA/SYSDBA

服务器[LOCALHOST:5236]:处于普通打开状态
登录使用时间: 24.610(毫秒)
disql V8
SQL> create table dave as select * from sysobjects;
操作已执行
已用时间: 10.928(毫秒). 执行号:3.
SQL>

版权声明:本文为博主原创文章,未经博主允许不得转载。

用户评论
* 以下用户言论只代表其个人观点,不代表CNDBA社区的观点或立场
Dave

Dave

关注

人的一生应该是这样度过的:当他回首往事的时候,他不会因为虚度年华而悔恨,也不会因为碌碌无为而羞耻;这样,在临死的时候,他就能够说:“我的整个生命和全部精力,都已经献给世界上最壮丽的事业....."

  • 1902
    原创
  • 2
    翻译
  • 456
    转载
  • 131
    评论
  • 访问:3641827次
  • 积分:3137
  • 等级:核心会员
  • 排名:第1名
精华文章
    最新问题
    查看更多+
    热门文章
      热门用户
      推荐用户
        Copyright © 2016 All Rights Reserved. Powered by ZhiXinTech · 皖ICP备19020168号·

        QQ交流群