author:skate
time:2010-05-26
oracle10.2.0.1升级到oracle10.2.0.4
昨天上午做了个oracle10g升级,其实升级很简单,计划在50分钟完成,可到达现场后,遇到了几个小问题
系统输入密码无法登陆(由于修改ip后,可能network出现问题,最后重启机器解决),登录后乱码(修改了
/etc/sysconfig/i18文件,因为os没有安装中文字符集,而又启用中文,所以会乱码)。把这些小问题解决后
就开始主要任务---升级
1. 停止所有oracle相关进程。包括数据库,监听等相关的所有开启进程
lsnrctl stop
shutdown immediate
然后把oracle数据库文件冷备,避免升级失败
2. 下载补丁包p6810189_10204_Linux-x86
# xhosts +
# su - oracle
$ cd Disk1
$ ./runInstaller
这步骤一般很快,中途需要执行个root.sh脚本,运行结束后oracle软件就升级ok,先不要启动数据库,还需要升级数据库
3. 手工升级
以oracle用户登录,打开终端,设置好环境变量$ORACLE_HOME,$ORACLE_SID,$PATH
$ export ORACLE_SID=orcl
$ sqlplus /nolog
A。 以升级模式启动数据库
sql> startup upgrade
B。 重建数据字典,另:如果有归档的话,强烈建议首先关闭归档
SQL> SPOOL path.log (路径默认在oracle主目录下 /opt/oracle/,这个日志会有点大30多M,可以查看.)
SQL> @$ORACLE_HOME/rdbms/admin/catupgrd.sql
SQL> SPOOL OFF
这个过程要等很长,我等了40分钟,如果这一步顺利执行,升级已经完成了大半
C。执行完重建数据字典,重启数据库
SQL> SHUTDOWN IMMEDIATE
SQL> STARTUP
D。编译无效对象
@?/rdbms/admin/utlrp.sql
SQL> select * from utl_recomp_errors;
未选定行(这里说明没有错误)
由于catupgrd.sql重建过程中可能造成一些对象失效,我们需要运行utlrp.sql重新编译PL/SQL packages
E。然后运行下面的命令来检查升级之后,所有组件的状态
SQL> select comp_name, version, status from sys.dba_registry; //显示值为VALID,则成功完成升级
用opatch lsinventory验证补丁是否安装成功
[oracle@ticket-A ~]$ ls -l /home/oracle/oracle/product/10.2.0/db_1/OPatch/
total 76
drwxr-x--- 2 oracle oinstall 4096 May 25 11:12 docs
-rw-r--r-- 1 oracle oinstall 19263 Dec 26 2006 emdpatch.pl
drwxr-x--- 2 oracle oinstall 4096 May 25 11:12 jlib
-rwxr-xr-x 1 oracle oinstall 6315 Nov 23 2007 opatch
-rw-r--r-- 1 oracle oinstall 49 May 25 11:12 opatch.ini
-rw-r--r-- 1 oracle oinstall 2571 Aug 8 2006 opatch.pl
drwxr-x--- 4 oracle oinstall 4096 May 25 11:12 opatchprereqs
[oracle@ticket-A OPatch]$ ./opatch lsinventory
Invoking OPatch 10.2.0.4.2
Oracle Interim Patch Installer version 10.2.0.4.2
Copyright (c) 2007, Oracle Corporation. All rights reserved.
Oracle Home : /home/oracle/oracle/product/10.2.0/db_1
Central Inventory : /home/oracle/oraInventory
from : /etc/oraInst.loc
OPatch version : 10.2.0.4.2
OUI version : 10.2.0.4.0
OUI location : /home/oracle/oracle/product/10.2.0/db_1/oui
Log file location : /home/oracle/oracle/product/10.2.0/db_1/cfgtoollogs/opatch/opatch2010-05-26_15-58-56PM.log
Lsinventory Output file location : /home/oracle/oracle/product/10.2.0/db_1/cfgtoollogs/opatch/lsinv/lsinventory2010-05-26_15-58-56PM.txt
--------------------------------------------------------------------------------
Installed Top-level Products (2):
Oracle Database 10g 10.2.0.1.0
Oracle Database 10g Release 2 Patch Set 3 10.2.0.4.0
There are 2 products installed in this Oracle Home.
There are no Interim patches installed in this Oracle Home.
--------------------------------------------------------------------------------
OPatch succeeded.
还可以用如下命令验证补丁的安装
./opatch lsinventory -detail
./opatch lsinventory -all
如下两个视图升级前后对比下,验证升级是否成功
SELECT * FROM v$version
SELECT * FROM v$option
再检查下其他的
SQL> select tablespace_name,status from dba_tablespaces; //检查tablespace
SQL> select username from dba_users; //检查用户
SQL> select object_name from dba_objects where owner='SCOTT'; //检查对象
SQL> select name from v$database(确认ORACLE_SID正确,为orcl)
SQL> select tablespace_name, bytes from dba_data_files(对系统表空间大小进行确认)。
总结:
1. 计划总是没有变化快,在计划之中总会出现一些意外的插叙
2. 要留有充足的时间以备处理突发事件
3. 这个升级共用90分钟
-----end-----