資料庫邏輯遷移方案
一 整體專案實施流程
目前需要遷移一套資料庫,對應的兩套生產庫都執行在 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/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- OGG資料庫遷移方案(一)資料庫
- OGG資料庫遷移方案(二)資料庫
- OGG資料庫遷移方案(三)資料庫
- OGG資料庫遷移方案(四)資料庫
- Oracle資料庫(資料泵)遷移方案(上)Oracle資料庫
- Oracle資料庫(資料泵)遷移方案(下)Oracle資料庫
- Oracle資料庫(DataGuard)遷移方案(上)Oracle資料庫
- Oracle資料庫(DataGuard)遷移方案(中)Oracle資料庫
- Oracle資料庫(DataGuard)遷移方案(下)Oracle資料庫
- 資料庫遷移資料庫
- Fastdfs資料遷移方案AST
- 資料庫平滑遷移方案與實踐分享資料庫
- Centos8中遷移邏輯卷CentOS
- redis資料庫遷移Redis資料庫
- 資料庫遷移 :理解資料庫
- laravel資料庫遷移Laravel資料庫
- 資料遷移方案選擇
- SQL Server 資料庫最小當機遷移方案GESQLServer資料庫
- linux mysql資料庫遷移LinuxMySql資料庫
- django資料庫遷移-15Django資料庫
- 用rman遷移資料庫資料庫
- 資料庫遷移手記資料庫
- 遷移MySQL 5.7資料庫MySql資料庫
- 資料庫遷移神器——Flyway資料庫
- dm資料庫遷移命令資料庫
- SQL Server資料庫遷移SQLServer資料庫
- redis叢集 資料遷移方案Redis
- 雲資料庫管理與資料遷移資料庫
- dnf資料庫備份&遷移資料庫
- 遷移資料庫資料考慮問題資料庫
- 某行XX系統DB2資料庫遷移實施方案DB2資料庫
- 無外網Oracle資料庫遷移Oracle資料庫
- Laravel migration (資料庫遷移) 的使用Laravel資料庫
- 騰訊雲 雲資料庫遷移資料庫
- laravel 資料庫遷移時報錯Laravel資料庫
- WindowsServer 2012資料庫遷移記錄WindowsServer資料庫
- Laravel 學習之資料庫遷移Laravel資料庫
- EF 中多個資料庫遷移資料庫