将oracle10g 升级至10.2.0.4
http://blog.csdn.net/launch_225/article/details/7221489
一、单实例环境,全时长一个半钟多。 详细图文说明到这下载
1、停止所有oracle相关进程。
emctl stop dbconsole
isqlplusctl stop
lsnrctl stop
sqlplus /nolog
sql> conn / as sysdba
Connected to an idle instance.
sql>shutdown
然后,冷备份下数据库 cp
2、google搜索下载安装p6810189_10204_Linux-x86
[oracle@linux~] cd Disk1
[oracle@linux Disk1~]$ ./runInstaller –jreLoc /opt/oracle/jdk1.6.0_18/jre/
备注:因为环境关系,我指定使用了最新的jdk1.6.0.18,如您的环境与我不同。直接执行 ./runInstaller即可。
打开一个终端窗口:
[oracle@linux ~] su
口令:
执行提示的脚本,本例中:[root@linux ~]# /opt/oracle/product/10.2/db_1/root.sh完成后关闭终端,返回安装界面,确定。如图
Ok,先不要启动数据库,补丁安装完成,还需要升级数据库才行。
重要:升级数据库,按说明文档,安装完成后,Postinstallation Tasks
1.使用DBUA升级(图型化界面,操作简单,据传出错机率高)
2.手工升级(字符界面,操作稍复制,据传出错机率低)
DBUA方式:
以oracle用户登陆
打开终端,设置好环境变量$ORACLE_HOME,$ORACLE_SID,$PATH
执行dbua
[oracle@linux ~]$ dbua
看到欢迎界面,如图见文档
下一步,按照提示选择数据库(如果你要操作的数据库不在列表中,手工修改/etc/oratab添加SID),注意"升级完成后编译无效对象"的选项,建议选中,接着下一步。如果在操作之前没有备份数据库,可以在此选择备份。dbua执行的是冷备,需要估计好磁盘剩余空间。点击下一步,oracle开始升级操作,如图
如果运气好即没碰上bug,也没遭遇错误,那就可以finish了,如图
升级完成,Oracle自动打开数据库,赶紧连接进去看看数据是否还在:)
手工升级:
1、以oracle用户登陆
打开终端,设置好环境变量$ORACLE_HOME,$ORACLE_SID,$PATH
[oracle@jsslinux dbs]$ export ORACLE_SID=stu
[oracle@jsslinux dbs]$ oracle@linux-oracle10g:/> sqlplus /nolog
SQL*Plus: Release 10.2.0.4.0 - Production on Tue Mar 9 15:14:18 2010
Copyright (c) 1982, 2007, Oracle. All Rights Reserved.
SQL> conn / as sysdba;
Connected.
2、以升级模式启动数据库
SQL> startup upgrade
ORACLE 例程已经启动。
数据库装载完毕。
数据库已经打开。
3、重建数据字典,另:如果有归档的话,强烈建议首先关闭归档
SQL> SPOOL path.log (路径默认在oracle主目录下 /opt/oracle/,这个日志会有点大30多M,可以查看.)
SQL> @$ORACLE_HOME/rdbms/admin/catupgrd.sql
...安装过程图省略
SQL> SPOOL OFF
如果这一步顺利执行,升级已经完成了大半。(这里要等待比较长一段时间)
如图
4、执行完重建数据字典,重启数据库
SQL> SHUTDOWN IMMEDIATE
SQL> STARTUP
5、编译无效对象
由于catupgrd.sql重建过程中可能造成一些对象失效,我们需要运行utlrp.sql重新编译PL/SQL packages (知道utlrp.sql功能了吧,黑黑,有事没事都可以执行一下)。
@?/rdbms/admin/utlrp.sql
耐心等待,直至完毕,出现sql>
6、然后运行下面的命令来检查升级之后,所有组件的状态:
SQL> select comp_name, version, status from sys.dba_registry;
显示值为VALID,则成功完成升级。如图
另:最好查看下。
SQL> select tablespace_name,status from dba_tablespaces;
--表空间都在
SQL> select username from dba_users;
--用户都在
SQL> select object_name from dba_objects where owner='SCOTT';
--用户对象都在
注:dba_objects视图中也许会有一些类似BIN$4lzljWIt9gfgMFeM2hVSoA==$0的对象存在,这是10g后提供的新功能,对象删除后并非真正被删,而是扔到回收站,这些对象就是回收站的对象,不用管它。