10g升11g博客

2019-03-22 16:17

Oracle从10g升级到11g详细步骤

Oracle从10g升级到11g详细步骤数据库旧版本:10.2.0.4 数据库新版本:11.2.0.2 OS 版本: Solaris 10

参考文档:Complete Checklist for Manual Upgrades to 11gR2 [ID 837570.1] 第一部分 - 安装11gR2软件

这里对软件的安装就不详细说明了,可以参考相应的文档。

这里需要注意的是:如果你想在11gr2上打上最新的PSU或CPU,可以先在软件级别上打上PSU或CPU,这样就不用跑两次catbundle.sql,减少停机时间。 第二部分 - 初步检查

1. 在升级之前,确保所有的组件和对象都是valid:

select substr(comp_name,1,40) comp_name, status, substr(version,1,10) version from dba_registry order by comp_name; --针对组件

select substr(object_name,1,40) object_name,substr(owner,1,15) owner,object_type from dba_objects where status='INVALID' order by owner,object_type; --针对对象

如果有invalid的对象,运行utlrp.sql重新编译对象。 2. 确保sys和system下没有重复的对象:

select object_name, object_type from dba_objects where

object_name||object_type in (select object_name||object_type from dba_objects where wner = 'SYS') and wner = 'SYSTEM'; 上面这条语句只能返回以下4条记录:

OBJECT_NAME OBJECT_TYPE ---------------------------------------- --------------- DBMS_REPCAT_AUTH PACKAGE BODY DBMS_REPCAT_AUTH PACKAGE AQ$_SCHEDULES_PRIMARY INDEX AQ$_SCHEDULES TABLE 如果有其它记录返回,则必须根据下面这篇文档把重复记录删除:

How to Clean Up Duplicate Objects Owned by SYS and SYSTEM Schema [ID 1030426.6] 第三部分 - 升级前工作 Step 1.

从11gR2的Oracle Home下拷贝以下文件至一个临时文件夹:(因为11g自带该脚本) cp $ORACLE11g_HOME/rdbms/admin/utlu112i.sql /tmp/. Step 2.

登陆10g数据库,运行: $ sqlplus '/ as sysdba' SQL> spool upgrade_info.log SQL> @/tmp/utlu112i.sql SQL> spool off SQL>

生成的upgrade_info.log里的内容很重要,后续步骤要根据该文件的内容做相应的修改,因此一定要保留下来。 Step 3.

从下面这篇文档里可以下载到脚本dbupgdiag.sql:

Script. to Collect DB Upgrade/Migrate Diagnostic Information (dbupgdiag.sql) [ID 556610.1] 运行这个脚本:

cd $ sqlplus / as sysdba

sql> alter session set nls_language='American'; sql> @dbupgdiag.sql sql> exit

如果该脚本报告有invalid对象,运行以下命令重编译无效对象: $ cd $ORACLE_HOME/rdbms/admin $ sqlplus \SQL> @utlrp.sql Step 4.

从10.2开始,CONNECT角色的权限变少了,所以如果你是从10.2之前升级到11g的话,升级之后,需要重新授予缺少的权限,但是如果是从10.2及之后升级到11g的话,就不需要重新赋权限了,本例是从10.2.0.4升级到11g的,因此不需要该步骤。 Step 5.

生成重建dblink的脚本,以防万一数据库需要降级。和Step 4一样,本例是从10.2.0.4升级到11g的,因此不需要该步骤。 Step 6.

检查Timezone版本,主要参考:

Actions For DST Updates When Upgrading To Or Applying The 11.2.0.2 Patchset [ID 1201253.1]

注意:11g的软件里已经自带了版本1-14的Timezone。 先检查一下当前timezone版本: SQL> conn / as sysdba(11g) Connected.

SQL>SELECT version FROM v$timezone_file; 根据当前timezone的版本,又分三种情况:

1)等于14:这已经是11g需要的版本了,所以升级前后都不需要做任何事,这种情况很罕见。 2)高于14:升级前,必须得给11g软件打上该timezone版本的DST补丁,这种情况也很罕见。 3)低于14:大多数都是这种情况,在升级前不需要在11g软件层面打补丁,在升级后需要再数据库层面将Timezone升级至14,具体看后面的步骤 Step 7.

检查国家字符集是否是UTF8或AL16UTF16:

select value from NLS_DATABASE_PARAMETERS where parameter =

'NLS_NCHAR_CHARACTERSET';

如果是,则什么都不用做;如果不是,那你就惨了,跟着下面长长的这篇文档一步一步做吧:

The National Character Set ( NLS_NCHAR_CHARACTERSET ) in Oracle 9i, 10g and 11g [ID 276914.1] Step 8.

收集统计信息,以减少停机时间: $ sqlplus \

SQL> EXEC DBMS_STATS.GATHER_DICTIONARY_STATS; Step 9.

如果你有开启Vault,那么你需要先在11gR2软件下禁用Vault,等升级结束后,再启用Vault,否则会在升级过程中报错。

Step 10.

备份Enterprise Manager Database Control Data,因为本例并没有使用EM,所以不需要该步骤。

Step 11.

配置网络ACL's,在本例中不需要配置。

Step 12.

使用以下语句生产分析数据字典的脚本 (as sysdba): Set verify off Set space 0 Set line 120 Set heading off Set feedback off Set pages 1000 Spool analyze.sql

SELECT 'Analyze cluster \FROM dba_clusters WHERE owner='SYS' UNION

SELECT 'Analyze table \FROM dba_tables WHERE owner='SYS' AND partitioned='NO'

AND (iot_type='IOT' OR iot_type is NULL) UNION

SELECT 'Analyze table \FROM dba_tables

WHERE owner='SYS' AND partitioned='YES';

spool off

生成的脚本名称是:analyze.sql 现在运行该脚本: $ sqlplus \

SQL> @$ORACLE_HOME/rdbms/admin/utlvalid.sql SQL> @analyze.sql

Step 13.

确保所有的snapshot都已被成功刷新,且replication已被关闭: SELECT DISTINCT(TRUNC(last_refresh)) FROM dba_snapshot_refresh_times;

Step 14.

确保当前没有文件需要介质恢复: SELECT * FROM v$recover_file; 上面语句没有返回结果才是正确的。

Step 15.

确保当前没有文件运行在备份模式下:

SELECT * FROM v$backup WHERE status != 'NOT ACTIVE'; 上面语句没有返回结果才是正确的。

Step 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;

Step 17.

检查是否有Standby数据库存在:

SELECT SUBSTR(value,INSTR(value,'=',INSTR(UPPER(value),'SERVICE'))+1) FROM v$parameter

WHERE name LIKE 'log_archive_dest%' AND UPPER(value) LIKE 'SERVICE%'; 如果有返回结果,则在升级之前,要保证Standby和Primary是处于同步的状态。

Step 18.

禁用所有的batch和cron jobs

Step 19.

确保用户SYS和SYSTEM的默认表空间都是SYSTEM: SQL> SELECT username, default_tablespace FROM dba_users

WHERE username in ('SYS','SYSTEM'); 如果不是,则要用以下语句修改为SYSTEM:

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

Step 20.

确保AUD$表建在SYS用户下和SYSTEM表空间下: SQL> SELECT owner,tablespace_name FROM dba_tables

WHERE table_name='AUD$'; 如果不是,则要做相应的修改。

Step 21.

检查是否有外部认证的SSL用户: SQL> SELECT name FROM sys.user$ WHERE ext_username IS NOT NULL AND password = 'GLOBAL'; 如果有,则在升级之后记得要做Step 34。

Step 22.

记下数据文件、联机日志文件和控制文件的位置: SQL> SELECT name FROM v$controlfile; SQL> SELECT file_name FROM dba_data_files; SQL> SELECT group#, member FROM v$logfile; 且备份listener.ora, tnsnames.ora, sqlnet.ora等文件。

Step 23. 停止listener: $ lsnrctl stop

停止其它可执行程序,如dbconsole, isqlplus等 $ emctl stop dbconsole $ isqlplusctl stop

Step 24. 关闭数据库:

$ sqlplus \SQL> shutdown immediate;


10g升11g博客.doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:初中物理受力分析精华版

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: