Oracle從Windows 11.2.0.1升級並遷移到Linux 19c

abstractcyj發表於2022-03-30

環境介紹

專案

源端

目標端

作業系統

Windows Server 2008R2 64bit

Oracle Linux 7.8 64bit

資料庫版本

Oracle 11.2.0.1

Oracle 19c

儲存系統

檔案系統

ASM

位元組序

little

little

 

 

準備測試資料

create tablespace mytbs1 datafile 'C:\oradata\mytbs1.dbf' size 500M autoextend on maxsize 30G;

create tablespace mytbs2 datafile 'C:\oradata\mytbs2.dbf' size 500M autoextend on maxsize 30G;

 

create user testuser identified by "testuser" default tablespace mytbs1 temporary tablespace temp;

grant unlimited tablespace to testuser;

grant resource, connect to testuser;

 

create table testuser.tb1(id number, name varchar2(100)) tablespace mytbs1;

alter table testuser.tb1 add constraint pk_tb1 primary key(id) using index TABLESPACE  mytbs2;

 

insert into testuser.tb1 select object_id, object_name from all_objects;

預檢查

檢查字符集:
SELECT *   FROM NLS_DATABASE_PARAMETERS T WHERE T.PARAMETER LIKE '%CHARACTERSET';

檢查DBTIMEZONE

SELECT version FROM v$timezone_file;

 

在這次測試中,windows主機的version為11,linux主機為32

因為這次測試的時候,目標端是19c,所以這個沒有關係。Timezone不同的問題可能導致匯入時出現ORA-39322錯誤,在11.2.0.4版本中已經解決

檢查表空間是否自包含

EXECUTE DBMS_TTS.TRANSPORT_SET_CHECK('mytbs1', TRUE);

EXECUTE DBMS_TTS.TRANSPORT_SET_CHECK('mytbs2', TRUE);

 

SELECT * FROM TRANSPORT_SET_VIOLATIONS;

這個例子當中,我們需要處理兩個表空間。

源端匯出表空間後設資料

將源端表空間設定為只讀:

alter tablespace mytbs1 read only;

alter tablespace mytbs2 read only;

 

建立目錄物件

create directory mydump_dir as 'C:\dumpfile';

 

匯出後設資料
expdp \"/ as sysdba\" dumpfile=tts_test.dmp directory=mydump_dir transport_tablespaces=mytbs1,mytbs2 transport_full_check=y logfile=tts_test.dmp.log

 

將資料檔案從源端拷貝至目標端

 

目標端處理

 

建立使用者

create user testuser identified by "testuser" default tablespace users temporary tablespace temp;

grant unlimited tablespace to testuser;

grant resource, connect to testuser;

 

不預先建立好使用者的話,會出錯

拷貝資料檔案至ASM

在ASMCMD下執行:
cp /tmp/MYTBS1.DBF +data/orcl/datafile/MYTBS1.DBF

cp /tmp/MYTBS2.DBF +data/orcl/datafile/MYTBS2.DBF

 

 

匯入

impdp \' sys/sys as sysdba\' directory=mydump_dir dumpfile=TEST_TTS.DMP transport_datafiles=+data/orcl/datafile/MYTBS1.DBF,+data/orcl/datafile/MYTBS2.DBF logfile=impdp_tts.log


注意,windows下使用expdp匯出時,檔名是大寫, linux下面大小寫是敏感的

 

匯入完成:

修改表空間

alter tablespace mytbs1 read write;

alter tablespace mytbs2 read write;

修改使用者預設表空間

alter user testuser default tablespace mytbs1;


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

相關文章