資料庫邏輯遷移方案

yingyifeng306發表於2021-05-06

一 整體專案實施流程

目前需要遷移一套資料庫,對應的兩套生產庫都執行在 WINDOWS 上面,目標端為 LINUX 環境,計劃採用邏輯遷移方式進行

 

Step

實施內容

責任人及參與人員

時間安排

形成文件

前期具體調研及專案需求分析階段:





1.

整體系統及 需求調研 調研

徐喬偉

1

專案系統調研文件、具體實施文件

第一實施階段:(測試遷移)( 無需停應用





1.

模擬整個遷移過程

徐喬偉

莊曉東

1

核心資料庫遷移文件

2.

應用廠商必須要有熟知業務的人員在場測試確認應用

確保業務在新環境上面執行正常,這一步對正式遷移至關重要

創業

2


第三實施階段:正式實施階段:(正式遷移)





1

停止正式業務

創業

1


2.

依照測試階段正式遷移

徐喬偉



3

應用廠商確認後正式執行新資料庫

創業



 

測試步驟

STEP

實施內容

實施人員

實施時間

是否停業務

1.

新伺服器上面安裝作業系統和資料庫

施嘉偉

1

2.

新伺服器初始化空庫

施嘉偉

3 小時

3.

開始匯出資料( expdp

施嘉偉

2 小時

4.

LINUX 端匯入資料

施嘉偉

4 小時

5.

校驗無效物件,檢查資料庫狀態

施嘉偉

1 小時

6.

開啟監聽

施嘉偉

1 小時

7.

應用測試

創業

2

8.

測試遷移結束

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



 

正式遷移步驟

STEP

實施內容

實施人員

實施時間

是否停業務

1.

新伺服器初始化空庫

徐喬偉

3 小時

2.

停止業務( 確認都停掉包括中介軟體

創業

20 分鐘

3.

開始匯出資料( expdp

徐喬偉

2 小時

4.

LINUX 端匯入資料

徐喬偉

4 小時

5.

校驗無效物件,檢查資料庫狀態

徐喬偉

1 小時

6.

更改 ip ,將原先生產端 hp ip 用作新伺服器的 ip

徐喬偉

莊曉東

20 分鐘

7.

開啟監聽

徐喬偉

1 小時

8.

應用測試

徐喬偉

20 分鐘

9.

遷移結束

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



 


 

二 前期環境確認

前期調研及專案需求需要客戶配合,完成前期的環境確認

2.1 資料庫環境確認

資料庫資訊

資料庫版本

9.2.0.1 - 32bit

資料庫名稱

orcl

資料量

20G

歸檔路徑

/u02/archive

資料庫字符集


 

初始化表空間建立語句:

set heading off feedback off   trimspool on linesize 500

spool tts_create_ts.sql

prompt /*   ===================== */

prompt /* Create user   tablespaces */

prompt /*   ===================== */

select 'create TABLESPACE '   || tablespace_name ||

       ' DATAFILE ' ||''' +DATA/nbhz/'||tablespace_name||'.dbf'''||'   size 10M autoextend   on;'

   from dba_tablespaces

   where tablespace_name not in   ('SYSTEM','SYSAUX')

      and contents = 'PERMANENT';

spool off

 

絕對路徑及大小根據具體環境確認

 

2.3 LINUX 目標端資料庫引數確認

作業系統版本

Red Hat Enterprise Linux   Server release 6.4 64bit

資料庫版本

11.2.0.4.0-64bit

資料庫名稱

orcl

語言

SIMPLIFIED CHINESE_CHINA.ZHS16GBK

 

2.4 LINUX 端配置

安裝最新的11.2.0.4+最新的PSU並依據2.3部分內容建立監聽、例項

具體過程略

 

2.5 最佳化引數配置

為了保證資料庫執行在最優模式下,需要最佳化一下引數

2.5.1 密碼策略

密碼過期時間,從11g開始,oracle對資料庫所有密碼預設過期時間180天:

SQL> alter profile default limit  PASSWORD_LIFE_TIME unlimited;

 

密碼登陸錯誤次數,對於輸入錯誤密碼導致資料庫賬號被鎖定:

SQL> alter profile default limit  FAILED_LOGIN_ATTEMPTS unlimited;

 

密碼大小寫敏感,該引數預設值是TRUE,因此,預設情況下密碼大小寫是敏感的

SQL> alter system set SEC_CASE_SENSITIVE_LOGON=false sid='*';

 

密碼錯誤延遲登入 11G 引入了延遲密碼驗證,在輸入錯誤的密碼後,後續如果還是採用錯誤的密碼登陸,將會導致密碼延遲驗證,從第三次開始,後續的每次登陸導致密碼延遲 1 秒左右

而且會導致失敗登陸延長,可以透過如下事件來遮蔽密碼的延遲驗證

SQL> ALTER SYSTEM SET event='28401 TRACE NAME CONTEXT FOREVER, LEVEL 1' SCOPE=SPFILE SID='*';

2.5.2 審計策略

Oracle 的審計從11g開始,預設為開啟,建議關閉:

SQL> alter system set audit_trail=none scope=spfile sid='*';

 

2.5.3 CPU 資源管理

關閉 Resource Manager 該特性為 11g 新特性,用來給特定的資源組分配指定的 CPU 配額,容易引起等待事件: RESMGR:cpu quantum ,導致資料庫響應慢。 CPU 耗盡

ALTER SYSTEM SET "_resource_manager_always_on"=FALSE SCOPE=SPFILE SID='*';

alter system set "_resource_manager_always_off"=true scope=spfile;

 

execute dbms_scheduler.set_attribute('SATURDAY_WINDOW','RESOURCE_PLAN','');

execute dbms_scheduler.set_attribute('SUNDAY_WINDOW','RESOURCE_PLAN','');

execute dbms_scheduler.set_attribute('MONDAY_WINDOW','RESOURCE_PLAN','');

execute dbms_scheduler.set_attribute('TUESDAY_WINDOW','RESOURCE_PLAN','');

execute dbms_scheduler.set_attribute('WEDNESDAY_WINDOW','RESOURCE_PLAN','');

execute dbms_scheduler.set_attribute('THURSDAY_WINDOW','RESOURCE_PLAN','');

execute dbms_scheduler.set_attribute('FRIDAY_WINDOW','RESOURCE_PLAN','');

 

2.5.4 關閉延遲段建立

ALTER SYSTEM SET deferred_segment_creation=FALSE SCOPE=SPFILE SID='*';

 

2.5.5 直接路徑讀

對於大表, Oracle 11g 傾向於直接路徑讀。如果 AWR 中,關於直接路徑讀的等待事件較高,可以考慮關閉該等待事件。

alter system  set "_serial_direct_read"=never scope=spfile sid='*';

 

2.5.6 最佳化引數 SCN 部分

alter system set "_external_scn_rejection_threshold_hours"=1 scope=spfile sid='*';

alter system set "_external_scn_logging_threshold_seconds"=600 scope=spfile sid='*';

 

2.5.7 記憶體引數最佳化

根據具體的記憶體進行最佳化,保證以下原則: SGA+PGA 記憶體 >60%OS_Mem 並且確保主機交換空間充足

2.5.8 線上日誌調整

線上redo日誌組建議,每個節點5組,每組一個日誌檔案,每個日誌檔案大小不小於500M,由於涉及到匯入操作,為了在一定程度加快匯入,可以臨時將redo設定到1G

 

2.6 對比生產端引數檔案

由於升級涉及到跨版本,將 WINDOWS 端的引數檔案 create 出來,並檢查是否存在特殊的隱含引數或者 event ,並確認引數用途,如果在 11g 新環境中引數依舊生效,將引數設定到 11g 環境中:

WINDOWS 端執行:

su - oracle

sqlplus "/ as sysdba"

SQL>create pfile='/tmp/initorcl.ora' from spfile;

根據 create 出來的引數檔案是否存在特殊引數,如果存在特殊引數,在新 LINUX 端修改。


 

三 生產端匯出操作

3.1 生產端重啟資料庫操作

為保證資料嚴格一致性,關閉監聽,重啟資料庫

su - oracle

lsnrctl stop

SQL>shutdown immediate

SQL>startup

確認沒有活動客戶端連線,確認監聽已經停止:

ps -ef | grep tns

ps -ef | grep LOCAL=NO

oracle_trace_facility_name           string      oracled

3.3 建立比對比表格

SELECT D.OWNER, COUNT ( 1 )

  FROM dba_objects d

  WHERE d.OWNER   in ( 'SJZLCK',   'YDJW_ZP', 'HZ2004','TEST','DRB','RMAN','MOCHA','CZRKRZSJ','ZJCONN','CZRKTJXX','OGGADMIN','ZJGAZHCX' )

  and d.OWNER not in ( 'PUBLIC' )

  AND NOT EXISTS ( SELECT 1 FROM DBA_RECYCLEBIN B WHERE   B.object_name=D.OBJECT_NAME AND D.OWNER=B.owner)

  GROUP BY D.OWNER

  ORDER BY D.OWNER ;

 

標紅部分按照具體使用者填寫

 

比對錶格的建立,方便後期的資料比對:

create table object_201702 as select * from dba_objects

 

3.4 邏輯匯出生產端資料

匯出之前先查詢字符集

set NLS_LANG=AMERICAN_AMERICA.ZHS16GBK

匯出:

exp  "'"/ as sysdba"'"file=f:\fullorcl.dmp log=f:\orclfull.log full=y


 

四 生產端匯入資料

4.1 建立對應的表空間

根據前期 2.1 2.2 部分抽取的語句,建立對應的表空間。

查詢原庫表空間大小

select   file_name,tablespace_name,bytes,autoextensible from dba_data_files;

查詢新庫資料檔案存放路徑:

select name from v$datafile;

根據原庫建立表空間,存放資料檔案:

create tablespace XXX   datafile ‘XXX’ size 10G autoextend on;

 4.2

查詢原庫使用者:select * from all_users;

獲取原庫建立使用者的DDL語句:

select dbms_metadata.get_ddl('USER','TEST01')from dual;

 

4.2 資料匯入

 

imp \'/ as sysdba\' file=fullorcl_%U.dmp  log=fullorcl.log full=y parallel=4

 

是否開啟歸檔

4.3 啟動監聽

複製 WINDOWS 端的 tnsnames.ora 檔案到新環境端,並且開啟資料庫監聽檔案,確保資料庫已經註冊到監聽中

強制註冊

alter system register;

 

4.4 編譯無效物件並確認

@?/rdbms/admin/utlrp.sql

 

確認不存在無效物件:

select   a.owner,a.object_name,a.OBJECT_TYPE from dba_objects a,object_201702 b where   a.OBJECT_NAME=b.OBJECT_NAME and a.STATUS='INVALID' and b.STATUS='VALID'

五 應用測試部分

首先由應用進行相關的測試,測試沒有問題後將生產主機替換成臨時 IP 地址,將目標端 ip 改成原先生產端的 ip 接管業務

  更改原WINDOS端IP防止衝突

六OGG搭建

七 遷移失敗的回退措施

11.1 立即關閉目標端資料庫跟主機

SQL>shutdown immediate

# shutdown -h

11.2 開啟生產端資料庫

$lsnrctl start

$sqlplus / as sysdba

SQL>startup

 

至此生產資料沒有變動,不影響業務。

 


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

相關文章