1.安裝oracle 10g r2的軟件
2.打oracle 10g最新的補丁,我打的是升級到10.2.0.2的補丁
3.運行Pre-Upgrade Information Tool.它用來分析升級到10g前你要做的一些操作,比如需要增加或減少的參數等.
啟動要升級的DB,用SYSDBA運行10g的ORACLE_HOME/rdbms/admin下的utlu102i.sql,查看產生的日志.
SQL> SPOOL info.log
SQL> @utlu102i.sql
SQL> SPOOL OFF
下面是我的info.log.
SQL> @d:utlu102i.sql;
Oracle Database 10.2 Upgrade Information Utility 01-17-2007 13:22:37
.
**********************************************************************
Database:
**********************************************************************
--> name: ZHANGYE
--> version: 9.2.0.6.0
--> compatible: 9.2.0.0.0
--> blocksize: 8192
.
**********************************************************************
Logfiles: [make adjustments in the current environment]
**********************************************************************
--> The existing log files are adequate. No changes are required.
.
**********************************************************************
Tablespaces: [make adjustments in the current environment]
**********************************************************************
--> SYSTEM tablespace is adequate for the upgrade.
.... minimum required size: 248 MB
--> TEMP tablespace is adequate for the upgrade.
.... minimum required size: 58 MB
.... AUTOEXTEND additional space required: 18 MB
.
**********************************************************************
Update Parameters: [Update Oracle Database 10.2 init.ora or spfile]
**********************************************************************
WARNING: --> "shared_pool_size" needs to be increased to at least 177861837
WARNING: --> "java_pool_size" needs to be increased to at least 67108864
WARNING: --> "streams_pool_size" is not currently defined and needs a value of
at least 50331648
WARNING: --> "session_max_open_files" needs to be increased to at least 20
.
**********************************************************************
Renamed Parameters: [Update Oracle Database 10.2 init.ora or spfile]
**********************************************************************
-- No renamed parameters found. No changes are required.
.
**********************************************************************
Obsolete/Deprecated Parameters: [Update Oracle Database 10.2 init.ora or spfile]
**********************************************************************
--> "hash_join_enabled"
--> "log_archive_start"
.
**********************************************************************
Components: [The following database components will be upgraded or installed]
**********************************************************************
--> Oracle Catalog Views [upgrade] VALID
--> Oracle Packages and Types [upgrade] VALID
.
**********************************************************************
Miscellaneous Warnings
**********************************************************************
WARNING: --> Deprecated CONNECT role granted to some user/roles.
.... CONNECT role after upgrade has only CREATE SESSION privilege.
WARNING: --> Database contains stale optimizer statistics.
.... Refer to the 10g Upgrade Guide for instructions to update
.... statistics prior to upgrading the database.
.... Component Schemas with stale statistics:
.... SYS
.
**********************************************************************
SYSAUX Tablespace:
[Create tablespace in the Oracle Database 10.2 environment]
**********************************************************************
--> New "SYSAUX" tablespace
.... minimum required size for database upgrade: 500 MB
.
PL/SQL 過程已成功完成。
SQL> spool off;
copy oracle 9i的pfile(D:oracleora92databaseINITzhangye.ORA)到oracle 10g的pfile(D:oracle10gdatabaseINITzhangye.ORA).
檢查info.log,對oracle 10g的pfile修改.
--oracle 10g修改前的pfile
*.aq_tm_processes=1
*.background_dump_dest='D:oracleadminzhangyebdump'
*.compatible='9.2.0.0.0'
*.control_files='D:oracleoradatazhangyecontrol01.ctl','D:oracleoradatazhangyecontrol02.ctl',
'D:oracleoradatazhangyecontrol03.ctl'
*.core_dump_dest='D:oracleadminzhangyecdump'
*.db_block_size=8192
*.db_cache_size=25165824
*.db_domain=''
*.db_file_multiblock_read_count=16
*.db_name='zhangye'
*.fast_start_mttr_target=300
*.hash_join_enabled=TRUE*.instance_name='zhangye'
*.java_pool_size=0
*.job_queue_processes=10
*.large_pool_size=8388608
*.open_cursors=300
*.pga_aggregate_target=25165824
*.processes=150
*.query_rewrite_enabled='FALSE'
*.remote_login_passwordfile='EXCLUSIVE'
*.shared_pool_size=50331648
*.sort_area_size=524288
*.star_transformation_enabled='FALSE'
*.timed_statistics=TRUE
*.undo_management='AUTO'
*.undo_retention=10800
*.undo_tablespace='UNDOTBS1'
*.user_dump_dest='D:oracleadminzhangyeudump'
*.log_archive_start=true
*.log_archive_format=%s.arc
*.log_archive_dest=D:oraclearchive
--oracle 10g修改後的pfile *.aq_tm_processes=1
*.background_dump_dest='D:oracleadminzhangyebdump'
*.compatible='9.2.0.0.0'
*.control_files='D:oracleoradatazhangyecontrol01.ctl','D:oracleoradatazhangyecontrol02.ctl',
'D:oracleoradatazhangyecontrol03.ctl'
*.core_dump_dest='D:oracleadminzhangyecdump'
*.db_block_size=8192
*.db_cache_size=25165824
*.db_domain=''
*.db_file_multiblock_read_count=16
*.db_name='zhangye'
*.fast_start_mttr_target=300
#*.hash_join_enabled=TRUE
*.instance_name='zhangye'
*.java_pool_size=67108864
*.job_queue_processes=10
*.large_pool_size=8388608
*.open_cursors=300
*.pga_aggregate_target=25165824
*.processes=150
*.query_rewrite_enabled='FALSE'
*.remote_login_passwordfile='EXCLUSIVE'
*.shared_pool_size=177861837
*.sort_area_size=524288
*.star_transformation_enabled='FALSE'
*.timed_statistics=TRUE
*.undo_management='AUTO'
*.undo_retention=10800
*.undo_tablespace='UNDOTBS1'
*.user_dump_dest='D:oracleadminzhangyeudump'
#*.log_archive_start=true
#*.log_archive_format=%s.arc
#*.log_archive_dest=D:oraclearchive
*.streams_pool_size=50331648
*.session_max_open_files=20
4.運行Oracle Net Configuration Assistant,生成10g的listener.ora
5.rman備份DB.
6.stop所有oracle 9i的服務.
刪除oracle 9i的服務.
C:> ORADIM -DELETE -SID ZHANGYE
新建oracle 10g的服務
C:> ORADIM -NEW -SID ZHANGYE -MAXUSERS 10 -STARTMODE AUTO -PFILE D:oracle10gdatabaseINITzhangye.ORA
7.UPGRADE選項啟動DB.
SQL> STARTUP UPGRADE
8.創建SYSAUX表空間
CREATE TABLESPACE sysaux DATAFILE 'D:oracleoradatazhangyesysaux01.dbf'
SIZE 500M REUSE
EXTENT MANAGEMENT LOCAL
SEGMENT SPACE MANAGEMENT AUTO
ONLINE;
9.運行10g的ORACLE_HOME/rdbms/admin/catupgrd.sql,然後運行utlu102s.sql查看升級結果.
SQL> SPOOL upgrade.log
SQL> @catupgrd.sql
SQL> @utlu102s.sql
SQL> SPOOL OFF
檢查upgrade.log,如果有錯誤,處理錯誤後再次運行catupgrd.sql.
10.重新啟動DB,編譯無效對象.
SQL> shutdown immediate
SQL> startup pfile=D:oracle10gdatabaseINITzhangye.ORA
SQL> @D:oracle10gRDBMSADMINutlrp.sql
編譯後沒有無效對象
SQL> SELECT count(*) FROM dba_objects WHERE status='INVALID';
COUNT(*)
----------
0
升級完成.