1. 确定环境是否正确
# echo $ORACLE_HOME
/oracle/app/oracle/product/10.2.0/db_1
# echo $ORACLE_SID
orcl
如果ORACLE_SID没设置需要export
#export ORACLE_SID=orcl
2. 关闭所有oracle 的服务
$ emctl stop dbconsole
$isqlplusctl stop
关闭Oracle SQL>SHUTDOWN IMMEDIATE;
停止监听lsnrctl stop
3.解压缩补丁包
4.升级
注意事项:补丁的存放的路径尽量不要夹杂特殊字符,第二次测试升级补丁时发现如下错误:
./runInstaller
./runInstaller: line 72: /home/oracle/Desktop/Disk1/install/.oui: No such file or directory
查了好久才知道路径中有特殊字符,造成这个错误。重新将升级包拷贝到简单的目录中即可正常运行。
[root@LING Desktop]# xhost +
access control disabled, clients can connect from any host
[root@LING Desktop]# su - oracle
[oracle@LING Disk1]$ ls
10204_buglist.htm install patch_note.htm response runInstaller stage
[oracle@LING Disk1]$ ./runInstaller
Starting Oracle Universal Installer...
Checking installer requirements...
Checking operating system version: must be redhat-3, SuSE-9, SuSE-10, redhat-4, redhat-5, UnitedLinux-1.0, asianux-1, asianux-2 or asianux-3
Passed
All installer requirements met.
Preparing to launch Oracle Universal Installer from /tmp/OraInstall2012-04-29_02-58-42AM. Please wait ...[oracle@LING Disk1]$ Oracle Universal Installer, Version 10.2.0.4.0 Production
Copyright (C) 1999, 2008, Oracle. All rights reserved.
Warning: Cannot convert string "-b&h-lucida-medium-r-normal-sans-*-140-*-*-p-*-iso8859-1" to type FontStruct
这里需要用root用户执行提示的脚本:
#su - root
Password:
[root@LING Desktop]# . /u01/app/oracle/product/10.2.0/client_1/root.sh
Running Oracle10 root.sh script...
The following environment variables are set as:
ORACLE_OWNER= oracle
ORACLE_HOME= /u01/app/oracle/product/10.2.0/client_1
Enter the full pathname of the local bin directory: [/usr/local/bin]:
The file "dbhome" already exists in /usr/local/bin. Overwrite it? (y/n)
[n]: y
Copying dbhome to /usr/local/bin ...
The file "oraenv" already exists in /usr/local/bin. Overwrite it? (y/n)
[n]: y
Copying oraenv to /usr/local/bin ...
The file "coraenv" already exists in /usr/local/bin. Overwrite it? (y/n)
[n]: y
Copying coraenv to /usr/local/bin ...
Entries will be added to the /etc/oratab file as needed by
Database Configuration Assistant when a database is created
Finished running generic part of root.sh script.
Now product-specific root actions will be performed.
后面开始升级数据字典
[oracle@LING ~]$ export ORACLE_SID=orcl
[oracle@LING ~]$ echo $ORACLE_SID
orcl
[oracle@LING ~]$ sqlplus /nolog
SQL*Plus: Release 10.2.0.4.0 - Production on Sun Apr 29 03:15:33 2012
Copyright (c) 1982, 2007, Oracle. All Rights Reserved.
SQL> conn /as sysdba
Connected to an idle instance.
SQL> startup upgrade
ORACLE instance started.
Total System Global Area 603979776 bytes
Fixed Size 1268872 bytes
Variable Size 150995832 bytes
Database Buffers 444596224 bytes
Redo Buffers 7118848 bytes
Database mounted.
Database opened.
SQL> SPOOL patch.log
SQL> @?/rdbms/admin/catupgrd.sql
经过漫长的等待,终于结束:
SQL> SPOOL off
SQL> shutdown immediate
Database closed.
Database dismounted.
ORACLE instance shut down.
SQL> startup
ORACLE instance started.
Total System Global Area 603979776 bytes
Fixed Size 1268872 bytes
Variable Size 184550264 bytes
Database Buffers 411041792 bytes
Redo Buffers 7118848 bytes
Database mounted.
Database opened.
SQL> @?/rdbms/admin/utlrp.sql
TIMESTAMP
--------------------------------------------------------------------------------
COMP_TIMESTAMP UTLRP_BGN 2012-04-29 03:45:09
DOC> The following PL/SQL block invokes UTL_RECOMP to recompile invalid
DOC> objects in the database. Recompilation time is proportional to the
DOC> number of invalid objects in the database, so this command may take
DOC> a long time to execute on a database with a large number of invalid
DOC> objects.
DOC>
DOC> Use the following queries to track recompilation progress:
DOC>
DOC> 1. Query returning the number of invalid objects remaining. This
DOC> number should decrease with time.
DOC> SELECT COUNT(*) FROM obj$ WHERE status IN (4, 5, 6);
DOC>
DOC> 2. Query returning the number of objects compiled so far. This number
DOC> should increase with time.
DOC> SELECT COUNT(*) FROM UTL_RECOMP_COMPILED;
DOC>
DOC> This script automatically chooses serial or parallel recompilation
DOC> based on the number of CPUs available (parameter cpu_count) multiplied
DOC> by the number of threads per CPU (parameter parallel_threads_per_cpu).
DOC> On RAC, this number is added across all RAC nodes.
DOC>
DOC> UTL_RECOMP uses DBMS_SCHEDULER to create jobs for parallel
DOC> recompilation. Jobs are created without instance affinity so that they
DOC> can migrate across RAC nodes. Use the following queries to verify
DOC> whether UTL_RECOMP jobs are being created and run correctly:
DOC>
DOC> 1. Query showing jobs created by UTL_RECOMP
DOC> SELECT job_name FROM dba_scheduler_jobs
DOC> WHERE job_name like 'UTL_RECOMP_SLAVE_%';
DOC>
DOC> 2. Query showing UTL_RECOMP jobs that are running
DOC> SELECT job_name FROM dba_scheduler_running_jobs
DOC> WHERE job_name like 'UTL_RECOMP_SLAVE_%';
DOC>#
TIMESTAMP
--------------------------------------------------------------------------------
COMP_TIMESTAMP UTLRP_END 2012-04-29 03:45:37
DOC> The following query reports the number of objects that have compiled
DOC> with errors (objects that compile with errors have status set to 3 in
DOC> obj$). If the number is higher than expected, please examine the error
DOC> messages reported with each object (using SHOW ERRORS) to see if they
DOC> point to system misconfiguration or resource constraints that must be
DOC> fixed before attempting to recompile these objects.
DOC>#
OBJECTS WITH ERRORS
-------------------
0
DOC> The following query reports the number of errors caught during
DOC> recompilation. If this number is non-zero, please query the error
DOC> messages in the table UTL_RECOMP_ERRORS to see if any of these errors
DOC> are due to misconfiguration or resource constraints that must be
DOC> fixed before objects can compile successfully.
DOC>#
ERRORS DURING RECOMPILATION
---------------------------
0
至此升级完成,验证一下:
SQL> select * from v$version;
BANNER
----------------------------------------------------------------
Oracle Database 10g Enterprise Edition Release 10.2.0.4.0 - Prod
PL/SQL Release 10.2.0.4.0 - Production
CORE 10.2.0.4.0 Production
TNS for Linux: Version 10.2.0.4.0 - Production
NLSRTL Version 10.2.0.4.0 - Production
SQL> select comp_id,version,status from dba_registry;
COMP_ID VERSION STATUS
------------------------------ ------------------------------ -----------
CATALOG 10.2.0.4.0 VALID
CATPROC 10.2.0.4.0 VALID
OWM 10.2.0.4.3 VALID
JAVAVM 10.2.0.4.0 VALID
XML 10.2.0.4.0 VALID
CATJAVA 10.2.0.4.0 VALID
EXF 10.2.0.4.0 VALID
ODM 10.2.0.4.0 VALID
CONTEXT 10.2.0.4.0 VALID
XDB 10.2.0.4.0 VALID
RUL 10.2.0.4.0 VALID
ORDIM 10.2.0.4.0 VALID
APS 10.2.0.4.0 VALID
XOQ 10.2.0.4.0 VALID
AMD 10.2.0.4.0 VALID
SDO 10.2.0.4.0 VALID
EM 10.2.0.4.0 VALID
SQL> select * from dba_registry_history;
ACTION_TIME
---------------------------------------------------------------------------
ACTION NAMESPACE
------------------------------ ------------------------------
VERSION ID
------------------------------ ----------
COMMENTS
--------------------------------------------------------------------------------
29-APR-12 03.32.01.307734 AM
UPGRADE SERVER
10.2.0.4.0
Upgraded from 10.2.0.1.0