Windows升級到oracle 11g的異機物理升級文件(冷備)

yingyifeng306發表於2022-04-15

 

說明

環境說明

整個異機遷移升級文件分為以下幾部分:

操作步驟

操作內容

Step 1

搭建目標環境(安裝 軟體)

Step 2

生產庫預升級檢查

Step 3

目標環境確認

Step 4

目標庫正式升級

Step 5

目標庫升級後檢查

 

本文件省略目標環境 Oracle 11g Rdbms 搭建步驟,只說明在目標環境部署之後整個異機遷移升級的實施過程。

 

目標環境部署

在目標伺服器安裝 Oracle 11.2.0.4 資料庫軟體

在軟體安裝完成之後,手動建立監聽


 

生產庫預升級檢查

備份(冷備/ 熱備

若原地升級,強烈建議對生產庫進行全庫備份(冷備 / 熱備)。若採用異機遷移升級,(即原生產庫正常可用),則跳過此步。

 

歸檔空間分配

若資料庫處於歸檔模式,則需要預留足夠的歸檔日誌空間。若資料庫歸檔未開,則跳過此步。

 

回收站清理

清空資料庫回收站

SQL> PURGE DBA_RECYCLEBIN;

 

收集資料字典統計資訊

SQL> EXEC dbms_stats.gather_dictionary_stats;

 

檢查資料庫元件

系統元件狀態確認。若元件狀態均為 VALID

SQL> set line 200

SQL> select COMP_ID,COMP_NAME,VERSION,STATUS from dba_registry;

 

系統物件狀態確認。若沒有返回記錄,則表示正常

SQL> select object_name,status from dba_objects where owner='SYS' and status<>'VALID';

 

統計資料庫無效物件

無效物件收集

sqlplus /as sysdba

SQL> spool off

SQL> select count(*),status from dba_objects group by status;

SQL> create table invalid_object_20170601 as select * from dba_objects where status<>’VALID’;

 

無效物件編譯

SQL> @?/rdbms/admin/utlrp.sql

 

檔案檢查

SQL> col file_name for a50

SQL> set line 200

SQL> select tablespace_name,file_name,bytes/1024/1024 M,status from dba_temp_files order by 1;

 

檢查檔案備份模式

確認是否有檔案處於備份模式。若有,則調整;若沒有返回記錄則正常

SQL> SELECT * FROM v$backup WHERE status != 'NOT ACTIVE'; 

 

System 重複物件檢查 檔案檢查

確認是否有以下 4 行紅色記錄返回,若是,則正常

SQL> select object_name, object_type from dba_objects where (object_name,object_type) in

(select object_name,object_type from dba_objects where owner = 'SYS') and owner ='SYSTEM';

OBJECT_NAME                         OBJECT_TYPE

----------------------------------  -------------------

AQ$_SCHEDULES                     TABLE

AQ$_SCHEDULES_PRIMARY  INDEX

DBMS_REPCAT_AUTH             PACKAGE

DBMS_REPCAT_AUTH             PACKAGE BODY

 

執行預升級檢查指令碼

從目標伺服器複製 $ORACLE_HOME/rdbms/admin/utlu112i.sql 至生產伺服器 C:\upgrade 資料夾下

手動執行預升級指令碼 C:\upgrade\utlu112i.sql

sqlplus / as sysdba

SQL> spool upgeade_info.log

SQL> @utlu112i.sql

SQL> spool off

 

注:不同資料庫,配置可能不同,輸出日誌也是各樣,根據預升級指令碼輸出日誌進行調整。

 

建立初始化引數檔案

引數檔案路徑、名稱均可自定義

SQL> create pfile='C:\upgrade\initorcl.ora' from spfile;

 

停生產庫

由於需要複製資料檔案、聯機日誌檔案、控制檔案、臨時檔案至目標伺服器,確保資料一致,因此需要停生產庫

SQL> shutdown immediate;

 


 

目標環境確認

軟體檢查

確認 Oracle 11.2.0.4 資料庫軟體安裝無誤

確認監聽已經配置並開啟

引數檔案複製

10g 軟體下 C:\upgrade\initorcl.ora 引數檔案複製至將 11g 軟體 $ORACLE_HOME\database

 

密碼檔案複製

10g 軟體 $ORACLE_HOME\database 下密碼檔案複製至將 11g 軟體 $ORACLE_HOME\database

 

資料檔案複製

10g 環境資料檔案複製至 11g 目標端指定位置(停機複製)

 

臨時檔案複製

10g 環境臨時檔案複製至 11g 目標端指定位置(停機複製)

 

聯機日誌檔案複製

10g 環境聯機日誌檔案複製至 11g 目標端指定位置(停機複製)

 

控制檔案複製

10g 環境控制檔案複製至 11g 目標端指定位置(停機複製)

 

注意:若目標端資料檔案、臨時檔案、聯機日誌檔案、控制檔案路徑與生產端不一致,則需手動修改 rename

 

修改引數檔案

引數模板

*.audit_file_dest='C:\app\Administrator\admin\xuh\adump'

*.compatible='10.2.0.3.0'

*.control_files='C:\app\Administrator\oradata\xuh\control01.ctl','C:\app\Administrator\oradata\xuh\control02.ctl','C:\app\Administrator\oradata\xuh\control03.ctl'

*.core_dump_dest='C:\app\Administrator\admin\xuh\cdump'

*.db_block_size=8192

*.db_domain=''

*.db_file_multiblock_read_count=16

*.db_name='xuh'

*.db_recovery_file_dest='C:\app\Administrator\recovery'

*.db_recovery_file_dest_size=1073741824

*.dispatchers='(PROTOCOL=TCP) (SERVICE=xuhXDB)'

*.job_queue_processes=10

*.nls_language='SIMPLIFIED CHINESE'

*.nls_territory='CHINA'

*.open_cursors=300

*.pga_aggregate_target=633339904

*.processes=150

*.remote_login_passwordfile='EXCLUSIVE'

*.sga_target=1610612736

*.undo_management='AUTO'

*.undo_tablespace='UNDOTBS1'

*.diagnostic_dest='C:\app\Administrator'

 

注意:

*.audit_file_dest

*.control_files

*.db_recovery_file_dest

以上三個引數需要修改成實際路徑

 

*.background_dump_dest

*.user_dump_dest

以上兩個引數合併成以下引數

*.diagnostic_dest=$ORACLE_BASE 修改成實際路徑

 

修改目標庫檔案路徑

若目標庫資料檔案、臨時檔案、聯機日誌檔案、控制檔案路徑與生產端不一致,則需手動修改。否則, 跳過 3.9

 

目標庫啟動至 mount 狀態

Sqlplus / as sysdba

SQL> startup mount;

 

批次查詢修改語句

資料檔案

SQL> Set line 200

SQL> Set pagesize 0

SQL> select 'alter database rename file '||''''||name||''''||' to '||''''||' 實際路徑 '||substr(name,instr(name,'\',-1)+1)||''';' from v$datafile;

 

聯機日誌檔案

SQL> Set line 200

SQL> Set pagesize 0

SQL> select 'alter database rename file '||''''||member||''''||' to '||''''||' 實際路徑 '||substr(member,instr(member,'\',-1)+1)||''';' from v$logfile;

 

臨時檔案

SQL> Set line 200

SQL> Set pagesize 0

SQL> select 'alter database rename file '||''''||name||''''||' to '||''''||' 實際路徑 '||substr(name,instr(name,'\',-1)+1)||''';' from v$tempfile;

 

停目標庫

Sqlplus / as sysdba

SQL> shutdown immediate;

 


 

目標庫正式升級

upgrade 模式啟動目標庫

Oracle 11g 環境下,以升級模式開啟目標庫

$sqlplus / as sysdba

SQL> startup upgrade;

 

執行升級指令碼

Sqlplus / as sysdba

SQL> spool upgrade20170601.log

SQL> @?/rdbms/admin/catupgrd.sql

SQL> spool off

SQL> shutdown immediate;  # 若資料庫已經停止,則跳過此步

SQL> startup;

SQL> @?/rdbms/admin/utlrp.sql

該指令碼執行時間約為 2 小時

 

 


目標庫升級後檢查

檢查資料庫元件

系統元件狀態確認

SQL> col COMP_NAME for a60

SQL> set line 200

SQL> select COMP_ID,COMP_NAME,VERSION,STATUS from dba_registry;

 

統計資料庫無效物件

無效物件收集

sqlplus /as sysdba

SQL> select owner,object_name,object_type,status from dba_objects where status<>'VALID';

SQL> select count(*),status from dba_objects group by status;

 

無效物件編譯

SQL> @?/rdbms/admin/utlrp.sql

 

資料字典資訊收集

SQL> EXEC DBMS_STATS.GATHER_DICTIONARY_STATS;

 


來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/23732248/viewspace-2887211/,如需轉載,請註明出處,否則將追究法律責任。

相關文章