Oracle 10.2.0.5升级至11.2.0.4

时间:2022-09-04 22:33:58

参照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

Oracle 10.2.0.5升级至11.2.0.4的更多相关文章

  1. AIX 7&period;1 RAC 11&period;2&period;0&period;4&period;0升级至11&period;2&period;0&period;4&period;6&lpar;一个patch跑了3个小时&rpar;

    1.环境 DB:两节点RAC 11.2.0.4.0升级至11.2.0.4.6 OS:AIX 7.1(205G内存 16C) 2.节点1.节点2(未建库) 2.1.patch 20420937居然用了3 ...

  2. DATAPUMP PERFORMANCE EXPDP IS VERY SLOW 10&period;2&period;0&period;4 TO 11&period;2&period;0&period;2

    APPLIES TO: Oracle® Database - Enterprise Edition - Version 10.2.0.4 to 11.2.0.2 [Release 10.2 to 11 ...

  3. 图形化升级单机oracle 11&period;2&period;0&period;1 到 11&period;2&period;0&period;4

    1. 讲补丁包上传到 oracle server ,解压.安装 [root@11g ~]#unzip p13390677_112040_Linux-x86-64_1of7.zip -d /tmp &a ...

  4. Oracle Study之--Oracle 单实例11&period;2&period;0&period;1&period;0升级到11&period;2&period;0&period;3&period;0

    Oracle Study之--Oracle 单实例11.2.0.1.0升级到11.2.0.3.0 系统环境: 操作系统:RedHat EL6(64位) Oracle:    Oracle 11gR2 ...

  5. oracle 11GR2 单机打补丁PSU 11&period;2&period;0&period;4&period;180717

    上传补丁包,修改权限 su - oracle mdir /tmp/psu mv p6880880_112319_Linux-x86-64.zip /tmp/psu/mv databasepsu1807 ...

  6. 转如何升级oracle版本?(11&period;2&period;0&period;1至11&period;2&period;0&period;4)

    dbua from 11.2,0.2 to 11.2.0.4 need 2hours 升级结果: 步骤名             日志文件名       状态 升级前操作   PreUpgrade.l ...

  7. 转 如何诊断和解决high version count 10&period;2&period;0&period;4 and 11&period;2&period;0&period;4

    转自 http://blog.csdn.net/notbaron/article/details/50927492 在Oracle 10g以上的版本,High version count可谓是一个臭名 ...

  8. windows平台升级ORACLE11&period;2&period;0&period;1到11&period;2&period;0&period;4

    原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 .作者信息和本声明.否则将追究法律责任.http://4445027.blog.51cto.com/4435027/1674217 一  ...

  9. 【实战】静默安装-oracle 11&period;2&period;0&period;3 on centos 5&period;10

    发现网上静默安装的文章非常多,乱七八糟,五花八门!来个扫盲的!   centos 5.10 下安装oracle 11g_r2 ************************************* ...

随机推荐

  1. 选择Web API还是WCF

    ASP.NET WCF是.NET平台服务开发的一站式框架,那么为什么还要有ASP.NET Web API呢?简单来说,ASP.NET Web API的设计和构建只考虑了一件事情,那就是HTTP,而WC ...

  2. 直播开始:&&num;39&semi;云榨汁机&&num;39&semi;诞生记--聊聊JavaScript中的&&num;39&semi;业务建模&&num;39&semi;

    闭包是JavaScript中的一个重要特性,在之前的博文中,我们说闭包是一个'看似简单,其实很有内涵'的特性.当我们用JavaScript来实现相对复杂的业务建模时,我们可以如何利用'闭包'这个特性呢 ...

  3. 一、VSTO概述

    一.什么是VSTO? VSTO = Visual Studo Tools for Office,是.net平台下的Office开发技术.相对于传统的VBA(Visual Basic Applicati ...

  4. (转载)php之call&lowbar;user&lowbar;func&lowbar;array的简易用法

    (转载)http://www.cnitblog.com/neatstudio/archive/2006/07/21/13990.html php之call_user_func_array的简易用法 今 ...

  5. linux内核函数库文件的寻找

    linux内核函数的so库文件怎么找呢? 首先还是要产生一个进程的coredump文件的 linux有一个lib-gdb.so库,这个进程的coredump文件中所有load段的最后一个load段中, ...

  6. Android开发(22)--seekBar采用handler消息处理操作

    本案例简单实现进度条可走,可拖拽的功能,下面请看源码: 布局文件: <RelativeLayout xmlns:android="http://schemas.android.com/ ...

  7. java&period;util&period;Arrays类详解(源码总结)

    概述 Arrays类位于java.util包下,是一个对数组操作的工具类.今天详细的看了看Arrays类的4千多行源码,现将Arrays类中的方法做一个总结(JDK版本:1.6.0_34).Array ...

  8. Java多线程核心技术&lpar;五&rpar;单例模式与多线程

    本文只需要考虑一件事:如何使单例模式遇到多线程是安全的.正确的 1.立即加载 / "饿汉模式" 什么是立即加载?立即加载就是使用类的时候已经将对象创建完毕,常见的实现办法就是直接 ...

  9. systemverilog的高亮显示

    1. 在_vimrc文件末尾添加: syntax on "确定vim打开语法高亮 filetype on "打开文件类型检测 filetype plugin on "为特 ...

  10. Prometheus Node&lowbar;exporter 之 Network Sockstat

    Network Sockstat proc/net/sockstat 1. Sockstat TCP type: GraphUnit: shortLabel: SocketsTCP_alloc - 已 ...