达梦数据库升级后查询user_procedures报错‘-7009:对象定义被修改‘ 问题解决
数据库升级版本跨度较大时,升级后较易出现此类问题,报错截图如下:注:本文档仅适用于跨度版本较大引起的此类问题,其余情况需具体情况具体分析。
·
1、问题
数据库升级版本跨度较大时,升级后较易出现此类问题,报错截图如下:
注:本文档仅适用于跨度版本较大引起的此类问题,其余情况需具体情况具体分析。
2、环境信息
3、查询集群状态
登陆DSC备机节点,执行以下操作:
#主备集群状态
su - dmdba
cd /home/dmdba/dmdbms/bin
./dmmonitor /dmdata/DAMENG/dmmonitor_manual.ini
show
tip
4、关闭数据库
#关闭备库守护进程
systemctl stop DmWatcherServiceGRP1_DMSERVER
#关闭主库守护进程
systemctl stop DmWatcherServiceRAC01
systemctl stop DmWatcherServiceRAC02
#关闭dsc主库
cd /home/dmdba/dmdbms/bin
./dmcssm ini_path=/home/dmdba/DSC/dmcssm.ini
ep stop GRP_DSC
#关闭备库
systemctl stop DmServiceGRP1_DMSERVER
5、调整dsc主库数据字典版本
#查询控制文件位置
cat /home/dmdba/DSC/rac01_config/dm.ini|grep CTL_PATH
CTL_PATH = +DMDATA/data/rac/dm.ctl #ctl file path
#拷贝asm磁盘组中的控制文件到本地磁盘
cd /home/dmdba/dmdbms/bin
./dmasmtool dcr_ini=/home/dmdba/DSC/dmdcr.ini
cp +DMDATA/data/rac/dm.ctl /home/dmdba/DSC/dm.ctl0712
exit
#转换控制文件为文本文件
./dmctlcvt c2t /home/dmdba/DSC/dm.ctl0712 /home/dmdba/DSC/ctl.txt0712
#修改控制文件文本
[dmdba@localhost bin]$ vi /home/dmdba/DSC/ctl.txt0712
(修改dm8_dct_version=72为dm8_dct_version=39)
[dmdba@localhost bin]$ cat /home/dmdba/DSC/ctl.txt0712 |grep dm8_dct_version
dm8_dct_version=39
#转换文本文件为控制文件
./dmctlcvt t2c /home/dmdba/DSC/ctl.txt0712 /home/dmdba/DSC/dm.ctl0712
#拷贝修改后的控制文件到asm磁盘组中(将原有控制文件先重命名做备份,否则报错)
./dmasmtool dcr_ini=/dm8/config/dmdcr.ini
mv +DMDATA/data/rac/dm.ctl +DMDATA/data/rac/dm.ctlbak0712
cp /home/dmdba/DSC/dm.ctl0712 +DMDATA/data/rac/dm.ctl
6、调整备库数据字典版本
#查询控制文件位置
cat /dmdata/DAMENG/dm.ini|grep CTL_PATH
CTL_PATH = /dmdata/DAMENG/dm.ctl #ctl file path
#转换控制文件为文本文件
cd /home/dmdba/dmdbms/bin
./dmctlcvt c2t /dmdata/DAMENG/dm.ctl /dmdata/DAMENG/ctl.txt
#修改控制文件文本
[dmdba@localhost bin]$ vi /dmdata/DAMENG/ctl.txt
(修改dm8_dct_version=72为dm8_dct_version=39)
[dmdba@localhost bin]$ cat /dmdata/DAMENG/ctl.txt |grep dm8_dct_version
dm8_dct_version=39
#重命名原控制文件做备份,并转换生成新的控制文件
mv /dmdata/DAMENG/dm.ctl /dmdata/DAMENG/dm.ctlbak0712
./dmctlcvt t2c /dmdata/DAMENG/ctl.txt /dmdata/DAMENG/dm.ctl
7、开启数据库,查看集群状态
#开启dsc主库
systemctl start DmServiceDM01
systemctl start DmServiceDM02
#开启备库
systemctl start DmServiceGRP1_DMSERVER
#开启主库守护进程
systemctl start DmWatcherServiceRAC01
systemctl start DmWatcherServiceRAC02
#开启备库守护进程
systemctl start DmWatcherServiceGRP1_DMSERVER
注:启动数据库后数据字典版本会自动升到软件对应版本(72);
#查看主备集群状态
su - dmdba
cd /home/dmdba/dmdbms/bin
./dmmonitor /dmdata/DAMENG/dmmonitor_manual.ini
show
tip
8、重建视图及系统包后查询user_procedures,无报错
disql sysdba/密码:5236
sp_create_system_views(0);
sp_create_system_views(1);
SP_CREATE_SYSTEM_PACKAGES(0);
SP_CREATE_SYSTEM_PACKAGES(1);
SQL> select * from V$PKGPROCINFOS;
未选定行
已用时间: 3.832(毫秒). 执行号:14003.
SQL> explain select * from V$PKGPROCINFOS;
1 #NSET2: [1, 1, 620]
2 #PRJT2: [1, 1, 620]; exp_num(16), is_atom(FALSE)
3 #PRJT2: [1, 1, 620]; exp_num(16), is_atom(FALSE)
4 #SORT3: [1, 1, 620]; key_num(2), is_distinct(FALSE), top_flag(0), is_adaptive(0)
5 #HASH2 INNER JOIN: [1, 1, 620]; KEY_NUM(1); KEY(O.PKGID=I.PKGID) KEY_NULL_EQU(0)
6 #NEST LOOP INDEX JOIN2: [1, 1, 620]
7 #ACTRL: [1, 1, 620];
8 #PRJT2: [1, 1, 224]; exp_num(4), is_atom(FALSE)
9 #SLCT2: [1, 1, 224]; exp11 = 1
10 #HASH2 INNER JOIN: [1, 1, 224]; RKEY_UNIQUE KEY_NUM(1); KEY(O_SCH.PID=O_USER.ID) KEY_NULL_EQU(0)
11 #SLCT2: [1, 1, 224]; exp11 = 1
12 #NEST LOOP INDEX JOIN2: [1, 1, 224]
13 #ACTRL: [1, 1, 224];
14 #HASH2 INNER JOIN: [1, 1, 168]; RKEY_UNIQUE KEY_NUM(1); KEY(O_PKG.SCHID=O_SCH.ID) KEY_NULL_EQU(0)
15 #NEST LOOP INDEX JOIN2: [1, 1, 168]
16 #ACTRL: [1, 1, 168];
17 #SLCT2: [1, 1, 160]; O_PKG.SUBTYPE$ = 'PKG'
18 #CSEK2: [1, 36, 160]; scan_type(ASC), SYSINDEXSYSOBJECTS(SYSOBJECTS as O_PKG), scan_range[('SCHOBJ',min,min),('SCHOBJ',max,max))
19 #BLKUP2: [1, 1, 4]; SYSINDEXIDSYSOBJECTS(O_SCH)
20 #SSEK2: [1, 1, 4]; scan_type(ASC), SYSINDEXIDSYSOBJECTS(SYSOBJECTS as O_SCH), scan_range[O_PKG.SCHID,O_PKG.SCHID]
21 #SSCN: [1, 1467, 8]; SYSINDEXPIDIDSYSOBJECTS(SYSOBJECTS as O_SCH)
22 #BLKUP2: [1, 1, 52]; SYSINDEXIDSYSOBJECTS(O_USER)
23 #SSEK2: [1, 1, 52]; scan_type(ASC), SYSINDEXIDSYSOBJECTS(SYSOBJECTS as O_USER), scan_range[O_SCH.PID,O_SCH.PID]
24 #CSCN2: [1, 1467, 56]; SYSINDEXSYSOBJECTS(SYSOBJECTS as O_USER)
25 #CSEK2: [1, 1, 8]; scan_type(ASC), SYSINDEXSYSPKGPROCINFOS(SYSPKGPROCINFOS as I), scan_range[(O.PKGID,min),(O.PKGID,max))
26 #CSCN2: [1, 1, 396]; SYSINDEXSYSPKGPROCINFOS(SYSPKGPROCINFOS as I)
已用时间: 1.588(毫秒). 执行号:0.
SQL> select * from user_procedures;
行号 OBJECT_NAME PROCEDURE_NAME OBJECT_ID SUBPROGRAM_ID OVERLOAD OBJECT_TYPE
---------- ------------------------------------------ -------------- ----------- ------------- ----------- -----------
AGGREGATE PIPELINED IMPLTYPEOWNER IMPLTYPENAME PARALLEL INTERFACE DETERMINISTIC AUTHID
--------- --------- ------------- ------------ -------- --------- ------------- -------
1 SP_ARCH_BAKSET_REMOVE_BATCH NULL 83887093 1 NULL PROCEDURE
NO NO NULL NULL YES NO NO DEFINER
2 SP_DB_BAKSET_REMOVE_BATCH NULL 83887090 1 NULL PROCEDURE
NO NO NULL NULL YES NO NO DEFINER
3 SP_DROP_CONS_AND_OBJ_REFS_WHEN_DROP_SCHEMA NULL 83887080 1 NULL PROCEDURE
NO NO NULL NULL YES NO NO DEFINER
行号 OBJECT_NAME PROCEDURE_NAME OBJECT_ID SUBPROGRAM_ID OVERLOAD OBJECT_TYPE
---------- ------------------------------------------ -------------- ----------- ------------- ----------- -----------
AGGREGATE PIPELINED IMPLTYPEOWNER IMPLTYPENAME PARALLEL INTERFACE DETERMINISTIC AUTHID
--------- --------- ------------- ------------ -------- --------- ------------- -------
4 SP_TAB_BAKSET_REMOVE_BATCH NULL 83887092 1 NULL PROCEDURE
NO NO NULL NULL YES NO NO DEFINER
5 SP_TS_BAKSET_REMOVE_BATCH NULL 83887091 1 NULL PROCEDURE
NO NO NULL NULL YES NO NO DEFINER
6 SP_UPDATE_SYSHPARTTABLEINFO_RESVD1 NULL 83887108 1 NULL PROCEDURE
NO NO NULL NULL YES NO NO DEFINER
6 rows got
已用时间: 6.118(毫秒). 执行号:14004.
更多技术分享,见达梦技术社区:https://eco.dameng.com
更多推荐
已为社区贡献1条内容
所有评论(0)