0
点赞
收藏
分享

微信扫一扫

测试工程师面试准备(软硬件)

古月无语 2024-04-28 阅读 8

一个客户的数据库版本是19.3,在做数据库复制的时候,目标端报错了,查看了一下问题发现表的字段长度有不对,在12c以前我们都知道varchar的长度最大是4000,但是客户这里居然有32767:

把客户的建表语句弄出来,放到我的一个19c的测试环境进行测试:

发现报错了:

这里报错很明显了,是MAX_STRING_SIZE参数不对,客户环境是extended,我的是默认STANDARD,

下面就是修改这个参数了,此参数是静态参数,需要重启数据库修改,还挺复杂的,具体如下:

1. 将集群参数设置为false
SQL> ALTER SYSTEM SET CLUSTER_DATABASE=FALSE scope=spfile;

2. 关闭所有节点数据库
SQL> shutdown immediate;

3. 以升级模式重启数据库
SQL> startup upgrade;

3. 更改参数: ALTER SYSTEM SET MAX_STRING_SIZE=EXTENDED;
SQL> alter system  set max_string_size=extended scope=spfile;
System altered.

4. 执行 utl32k.sql as sysdba:
SQL> @$ORACLE_HOME/rdbms/admin/utl32k.sql


执行脚本编译数据库  --必须执行,不然可能系统的部分对象失效,导致打开数据库 失败
@$ORACLE_HOME/rdbms/admin/utlrp.sql

5. 检查一下有没有产生失效对象
SQL> select count(*) from dba_objects where status<>'VALID';
  COUNT(*)
----------
0

6. 关闭数据库
SQL> shutdown immediate;

7. 以读写模式重启数据库
SQL> startup;
确认没问题后,将集群参数修改为true,再使用集群启动

举报

相关推荐

0 条评论