当前位置: 首页 > article >正文

ORA-01092 ORA-14695 ORA-38301

文章目录

  • 前言
  • 一、MAX_STRING_SIZE--12C 新特性扩展数据类型 varchar2(32767)
  • 二、恢复操作
    • 1.尝试恢复MAX_STRING_SIZE参数为默认值
    • 2.在upgrade模式下执行utl32k.sql


前言

今天客户发来一个内部测试库数据库启动截图报错,描述是“上午出现服务卡顿,然后重启了一下,目前出现实例无法启动的问题”
在这里插入图片描述
这个情况来看提示比较明显:ORA-14695 MAX_STRING_SIZE 是和字符串大小有关,追查alert日志发现有过修改操作,只不过是在8月27日,使用scope=spfile但当时没有重启记录,此次是修改完参数第一次重启出现的报错。
在这里插入图片描述
冲浪后猜测当时想扩大varchar2的默认长度,但是操作的人员只是修改了这一个参数且没有让其生效。


一、MAX_STRING_SIZE–12C 新特性扩展数据类型 varchar2(32767)

这是在12c引入的新参数,varchar2在早期版本中最大长度限制为4000,12C版本可以通过修改参数MAX_STRING_SIZE将最大长度限制调整为32767。早期版本中虽然SQL数据类型限制为4000(如表中的列的varchar2类型),但在PL/SQL中的限制是32767(如在存储过程中的定义变量时用的varchar2类型)
在修改过程有以下情况需要注意:

1,需要在UPGRADE模式下修改参数和跑脚本utl32k.sql。
Use ALTER SYSTEM only when the database is in UPGRADE mode, and run the utl32k.sql script afterward, as explained in this section.
2,参数MAX_STRING_SIZE只控制 VARCHAR2, NVARCHAR2, and RAW这三个数据类型的最大值。
MAX_STRING_SIZE controls the maximum size of VARCHAR2, NVARCHAR2, and RAW data types in SQL.
3,STANDARD模式下,VARCHAR2 and NVARCHAR2最大值为4000,RAW最大为2000。
STANDARD means that the length limits for Oracle Database releases prior to Oracle Database 12c apply (for example, 4000 bytes for VARCHAR2 and NVARCHAR2, and 2000 bytes for RAW).
4,EXTENDED模式下,上述三个数据类型的最大值为32767。
EXTENDED means that the 32767 byte limit introduced in Oracle Database 12c applies.
5,COMPATIBLE这个兼容参数的版本为12.0.0.0及以上。
The COMPATIBLE initialization parameter must be set to 12.0.0.0 or higher to set MAX_STRING_SIZE = EXTENDED.
6,参数MAX_STRING_SIZE的值只能从STANDARD 修改为 EXTENDED,而不能从EXTENDED 修改为 STANDARD。
You can change the value of MAX_STRING_SIZE from STANDARD to EXTENDED. However, you cannot change the value of MAX_STRING_SIZE from EXTENDED to STANDARD.

二、恢复操作

1.尝试恢复MAX_STRING_SIZE参数为默认值

我创建了pfile,删除了对应MAX_STRING_SIZE所在行,然后通过pfile进行数据库启动。但不幸的是依旧报同样的错误。
在这里插入图片描述
那既然不好使,可能操作不止修改参数这一个地方,我只能把当初修改想法继续实现下去了。

2.在upgrade模式下执行utl32k.sql

SQL> startup upgrade

SQL> @?/rdbms/admin/utl32k.sql

在这里插入图片描述
但是在执行过程中我又遇到了ORA-38301,提示回收站的对象无法执行,那只能清掉回收站再来一次喽。

SQL> shutdown immediate

SQL> startup upgrade
#清空回收站
SQL> purge dba_recyclebin

SQL> @?/rdbms/admin/utl32k.sql
#编译失效对象
SQL> @?/rdbms/admin/utlrp.sql

SQL> shutdown immediate

SQL> startup

在这里插入图片描述
那么至此故障排查结束,数据库已完成启动。


http://www.kler.cn/a/399590.html

相关文章:

  • 「Mac玩转仓颉内测版14」PTA刷题篇5 - L1-005 考试座位号
  • Infisical开源密钥管理平台实战指南
  • 传奇996_23——杀怪掉落,自动捡取,捡取动画
  • 【项目开发】理解SSL延迟:为何HTTPS比HTTP慢?
  • 前端三大组件之CSS,三大选择器,游戏网页仿写
  • 效率工具-tig的使用
  • leetcode226:反转二叉树
  • 重修设计模式-行为型-备忘录模式
  • 计算机网络基础——针对实习面试
  • Rust:AtomicI8 还是 Mutex<u8>?
  • 网络延迟对Python爬虫速度的影响分析
  • cJson移植使用
  • 计算机组成与原理(2) basic of computer architecture
  • STM32 极速入门第一天基础拓展 驱动i2c屏幕 ( 使用PlatformIO开发STM32单片机 )
  • 文献阅读11.17
  • 半导体工艺与制造篇1 绪论
  • 【WPF】Prism学习(二)
  • ThinkPHP中的MVC分层是什么
  • 鸿蒙生态的认知和生态的崛起分析
  • 表面法线估计(Surface Normal Estimation)
  • 【机器学习】机器学习中用到的高等数学知识-5. 函数空间和泛函分析 (Functional Analysis)
  • PostgreSQL 并行计算算法,参数,强制并行度设置
  • 使用Web Components构建模块化Web应用
  • 【电子设计】按键LED控制与FreeRTOS
  • 万字长文解读机器学习——降维
  • PCL 点云分割 欧式聚类算法分割