Oracle Export/Import DB(含Oracle Data Pump)

Oracle Export/Import DB(含Oracle Data Pump)

標籤: 

Export/Import DB

1.        確認空間大小 
2.        export tablespace,並確認是否要更改路徑 
3.        create user/grant resource 
4.        export data 
5.        import data 

範列二: 
Oracle Data Pump 

範列一:export production spc data to test spcdb 
一、確認空間大小,空間約23+14+14+15+4.4G=70.4G 
 

二、export tablespace 
 
確認要匯出的Tablespace, 可以透過滑鼠右鍵,Create Script的方式產生 
 
Copy 到Clipboard,並貼到記事本上做編輯 

 
修改需要存放的tablespace路徑 
PS.存放路徑的最後面, maxsize 32000M後沒有",",從 toad出來的資料有",",請把它拿掉 

三、Create User & Grant 
 
把我們所需要的權限,copy 到test db 

四、export data 
方法一、 

[root@C5TSPCDB1 oracle]# cat exp.sh 
exp spc/spc@c5pspc parfile=exp.par log=impspc.log compress=n
[root@C5TSPCDB1 oracle]# cat exp.par 
file=/home/oracle/spc.dmp 
statistics=none 
tables= 

R3_ARRAY_PDS_SAMPLE_ATTREX, 
PDSPRE_PROCESSSTEP_TEST, 
CHART_DEF_FORALARMCONFIG, 
CHART_RULE_FORALARMCONFIG, 
C5_ARRAY_FILE_CHART_CRIT, 
C5_ARRAY_FILE_SAMPLE_ATTR, 
SYSTEM_CONFIG, 
FAB_DEF 

方法二: 
exp sim/sim file=sim.dmp rows=y owner=sim log=sim.log compress=n

若沒有加compress=n(Default=Yes),建立Table的initial_extent值即會等於匯出資料量的大小
影響:之後若要把oracle上的datafile縮小,無法縮小此datafile

compress此參數與壓縮完全無關…

五、Import Data 
imp spc/spc file= spc.dmp full=y 

備註: 
Create User 操作 

1. 新增帳號: CREATE USER 使用者名稱  IDENTIFIED BY 密碼;
ex: CREATE USER WFE3_SPC  IDENTIFIED BY wfe3_spc  DEFAULT TABLESPACE CONFIG;

2. 權限設定: GRANT 權限 ON 資料庫物件 TO 使用者名稱; 
                      GRANT 角色 TO 使用者名稱 
3. 取消權限: REVOKE 權限 ON 資料庫物件 FROM 使用者名稱; 
4. 新增角色: CREATE ROLE 角色名稱 [ NOT IDENTIFIED | IDENTIFIED { BY 密碼| USING [ 鋼要 .] PACKAGE | EXTERNALLY | GLOBALLY } ] ; 
5. 取消角色: DROP ROLE 角色名稱 
6. 更改密碼: ALTER USER  使用者名稱 IDENTIFIED BY 密碼; 
7. 強制變更密碼: ALTER USER 使用者名稱 PASSWORD EXPIRE; 
8. 鎖住現有的使用者: ALTER USER 使用者名稱 ACCOUNT LOCK; 
9. 解鎖現有的使用者: ALTER USER 使用者名稱 ACCOUNT UNLOCK; 
10. 刪除現有的使用者: DROP USER 使用者名稱; 

高速的資料匯出/匯入:Oracle Data Pump 

1.確認備份的User是否有CREATE ANY DIRECTORY的權限 

SQL> select * from user_sys_privs;

 

 
假設沒有權限: 
grant create any directory to scott; 

2.建立Directory,在os的權限下,要選擇oracle權限的目錄(使用ORACLE DBA權限) 
Create or replace directory dir_name as '/oradata1';   
create or replace directory test  as '/oradata1'; 
查詢Directory: 
SELECT * FROM dba_directories; 

3.設定讀取權限 
grant read, write on directory TEST to scott; 
grant read, write on directory TEST to system; 

4.資料Import/Export(同一帳號import/export)
Table Exports/Imports 
若不同Schema,需要再加個remap_schema=src_account:dst_account
若不同的Tablespace(多個對應到不同的TableSpace),需要加
REMAP_TABLESPACE=src1:dst1 REMAP_TABLESPACE=src2:dst2

expdp scott/tiger@ora10g tables=SALES directory=TEST dumpfile=DP_SALES.dmp logfile=expdpDP_SALES.log 

impdp scott/tiger@ora10g tables=SALES directory=TEST dumpfile=DP_SALES.dmp logfile=impdpDP_SALES.log 

Schema Exports/Imports 

expdp scott/tiger@ora10g schemas=scott directory=TEST dumpfile=SH.dmp logfile=expdpSH.log

impdp scott/tiger@ora10g schemas=scott directory=TEST dumpfile=SH.dmp logfile=impdpSH.log 

不同帳號的話:
impdp scott/tiger@ora10g schemas=scott directory=TEST dumpfile=SH.dmp logfile=impdpSH.log remap_schema=ea:scott remap_tablespace=USERS:scott;

 

Database Exports/Imports 

expdp system/oracle@ora10g full=Y directory=TEST dumpfile=DB10G.dmp logfile=expdpDB10G.log 

impdp system/oracle@ora10g full=Y directory=TEST dumpfile=DB10G.dmp logfile=impdpDB10G.log 

5.將dump出來的資料轉換成sql file 
impdp scott/tiger directory=test dumpfile=t_user.dmp sqlfile=t_user.sql 

6.        Drop directory 
DROP DIRECTORY <directory_name>; 

7.砍掉 datapump jobs

以前用 exp 做 export 時, 如果臨時要 cancel 的話, 就把 shell script kill 掉, 然後去 v$session 看看有沒有 session 還在做 exp, 如果有的話就 alter system kill session ….. 就 OK 了, 現在用了 datapump 做 export 的話就得這樣做

SELECT o.status, o.object_id, o.object_type,
o.owner||'.'||object_name "OWNER.OBJECT"
FROM dba_objects o, dba_datapump_jobs j
WHERE o.owner=j.owner_name AND o.object_name=j.job_name ;

這樣可以找出目前還在執行的 datapump, 要看的是 OWNER.OBJECT 這個欄位, 會長的像 USER.SYS_EXPORT_FULL_01

這時要終結這個 job 的話, 要下

drop table USER.SYS_EXPORT_FULL_01 purge;

這樣才能把 datapump jobs 給砍掉

參考資料: 
http://tw.myblog.yahoo.com/stevencheng-blog/article?mid=228&prev=235&next=222 

http://psoug.org/reference/directories.html

http://blog.xuite.net/misgarlic/weblogic/43337153

備註:
imp/exp 若使用不同版本,會出現錯誤,通常是高的版本匯到低的版本
IMP-00010: not a valid export file, header failed verification

IMP-00000: Import terminated

DataPump也同樣會有這個問題:
ORA-39001: invalid argument value
ORA-39000: bad dump file specification

ORA-39142: incompatible version number 3.1 in dump file "/home/oracle/hr.dmp"

Read more

How to document Home Lab and Network

運維機房和跨域的網路,會遇到各式需求與問題,用對工具才能分析問題,個人覺得最重要的是使用能處理問題的工具。 推薦目前想學和正在使用的平台與軟體,協助將公司/家用機房文件化 佈告欄任務管理 Focalboard 白板可管理任務指派 網路架構文件編寫 netbox 精細管理網路設備與連接線路 IP 資源管理 phpipam 專注網路IP分配 邏輯塊文件編寫 draw.io 視覺化概念圖 機房設備管理 ITDB 管理設備生命週期與使用者

By Phillips Hsieh

如何在Raspberry Pi4上安裝Proxmox for ARM64

第一步 準備好Raspberry Pi 4 / CM4 4GB RAM,這裡要留意CM4如果是買有內建eMMC storage會限制不能使用SD卡開機而限制本地空間容量,如果沒有NAS外接空間或使用USB開機的話,建議買CM4 Lite插上大容量SD卡 第二步 去Armbian官網下載最小化Debian bookworm image https://www.armbian.com/rpi4b/ Armbian 25.2.2 Bookworm Minimal / IOT 然後寫入SD/USB開機碟,寫入方法參考官方文件 https://github.com/raspberrypi/usbboot/blob/master/Readme.md Note: 官方提供的預先設定系統方法,可以在Armbian初次啟動自動化完成系統設定。連結在此 https://docs.armbian.com/User-Guide_Autoconfig/

By Phillips Hsieh

世界越快心越慢

在晚飯後的休息時間,我特別享受在客廳瀏灠youtube上各樣各式創作者的影音作品。很大不同於傳統媒體,節目多是針對大多數族群喜好挑選的,在youtube上我會依心情看無腦的動畫、一些旅拍記錄、新聞時事談論。 尤其在看了大量的Youtube的分享後,我真的感受到會限制我的是我的無知,特別是那些我想都沒想過的實際應用,在學習後大大幫助到我的生活和工作層面。 休息在家時,我喜歡想一些沒做過的菜,動手去設計生活和工作上的解決方案,自己是真的很難閒著沒事做。 如創作文章,陪養新的習慣都能感覺到成長的喜悅,是不同於吃喝玩樂的快樂的。 創作不去限制固定的形式,文字是創作、影像聲音也是創作,記錄生活也是創作,我想留下的就是創造—》實現—》回憶,這樣子的循環過程,在留下的足跡面看到自己一路上的成長、失敗、絕望、重新再來。 雖然大部份的時候去做這些創作也不明白有什麼特別的意義,但不去做也不會留下什麼,所以呀不如反事都去試試看,也許能有不一樣的水花也許有意想不到的結果,投資自己永遠不會是失敗的決定,不是嗎?先問問自己再開始計畫下一步,未來沒人說得準。 像最近看youtube仍大一群人在為DOS開

By Phillips Hsieh

知識管理的三個步驟:一小時學會把知識運用到生活上

摘錄瓦基「閱讀前哨站」文章作為自己學習知識管理的內容 Part1「篩選資訊」 如何從海量資訊中篩選出啟發性、實用性和相關性的精華,讓你在學習過程中不再迷失方向。 1. 實用性 2. 啟發性 Part2「提高理解」 如何通過譬喻法和應用法,將抽象的知識與日常生活和工作緊密結合,建立更深刻的理解。 1. 應用法 2. 譬喻法 Part3「運用知識」 如何連結既有知識,跟自己感興趣的領域和專案產生關聯,讓你在運用知識的路途上游刃有餘。 1. 跟日常工作專案、人際活動產生連結 # 為什麼要寫日記? * 寫日記是為了忘記,忘卻瑣碎事情,保持專注力 * 寫日記就像在翻譯這個世界,訓練自己的解讀能力 * 不只是透過日記來記錄生活,而是透過日記來發展生活 #如何寫日記? * 不要寫流水帳式的日記,而是寫覆盤式的日記 當我們試著記錄活動和感受之間的關聯,有助於辦認出真正快樂的事 日記的記錄方式要以過程為主,而非結果 * 感恩日記的科學建議,每日感恩的案例

By Phillips Hsieh