深入了解Oracle数据字典升级脚本catupgrd.sql调用过程
SQL> select * from v$version;BANNER -------------------------------------------------------------------------------- Oracle Database 11g Enterprise Edition Release 11.2.0.2.0 - 64bit Production PL/SQL Release 11.2.0.2.0 - Production CORE 11.2.0.2.0 Production TNS for Linux: Version 11.2.0.2.0 - Production NLSRTL Version 11.2.0.2.0 - ProductionSQL> select * from global_name;GLOBAL_NAME -------------------------------------------------------------------------------- www.oracledatabase12g.comalter table WRR$_REPLAY_FILTER_SET add (default_action varchar2(20));Rem ======================================================================= Rem End Changes for Database Replay Rem =======================================================================
该c1102000.sql会被catupgrd.sql调用,换而言之在升级过程中会为WRR$_REPLAY_FILTER_SET基表增加default_action列。 而与之相对应的e1102000.sql 脚本存在以下drop default_action 列的语句:
Rem Rem Drop this column for existing dbms_workload_replay Rem alter table WRR$_REPLAY_FILTER_SET drop column default_action; commit;
该e1102000.sql在数据字典降级过程中会被catdwgrd.sql调用,也就是说当数据字典要降级到11.2之前的版本时会将WRR$_REPLAY_FILTER_SET基表还原到之前版本的表结构,而这一还原操作就包含在e1102000.sql脚本中。 请注意虽然数据字典的升级(catupgrd.sql)和降级(catdwgrd.sql)是2种逆向的操作,但实际他们对数据字典的变更并非是一一对应的。 假设在catupgrd.sql中创建了某些组件对象(component objects),那么在降级时并不会将这些新增加的组件对象全部drop掉,而是简单地truncate这些对象上的数据。 实际上c1102000.sql 脚本会在升级数据字典即catupgrd.sql脚本运行时被调用,而e1102000.sql 则会在降级数据字典版本即catdwgrd.sql脚本运行过程中被调用。 一般来说在$ORACLE_HOME/rdbms/admin目录下的脚本文件名表达了该脚本的作用,如:
cat*.sql 一般是用来创组件建对象(create objects)的,如catalog.sql脚本创建数据字典对象 cmpup*.sql 一般是用来升级组件component的,如cmpupjav.sql脚本用来升级JAVAVM和XML ii1102000.sql 包含了数据字典变化必要的DDL操作 c1102000.sql 包含了绝大多数的数据字典变化 a1102000.sql 包含了更新字典数据的PL/SQL块 cmpupgrd.sql 该脚本调用必要的组件升级脚本,如JAVAVM,CONTEXT,Spatial等 f1102000.sql 该脚本使用PL/SQL包将数据字典变化恢复到老的版本 e1102000.sql 该脚本包含了恢复到老版本的其他一些必要字典变更
了解了这些升级脚本的作用之后,我们来看一个数据库升级的实例。 以下是由10.1.0.5 升级到 11.2.0.1 时 catupgrd.sql 脚本的调用追踪情况:
@catupgrd.sql@catupstr.sql@i0902000.sql -> @i1001000.sql -> @i1002000.sql -> i1101000.sql@c1001000.sql -> @c1002000.sql -> @c1101000.sql @catalog.sql @catproc.sql @catupprc.sql@a1001000.sql -> @a1002000.sql -> @a1101000.sql @cmpupgrd.sql@cmpupstr.sql@cmpupjav.sql@cmpupnjv.sql@cmpupxdb.sql@cmpupnxb.sql@cmpupord.sql@cmpupmsc.sql@cmpupend.sql @catupend.sql
注意以上c*.sql的执行过程是c1001000.sql->@c1002000.sql -> @c1101000.sql ->
本文转自maclean_007 51CTO博客,原文链接:http://blog.51cto.com/maclean/1278060
深入了解Oracle数据字典升级脚本catupgrd.sql调用过程相关推荐
- oracle数据库用脚本运行SQL语句
1. 在同一个目录下创建 runBatch.bat sqlplus sys/sangfor@orcl as sysdba @sql.txtpause sql.txt 要执行的SQL语句 2. 双击ru ...
- Oracle数据库升级与补丁
以下是Maclean.Liu 编写或收集的数据库升级(Upgrade)与补丁(patch fix)方面的知识: 甲骨文发布2012 1月数据库安全补丁Critical Patch Update Jan ...
- oracle 10G 升级到11G
Oracle从10g升级到11g详细步骤 数据库旧版本:10.2.0.4 数据库新版本:11.2.0.2 OS 版本: Solaris 10 参考文档:Complete Checklist for M ...
- oracle存储过程学习经典[语法+实例+调用]
Oracle存储过程基础知识 商业规则和业务逻辑可以通过程序存储在Oracle中,这个程序就是存储过程. 存储过程是SQL, PL/SQL, Java 语句的组合,它使你能将执行商业规则的代码从你的应 ...
- oracle结构体转为字符,CSS_细化解析:Oracle与SQL过程之间的转化,这两天写数据库升级脚本,发 - phpStudy...
细化解析:Oracle与SQL过程之间的转化 这两天写数据库升级脚本,发现MSSQL和Oracle之间的转化还是比较容易的. 以下面两个过程为例.两者的功能相似. 1.MSSQL脚本 1 /** 更改 ...
- oracle执行脚本顺序执行吗,【ORACLE】记录通过执行Oracle的执行计划查询SQL脚本中的效率问题 - 不及格的飞鱼...
记录通过执行Oracle的执行计划查询SQL脚本中的效率问题 问题现象: STARiBOSS5.8.1R2版本中,河北对帐JOB执行时,无法生成发票对帐文件. 首先,Quartz表达式培植的启动时间为 ...
- oracle 不能导入sql语句,oracle数据库导入.dmp脚本的sql 语句
一.更改数据库管理员sys/system密码 1.运行到C盘根目录 2.输入:SET ORACLE_SID = 你的SID名称 3.输入:sqlplus /nolog 4.输入:connect /as ...
- oracle数据库升级失败怎么办,【案例】Oracle报错ORA-00918 数据库升级后遇到SQL BUG 5368296...
天萃荷净 运维DBA反映生产数据库10.2.0.1存在BUG导致SQL无法使用,在升级到10.2.0.5后执行SQL报错ORA-00918,分析原因为BUG修复后要修改SQL语句,升级数据库到10.2 ...
- oracle升级后报 06502,Oracle数据库升级后报ORA-00704和ORA-39700错误
把数据库从10.2.0.1.0升级到10.2.0.5.0,启动数据库,报错:ORA-01092: ORACLE 例程终止,强制断开. 查看alert文件,显示ORA-00 把数据库从10.2.0.1. ...
最新文章
- OpenCV中导向滤波介绍与应用
- Kaggle比赛冠军经验分享:如何用 RNN 预测维基百科网络流量
- delphi Bpl 学习杂记
- Java拾遗:001 - 重写 equals 和 hashCode 方法
- Machine Learning week 10 quiz: Large Scale Machine Learning
- Anaconda ubuntu16.04 Cuda 8.0安装pytorch
- P2485-[SDOI2011]计算器【BSGS,exgcd,快速幂】
- java stdout库_Java重写StdOut并将日语写入文件
- pythonturtle是标准库_Python标准库: turtle--海龟绘图。
- 零基础大数据学习框架
- JMP M16:64
- 软件测试 | APP测试 —— Appium 自动化测试框架的初识与学习要领
- viewport原理和使用和设置移动端自适应的方法(移动适应电脑)
- 高会职称计算机课程,2017高会《职称计算机》模块精讲:Windows Media Player(一)...
- 微信开发者工具及其文档
- ERP进销存系统开发源码交付
- IP地址、网关地址、子网掩码地址
- JAVA关于父亲节的代码_关于父亲节的祝福语
- [Luogu P2597] [BZOJ 2815] [ZJOI2012]灾难
- 玩转Lenovo Idea pad 的音效功能
热门文章
- java死锁怎么用jvm调试_jvm 内存dump、gc查看、线程死锁,jmap、jstack、jstat
- unity图片变成马赛克如何取像素并改变颜色_Unity3D-2.5D像素游戏随机地形构造tilemap(rule tile)...
- vue和哪个php框架搭配,vue配什么ui框架比较好
- python动态人脸识别_python3.8动态人脸识别
- 父与子python下载不了_【求助】看父与子学习Python,里面有一个滑雪小游戏,加载不出图...
- python pyecharts 折线图_Python数据可视化之pyecharts实现各种图表
- python获取类函数的变量-python 动态获取当前运行的类名和函数名的方法
- idea DataGrip 使用图解教程
- python pil怎么调用_python3如何使用pil
- java jvm bind解决_java web项目启动的时候JVM_Bind,真的是tomcat端口被占用了吗?tomcat不同意...