Oracle 10.2.0.5升级至11.2.0.4

参照MOS 官方文档
Complete Checklist for Manual Upgrade to Oracle Database 11gR2 (11.2) (Doc ID 837570.1)
一、升级前的准备
1、复制utlu112i.sql脚本
从11G数据库复制$ORACLE_HOME/rdbms/admin/utlu112i.sql 脚本至10g 数据库临时目录,准备执行
如果不在10g数据库运行utlu112i.sql脚本,则执行升级脚本catupgrd.sql 时会报以下错误:
SQL> SELECT TO_NUMBER('MUST_BE_SAME_TIMEZONE_FILE_VERSION')
2 FROM registry$database
3 WHERE tz_version != (SELECT version from v$timezone_file);
SELECT TO_NUMBER('MUST_BE_SAME_TIMEZONE_FILE_VERSION')
*
ERROR at line 1:
ORA-01722: invalid number


2、在10g数据库执行utlu112i.sql脚本
使用 SYSDBA权限执行utlu112i.sql脚本
$ sqlplus '/ as sysdba'
SQL> spool upgrade_info.log
SQL> @utlu112i.sql
SQL> spool off
SQL>
输出样例见附件《utlu112i.log》

3、检查10g数据库完整性

执行检查脚本dbupgdiag.sql <===== 脚本在本文件夹
$ sqlplus / as sysdba
sql> alter session set nls_language='American';
sql> @dbupgdiag.sql
sql> exit
输出样例见附件《db_upg_diag_orcl_07_Dec_2018_0954.log》

执行编译失效包脚本utlrp.sql <--脚本在10g数据库$ORACLE_HOME/rdbms/admin目录
$ cd $ORACLE_HOME/rdbms/admin
$ sqlplus "/ as sysdba"
SQL> @utlrp.sql

执行健康检查脚本hcheck.sql <===== 脚本在本文件夹
SQL> spool hcheck.log
SQL> @hcheck.sql
SQL> spool off
输出样例见附件《hcheck.log》

4、检查CONNECT 角色权限 <===== xx银行为10.2.x数据库,此步骤可以略过
数据库9i和10.1.x以下的版本 connect角色权限较多有如下权限
SELECT GRANTEE,PRIVILEGE
FROM DBA_SYS_PRIVS
WHERE GRANTEE ='CONNECT'

GRANTEE PRIVILEGE
------- ----------------------
CONNECT CREATE VIEW
CONNECT CREATE TABLE
CONNECT ALTER SESSION
CONNECT CREATE CLUSTER
CONNECT CREATE SESSION
CONNECT CREATE SYNONYM
CONNECT CREATE SEQUENCE
CONNECT CREATE DATABASE LINK

数据库11g和10.2以上版本 connect角色权限较少有如下权限
SQL> SELECT GRANTEE,PRIVILEGE
2 FROM DBA_SYS_PRIVS
3 WHERE GRANTEE ='CONNECT';

GRANTEE PRIVILEGE
------------------------------ ----------------------------------------
CONNECT CREATE SESSION

5、重建DBLINK <-- XX银行为10.2.x数据库,此步骤可以略过

数据库9i和10.1.x以下的版本,dblink需要删除重建,在更新后
SELECT 'CREATE '||DECODE(U.NAME,'PUBLIC','public ')||'DATABASE LINK '||CHR(10)
||DECODE(U.NAME,'PUBLIC',Null, 'SYS','',U.NAME||'.')|| L.NAME||chr(10)
||'CONNECT TO ' || L.USERID || ' IDENTIFIED BY "'||L.PASSWORD||'" USING
'''||L.HOST||''''
||chr(10)||';' TEXT
FROM SYS.LINK$ L, SYS.USER$ U
WHERE L.OWNER# = U.USER#;

6、更新 TIMESTAMP WITH TIMEZONE <===== XX银行为10.2.x数据库,此步骤可以略过
更新 11.2.0.4. 不需要应用任何 DST 补丁包在 10.2.0.2 , 10.2.0.3 , 10.2.0.4 or 10.2.0.5 . 可以跳过DST相互更新说明.
The 11.2.0.4 RDBMS DST version after the upgrade to 11.2.0.4 will be the same DST version as used in 10.2.0.2 , 10.2.0.3 , 10.2.0.4 or 10.2.0.5.
SQL>SELECT version FROM v$timezone_file;

VERSION
----------
4


7、检查NLS_NCHAR_CHARACTERSET 为UTF8 or AL16UTF16.
SQL> select value from NLS_DATABASE_PARAMETERS where parameter = 'NLS_NCHAR_CHARACTERSET';
VALUE
----------------------------------------------------------------------------------------------------------------------------------------------------------------
AL16UTF16
如果是UTF8 or AL16UTF16.,则不需要做任何事情
如果不是UTF8 or AL16UTF16.,则按照文档Note 225912.1操作

8、检查用户陈旧的统计信息
可以运行脚本检查陈旧统计信息check_stale_stats.sql <=====脚本在本文件夹
或者可以回顾脚本utlu112i.sql的输出内容

SQL> SQL> @check_stale_stats.sql
-- There are no stale statistics in EXFSYS schema.
-- There are no stale statistics in ORDSYS schema.
-------------------------------------------------------------------------------------------------------
-- SYS schema contains stale statistics use the following to gather the statistics --
-----------------------------------------------------------------------------------------------------
EXEC DBMS_STATS.GATHER_DICTIONARY_STATS('SYS',OPTIONS=>'GATHER STALE', ESTIMATE_PERCENT => DBMS_STATS.AUTO_SAMPLE_SIZE, METHOD_OPT => 'FOR ALL COLUMNS SIZE AUTO', CASCADE => TRUE);
-- There are no stale statistics in WMSYS schema.
-- There are no stale statistics in XDB schema.

9、禁用Oracle Database Vault
升级前先禁用,升级后再开启
SQL> SELECT * FROM V$OPTION WHERE PARAMETER = 'Oracle Database Vault';
PARAMETER VALUE
---------------------------------------------------------------- ----------------------------------------------------------------
Oracle Database Vault
启动方法自行百度

10、备份Enterprise Manager Database Control Data

11、配置Network ACL's
应用如果使用了Oracle XMLDB中 UTL_TCP, UTL_SMTP, UTL_MAIL, UTL_HTTP, or UTL_INADDR 这些包

12、检查sys用户逻辑坏块
执行检查脚本@$ORACLE_HOME/rdbms/admin/utlvalid.sql <===== 脚本Oracle Home目录
执行检查脚本analyze.sql <===== 脚本在本文件夹
analyze.sq 应该输出没有任何错误.

13、检查是否有正在运行的物化视图
select distinct(trunc(last_refresh)) from dba_snapshot_refresh_times;
select s.obj#,o.obj#,s.containerobj#,lastrefreshdate,pflags,xpflags,o.name,o.owner#, bitand(s.mflags, 8) from obj$ o, sum$ s where o.obj# = s.obj# and o.type# = 42 AND bitand(s.mflags, 8) = 8;
如果第二个查询有输出 参照Note 1442457.1

14、确保没有需要recovery 的数据文件和没有backup 的数据文件
SELECT * FROM v$recover_file;
SELECT * FROM v$backup WHERE status != 'NOT ACTIVE';

15、检查有密码保护的角色
--检查是否有角色指定了密码
break on "Password protected Role"
select r.ROLE "Password protected Role",
p.grantee "Assigned by default to user"
from dba_roles r, dba_role_privs p
where r.PASSWORD_REQUIRED = 'YES' and p.GRANTED_ROLE = r.role
and p.default_role = 'YES'
and p.grantee <> 'SYS' and r.role not in
(select role from dba_application_roles);

--One can easily turn these password enabled roles into standard roles by running the script resulting from:
select distinct 'alter role '||role||' not identified;' "-- Statements"
from dba_roles r, dba_role_privs p
where r.PASSWORD_REQUIRED = 'YES' and p.GRANTED_ROLE = r.role
and p.default_role = 'YES'
and p.grantee <> 'SYS' and r.role not in
(select role from dba_application_roles);

16、解决分布式事务
SQL> select * from dba_2pc_pending;
如果上一行有输出,则执行如下
SQL> SELECT local_tran_id
FROM dba_2pc_pending;
SQL> EXECUTE dbms_transaction.purge_lost_db_entry('');
SQL> COMMIT;

17、检查是否有备库存在
SELECT SUBSTR(value,INSTR(value,'=',INSTR(UPPER(value),'SERVICE'))+1)
FROM v$parameter
WHERE name LIKE 'log_archive_dest%' AND UPPER(value) LIKE 'SERVICE%';


18、禁用所有批处理JOB和定时任务
DBMS_JOB, DBMS_SCHEDULER
SQL> execute dbms_scheduler.disable('AUTO_SPACE_ADVISOR_JOB');
SQL> execute dbms_scheduler.disable('job1, job2, sys.jobclass1');
Note 404238.1 : How to Disable an Entry from DBMS_SCHEDULER
Note 1335741.1 : How To Stop A Running Job Using DBMS_JOB
Note 67695.1 : PROCEDURE DBMS_JOB.BROKEN Specification

19、确保SYS 和SYSTEM 使用SYSTEM表空间
SQL> SELECT username, default_tablespace
FROM dba_users
WHERE username in ('SYS','SYSTEM');

SQL> ALTER user SYS default tablespace SYSTEM;
SQL> ALTER user SYSTEM default tablespace SYSTEM;

20、检查 aud$ 是否存在SYS 和SYSTEM 用户,并且在SYSTEM表空间
SQL> SELECT owner,tablespace_name
FROM dba_tables
WHERE table_name='AUD$';
如果不在则迁移至SYS用户

21、检查数据库是否有其他的SSL 外部用户
SQL> SELECT name FROM sys.user$
WHERE ext_username IS NOT NULL
AND password = 'GLOBAL';
如果SSL用户有,则在升级完成后,执行 步骤33

22、记录数据文件,日志文件,控制文件位置,并备份 listener.ora, tnsnames.ora文件
SQL> SELECT name FROM v$controlfile;
SQL> SELECT file_name FROM dba_data_files;
SQL> SELECT group#, member FROM v$logfile;.

23、Listener配置
如果是集群则不需要此步骤,因为在集群配置是更新
停监听$ lsnrctl stop

24、备份数据库
对数据库做一个冷备份或者rman备份

25、参数文件配置
复制initialization.ora文件至<target 11GR2 home>/dbs目录
推荐去掉参数文件中的隐含参数
使用DIAGNOSTIC_DEST代替USER_DUMP_DEST, BACKGROUND_DUMP_DEST
集群把CLUSTER_DATABASE=FALSE,升级完成后再改为true

26、Win操作系统执行如下
。。。。。。。。。。。

27、Linux 系统验证以下配置
--11g数据库环境变量
- ORACLE_BASE
- ORACLE_HOME
- PATH, LD_LIBRARY_PATH , SHLIB_PATH and LIBPATH ( for AIX )

--修改oratab
Sample /etc/oratab
#orcl:/opt/oracle/product/10.2/db_1:N
orcl:/opt/oracle/product/11.2/db_1:N

--如果是从10g升级至11g,验证一下信息
SQL> select DBMS_STATS.GET_PARAM('METHOD_OPT') from dual;

DBMS_STATS.GET_PARAM('METHOD_OPT')
-------------------------------------------------------------
FOR COLUMNS ID SIZE 1

如果是FOR COLUMNS ID SIZE 1,在升级时会出现问题
SQL>exec DBMS_STATS.SET_PARAM('METHOD_OPT','FOR ALL COLUMNS SIZE AUTO');

二、升级数据库到11G R2
XX银行是异机升级,需要先进行数据库还原 <===============
28、在11g数据库执行如下升级脚本
--执行catupgrd.sql升级脚本
$ sqlplus "/ as sysdba"
SQL> startup UPGRADE
SQL> set echo on
SQL> SPOOL upgrade.log
SQL> @?/rdbms/admin/catupgrd.sql
SQL> spool off
--如果有陈旧的参数,可以在此时去掉,并将pfile转换为spfile

--执行catupgrd.sql
$ sqlplus "/as sysdba"
SQL> STARTUP
SQL> @?/rdbms/admin/utlu112s.sql

--执行catuppst.sql
SQL> @?/rdbms/admin/catuppst.sql

--执行utlrp.sql
SQL> @?/rdbms/admin/utlrp.sql

--执行dbupgdiag.sql <===== 检查脚本,脚本在本文件夹
SQL> @dbupgdiag.sql

三、升级之后的操作
29、验证 listener.ora文件
lsnrctl start

30、系统环境变量
--确保环境变量指向11g
- ORACLE_BASE
- ORACLE_HOME
- PATH, LD_LIBRARY_PATH, SHLIB_PATH and LIBPATH ( for AIX )

--修改 /etc/oratab <====== XX银行集群应该不用操作
SID:ORACLE_HOME:Y
For Instance,
orcl:/opt/oracle/product/11.2/db_1:Y

31、检查DST,与升级前步骤 6 应该一样
SQL>SELECT version FROM v$timezone_file;

VERSION
----------
4

32、更新DBMS_STATS 包
如果使用DBMS_STATS.CREATE_STAT_TABLE创建过表
则使用EXECUTE DBMS_STATS.UPGRADE_STAT_TABLE('SYS','dictstattab');

33、更新 SSL 用户
If you are upgrading from 10.2.0.x (or higher), then you are not required to run this command.

34、启用Database Vault

35、使用UTL 类似包,则执行此步骤

36、编辑init.ora
--如果修改CLUSTER_DATABASE ,则改为true
SQL> create spfile from pfile;

37、锁定Oracle 自带用户
SQL> SELECT username, account_status FROM dba_users ORDER BY username;
ALTER USER username PASSWORD EXPIRE ACCOUNT LOCK;

38、更新 Oracle Text
This is only needed if Oracle Text is in use.

39、更新集群信息 <=========

40、配置EM
如果没有可跳过

41、配置
TDE (Transparent Data Encryption)
如果没有可跳过

42、Gather Fixed Object Statistics
在升级后两周 执行下面命令修复
SQL>EXECUTE DBMS_STATS.GATHER_FIXED_OBJECTS_STATS;

43、compatible参数修复
参照 Note 1537496.1
--1.修改集群参数cluster_database=false
--2.修复compatible,确保在 11.0.0.0 之上
--3.更新模式打开数据库 SQL> startup upgrade
--4.执行 SQL> @?/rdbms/admin/c1102000.sql
--5.关闭数据库
--6.修改集群参数cluster_database=true
--7.正常模式 SQL> startup

 

转载于:https://www.cnblogs.com/bicewow/p/10082931.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/395789.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

脱壳_详细_使用的方法_01

ZC: 如何确定被调试程序已经来到了 未加壳的程序中&#xff1f; ZC:  视频中是使用判断集中语言的特征 ZC:  我的方法&#xff1a;上面的方式 ESP平衡 1、第1课 (1)、单步跟踪&#xff08;原则&#xff1a;向下的跳转>正常F8&#xff0c;向上的跳转>F4跳过(或者用F2…

android 函数式编程_Android开发人员的函数式编程-第1部分

android 函数式编程by Anup Cowkur通过安纳普考库(Anup Cowkur) Android开发人员的函数式编程-第1部分 (Functional Programming for Android Developers — Part 1) Lately, I’ve been spending a lot of time learning Elixir, an awesome functional programming language…

java编程 内存_Java编程技术之浅析JVM内存

JVMJVM->Java Virtual Machine:Java虚拟机,是一种用于计算设备的规范&#xff0c;它是一个虚构出来的计算机&#xff0c;是通过在实际的计算机上仿真模拟各种计算机功能来实现的。基本认知&#xff1a;1.JVM是用于运行Java代码的假象计算机&#xff0c;主要有一套字节码指令…

bzoj1116: [POI2008]CLO

传送门&#xff1a;http://www.lydsy.com/JudgeOnline/problem.php?id1116 题目大意&#xff1a;Byteotia城市有n个 towns m条双向roads. 每条 road 连接 两个不同的 towns ,没有重复的road. 你要把其中一些road变成单向边使得&#xff1a;每个town都有且只有一个入度 题解&am…

java排序算法大全_各种排序算法的分析及java实现

排序一直以来都是让我很头疼的事&#xff0c;以前上《数据结构》打酱油去了&#xff0c;整个学期下来才勉强能写出个冒泡排序。由于要找工作了&#xff0c;也知道排序算法的重要性(据说是面试必问的知识点)&#xff0c;所以又花了点时间重新研究了一下。排序大的分类可以分为两…

Cocos2d-x 3.0 简捷的物理引擎

Cocos2d-x 3.0 开发&#xff08;九&#xff09;使用Physicals取代Box2D和chipmunk http://www.cocos2d-x.org/docs/manual/framework/native/physics/physics-integration/zh -- 官网Demo 水墨鱼的专栏 http://www.cocos2d-x.org/docs/catalog/zh --- 官方 搭“server” 须要哪…

google i/o_Google I / O 2017最有希望的突破

google i/oby Aravind Putrevu通过Aravind Putrevu Google I / O 2017最有希望的突破 (The most promising breakthroughs from Google I/O 2017) Google I/O is one of the biggest developer conferences. This year was particularly exciting. There were two keynotes: o…

java clex 中的 IloLPMatrix

最近看 cplex 在 java 的 callback&#xff0c;发现它给的 callback 例子中&#xff0c;都是用 IloLPMatrix 这个类放约束条件&#xff0c;在 IloLPMatrix 中&#xff0c; 每个约束条件存储在 IloRange 中。 使用 IloLPMatrix 的好处是&#xff0c;这个类可以方便查看模型中的求…

6/12 Sprint2 看板和燃尽图

转载于:https://www.cnblogs.com/queenjuan/p/5578551.html

mailto 附带附件_我和我的朋友如何将附带项目发展为每月$ 17,000的业务

mailto 附带附件In 2014, my friends and I set out to build the best possible web design tools. We built UI kits, Admin Dashboards, Templates, and Plugins. We’ve always tried to create products that are helpful in the development process, and that we oursel…

转:PHP应用性能优化指南

程序员都喜欢最新的PHP 7&#xff0c;因为它使PHP成为执行最快的脚本语言之一&#xff08;参考PHP 7 vs HHVM 比较&#xff09;。但是保持最佳性能不仅需要快速执行代码&#xff0c;更需要我们知道影响性能的问题点&#xff0c;以及这些问题的解决方案。本文涵盖了保障PHP应用平…

java 运行异常处理_Java编程异常处理和I/O流

重点&#xff1a;  1&#xff0e;在编写程序时&#xff0c;要正确地使用捕获例外和声明抛出异常的两种例外处理的方法。2&#xff0e;遇到实际问题时&#xff0c;要根据需要正确使用各种输入&#xff0f;输出流&#xff0c;特别是对中文使用适当的字符输入流。3&#xff0e;正…

反射练习

1.反射 一种计算机处理方式。是程序可以访问、检测和修改它本身状态或行为的一种能力。 新建一个Person类&#xff1a; public class Person { private int age; private String name; public int getAge() { return age; } public void setAge(int age) { this.age age; } pu…

开源 物联网接入_我们刚刚推出了开源产品。 那么接下来会发生什么呢?

开源 物联网接入by Victor F. Santos由Victor F.Santos 我们刚刚推出了开源产品。 那么接下来会发生什么呢&#xff1f; (We just launched an open source product. So what happens next?) Last month me and the ninja god Pedro launched GitShowcase, a plug-and-play p…

Class? getClass()

getClass()方法属于Object的一部分,它将产生对象的类,并且在打印该类时,可以看到该类类型的编码字符串,前导"["表示这是一个后满紧随的类型的数组,而紧随的"I"表示基本类型int, //: initialization/OptionalTrailingArgrments.java package object;import …

log4j使用说明

1.log4j代码中修改输出级别&#xff1a;如&#xff1a; protected final Logger logger LoggerFactory.getLogger(Test.class); 将其转成实现类&#xff0c;修改输出级别即可System.out.println(logger.isDebugEnabled()?"debug is true":"debug is false&quo…

java list集合增删改_Java中集合类list的增删改查

今天给大家带来的是Java中list类的使用&#xff0c;java.util 包提供了list类来对线性数据操作List接口是Collection接口的子接口&#xff0c;List有一个重要的实现类--ArrayList类&#xff0c;List中的元素是有序排列的而且可重复&#xff0c;所以被称为是序列List可以精确的控…

IIS6、IIS7和IIS8各版本的差别

一、写在前面 目前市面上所用的IIS版本估计都是>6.0的.所以我们主要以下面三个版本进行讲解 服务器版本IIS默认版本server20036.0server20087.0server20128.0二、IIS6的请求过程 由图可知,所有的请求会被服务器中的http.sys组件监听到,它会根据IIS中的 Metabase 查看基于该 …

Android Studio 插件的使用

1、GsonFormat https://github.com/zzz40500/GsonFormat 2、Android SelectorChapek http://blog.csdn.net/weifei554287925/article/details/41727541

函数式编程基础_在收件箱中免费学习函数式编程的基础

函数式编程基础by Preethi Kasireddy通过Preethi Kasireddy 在收件箱中免费学习函数式编程的基础 (Learn the fundamentals of functional programming — for free, in your inbox) If you’re a software developer, you’ve probably noticed a growing trend: software ap…