oracle 9i升级到oracle9208

转自:http://www.mmug.cn/forum/index.cfm?sPart=G&sForumId=009&iItemId=1327
背景:在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升级后经常会出现exp出现错误,注意采取下面措施前先备份一下。多备份没有什么坏处。

如果出现下面错误:
EXP-00056: 遇到 ORACLE 错误 19206
ORA-19206: 用于查询或 REF CURSOR 参数的值无效
ORA-06512: 在"SYS.DBMS_XMLGEN", line 83
ORA-06512: 在"SYS.DBMS_METADATA", line 345
ORA-06512: 在"SYS.DBMS_METADATA", line 410
ORA-06512: 在"SYS.DBMS_METADATA", line 449
ORA-06512: 在"SYS.DBMS_METADATA", line 1156
ORA-06512: 在"SYS.DBMS_METADATA", line 1141
ORA-06512: 在line 1
EXP-00000: 导出终止失败
解决方法:
SQL> @d:\oracle\ora92\rdbms\admin\catmeta.sql

如果出现下面错误:
EXP-00008: 遇到 ORACLE 错误 942
ORA-00942: 表或视图不存在
EXP-00024: 未安装导出视图,请通知您的 DBA
EXP-00000: 导出终止失败

出现该错误的原因是:由于exp的版本与数据库的版本不相同,
虽然9.2.0.7的安装包已经安装成功,但是数据字典表中的相关信心并为更新,
通过该语句查看
SQL> select comp_id,version from dba_registry;

解决方法:
以migrate模式启动
SQL> startup migrate

SQL> @d:\oracle\ora92\rdbms\admin\catpatch.sql

你可能感兴趣的:(oracle)