3.1 identify the oracle9i installation
3.4 确认环境变量ORACLE_SID和ORACLE_HOME设置.
5.2 检查shared_pool_size和java_pool_size初始化参数
第一步 下载安装文件
1.1 确认系统版本
SQL> select * from v$version;
BANNER
--------------------------------------------------------------------------------
Oracle9i Enterprise Edition Release 9.2.0.4.0 - Production
PL/SQL Release 9.2.0.4.0 - Production
CORE 9.2.0.3.0 Production
TNS for Linux: Version 9.2.0.4.0 - Production
NLSRTL Version 9.2.0.4.0 - Production
1.2 下载补丁
Oracle的补丁集(Patch Set)需要登录metalink下载,下面是个版本升级补丁的号码:
9.2.0.4 = 3095277
9.2.0.5 = 3501955
9.2.0.6 = 3948480
9.2.0.7 = 4163445
9.2.0.8 = 4547809(9i最终)
10.1.0.3 = 3761843
10.1.0.4 = 4163362
10.1.0.5 = 4505133
10.2.0.2 = 4547817
10.2.0.3 = 5337014
10.2.0.4 = 没有发布
下载补丁时,可进入cmd,使用ftp命令直接登录网站下载。相同版本,针对不同的操作系统,会有不同的补丁。每个补丁大小约在500MB~1.3GB之间。下面以 9.2.0.8 补丁为例(登陆的时候以metalink的用户名和密码登陆):
C:/Users/sz>ftp updates.oracle.com
连接到 bigip-updates-test-adc.oracle.com。
220 FTP server ready.
用户(bigip-updates-test-adc.oracle.com:(none)): aaa@bbb.com
331 Username OK, please send password.
密码:
230-
230- Welcome to the Oracle Patch Download FTP Server
230-
230- For detailed help, use command "quote site help".
230
注意根目录是不能ls的,因为Patch是海量的:
ftp> ls
200 PORT command OK.
150 Opening data connection for file listing.
226-Listing complete. Data connection has been closed.
226-It is the policy of this server to deny all
226-requests to list from the root directory.
226-Only directories with names which match
226 bug numbers exist and there are too many to be listed.
ftp>
我们必须知道确切的Patch号才能导航到下一级目录:
ftp> cd 4547809
250 Changed directory OK.
ftp> ls -la
200 PORT command OK.
150 Opening data connection for file listing.
total 1
-r--r--r-- 1 root other 1011302810 Aug 22 2006 p4547809_92080_AIX64-5L.z
-r--r--r-- 1 root other 301383322 May 22 2007 p4547809_92080_AXP.zip
-r--r--r-- 1 root other 614741565 Aug 22 2006 p4547809_92080_HP64.zip
-r--r--r-- 1 root other 915111254 Oct 4 2006 p4547809_92080_HPUX-IA64.z
-r--r--r-- 1 root other 382660178 Aug 25 2006 p4547809_92080_LINUX.zip
-r--r--r-- 1 root other 650429665 Aug 22 2006 p4547809_92080_Linux-IA64.
-r--r--r-- 1 root other 487245960 Aug 22 2006 p4547809_92080_Linux-x86-6
-r--r--r-- 1 root other 173812249 Aug 22 2006 p4547809_92080_MVS.zip
-r--r--r-- 1 root other 369346915 Aug 24 2006 p4547809_92080_SOLARIS.zip
-r--r--r-- 1 root other 435868682 Aug 24 2006 p4547809_92080_SOLARIS64.z
-r--r--r-- 1 root other 1018459573 Mar 4 2007 p4547809_92080_TRU64.zip
-r--r--r-- 1 root other 257710303 Aug 21 2006 p4547809_92080_WINNT.zip
-r--r--r-- 1 root other 378323336 Aug 22 2006 p4547809_92080_WINNT64.zip
226 Listing complete. Data connection has been closed.
ftp: 收到 1099 字节,用时 2.00秒 0.55千字节/秒。
ftp>
然后使用get或mget命令下载即可。
也可以使用FTP浏览器查看并下载,比如迅雷的查看如下图:
二, 升级准备
1.打补丁前一定要先阅读升级包里面的readme.htm
2.看Oracle Universal Installer Version Requirements
查看该升级包适用于什么版本
3.看System Requirements
看补丁是针对于哪个版本的操作系统
4.Set the ORACLE_HOME and ORACLE_SID Environment Variables
设置shared_pool 和 java_pool 的大小各大于150M
Shut Down Oracle Databases & listener & agent
Stop All Processes
Back Up the System
检查环境变量 LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$ORACLE_HOME/lib; export LD_LIBRARY_PATH
5.开始执行升级包
$ patchset_directory/Disk1
$ ./runInstaller
应用程序执行完成后有成功提示
6.Enter the following SQL*Plus commands:
SQL> STARTUP MIGRATE
SQL> SPOOL patch.log
SQL> @?/rdbms/admin/catpatch.sql
SQL> SPOOL OFF
7.检查升级脚本执行的结果,没有问题的话,关闭并重新启动数据库
8.Run the utlrp.sql script to recompile all invalid PL/SQL packages now instead of when the packages are accessed for the first time. This step is optional but recommended.
SQL> @?/rdbms/admin/utlrp.sql
9.检查升级脚本执行的结果,没有问题的话,关闭并重新启动数据库
10.Change your directory to:
$ cd $ORACLE_HOME/install
Run changePerm.sh and specify the patched server Oracle home location, before accessing client-side utilities or libraries in the database home.
升级完毕!
忠告:数据库的升级往往会有很多意想不到的结果发生,所以在升级之前一定要做好数据的备份.不要拿自己的饭碗来做赌注哦^_^
三, 升级配置
3.1 identify the oracle9i installation
升级的过程能够执行的前提是系统中已经存在较低的oracle版本. 要确认oracle home文件夹的方式有两个. 首先可以查看$ORACLE_HOME环境变量设置.
[oracle@localhost ~]$ echo $ORACLE_HOME
/oracle/product/9.0.2
其次, 用户可以查看文件/etc/oratab中的配置.
[oracle@localhost etc]$ more oratab
#
# This file is used by ORACLE utilities. It is created by root.sh
# and updated by the Database Configuration Assistant when creating
# a database.
# A colon, ':', is used as the field terminator. A new line terminates
# the entry. Lines beginning with a pound sign, '#', are comments.
#
# Entries are of the form:
# $ORACLE_SID:$ORACLE_HOME:<N|Y>:
#
# The first and second fields are the system identifier and home
# directory of the database respectively. The third filed indicates
# to the dbstart utility that the database should , "Y", or should not,
# "N", be brought up at system boot time.
#
# Multiple entries with the same $ORACLE_SID are not allowed.
#
#
*:/home/oracle/OraHome1:N
*:/oracle/product/9.0.2:N
crmtest:/oracle/product/9.0.2:N
如果用户在RAC环境中安装本升级文件, 则需要在执行数据库安装的同一台机器上运行本过程.
3.2 阅读升级注意事项
如果是要升级一个生产数据库, 请阅读metalink上的189908.1文档.
1, 在metalink上点击advanced;
2, 在文档ID区域输入189908.1然后点击submit.
3.3 上传升级包并解压
通过ftp或者其他方式将升级包upload到服务器上.然后执行
$ unzip p4547809_9208_LINUX.zip
3.4 确认环境变量ORACLE_SID和ORACLE_HOME设置.
可以使用下述的命令设置环境变量.
$ ORACLE_HOME=oracle_home
$ ORACLE_SID=sid
$ export ORACLE_HOME ORACLE_SID
3.5 shut Down oracle Database
执行升级动作之前需要先关闭当前数据库, 记得使用normal或者immediate选项. 如果是在RAC环境中执行操作, 需要关闭所有节点的所有实例.
3.6 停用所有进程
停用所有监听或者其他在oracle_home文件夹中的进程.
3.7 backup the system
Oracle推荐在执行升级包前先备份现有的oracle9i安装.
四 安装任务
用户可以采用下列方式之一执行升级包的安装.
交互式安装;
定制安装.
4.1 交互式安装
如果你试图将升级包安装到一个不包含oracle9i安装文件的目录中, oracle将提示一个错误信息.
There are no patches that need to be applied from the patchset oracle9i set 9.2.0.8.0.
交互式安装过程的描述如下.
1, 使用oracle用户登录;
2, 如果是使用远程登录到服务器进行安装, 需要执行如下配置将界面传输到本地系统:
Bourne , bash, korn shell
$ DISPLAY=local_host:0.0; export DISPLAY
3, 对于RAC环境, 需要输入下面的命令列表.
$ cd oracle_home/oui/bin
$ ./runInstaller –updateNodeList –noClusterEnabled –local ORACLE_HOME=$ORACLE_HOME CLUSTER_NODES=node1,node2,node3
4, 设置LD_LIBRARY_PATH环境变量为$ORACLE_HOME/lib
$ LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$ORACLE_HOME/lib; export LD_LIBRARY_PATH
5, 执行下述命令运行安装.
$ cd patchset_directory/Disk1
$ ./runInstaller
6, 按照提示以root身份登录运行脚本 $oracle_home/root.sh script . 如果是在RAC环境, 则需要在每个节点上都运行root.sh脚本
五, 安装后的任务
5.1 检查表空间大小
1, 检查system tablespace大小
如果在升级的过程中选择安装Jserver, 则需要确认system tablespace中至少有10M剩余空间;
select sum(bytes)/1024/1024 from dba_free_space dfs
where dfs.tablespace_name = 'SYSTEM' ;
如果系统表空间剩余空间不足10M, 则需要为其增加数据文件,或者修改现有数据文件大小.
alter tablespace system
add datafile '/oracle/oradata/crmtest/system02.dbf' size 500M;
2, 检查 XDB tablespace的大小
对于RAC应用环境, 需要确保XDB tablespace至少有50M的剩余空间.
select sum(bytes)/1024/1024 from dba_free_space dfs
where dfs.tablespace_name = 'XDB' ;
同样地, 如果剩余空间不足, 需要为tablespace增加数据文件.
alter tablespace system
add datafile '/oracle/oradata/crmtest/xdb02.dbf' size 100M;
5.2 检查shared_pool_size和java_pool_size初始化参数
JVM和XDB是9201版本的默认安装选项. 除非用户显式指定不使用这两个选项安装. 而一旦用户选择了安装jvm和xdb. 则需要在执行catpatch.sql进行更新数据库之前确认shared_pool_size和java_pool_size参数最小为150M. 如果设置的参数小于150M门限. 则有可能在升级过程中碰到错误提示.
设置shared_pool_size和java_pool_size有两种可以选择的方式.
5.2.1 在数据库环境下修改
1, 使用sys或者其他具有sysdba权限的用户登录系统.
$ sqlplus “ / as sysdba”;
2, 确认当前系统使用的初始化参数文件是initsid.ora还是spfiledbname.ora.
SQL> show parameter pfile;
上述命令将显示本地参数文件的文件名称.
3, 显示当前参数文件设置.
SQL> show parameter java_pool_size;
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
java_pool_size big integer 83886080
SQL> show parameter shared_pool_size;
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
shared_pool_size big integer 83886080
4, 修改参数文件的设置
SQL> alter system set shared_pool_size=’150M’ scope=spfile;
SQL>alter system set java_pool_size=’150M’ scope=spfile;
5, 关闭数据库
SQL> shutdown immediate;
5.2.2 修改初始化参数文件
1, 确认当前系统启动使用的是pfile还是spfile;
SQL> show parameter pfile;
2, 如果使用的是spfile参数文件启动, 则需要利用当前spfile文件生成一个pfile文件.
SQL> create pfile from spfile;
如果创建时没有指定pfile文件的位置则默认存储在$ORACLE_HOME/dbs下或者$ORACLE_HOME/admin/sid/pfile下.
3, 使用pfile重新启动数据库;
SQL> shutdown immediate;
Database closed.
Database dismounted.
ORACLE instance shut down.
SQL> startup pfile=’$ORACLE_HOME/dbs/initsid.ora’
4, 利用pfile创建spfile文件
SQL> create spfile from pfile=’$ORACLE_HOME/dbs/spfilesid.ora’;
5, 关闭数据库并重新启动.
SQL> SHUTDOWN
SQL>startup spfile=’ $ORACLE_HOME/dbs/spfilesid.ora’;
5.3 升级数据库
在完成升级包的安装之后, 用户必须执行下述的操作步骤完成对数据库的升级.
1, 使用oracle用户登录;
2, 对每一个RAC节点, 启动global services Daemon(gsd).
$ gsdctl start
3, 启动oracle网络监听
$ lsnrctl start
4, 对单机数据库服务器, 使用sysdba权限用户登录
$ sqlplus /nolog
SQL> connect sys/sys_password as sysdba
5, 对于RAC应用系统
A, 使用下述命令启动数据库, 其中db_name是数据库名称.
$ srvctl start database –d db_name
B, 使用sysdba权限用户登录
$ sqlplus /nolog
SQL> connect sys/sys_password as sysdba
C, 设置cluster_database初始化参数为false
SQL> alter system set cluster_database=false scope=spfile;
D, 退出sqlplus并关闭数据库
SQL> exit
$ srvctl stop database –d db_name
E, 使用sysdba权限用户登录数据库
$sqlplus “/ as sysdba”
6, 执行下面的sqlplus命令
SQL> startup migrate
SQL> spool patch.log
SQL> @?/rdbms/admin/catpatch.sql
SQL> spool off
7, 查看patch.log文件中是否有错误.
8, 如果需要的话, 重新执行第六步, 运行catpatch.sql
9, 重新启动数据库
SQL> shutdown
SQL> startup
10, 这个步骤是可选的, 但oracle推荐执行. 运行utlrp.sql重新编译所有失效的程序package, 以免在下次执行时报错后再次重新编译.
SQL> @?/rdbms/admin/utlrp.sql
11, 对于RAC环境
A, 设置cluster_database初始化参数为true
Sql> alter system set cluster_database=true scope=spfile;
B, 重新启动数据库
SQL> shutdown
SQL> exit
$ srvctl start database –d db_name
12, 如果使用了RMAN catalog, 输入下面的命令更新catalog
$ rman catalog username/password@alias
RMAN> upgrade catalog