You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

Oracle 11g迁移至12c的Schema级变更咨询及安装报错解决

我来帮你梳理清楚这两个Oracle版本升级/共存场景下的Schema级问题解决方案,都是实际运维中常见的情况:

一、Oracle 11g 升级至 12c 需执行的 Schema 级变更
  • 预升级兼容性检查:首先必须运行12c安装包自带的预升级脚本utlu121i.sql,它会生成一份详细的Schema级检查报告,涵盖失效对象、权限缺失、数据类型兼容性(比如12c废弃的部分旧数据类型)等问题。执行命令:
    @$ORACLE_HOME/rdbms/admin/utlu121i.sql
    
  • 清理SYSTEM/SYSAUX表空间:12c对系统表空间的使用要求更严格,需要先清理11g遗留的无效对象、过期审计数据和回收站内容。可以执行:
    PURGE DBA_RECYCLEBIN;
    EXEC DBMS_SPACE_ADMIN.CLEANUP_SEGMENTS('SYSTEM');
    EXEC DBMS_SPACE_ADMIN.CLEANUP_SEGMENTS('SYSAUX');
    
  • 调整用户权限与角色:12c对CONNECTRESOURCE等内置角色的权限做了大幅调整(比如CONNECT不再默认包含CREATE TABLE权限),需要重新检查并授予业务用户必要的权限;同时移除不再适用的旧角色权限。
  • 重新编译失效对象:升级后大概率会出现大量无效的Schema对象(存储过程、视图、触发器等),需运行批量编译脚本utlrp.sql
    @$ORACLE_HOME/rdbms/admin/utlrp.sql
    
    个别对象可以单独执行ALTER OBJECT <对象名> COMPILE;处理。
  • 适配12c新特性(可选):如果要启用多租户、在线重定义、分区表增强等新特性,需要对现有Schema做针对性调整——比如将普通表转换为分区表,或者将用户迁移到PDB(多租户架构下)。
  • 更新审计与安全策略:12c默认开启统一审计功能,需要关闭11g的旧审计设置,迁移到新的统一审计框架,同时调整Schema的审计规则以符合新规范。
二、HP-UX 11.31 Itanium 上已有11g Schema时安装12c的Schema级错误处理

这种情况属于同机器共存11g和12c导致的Schema冲突,处理步骤如下:

  • 隔离旧环境变量:安装12c前,务必清理11g相关的环境变量(ORACLE_HOMEORACLE_SIDPATH等),确保安装过程指向全新的12c安装路径,避免与11g的Schema产生关联。
  • 运行HP-UX专属预安装脚本:HP-UX平台上安装Oracle必须先执行rootpre.sh脚本,它会处理系统层面的依赖,同时检查并修复部分Schema级的冲突。执行命令:
    ./rootpre.sh
    
  • 手动清理冲突的公共对象:如果安装时提示PUBLIC同义词、公共角色冲突,登录11g数据库,临时删除或重命名冲突对象:
    -- 删除冲突的公共同义词
    DROP SYNONYM PUBLIC.<冲突同义词名称>;
    -- 重命名冲突的公共角色
    ALTER ROLE <冲突角色名称> RENAME TO <临时角色名称>;
    
    12c安装完成后,再根据业务需求恢复或调整这些对象。
  • 使用独立的表空间与系统用户:安装12c时,不要复用11g的SYSTEM/SYSAUX表空间,创建全新的表空间用于12c的系统Schema;同时确保12c的SYS、SYSTEM用户是全新创建的,不与11g用户共享存储。
  • 安装后修复残留冲突:如果安装完成后仍存在Schema级错误,运行utlu121s.sql脚本做二次检查与修复,或者通过DBMS_METADATA导出11g需要保留的业务Schema,在12c中重新导入,避免直接复用旧Schema。

内容的提问来源于stack exchange,提问作者Photo Monsters

火山引擎 最新活动