1.1 升级前的检查
查询timezone问题
SELECTversion FROM v$timezone_file;
VERSION
----------
2
select c.owner || '.' || c.table_name || '('|| c.column_name || ') -' ||
c.data_type || ' ' col
from dba_tab_cols c, dba_objects o
where c.data_type like '%TIME ZONE'
and c.owner=o.owner
and c.table_name = o.object_name
and o.object_type = 'TABLE'
order by col
/
关闭数据库
SQL >shutdownimmediate
关闭监听
$lsnrctl stop
Oracle10g升级到11g
一:安装11gR2的数据库软件
1:先给oracle11g制定一个主目录($ORACLE_HOME),写入到
vi /home/oracle/.bash_profile中,创建原本不存在的文件夹(我这里定义了一个新的db_2作为oracle11g的主目录)
2:mkdir /home/oradisk1 在这个文件夹下面解压oracle11g的软件,注意要给这个文件夹赋予相应的权限
chown -R oracle:oinstall /home/oradisk1
chmod -R 775 /home/oradisk1
3:$cd /home/oradisk1/database/ $./runInstaller
开始安装
二:进行安装前的初步检查
1:此时需要启动oracle10的数据库实例,所以要先通过导入oracle10的主目录,
将换将变量中的oracle11的主目录注释后重启生效,
否则无法开启oracle10的数据库实例
exportORACLE_HOME=/u01/app/oracle/product/10.2.0/db_1
2:在升级之前确保所有的组件和对象都是vaild的
SQL>select substr(comp_name,1,40)comp_name, status, substr(version,1,10) version from dba_registry order bycomp_name;
--针对组件
SQL>select substr(object_name,1,40) object_name,substr(owner,1,15)owner,object_type from dba_objects where status='INVALID' order byowner,object_type; --针对对象
如果有invalid的对象,运行utlrp.sql重新编译对象。
SQL>@$ORACLE/rdbms/admin/utlrp.sql即可确保sys和system下没有重复的对象:
SQL>select object_name, object_type fromdba_objects where object_name||object_type in
(select object_name||object_type from dba_objects where owner = 'SYS') and
owner = 'SYSTEM';上面这条语句只能返回以下4条记录:
OBJECT_NAME OBJECT_TYPE---------------------------------------- --------------- DBMS_REPCAT_AUTH PACKAGE BODY
DBMS_REPCAT_AUTH PACKAGEAQ$_SCHEDULES_PRIMARY INDEXAQ$_SCHEDULES TABLE
三:开始升级
使用11g的环境变量升级,并用oracle用户登录
使用dbua图形界面升级
升级过程如下