1 DM 数据库版本升级说明
DM数据库的版本一直在不断的的迭代。 对于DM 的数据库版本,我们分大版本和小版本。
- 1)大版本:指DM6,DM7,DM8 这种。
- 2)小版本:指同一个大版本子版本的变化,比如DM8的:8.1.0.147、8.1.1.19、8.1.1.48 三个版本。
因此达梦数据库的升级需要根据不同的版本来操作。
- 对于小版本的升级,可以直接在停库的情况下,使用新版本的Bin 替换老版本的Bin。
- 对于大版本,因为不同版本之间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。
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目录:
[dave@www.cndba.cn dmdbms]$ pwd
/dm/dmdbms
[dave@www.cndba.cn dmdbms]$ rm -rf bin
将新版本的bin 复制过来:
[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中在查询一次:
[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
于是启动库:
[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>
版权声明:本文为博主原创文章,未经博主允许不得转载。