windows 環境下 10g 數據庫到11g 數據庫遷移
一。10g 環境做好遷移準備
在數據庫中創建test表,並插入一條數據以便確認遷移是否成功
SQL> create table test(id number,name varchar(20));
SQL> insert into test(id,name) values(1,'test'
由於10.2.0.1版本不能直接升級到11gr2,所以需要先將源數據庫升級爲10.2.0.2
登陸rman
C:\Documentsand Settings\Administrator>rman target /
恢復管理器: Release10.2.0.1.0 - Production on 星期二 4月 14 16:47:24 2015
Copyright(c) 1982, 2005, Oracle. All rightsreserved.
連接到目標數據庫: TEST(DBID=2175164748)
修改rman參數
RMAN>configure controlfile autobackup on;
RMAN>configure datafile backup copies for device type disk to 'd:\backup\%F';
RAMN>CONFIGURERETENTION POLICY TO REDUNDANCY 2;
備份數據庫以及歸檔日誌文件
$ORACLE_HOME/rdbms/admin下的utlu112i.sql腳本copy到10g的$ORACLE_HOME/rdbms/admin 下,並在10g上執行
備份數據庫以及歸檔日誌文件
RMAN> backupdatabase format ' /data/backup/2014-04-17-allbackup、full_%d_%T_%s_P.bak';
RMAN> backuparchivelog all format /data/backup/2014-04-17-allbackup/arch_%d_%T_%s_%p.bak';
將生成備份集全部拷貝到新環境中(要拷貝一份口令文件)
===========================新===========================================
設置oracle-sid ,登錄rman
oradim -new -sid test ---創建test實例
C:\Users\Administrator>rmantarget / nocatalogg
exportORACLE_SID=test
恢復spfile到指定目錄下
startup nomount;
RMAN>restore spfile to
'C:\app\Administrator\product\11.2.0\dbhome_1\dbs\spfiletest.ora'from
'C:\backup\C-2175164748-20150416-00';
創建pfile並修改其中參數,並創建相關文件夾(所有路徑需要與當前安裝路徑匹配)
SQL> create pfilefrom spfile='C:\app\Administrator\product\11.2.0\dbhome_1\dbs\
spfiletest.ora';
test.__db_cache_size=167772160
test.__java_pool_size=4194304
test.__large_pool_size=4194304
test.__shared_pool_size=109051904
test.__streams_pool_size=0
*.audit_file_dest='C:\oracle\product\10.2.0/admin/test/adump'
*.background_dump_dest='C:\oracle\product\10.2.0/admin/test/bdump'--delete
*.compatible='10.2.0.1.0' --修改爲當前數據庫版本
*.control_files='C:\oracle\product\10.2.0/oradata/test/\control01.ctl','C:\oracle\product\10.2.0/oradata/test/\control02.ctl','C:\oracle\product\10.2.0/oradata/test/\control03.ctl'
*.core_dump_dest='C:\oracle\product\10.2.0/admin/test/cdump' --delete
*.db_block_size=8192
*.db_domain=''
*.db_file_multiblock_read_count=16 --delete
*.db_name='test'
*.db_recovery_file_dest='C:\oracle\product\10.2.0/flash_recovery_area'
*.db_recovery_file_dest_size=2147483648
*.dispatchers='(PROTOCOL=TCP) (SERVICE=testXDB)'
*.job_queue_processes=10
*.log_archive_format='ARC%S_%R.%T'
*.nls_language='SIMPLIFIED CHINESE'
*.nls_territory='CHINA'
*.open_cursors=300
*.pga_aggregate_target=96468992
*.processes=150
*.remote_login_passwordfile='EXCLUSIVE'
*.sga_target=290455552
*.undo_management='AUTO'
*.undo_tablespace='UNDOTBS1'
*.user_dump_dest='C:\oracle\product\10.2.0/admin/test/udump' --delete
恢復控制文件
RMAN>restorecontrolfile from 'C:\backup\C-2175164748-20150416-00';
需要把擴展名從.ora 改成.ctl
啓動到mount狀態,恢復數據文件
alter database mount;
重置數據文件路徑,並恢復數據庫
run{
set newname for datafile 1 to'C:\app\Administrator\oradata\test\SYSTEM01.DBF';
set newname for datafile 2 to'C:\app\Administrator\oradata\test\UNDOTBS01.DBF';
set newname for datafile 3 to'C:\app\Administrator\oradata\test\SYSAUX01.DBF';
set newname for datafile 4 to'C:\app\Administrator\oradata\test\USERS01.DBF';
restore database;
SWITCH DATAFILE ALL;
SWITCH TEMPFILE ALL;
}
修復數據庫
recover database;
重命名重做日誌,並以resetlogs方式打開數據庫
alter database rename file'C:\ORACLE\PRODUCT\10.2.0\ORADATA\TEST\REDO03.LOG' to
'C:\app\Administrator\oradata\test\redo03.log';
alter database renamefile 'C:\ORACLE\PRODUCT\10.2.0\ORADATA\TEST\REDO02.LOG' to'C:\app\Administrator\oradata\test\redo02.log';
alter database renamefile 'C:\ORACLE\PRODUCT\10.2.0\ORADATA\TEST\REDO01.LOG' to'C:\app\Administrator\oradata\test\redo01.log';
以upgrade方式打開數據庫
sqlplus / as sysdba
startup upgrade
執行升級腳本
SQL>@?/RDBMS/ADMIN/utlu112i.sql
SQL>@?/rdbms/admin/catupgrd.sql
SQL> @?/rdbms/admin/catuppst.sql