當前位置:首頁 » 操作系統 » oracle資料庫遷移

oracle資料庫遷移

發布時間: 2022-07-01 18:11:42

① 如何將oracle的數據遷移到mysql

OGG全稱為Oracle GoldenGate,是由Oracle官方提供的用於解決異構數據環境中數據復制的一個商業工具。相比於其它遷移工具OGG的優勢在於可以直接解析源端Oracle的redo log,因此能夠實現在不需要對原表結構做太多調整的前提下完成數據增量部分的遷移。本篇文章將重點介紹如何使用OGG實現Oracle到MySQL數據的平滑遷移,以及講述個人在遷移過程中所碰到問題的解決方案。


(一)OGG邏輯架構

參照上圖簡單給大家介紹下OGG邏輯架構,讓大家對OGG數據同步過程有個簡單了解,後面章節會詳細演示相關進程的配置方式,在OGG使用過程中主要涉及以下進程及文件:

  • Manager進程:需要源端跟目標端同時運行,主要作用是監控管理其它進程,報告錯誤,分配及清理數據存儲空間,發布閾值報告等

  • Extract進程:運行在資料庫源端,主要用於捕獲數據的變化,負責全量、增量數據的抽取

  • Trails文件:臨時存放在磁碟上的數據文件

  • Data Pump進程:運行在資料庫源端,屬於Extract進程的一個輔助進程,如果不配置Data Pump,Extract進程會將抽取的數據直接發送到目標端的Trail文件,如果配置了Data Pump,Extract進程會將數據抽取到本地Trail文件,然後通過Data Pump進程發送到目標端,配置Data Pump進程的主要好處是即使源端到目標端發生網路中斷,Extract進程依然不會終止

  • Collector進程:接收源端傳輸過來的數據變化,並寫入本地Trail文件中

  • Replicat進程:讀取Trail文件中記錄的數據變化,創建對應的DML語句並在目標端回放

  • 二、遷移方案

    (一)環境信息

    OGG版本 OGG 12.2.0.2.2 For Oracle OGG 12.2.0.2.2 For MySQL

    資料庫版本 Oracle 11.2.0.4 MySQL 5.7.21

    OGG_HOME /home/oracle/ogg /opt/ogg

    (二)表結構遷移

    表結構遷移屬於難度不高但內容比較繁瑣的一步,我們在遷移表結構時使用了一個叫sqlines的開源工具,對於sqlines工具在MySQL端創建失敗及不符合預期的表結構再進行特殊處理,以此來提高表結構轉換的效率。

    注意:OGG在Oracle遷移MySQL的場景下不支持DDL語句同步,因此表結構遷移完成後到資料庫切換前盡量不要再修改表結構。

    (三)數據遷移

    數據同步的操作均採用OGG工具進行,考慮數據全量和增量的銜接,OGG需要先將增量同步的抽取進程啟動,抓取資料庫的redo log,待全量抽取結束後開啟增量數據回放,應用全量和增量這段期間產生的日誌數據,OGG可基於參數配置進行重復數據處理,所以使用OGG時優先將增量進行配置並啟用。此外,為了避免本章節篇幅過長,OGG參數將不再解釋,有需要的朋友可以查看官方提供的Reference文檔查詢任何你不理解的參數。

    1.源端OGG配置

    (1)Oracle資料庫配置

    針對Oracle資料庫,OGG需要資料庫開啟歸檔模式及增加輔助補充日誌、強制記錄日誌等來保障OGG可抓取到完整的日誌信息

    查看當前環境是否滿足要求,輸出結果如下圖所示:

    (2)Oracle資料庫OGG用戶創建

    OGG需要有一個用戶有許可權對資料庫的相關對象做操作,以下為涉及的許可權,該示例將創建一個用戶名和密碼均為ogg的Oracle資料庫用戶並授予以下許可權

    (3)源端OGG 管理進程(MGR)配置

    (4)源端OGG 表級補全日誌(trandata)配置

    表級補全日誌需要在最小補全日誌打開的情況下才起作用,之前只在資料庫級開啟了最小補全日誌(alter database add supplemental log data;),redolog記錄的信息還不夠全面,必須再使用add trandata開啟表級的補全日誌以獲得必要的信息。

    (5)源端OGG 抽取進程(extract)配置

    Extract進程運行在資料庫源端,負責從源端數據表或日誌中捕獲數據。Extract進程利用其內在的checkpoint機制,周期性地檢查並記錄其讀寫的位置,通常是寫入到本地的trail文件。這種機制是為了保證如果Extract進程終止或者操作系統宕機,我們重啟Extract進程後,GoldenGate能夠恢復到以前的狀態,從上一個斷點處繼續往下運行,而不會有任何數據損失。

    (6)源端OGG 傳輸進程(pump)配置

    pump進程運行在資料庫源端,其作用非常簡單。如果源端的Extract抽取進程使用了本地trail文件,那麼pump進程就會把trail文件以數據塊的形式通過TCP/IP協議發送到目標端,Pump進程本質上是Extract進程的一種特殊形式,如果不使用trail文件,那麼Extract進程在抽取完數據後,直接投遞到目標端。

    補充:pump進程啟動時需要與目標端的mgr進程進行連接,所以需要優先將目標端的mgr提前配置好,否則會報錯連接被拒絕,無法傳輸抽取的日誌文件到目標端對應目錄下

    (7)源端OGG 異構mapping文件(defgen)生成

    該文件記錄了源庫需要復制的表的表結構定義信息,在源庫生成該文件後需要拷貝到目標庫的dirdef目錄,當目標庫的replica進程將傳輸過來的數據apply到目標庫時需要讀寫該文件,同構的資料庫不需要進行該操作。

    2.目標端OGG配置

    (1)目標端MySQL資料庫配置

  • 確認MySQL端表結構已經存在

  • MySQL資料庫OGG用戶創建

  • mysql> create user 'ogg'@'%' identified by 'ogg';

  • mysql> grant all on *.* to 'ogg'@'%';

  • #### 提前創建好ogg存放checkpoint表的資料庫

  • mysql> create database ogg;

  • (2)目標端OGG 管理進程(MGR)配置

    目標端的MGR進程和源端配置一樣,可直接將源端配置方式在目標端重復執行一次即可,該部分不在贅述

    (3)目標端OGG 檢查點日誌表(checkpoint)配置

    checkpoint表用來保障一個事務執行完成後,在MySQL資料庫從有一張表記錄當前的日誌回放點,與MySQL復制記錄binlog的GTID或position點類似。

    #### 切換至ogg軟體目錄並執行ggsci進入命令行終端

  • shell> cd $OGG_HOME

  • shell> ggsci

  • ggsci> edit param ./GLOBALS

  • checkpointtable ogg.ggs_checkpoint

  • ggsci> dblogin sourcedb [email protected]:3306 userid ogg

  • ggsci> add checkpointtable ogg.ggs_checkpoint

  • (4)目標端OGG 回放線程(replicat)配置

    Replicat進程運行在目標端,是數據投遞的最後一站,負責讀取目標端Trail文件中的內容,並將解析其解析為DML語句,然後應用到目標資料庫中。

  • #### 切換至ogg軟體目錄並執行ggsci進入命令行終端

  • shell> cd $OGG_HOME

  • shell> ggsci

  • #### 添加一個回放線程並與源端pump進程傳輸過來的trail文件關聯,並使用checkpoint表確保數據不丟失

  • ggsci> add replicat r_cms,exttrail /opt/ogg/dirdat/ms,checkpointtable ogg.ggs_checkpoint

  • #### 增加/編輯回放進程配置文件

  • ggsci> edit params r_cms

  • replicat r_cms

  • targetdb [email protected]:3306,userid ogg,password ogg

  • sourcedefs /opt/ogg/dirdef/cms.def

  • discardfile /opt/ogg/dirrpt/r_cms.dsc,append,megabytes 1024

  • HANDLECOLLISIONS

  • MAP cms.*,target cms.*;

  • 注意:replicat進程只需配置完成,無需啟動,待全量抽取完成後再啟動。

    至此源端環境配置完成

    待全量數據抽取完畢後啟動目標端回放進程即可完成數據准實時同步。

    3.全量同步配置

    全量數據同步為一次性操作,當OGG軟體部署完成及增量抽取進程配置並啟動後,可配置1個特殊的extract進程從表中抽取數據,將抽取的數據保存到目標端生成文件,目標端同時啟動一個單次運行的replicat回放進程將數據解析並回放至目標資料庫中。

    (1)源端OGG 全量抽取進程(extract)配置

  • #### 切換至ogg軟體目錄並執行ggsci進入命令行終端

  • shell> cd $OGG_HOME

  • shell> ggsci

  • #### 增加/編輯全量抽取進程配置文件

  • #### 其中RMTFILE指定抽取的數據直接傳送到遠端對應目錄下

  • #### 注意:RMTFILE參數指定的文件只支持2位字元,如果超過replicat則無法識別

  • ggsci> edit params ei_cms

  • SOURCEISTABLE

  • SETENV (NLS_LANG = "AMERICAN_AMERICA.AL32UTF8")

  • SETENV (ORACLE_SID=cms)

  • SETENV (ORACLE_HOME=/data/oracle/11.2/db_1)

  • USERID ogg@appdb,PASSWORD ogg

  • RMTHOST 17X.1X.84.121,MGRPORT 7809

  • RMTFILE /opt/ogg/dirdat/ms,maxfiles 100,megabytes 1024,purge

  • TABLE cms.*;

  • #### 啟動並查看抽取進程正常

  • shell> nohup ./extract paramfile ./dirprm/ei_cms.prm reportfile ./dirrpt/ei_cms.rpt &

  • ## 查看日誌是否正常進行全量抽取

  • shell> tail -f ./dirrpt/ei_cms.rpt

  • (2)目標端OGG 全量回放進程(replicat)配置

  • #### 切換至ogg軟體目錄並執行ggsci進入命令行終端

  • shell> cd $OGG_HOME

  • shell> ggsci

  • ggsci> edit params ri_cms

  • SPECIALRUN

  • END RUNTIME

  • TARGETDB [email protected]:3306,USERID ogg,PASSWORD ogg

  • EXTFILE /opt/ogg/dirdat/ms

  • DISCARDFILE ./dirrpt/ri_cms.dsc,purge

  • MAP cms.*,TARGET cms.*;

  • #### 啟動並查看回放進程正常

  • shell> nohup ./replicat paramfile ./dirprm/ri_cms.prm reportfile ./dirrpt/ri_cms.rpt &

  • #### 查看日誌是否正常進行全量回放

  • shell> tail -f ./dirrpt/ri_cms.rpt

  • 三、數據校驗

    數據校驗是數據遷移過程中必不可少的環節,本章節提供給幾個數據校驗的思路共大家參數,校驗方式可以由以下幾個角度去實現:

    1.通過OGG日誌查看全量、增量過程中discards記錄是否為0來判斷是否丟失數據;

    2.通過對源端、目標端的表執行count判斷數據量是否一致;

    3.編寫類似於pt-table-checksum校驗原理的程序,實現行級別一致性校驗,這種方式優缺點特別明顯,優點是能夠完全准確對數據內容進行校驗,缺點是需要遍歷每一行數據,校驗成本較高;

    4.相對折中的數據校驗方式是通過業務角度,提前編寫好數十個返回結果較快的SQL,從業務角度抽樣校驗。

    四、遷移問題處理

    本章節將講述遷移過程中碰到的一些問題及相應的解決方式。

    (一)MySQL限制

    在Oracle到MySQL的表結構遷移過程中主要碰到以下兩個限制:

    1. Oracle端的表結構因為最初設計不嚴謹,存在大量的列使用varchar(4000)數據類型,導致遷移到MySQL後超出行限制,表結構無法創建。由於MySQL本身數據結構的限制,一個16K的數據頁最少要存儲兩行數據,因此單行數據不能超過65,535 bytes,因此針對這種情況有兩種解決方式:

  • 根據實際存儲數據的長度,對超長的varchar列進行收縮;

  • 對於無法收縮的列轉換數據類型為text,但這在使用過程中可能導致一些性能問題;

  • 2. 與第一點類似,在Innodb存儲引擎中,索引前綴長度限制是767 bytes,若使用DYNAMIC、COMPRESSED行格式且開啟innodblargeprefix的場景下,這個限制是3072 bytes,即使用utf8mb4字元集時,最多隻能對varchar(768)的列創建索引;

    3. 使用ogg全量初始化同步時,若存在外鍵約束,批量導入時由於各表的插入順序不唯一,可能子表先插入數據而主表還未插入,導致報錯子表依賴的記錄不存在,因此建議數據遷移階段禁用主外鍵約束,待遷移結束後再打開。

  • mysql>set global foreign_key_checks=off;

  • (二)全量與增量銜接

    HANDLECOLLISIONS參數是實現OGG全量數據與增量數據銜接的關鍵,其實現原理是在全量抽取前先開啟增量抽取進程,抓去全量應用期間產生的redo log,當全量應用完成後,開啟增量回放進程,應用全量期間的增量數據。使用該參數後增量回放DML語句時主要有以下場景及處理邏輯:

  • 目標端不存在delete語句的記錄,忽略該問題並不記錄到discardfile

  • 目標端丟失update記錄

    - 更新的是主鍵值,update轉換成insert

    - 更新的鍵值是非主鍵,忽略該問題並不記錄到discardfile

  • 目標端重復insert已存在的主鍵值,這將被replicat進程轉換為UPDATE現有主鍵值的行

  • (三)OGG版本選擇

    在OGG版本選擇上我們也根據用戶的場景多次更換了OGG版本,最初因為客戶的Oracle 資料庫版本為11.2.0.4,因此我們在選擇OGG版本時優先選擇使用了11版本,但是使用過程中發現,每次數據抽取生成的trail文件達到2G左右時,OGG報錯連接中斷,查看RMTFILE參數詳細說明了解到trail文件默認限制為2G,後來我們替換OGG版本為12.3,使用MAXFILES參數控制生成多個指定大小的trail文件,回放時Replicat進程也能自動輪轉讀取Trail文件,最終解決該問題。但是如果不幸Oracle環境使用了Linux 5版本的系統,那麼你的OGG需要再降一個小版本,最高只能使用OGG 12.2。

    (四)無主鍵表處理

    在遷移過程中還碰到一個比較難搞的問題就是當前Oracle端存在大量表沒有主鍵。在MySQL中的表沒有主鍵這幾乎是不被允許的,因為很容易導致性能問題和主從延遲。同時在OGG遷移過程中表沒有主鍵也會產生一些隱患,比如對於沒有主鍵的表,OGG默認是將這個一行數據中所有的列拼湊起來作為唯一鍵,但實際還是可能存在重復數據導致數據同步異常,Oracle官方對此也提供了一個解決方案,通過對無主鍵表添加GUID列來作為行唯一標示,具體操作方式可以搜索MOS文檔ID 1271578.1進行查看。

    (五)OGG安全規則

  • 報錯信息

  • 2019-03-08 06:15:22 ERROR OGG-01201 Error reported by MGR : Access denied.

  • 錯誤信息含義源端報錯表示為該抽取進程需要和目標端的mgr進程通訊,但是被拒絕,具體操作為:源端的extract進程需要與目標端mgr進行溝通,遠程將目標的replicat進行啟動,由於安全性現在而被拒絕連接。

  • 報錯原因

  • 在Oracle OGG 11版本後,增加了新特性安全性要求,如果需要遠程啟動目標端的replicat進程,需要在mgr節點增加訪問控制參數允許遠程調用

  • 解決辦法

  • 在源端和目標端的mgr節點上分別增加訪問控制規則並重啟

  • ## 表示該mgr節點允許(ALLOW)10.186網段(IPADDR)的所有類型程序(PROG *)進行連接訪問ACCESSRULE, PROG *, IPADDR 10.186.*.*, ALLOW

  • (六)數據抽取方式

  • 報錯信息

  • 2019-03-15 14:49:04 ERROR OGG-01192 Trying to use RMTTASK on data types which may be written as LOB chunks (Table: 'UNIONPAYCMS.CMS_OT_CONTENT_RTF').

  • 報錯原因

  • 根據官方文檔說明,當前直接通過Oracle資料庫抽取數據寫到MySQL這種initial-load方式,不支持LOBs數據類型,而表 UNIONPAYCMS.CMSOTCONTENT_RTF 則包含了CLOB欄位,無法進行傳輸,並且該方式不支持超過4k的欄位數據類型

  • 解決方法

  • 將抽取進程中的RMTTASK改為RMTFILE參數
    官方建議將數據先抽取成文件,再基於文件數據解析進行初始化導入

② oracle數據遷移怎麼做

簡單到不能再簡單。
1先弄個DBLINK
2.通關select into from 直接創建並寫入表到要遷移的資料庫中

③ oracle資料庫遷移到另一個oracle資料庫

這個就簡單了,備份庫1,還原到庫2即可;或者將庫1的表結構和insert語句分別導出,放到庫2執行一次就行了,或者藉助三方工具,比如kettle

④ oracle資料庫遷移

如果:原庫的system表空間和undo表空間的數據文件、及歸檔日誌 都在的話,是沒有多大問題的。 這個恢復過程,就是恢復過程有點復雜,就類似:資料庫復制過程 (與data guard 不是一回事的)。一般出現這樣的問題都會找專門的數據恢復公司或資料庫維護工作了(因為這個恢復過程,本來就不簡單,不是直接把以前的離線文件,直接拷過去,就行了的)。下面給一個簡易的方法:你試試

方法如下:

1、在新伺服器上,安裝安裝資料庫軟體,不建立資料庫!(你要使用以前的數據文件等,所以不能建立庫)。

2、在操作系統中,建立相應的操作系統目錄。

(若你仍使用原庫中參數文件(spfile),那麼你可以按照參數文件的標注,建立相應的目錄。你要重新建立新的文件存放目錄的話,你還得修改參數文件呢,如果你對spfile文件修改不熟悉,就採用原來的spfile,根據參數文件建立相應的目錄)你根據你的參數文件進行建立,下面只是為了說明進行舉例。
一般建立(假設實例名為:standby1):
c:\> mkdir F:\oracle\proct\10.2.0\oradata\standby1 (用於存放數據文件、控制文件等)
c:\> mkdir F:\oracle\proct\10.2.0\admin\standby1\bmp (跟蹤文件)
c:\> mkdir F:\oracle\proct\10.2.0\admin\standby1\ump (用戶文件)
c:\> mkdir F:\oracle\proct\10.2.0\admin\standby1\cmp
c:\> mkdir F:\oracle\proct\10.2.0\admin\standby1\amp

3、建立常式服務

c:\> oradim -new -sid standby1 -intpwd cs -startmode a

4、將你的參數文件(spfile) 復制到目錄: x:\oracle\proct\10.2.0\db_1\database 下

提示:在新伺服器上存放數據文件、控制文件、跟蹤文件等的位置與源庫的位置相同的話,就可以直接復制到database目錄下,不用修改參數文件的。不同的話,你得修改參數文件的。

5、將你原庫的:數據文件、歸檔日誌 復制到新伺服器中.(具體位置,你參考Spfile文件中,所標注的,不用弄錯了,不然會報錯的)

6、 配置 standby1 的監聽和網路服務

提示:監聽配置好後,需要重啟!對了:你可以將原來的:x:\oracle\proct\10.2.0\db_1\NETWORK\ADMIN 中的:listener.ora 和 tnsnames.ora 直接拷貝到新服務中的:x:\oracle\proct\10.2.0\db_1\NETWORK\ADMIN 目錄下。替換的話:你需要修改 listener.ora 和 tnsnames.ora 這兩個文件中的 IP 地址或主機名稱,因為新伺服器,有不同的名稱和不同的IP。如果IP和主機名稱和原來一樣,就可以不用修改。
記得:重新啟動監聽啊 方法:
c:\>lsnrctl stop
c:\>lnsrctl start

7、啟動常式,並建立控制文件 (控制文件必須重新建立,原來的控制文件記載的當前日誌序列號、檢查點信息、日誌歷史信息等,與新庫的都不一樣的,原來的用不了)

c:\>sqlplussys/oracle@standby1 as sysdba;
sql> startup nomount spfile='x:\oracle\proct\10.2.0\db_1\database\spfileSTANDBY1'
sql> CREATE CONTROLFILE REUSE DATABASE "standby1" NORESETLOGS FORCE LOGGING ARCHIVELOG
MAXLOGFILES 16
MAXLOGMEMBERS 3
MAXDATAFILES 100
MAXINSTANCES 8
MAXLOGHISTORY 292
LOGFILE
GROUP 1 'F:\ORACLE\PRODUCT\10.2.0\ORADATA\standby1\REDO01.LOG' SIZE 50M,
GROUP 2 'F:\ORACLE\PRODUCT\10.2.0\ORADATA\standby1\REDO02.LOG' SIZE 50M,
GROUP 3 'F:\ORACLE\PRODUCT\10.2.0\ORADATA\standby1\REDO03.LOG' SIZE 50M
DATAFILE
'F:\ORACLE\PRODUCT\10.2.0\ORADATA\standby1\SYSTEM01.DBF',
'F:\ORACLE\PRODUCT\10.2.0\ORADATA\standby1\UNDOTBS01.DBF',
'F:\ORACLE\PRODUCT\10.2.0\ORADATA\standby1\SYSAUX01.DBF',
'F:\ORACLE\PRODUCT\10.2.0\ORADATA\standby1\USERS01.DBF'
CHARACTER SET ZHS16GBK;

提醒:上面的SQL語句中,相應參數文件的位置,你需要根據實際情況進行修改,實例名稱你也需要根據實際情況進行修改。

8、恢復原庫

假如你將原庫的歸檔日誌存放在新庫:f:\archive 中
sql> set logsource 'f:\archive'
sql> recover database using backup controlfile until cancel

根據提示輸入:canel

9、打開資料庫:

sql> alter database open resetlogs;

10、新增臨時文件(不然排序操作時,會報錯)

sql > alter tablespace temp add tempfile 'f:\standby1\temp.dbf' size 5M reuse;

其他:如果你對原庫進行了全庫備份,不管是通過RMAN還是用戶管理等,那麼恢復的方法可以不採用此方法的。有全庫的備份及歸檔日誌, 恢復起來要簡單些。

;

⑤ oracle資料庫怎麼從一個磁碟遷移到另一個磁碟

簡單步驟:
1、正常關閉資料庫;
2、遷移所有數據文件到新的盤;
3、啟動實例到mount階段,修改數據文件的路徑;
4、啟動實例到open階段,正常使用資料庫。
5、另外,如果想要遷移日誌文件,比較好辦,在新盤新目錄下創建新的redo,刪除原來盤上的redo。
6、如果想要遷移控制文件,那麼:
6.1、正常關閉資料庫;
6.2、遷移控制文件到新盤新目錄;
6.3、啟動實例到nomount階段;
6.4、修改實例參數control_files指向新的目錄;
6.4、alter database mount;
6.5、alter databse open;

如果要遷移資料庫軟體,那就另說了,可以先安裝一套DB軟體到新盤新目錄,然後修改環境變數指向新的環境,重要的變數包括ORACLE_BASE、ORACLE_HOME、PATH等。

⑥ oracle資料庫項目數據遷移

1.create
directory
exp_dp
as
'/opt/yy'
yy是自己創建的文件夾
2.grant
read,wirte
on
exp_dp
to
icd(用戶名)
3.expdp
icd/icd@資料庫連接字元
schemas=icd
mpfile=expdp1.dmp
logfile=export.log
directory=exp_dp
上面是導出操作,前兩個在資料庫命令窗口執行,最後一個在操作系統下運行

⑦ 如何將正在運行的 Oracle 資料庫遷移到另一個系統

在本文提供的示例中,源伺服器配置有控制域和一個託管 Oracle 資料庫的來賓域(名為 ldg1)。控制域名為
primary,也是一個 I/O 域。此外,控制域還用作服務域,為來賓域提供虛擬設備服務(虛擬磁碟和虛擬網路)。
作為服務域,控制域提供以下虛擬設備服務:
一個虛擬磁碟服務 (primary-vds0),將物理磁碟作為虛擬磁碟導出到來賓域。
一個虛擬控制台集中器服務 (primary-vcc0),提供對來賓域虛擬控制台的訪問。此服務使用埠范圍 5000–5100
來訪問虛擬控制台。
一個虛擬交換機服務 (primary-vsw0),與主網路介面 (nxge0)
關聯。
軟體安裝和配置
按照以下步驟配置您的環境以便進行實時遷移。
安裝 Oracle Solaris 操作系統
新的 SPARC 伺服器上預先安裝了 Oracle Solaris。對於這些系統,應確保安裝了相應的 Oracle Solaris
版本,並驗證打了所需的補丁。
要在 SPARC 系統上重新安裝 Oracle
Solaris,請參見 Oracle
Solaris 10 文檔或 Oracle
Solaris 11 文檔。在本文的示例中,操作系統安裝在伺服器的第一個內部磁碟上。
安裝 Oracle Solaris 之後,可以配置並啟用系統以使用 Oracle VM Server for SPARC 2.1 軟體。
安裝 Oracle VM
Server for SPARC 軟體
新的 SPARC 伺服器上也預先安裝了 Oracle VM Server for SPARC 軟體。對於這些系統,應確保安裝了相應的 Oracle VM
Server for SPARC 版本,並驗證打了所有需要的補丁。
如果在伺服器上重新安裝了 Oracle
Solaris,您可能必須重新安裝 Oracle VM Server for SPARC 軟體。參見 Oracle
VM 下載頁面。
以下示例顯示了在每台物理伺服器上執行的操作。每台伺服器已經安裝了 Oracle Solaris 和所需的補丁。
應確保系統固件與您計劃安裝的 Oracle VM
Server for SPARC 版本匹配。參見文檔的 Oracle VM
Server for SPARC 2.1 版本說明 中的「所需軟體和補丁」以及 Oracle VM Server for SPARC 2.1
管理指南 中的「升級系統固件」。
從 Oracle
VM 下載頁面下載 Oracle VM Server for SPARC 2.1 軟體。
壓縮存檔文件。
安裝 SUNWldm.v
程序包。參見 Oracle VM Server for SPARC 2.1 管理指南 中的「在新系統上安裝 Oracle VM Server
for SPARC 軟體」。
primary# pkgadd -d OVM_Server_SPARC-2_1/Proct SUNWldm.v
配置存儲陣列
Sun Storage 2540-M2 存儲陣列連接到控制域,控制域將兩個 LUN(LUN 0 和 LUN 1)作為虛擬磁碟導出到來賓域。
來賓域使用第一個 LUN (LUN 0) 作為操作系統的系統磁碟,使用第二個 LUN (LUN 1) 作為存儲 Oracle 資料庫數據文件的磁碟。
配置控制域
安裝 Oracle VM Server for SPARC 軟體之後,重新配置當前系統使其成為控制域。在每台物理伺服器上執行以下操作:
創建一個虛擬控制台集中器 (vcc)
服務以供虛擬網路終端伺服器後台程序 (vntsd) 使用,並作為所有邏輯域控制台的集中器。
primary# ldm add-vcc port-range=5000-5100 primary-vcc0 primary
創建虛擬磁碟伺服器
(vds)。
primary# ldm add-vds primary-vds0 primary
創建一個虛擬交換機服務 (vsw)
以便在邏輯域中的虛擬網路 (vnet) 設備之間實現聯網。
primary# ldm add-vsw net-dev=igb0 primary-vsw0 primary
使用 ldm
list-services 命令驗證已經創建了這些服務,如清單 1 所示。
清單 1. 驗證服務
primary# ldm list-services primary
VDS
NAME VOLUME OPTIONS DEVICE
primary-vds0
VCC
NAME PORT-RANGE
primary-vcc0 5000-5100
VSW
NAME MAC NET-DEV DEVICE MODE
primary-vsw0 02:04:4f:fb:9f:0d nxge0 switch@0 prog,promisc
VCC
NAME LDOM PORT-RANGE
primary-vcc0 primary 5000-5100
VSW
NAME LDOM MAC NET-DEV ID DEVICE LINKPROP DEFAULT-VLAN-ID PVID VID ...
primary-vsw0 primary 00:14:4f:f8:28:c2 igb0 0 switch@0 1 1 1500 on
VDS
NAME LDOM VOLUME OPTIONS MPGROUP DEVICE
primary-vds0 primary
Oracle VM Server for SPARC 使用 SSL
對遷移流量進行加密,以保護敏感數據免受利用,並消除了對額外硬體和專用網路的需求;
當源計算機和目標計算機上的主域具有分配的加密單元時,遷移操作的速度會增加。速度增加的原因在於可以將 SSL 操作分流到加密單元。
註:SPARC T4 CPU
具有內置的加密指令,因此您不需要為 CPU 分配這些指令。
確定控制域中是否有加密設備。
primary# ldm list -o crypto primary
為控制域分配加密資源。
primary# ldm set-crypto 1 primary
為控制域分配 CPU 和內存。
您可以通過向源計算機上的主域中添加更多 CPU 來減少整體遷移時間。最好為每個主域至少分配 8 個 CPU。例如,以下命令為控制域分配 8 個 CPU 和
4 GB 內存。
primary# ldm start-reconf primary
primary# ldm set-vcpu 8 primary
primary# ldm set-memory 4G primary
重新啟動系統。
primary# init 6
重新啟動系統之後,啟用 Oracle VM Server for SPARC 並為系統配置一個域:控制域
primary。在控制域中,您可以創建和配置其他域。
確保啟用 Logical Domains Manager
(ldmd) 和虛擬網路終端伺服器 (vntsd) 服務。
primary# svcadm enable ldmd
primary# svcadm enable vntsd
向服務處理器 (SP)
添加邏輯域計算機配置。例如,以下命令添加名為 initial 的配置。
primary# ldm add-config initial
驗證該配置可以使用。
primary# ldm list-config
factory-default
initial [current]
配置來賓域
配置控制域之後,創建來賓域以用作 Oracle 資料庫節點。在作為源計算機的物理伺服器上,僅創建一個來賓域。另一台物理伺服器最終將成為目標計算機。
最初使用以下資源創建來賓域 ldg1:
8 GB 內存。
24 個 CPU。
一個虛擬網路介面 (vnet0),它連接到虛擬交換機 primary-vsw0。
一個虛擬磁碟,它在來賓域中顯示為 c0d0 並且是存儲陣列中的一個 LUN。域 ldg1
使用存儲陣列的 LUN 0 (c2t6d0)。
另一個虛擬磁碟,它在來賓域中顯示為 c0d1 並且是存儲陣列中的一個 LUN。域 ldg1
使用存儲陣列的 LUN 1 (c2t6d1)。此虛擬磁碟用於存儲 Oracle 資料庫文件。
執行以下步驟創建每個來賓域:
在源計算機上,從控制域創建
ldg1 來賓域。
註:如果您的伺服器不是基於
SPARC T4 的系統,則僅執行 ldm set-crypto 命令。
primary# ldm create ldg1
primary# ldm set-vcpu 24 ldg1
primary# ldm set-memory 8G ldg1
primary# ldm set-crypto 3 ldg1
primary# ldm add-vnet vnet0 primary-vsw0 ldg1
primary# ldm add-vdsdev /dev/dsk/c2t6d0s2 vol1@primary-vds0
primary# ldm add-vdisk vol1 vol1@primary-vds0 ldg1
primary# ldm add-vdsdev /dev/dsk/c2t6d1s2 oradata@primary-vds0
primary# ldm add-vdisk oradata oradata@primary-vds0 ldg1
創建域之後,在源計算機上使用以下命令從控制域綁定並啟動來賓域。
primary# ldm bind ldg1
primary# ldm start ldg1
確定域的控制台埠。
primary# ldm ls ldg1
NAME STATE FLAGS CONS VCPU MEMORY UTIL UPTIME
ldg1 active -n---- 5000 24 8G 0.0% 1h 1m
使用 telnet 命令訪問
ldg1 域的控制台。
primary# telnet localhost 5000
啟動來賓域之後,確保在來賓域中安裝了相應的 Oracle Solaris 操作系統和補丁。您可以通過網路、從 DVD 或使用 DVD ISO
映像來執行安裝。參見 Oracle VM Server for SPARC 2.1 管理指南。
註:LUN
通常在不同伺服器上以不同名稱顯示。控制域中的 LUN 名稱不需要相同。但是,兩個系統上的控制域必須使用相同的卷名(vol1 和
oradata)對相同的 LUN(LUN 0 和 LUN 1)進行虛擬化。
清單 2 的示例顯示了如何為名為 ldg1 的域配置 8 個 CPU、24 GB 內存以及 Sun Storage
2540-M2 存儲陣列中的兩個 LUN。
清單 2. 域配置示例 primary# ldm ls -l ldg1
NAME STATE FLAGS CONS VCPU MEMORY UTIL UPTIME
ldg1 active -n---- 5000 24 8G 0.0% 1h 1m
SOFTSTATE
Solaris running
MAC
00:14:4f:fb:96:89
HOSTID
0x84fb9689
CONTROL
failure-policy=ignore
DEPENDENCY
master=
VCPU
VID PID UTIL STRAND
0 16 0.2% 100%
1 17 0.0% 100%
2 18 0.5% 100%
3 19 0.0% 100%
4 20 0.0% 100%
5 21 0.0% 100%
6 22 0.1% 100%
7 23 0.0% 100%
8 24 0.1% 100%
9 25 0.0% 100%
10 26 0.0% 100%
11 27 0.0% 100%
12 28 0.0% 100%
13 29 0.0% 100%
14 30 0.0% 100%
15 31 0.0% 100%
16 32 0.0% 100%
17 33 0.0% 100%
18 34 0.0% 100%
19 35 0.0% 100%
20 36 0.0% 100%
21 37 0.0% 100%
22 38 0.0% 100%
23 39 0.1% 100%
MEMORY
RA PA SIZE
0x8000000 0x408000000 8G
VARIABLES
boot-device=vdisk1
keyboard-layout=US-English
NETWORK
NAME SERVICE ID DEVICE MAC MODE PVID VID MTU LINKPROP
vnet1 primary-vsw0@primary 0 network@0 00:14:4f:f9:c0:62 1 1500
DISK
NAME VOLUME TOUT ID DEVICE SERVER MPGROUP
vdisk1 vol1@primary-vds0 0 disk@0 primary
oradata oradata@primary-vds0 1 disk@1 primary
VCONS
NAME SERVICE PORT
ldg1 primary-vcc0@primary 5000
清單 3 的示例顯示了控制域的配置。使用 ldm list-services
命令驗證已經創建了這些服務。
清單 3. 控制域配置示例 primary# ldm ls-services primary
VCC
NAME LDOM PORT-RANGE
primary-vcc0 primary 5000-5100
VSW
NAME LDOM MAC NET-DEV ID DEVICE LINKPROP DEFAULT-VLAN-ID ...
primary-vsw0 primary 00:14:4f:f9:32:b0 nxgeg0 0 switch@0 1 1 ...
VDS
NAME LDOM VOLUME OPTIONS MPGROUP DEVICE
primary-vds0 primary vol1 /dev/dsk/c2t6d0s2
oradata /dev/dsk/c2t6d1s2
在來賓域中安裝 Oracle Solaris
確保在來賓域中安裝了相應的 Oracle Solaris 版本,並驗證打了所需的補丁。
在來賓域中安裝 Oracle Solaris 之後,可以配置並啟用系統使其使用 Oracle 資料庫。
安裝 Oracle Database
Oracle Database 軟體的安裝類似於標准 Oracle Database 安裝。首先安裝 Oracle
Database,然後應用最新補丁集。使用第二個 LUN 創建 UFS 或 ZFS 文件系統用於存儲 Oracle 資料庫數據文件。
有關針對 Oracle 資料庫使用 ZFS
的更多信息,請參見針對
Oracle 資料庫配置 Oracle Solaris ZFS。
准備目標伺服器
按如下方式准備目標伺服器。
執行以下各節中所述的步驟來准備目標計算機:
安裝 Oracle VM
Server for SPARC 軟體
配置控制域
確保在目標伺服器上提供了供待遷移域使用的所有虛擬 I/O 服務。
確保目標伺服器有權訪問同一存儲中的 LUN 0 和 LUN
1。
要將第一個 LUN (LUN 0) 和第二個 LUN (LUN 1) 添加到目標計算機,從目標伺服器的控制域執行以下命令:
# ldm add-vdsdev /dev/dsk/c2t6d0s2 vol1@primary-vds0
# ldm add-vdsdev /dev/dsk/c2t6d1s2 oradata@primary-vds0
註:LUN
通常在不同伺服器上以不同名稱顯示。控制域中的 LUN 名稱不需要相同。但是,兩個系統上的控制域必須使用相同的卷名(vol1 和
oradata)對相同的 LUN(LUN 0 和 LUN 1)進行虛擬化。
確保待遷移域中的每個虛擬網路設備在目標計算機上都有一個對應的虛擬網路交換機:
# ldm add-vsw net-dev=nxge0 primary-vsw0 primary

⑧ oracle數據遷移有幾種方法

數據量小的話一般直接用數據泵或者exp/imp就ok了,也可以用rman備份,這些都是比較常規的,偏門點的可以用傳輸表空間,dblink直接復制等,反正看情況。

⑨ oracle資料庫遷移redo log的方式有哪些

1.最簡單的是,先刪除1個日誌,然後在新的路徑下創建一個日誌,直到所有的日誌都重新創建完成即可完成遷移。刪除前先備份。
2.再有一個方法,先關閉資料庫,把日誌拷貝新的位置,然後修改初始化參數,再啟動資料庫。(推薦這種方法,因為能保留重做信息)
第二種方法的實施步驟(僅供參考)
1.
關閉資料庫,shutdown
immediate;
2.
把日誌拷貝到新的位置
3.
啟動資料庫到mount狀態,startup
mount;
4.
修改初始化參數,Alter
database
rename
file
『c:\test\redo01.log』
to
『d:\test\redo01.log』;
5.
啟動資料庫,alter
database
open;

熱點內容
手機緩存的視頻怎麼看 發布:2024-04-27 00:11:05 瀏覽:57
shell腳本平方計算公式 發布:2024-04-26 23:29:26 瀏覽:187
比較實惠的雲伺服器 發布:2024-04-26 23:24:57 瀏覽:974
怎麼增加電腦緩存 發布:2024-04-26 23:23:46 瀏覽:451
android調試gdb 發布:2024-04-26 23:22:27 瀏覽:99
androidsocket服務 發布:2024-04-26 22:49:53 瀏覽:980
python編譯時加密 發布:2024-04-26 22:49:20 瀏覽:246
買車看哪些配置參數 發布:2024-04-26 22:45:50 瀏覽:835
linux顯示圖像 發布:2024-04-26 22:45:41 瀏覽:493
flash腳本格式 發布:2024-04-26 22:43:41 瀏覽:452