oracle 9i升级到oracle9208数据库

 背景:在windows2003server安装Oracle9.2.0.1.0,现打算将其升级到9.2.0.8版本,并打上最新的安全补丁April2008版。

1.升级oracle(administrator用户权限)
  (1)到metalink下载升级压缩包,patch号为4547809,压缩包名称为 p4547809_92080_WINNT.zip,for windows 32bit。
  (2)解压缩zip,下边包含一个Disk1和readme.html文件。安装升级补丁之前,在管理中停掉所有的oracle相关服务,在命令提示符中lsnrctl stop,停掉监听器。
  (3)在双击Disk下的setup.exe前,确保环境变量中有ORACLE_HOME变量,并已正确设置。否则会出现错误(错误忘了)。
  (4)双击setup.exe,自动升级到9.2.0.8,命令提示符提示安装完成后,说明组件已经安装上。
  (5)4步并没有update组件,所以还需要update.此时需要开启Oracle的服务,最好是重起电脑,Oracle默认服务会自启动。
  (6)以sysdba身份登录数据库后,SQL>startup 安装oracle有有jvm和xdb的用户确保init.ora中的参数SHARED_POOL_SIZE 和JAVA_POOL_SIZE 为150m。方法是查看现有两个参数大小
   SQL>SHOW PARAMETER SHARED_POOL_SIZE
   SQL>SHOW PARAMETER JAVA_POOL_SIZE
   如果大小不是150m,进行设置:
   SQL> ALTER SYSTEM SET SHARED_POOL_SIZE='150M' SCOPE=spfile;
   SQL> ALTER SYSTEM SET JAVA_POOL_SIZE='150M' SCOPE=spfile;
   设置成功后shutdown immediate关闭数据库。
  (7)以sysdba登录数据库
   执行 SQL> STARTUP MIGRATE
 SQL> SPOOL patch.log
 SQL> @ORACLE_BASE/ORACLE_HOME/rdbms/admin/catpatch.sql
 SQL> SPOOL OFF
    spool patch.log是把做升级日志到patch.log,供以后察看。
   其中ORACLE_BASE/ORACLE_HOME表示你的oracle目录,假设oracle安装目录为c:/oracle/ora92,则第三句应为:
   SQL>@c:/oracle/ora92/rrdbms/admin/catpatch.sql  其中@表示执行以下脚本。
   这个过程持续大概20分钟。
  (8)完成后shutdown数据库,然后startup,执行另外一个脚本
   SQL> @ORACLE_BASE/ORACLE_HOME/rdbms/admin/utlrp.sql,完成后升级补丁打完!!
  (8)重起数据库,登陆后select * from v$version;可以看到oracle升到了9208。
2.oracle打安全补丁
 (1)补丁信息:Critical Patch Update Note  Release 9.2.0.8 for Microsoft Windows (32-Bit),patch号为6867138。
 (2)CPU是过渡性补丁,需要用Oracle的安装工具opatch安装。
   安装CPU之前,查看相应的opatch版本应为1.0.0.0.57,9.2.0.1版oracle自带版本为55的,到metalink下载57版本的,压缩包名为p2617419_10102_GENERIC。解压缩后将OPATCH目录覆盖%oracle_home%/opatch就行了。
 (3)在用OPATCH安装安全补丁之前,停掉所有的oracle服务,但是实践中发现,进程中仍会有相关的dll被未知(我未知)的程序占用,导致couldn't copy一些.dll文件。因此建议重启服务器,进入安全模式进行。
 (4)在安全模式下,在命令提示符中直接Opatch apply %补丁所在位置%,比如在我的电脑中补丁在 D:/software/oracle9/p6867138_92080_WINNT/6867138中,则我在命令提示符中输入 Opatch apply D:/software/oracle9/p6867138_92080_WINNT/6867138,自动安装安全补丁。
 (5)安装完成后,补丁还不算打成功,都快哭了~~~~。咬牙,接着来
  跑remove_demo.js脚本来移除不稳定的Oracle HTTP Server demos.命令提示符中cd到6867138目录。
  >cscript. //nologo remove_demo.js
 (6)把修改过的 .sql文件导入数据库:
   启动oracle服务,cd %ORACLE_HOME%/cpu/CPUApr2008 然后以sysdba登录后执行SQL>@catcpu.sql
   如果在这个过程中报有invalid的对象,则需要执行(7),否则直接执行(8).
 (7)cd %ORACLE_HOME%/rdbms/admin后以sysdba登录,执行@utlrp.sql,之后你可以用
SQL> SELECT OBJECT_NAME FROM DBA_OBJECTS WHERE STATUS= 'INVALID';检查,可以看到已没有invalid对象。
 (8)重新编译数据库中的视图
  cd %ORACLE_HOME%/cpu/view_recompile然后sysdba登录,执行SQL> @recompile_precheck_jan2008cpu.sql 这个是计算下需要执行的时间等。
  shutdown数据库,以migrate方式startup,SQL>startup migrate 然后SQL> @view_recompile_jan2008cpu.sql 关闭数据库。如果有invalid对象,手动compile,但是一般没有。

  总结:oracle不同的补丁还有不同的打法,实在是很不智能,所以之前要仔细的阅读readme,是个很郁闷的活!而且安装完了不是真正的安装完!!崩溃了吧~~~上边的操作是新建数据库之后就直接进行的,因此也没有考虑到数据库备份等工作。如果你已经在使用数据库做了一些工作,建议先备份数据库,以免补丁没有打上,影响数据库的使用。

你可能感兴趣的:(oracle,9i,9208)