dbua使ORACLE10G升级到ORACLE11G
     
            编写:肖小明    日期:2012-11-16
                         
审核:肖小明    日期:2012-11-16
批准:严磊      日期:2012-11-16
受控状态:         
发布版次:10.0.2  日期:2012-11-16
编号:MDS20121116-2514
变更记录
日期
原版本
变更后版本
作者
2012/11/16
oracle10.2.0
Oracle11.2.0
肖小明
签字确认
职务
姓名
签字
日期
组长
2012-11-16
1、实验配置
实验环境 Redhat  Enterprise 5.4.
升级对象  oracle10.2.0.1 升级到 oracle11.2.0.1
2、实验步骤
  一、oracle11.2.0.1软件的安装(由于oracle11安装比较智能就不加以讲解了(是在不懂请参阅oracle11g安装文档))
  二、oracle11g软件安装好后,以oracle用户登陆 输入dbua 即可
如下图:
选择你所要升级的数据库  下一步
出现上述情况,经过一番资料的查阅,终于到原因,原来是oracle10.2.0.,不可以直接升级到 oracle11.2.0
现让oracle10.2.0升级到10.2.5 步骤如下
先把升级包解压 unzip  包名
修改权限 chown -R oracle:oinstall  /oradisk  我的包名在/oradisk 下解压的
          chmod -R 775 /oradisk/ 
注销 一 oracle用户登录 后并运行该指令 [oracle@oracle Disk1]$ ./runInstaller
跟oracle10g安装差不多就不过多的解释了
路径一定要跟原来oracle10.2.0安装的主目录一致
若出现下面的错误:
数据库实例已经开启了,需要关闭 并重试
关闭数据库 shutdown  immediate 启动到nomount 状态下 startup nomount
SQL> alter system set java_pool_size=120M scope=spfile;
SQL> alter system set shared_pool_size=120M scope=spfile;
需要执行如下脚本 
SQL> startup upgrade
SQL> spool patch.log
SQL> @?/rdbms/admin/catupgrd.sql
SQL> spool off
SQL> startup(数据库可以正常启动) 在运行下面的脚本(重新编译PL/SQL包,使其能够被使用)
SQL> @?/rdbms/admin/utlrp.sql
关闭数据库
在 .bash_profile 引入oracle11g 的oracle_home 我的变量如下:
export ORACLE_BASE=/u01/app/oracle
export ORACLE_SID=ora10
export ORACLE_HOME=/u01/app/oracle/product/11.2.0/db_1
export PATH=$ORACLE_HOME/bin:$PATH
注销以oracle 用户登录 输入 dbua
接下来就会出现
需要运行 purge dba_recyclebin
[oracle@oracle ~]$ export ORACLE_HOME=/u01/app/oracle/product/10.2.0/db_1
[oracle@oracle ~]$ export PATH=$ORACLE_HOME/bin:$PATH
[oracle@oracle ~]$ sqlplus / as sysdba
SQL> purge dba_recyclebin    这样就可以了
接着 yes 如下图:
接下来选
下一步
其余默认
在下一步 如下图
接下来需要很长的一段时间
至此使用dbua升级数据库已经完成
sql语句使ORACLE10G升级到ORACLE11G
1、实验配置
实验环境 Redhat  Enterprise 5.4.
升级对象  oracle10.2.0.1 升级到 oracle11.2.0.1
2、实验步骤
 
    一、oracle11.2.0.1软件的安装(由于oracle11安装比较智能就不加以讲解了(是在不懂请参阅oracle11g安装文档))
数据库不能有10.2.0.0升级到11.2.0.0  oracle版本至少要10.2.0.2 以上才可以直接升级到11.2.0.0  (数据库中间升级不在讲述不懂请参阅上面的文档)
第一部分数据库升级的准备
二 、在升级之前,确保所有的组件和对象都是valid
    select substr(comp_name,1,40) comp_name,status,substr(version,1,10) version from dba_registry order by comp_name; (针对组件)
    Select  object_name, object_type,status ,owner from  dba_objects  order by owner,object_type;(针对对象)
    select object_name,object_type from dba_objects where object_name||object_type in (select object_name||object_type from dba_objects where owner='SYS') AND owner='SYSTEM';
结果如下:
OBJECT_NAME                    OBJECT_TYPE
------------------------------ -------------------
AQ$_SCHEDULES                  TABLE
AQ$_SCHEDULES_PRIMARY          INDEX
DBMS_REPCAT_AUTH              PACKAGE
DBMS_REPCAT_AUTH              PACKAGE BODY
  如果有其它记录返回 则必须删除
  接下来登录数据库 运行下面的脚本:
SQL> spool upgrade.log
SQL> @/u01/app/oracle/product/11.2.0/db_1/rdbms/admin/utlu112i.sql
SQL> spool off
Upgrade.log 很有用的,后面编写pfile 需要他
接下来在调用脚本
SQL> @dbupgdiag.sql
3、检查Timezone版本,主要参考:
    注意:11g的软件里已经自带了版本1-14的Timezone。
先检查一下当前timezone版本:
SQL> conn / as sysdba
Connected.
SQL>SELECT version FROM v$timezone_file;
    根据当前timezone的版本,又分三种情况:
1)等于14:这已经是11g需要的版本了,所以升级前后都不需要做任何事,这种情况很罕见。
2)高于14:升级前,必须得给11g软件打上该timezone版本的DST补丁,这种情况也很罕见。
3)低于14:大多数都是这种情况,在升级前不需要在11g软件层面打补丁,在升级后需要再数据库层面将Timezone升级至14,具体看后面的步骤
4、检查国家字符集是否是UTF8或AL16UTF16:
oracle10g客户端安装步骤
    SQL> select value from nls_database_parameters where parameter='NLS_NCHAR_CHARACTERSET';
如果不上述所说的则用下面的语句修改:
5、收集统计信息,减少停机时间
  SQL> EXECUTE dbms_stats.gather_dictionary_stats;

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


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


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

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

SELECT  'Analyze cluster "'||cluster_name||'"  validate structure cascade;' FROM dba_clusters  WHERE  owner='SYS'  UNION  SELECT 'Analyze table "'||table_name||'" validate structure cascade;' FROM dba_tables WHERE owner='SYS'AND partitioned='NO' AND (iot_type='IOT' OR iot_type is NULL) UNION SELECT 'Analyze table "'||table_name||'" validate structure cascade into invalid_rows;' FROM dba_tables WHERE owner='SYS' AND partitioned='YES';

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。