1. 程式人生 > >window2012 oracle 遷移 centos6 oracle

window2012 oracle 遷移 centos6 oracle

bit nec 語句 rdquo centos6 查點 emp over ans

本文目的:

  oracle是大型數據庫旺旺年限和版本及環境都比較陳舊,性能影響了業務正常,近日公司需求從Windows2003 32bit的Oracle服務器上將數據遷移到Windows2012/Linux Redhat 64bit Oracle,就涉及一個轉碼

Oracle 架構:

  Oracle Server = 實例 + 數據庫 (Instance和Database是相互獨立的)

技術分享

運行原理:

  舉個例子來看看Oracle RDBMS是怎麽運作的
技術分享

技術分享

    1. User訪問Oracle Server之前提交一個請求(包含了db_name、instance_name、username、password等信息),Oracle Server接收到請求並通過Password File的驗證後,分配SGA內存池,啟動後臺進程同時創建並啟動實例。
    2. 在啟動實例之後User Process與Server Process建立Connect。
    3. 再通過Server process和Oracle Instance完成建立Sesscion。
    4. 用戶執行SQL語句,由server process接收到並直接與Oracle交互。
    5. SQL語句通過Server Process到達Oracle Instance,再將SQL載入數據庫緩沖區。
    6. Server Process通知Oracle Database將與SQL語句相關的數據塊副本加載到緩沖區中。
    7. 在數據庫緩存區執行SQL語句,並產生”臟緩沖區”。
    8. 由CKPT檢查點進程檢查到”臟緩沖區”,並調用DBWn數據庫寫進程,但在DBWn執行之前,應該由LGWR先將數據文件的原始狀態、數據庫的改變等信息記錄到Redo Log Files。
    9. 將更新的內容寫入到磁盤中的數據文件。
    10. 返回結果給用戶

具體也不贅述了;詳細可參考http://blog.csdn.net/Jmilk/article/details/51583799


首先配置好遷移目標Linux服務器參數

確認:

  selinux、iptables、sysctl、limits.conf 等

SPOOL c:test.sql             //c:test.sql  這是文件保存的位置,從SPOOL開始所有的操作記錄到SPOOL OFF結束
select * from tablename;
SPOOL OFF

1.建立測試表(Windows)

create table pp(num int);
begin
         for j in 1 .. 100 loop
             insert into pp  values ( j );
         end loop;
         commit;
 end;
 /

2.創建rman用戶(Windows)

sql sysdba

create tablespace rman datafile e:\app\rman.dat size 100m autoextend on next 10m; 
create user rman identified by rman default tablespace rman; 
grant recovery_catalog_owner to rman; 
grant connect,resource to rman; 
rman 

connect catalog rman/rman 
create catalog;
rman catalog rman/rman@orcl target sys/密碼@網絡連接服務名; 
register database; 

3.進入只讀

run 
{
select PLATFORM_NAME from v$database;
select PLATFORM_NAME,ENDIAN_FORMAT from v$transportable_platform order by 1,2;

shutdown immediate
startup mount
alter database open read only;

set serveroutput on

declare
v_check boolean;
begin
v_check:=dbms_tdb.check_db(Linux x86 64-bit,dbms_tdb.skip_none);
end;
/

declare
v_ext boolean;
begin
v_ext:=dbms_tdb.check_external;
end;
/
}

4.進入RMAN備份轉碼(Windows)

rman target /
convert database new database orcl transport script e:\bak\trans.sql to platform Linux x86 64-bit db_file_name_convert e:\app\Administrator\oradata\orcl e:\bak;

5.將備份導出到

e:\bak 下的所有數據以及INIT_00SDUAAM_1_0.ORA文件上傳至Linux服務器中分別的位置/home/oracle/app/oradata/orcl和INIT_00SDUAAM_1_0.ORA對應的目錄下
修改INIT_00SDUAAM_1_0.ORA文件中的路徑和內存大小

6.導入數據(Linux)

sqlplus / as sysdba
STARTUP NOMOUNT PFILE=INIT_00SDUAAM_1_0.ORA
create spfile from pfile=INIT_00SDUAAM_1_0.ORA;
startup force nomount


CREATE CONTROLFILE REUSE SET DATABASE "ORCL" RESETLOGS  NOARCHIVELOG
      MAXLOGFILES 16
      MAXLOGMEMBERS 3
      MAXDATAFILES 100
      MAXINSTANCES 8
      MAXLOGHISTORY 292
LOGFILE
    GROUP 1 /home/oracle/app/oradata/orcl/redolog01.log  SIZE 50M,
    GROUP 2 /home/oracle/app/oradata/orcl/redolog02.log  SIZE 50M,
    GROUP 3 /home/oracle/app/oradata/orcl/redolog03.log  SIZE 50M
DATAFILE
    /home/oracle/app/oradata/orcl/SYSTEM01.DBF,
    /home/oracle/app/oradata/orcl/UNDOTBS01.DBF,
    /home/oracle/app/oradata/orcl/SYSAUX01.DBF,
    /home/oracle/app/oradata/orcl/USERS01.DBF,
    /home/oracle/app/oradata/orcl/EXAMPLE01.DBF
CHARACTER SET ZHS16GBK;



ALTER DATABASE OPEN RESETLOGS;
ALTER TABLESPACE TEMP ADD TEMPFILE /home/oracle/app/oradata/orcl/temp01.dbf SIZE 20971520  AUTOEXTEND ON;
SHUTDOWN IMMEDIATE 
 STARTUP UPGRADE 
 @?/rdbms/admin/utlirp.sql

7.驗證(Linux)

sqlplus / as sysdba
startup
conn mologa/mologa
select * from tab;
select * from pp;

window2012 oracle 遷移 centos6 oracle