久久精品人人爽,华人av在线,亚洲性视频网站,欧美专区一二三

Oracle數據庫導入導出邏輯備份方法有哪些

159次閱讀
沒有評論

共計 9027 個字符,預計需要花費 23 分鐘才能閱讀完成。

這篇文章主要介紹 Oracle 數據庫導入導出邏輯備份方法有哪些,文中介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們一定要看完!

【EXP 常用參數】

USERID  即用戶名 / 密碼該參數就必須且為第一個;

FILE  指定數據輸出文件路徑;

LOG  指定日志輸出文件路徑;

TABLES  導出指定表數據;

FULL  完全導出整個文件 (N);

ROWS  導出數據行 (Y);

QUERY  用于導出表的子集的 select 子句;

【示例】

1、【全庫模式】將數據庫 orcl 完全導出, 用戶名 scott 密碼 scott 數據文件導出到 D:/orcl/scott.dmp,日志文件到出到 D:/orcl/scott.log

exp scott/scott@orcl file = D:/orcl/scott.dmp log =D:/orcl/scott.log full = y

2、【表模式】將數據庫中的表 emp、dept 導出到 D:/orcl/scott_empdept.dmp

exp scott/scott@orcl file = D:/orcl/scott_empdept.dmptables = (emp,dept)

3、【用戶模式】將 243 數據庫中用戶 ng_lxj1 和 ng_lxj2 的所有數據導出到 D:/orcltest/ ng_lxj_user.dmp

exp system/manager@243 file = D:/orcltest/ng_lxj_user.dmpowner = (ng_lxj1, ng_lxj2)

4、將數據庫中的表 emp 中 SAL 字段大于 1000 的記錄導出到 D:/orcl/scott_emp.dmp

exp scott/scott@orcl file = D:/orcl/sys_scott.dmptables = (emp) query = \”where sal 1000\”

5、將數據庫中的表 emp 僅導出建表語句不導出數據行到 D:/orcl/scott_empddl.dmp

exp scott/scott@orcl file = D:/orcl/scott_empddl.dmptables = emp rows = n

【全部參數】

USERID  用戶名 / 口令   FULL  導出整個文件 (N)

BUFFER  數據緩沖區大小   OWNER  所有者用戶名列表

FILE  輸出文件   TABLES  表名列表

COMPRESS  導入到一個區 (Y)  RECORDLENGTH IO 記錄的長度

GRANTS  導出權限 (Y)  INCTYPE  增量導出類型

INDEXES  導出索引 (Y)  RECORD  跟蹤增量導出 (Y)

DIRECT  直接路徑 (N)  TRIGGERS  導出觸發器 (Y)

LOG  屏幕輸出的日志文件   STATISTICS   分析對象 (ESTIMATE)

ROWS  導出數據行 (Y)  PARFILE  參數文件名

CONSISTENT  交叉表的一致性 (N)  CONSTRAINTS  導出的約束條件 (Y)

OBJECT_CONSISTENT  只在對象導出期間設置為只讀的事務處理 (N)

FEEDBACK  每 x 行顯示進度 (0)

FILESIZE  每個轉儲文件的最大大小

FLASHBACK_SCN  用于將會話快照設置回以前狀態的 SCN

FLASHBACK_TIME  用于獲取最接近指定時間的 SCN 的時間

QUERY  用于導出表的子集的 select 子句

RESUMABLE  遇到與空格相關的錯誤時掛起 (N)

RESUMABLE_NAME  用于標識可恢復語句的文本字符串

RESUMABLE_TIMEOUT RESUMABLE 的等待時間

TTS_FULL_CHECK  對 TTS 執行完整或部分相關性檢查

TABLESPACES  要導出的表空間列表

TRANSPORT_TABLESPACE 導出可傳輸的表空間元數據 (N)

TEMPLATE  調用 iAS 模式導出的模板名

【IMP 常用參數】

USERID  即用戶名 / 密碼該參數就必須且為第一個;

FILE  指定數據輸出文件路徑;

LOG  指定日志輸出文件路徑;

IGNORE  忽略創建錯誤 (N),當要導入的表已存在時若該參數為 Y 則不報錯僅導入數據,否則將報錯;若導入的表不存在,則將自動新建該表,需要注意的是,該表所建的表空間一般是導出時表所在表空間,若導入的庫中無此表空間則會報錯;

FROMUSER  所有者用戶名列表;

TOUSER  用戶名列表;

TABLES  導出指定表數據;

FULL  完全導出整個文件 (N);

ROWS  導出數據行 (Y);

【示例】

1、【全庫模式】將備份數據庫文件中的數據導入數據庫 orcl 中, 用戶名 scott 密碼 scott,數據文件路徑 D:/orcl/scott.dmp,日志文件路徑 D:/orcl/scott.log

imp scott/scott@orcl file = D:/orcl/scott.dmp log =D:/orcl/scott.log full = y ignore = y

2、【表模式】將備份數據庫文件中的表 emp、dept 數據導入數據庫 orcl 中, 用戶名 scott 密碼 scott,數據文件路徑 D:/orcl/scott.dmp

imp scott/scott@orcl file = D:/orcl/scott.dmp log =D:/orcl/scott.log ignore = y tables = (emp,dept)

另外,如果導出時使用了表模式,導入時要導入所有表數據,則也可以使用 full = y,如:

imp scott/scott@orcl file = D:/orcl/scott_empdept.dmp ignore= y full = y

3、【用戶模式】備份數據文件中存在 ng_lxj1、ng_lxj2 兩用戶數據,數據文件路徑 D:/orcltest/ng_lxj_user.dmp

將 ng_lxj1 的數據導入到 ng_lxj 中:

imp system/manager@243 file = D:/orcltest/ng_lxj_user.dmpfromuser = ng_lxj1 touser = ng_lxj

將 ng_lxj1 和 ng_lxj2 的數據均導入到 ng_lxj 中:

imp system/manager@243 file = D:/orcltest/ng_lxj_user.dmpfromuser = (ng_lxj1,ng_lxj2) touser = (ng_lxj,ng_lxj)

注意 ng_lxj 要寫兩遍與之前的對應,若僅寫一個,Oracle 會默認沒得到對應的將導入到本用戶下,如:

imp system/manager@243 file = D:/orcltest/ng_lxj_user.dmpfromuser = (ng_lxj1,ng_lxj2)

該命令將從 ng_lxj1 導入 ng_lxj1,ng_lxj2 導入 ng_lxj2

將 ng_lxj1 的數據分別導入 ng_lxj1 和 ng_lxj2 兩個用戶:

不能寫成 imp system/manager@243 file = D:/orcltest/ng_lxj_user.dmpfromuser = (ng_lxj1,ng_lxj1) touser = (ng_lxj1,ng_lxj2)

否則會報錯:

IMP-00034: 警告: 在導出文件中未找到 FromUser NG_LXJ1

猜測:Oracle 將數據文件抽取到緩存區,一旦使用過就會進行清除。

所以,一個用戶導向兩個用戶需要分開寫兩條命令語句。

將 ng_lxj1 用戶下的 t1 表的數據導入 ng_lxj2 用戶中:

imp system/manager@243 file = D:/orcltest/ng_lxj_user.dmpfromuser = ng_lxj1 touser = ng_lxj2 tables = t1

4、從備份數據文件中,僅導入建表語句而不導入數據記錄,文件路徑 D:/orcl/scott.dmp

imp scott/scott@orcl file = D:/orcl/scott.dmp full = yignore = y rows = n

5、使用參數文件

imp system/manager@243 parfile=bible_tables.par

bible_tables.par 參數文件:

file = D:/orcltest/ng_lxj_user.dmp fromuser = ng_lxj1touser = ng_lxj

【全部參數】

USERID  用戶名 / 口令   FULL  導入整個文件 (N)

BUFFER  數據緩沖區大小   FROMUSER  所有者用戶名列表

FILE  輸入文件 (EXPDAT.DMP)  TOUSER  用戶名列表

SHOW  只列出文件內容 (N)  TABLES  表名列表

IGNORE  忽略創建錯誤 (N)  RECORDLENGTH IO 記錄的長度

GRANTS   導入權限 (Y)  INCTYPE  增量導入類型

INDEXES  導入索引 (Y)  COMMIT  提交數組插入 (N)

ROWS  導入數據行 (Y)  PARFILE  參數文件名

LOG  屏幕輸出的日志文件   CONSTRAINTS  導入限制 (Y)

DESTROY  覆蓋表空間數據文件 (N)

INDEXFILE  將表 / 索引信息寫入指定的文件

SKIP_UNUSABLE_INDEXES  跳過不可用索引的維護 (N)

FEEDBACK  每 x 行顯示進度 (0)

TOID_NOVALIDATE  跳過指定類型 ID 的驗證

FILESIZE  每個轉儲文件的最大大小

STATISTICS  始終導入預計算的統計信息

RESUMABLE  在遇到有關空間的錯誤時掛起 (N)

RESUMABLE_NAME  用來標識可恢復語句的文本字符串

RESUMABLE_TIMEOUT RESUMABLE 的等待時間

COMPILE  編譯過程, 程序包和函數 (Y)

STREAMS_CONFIGURATION  導入流的一般元數據 (Y)

STREAMS_INSTANTIATION  導入流實例化元數據 (N)

DATA_ONLY  僅導入數據 (N)

下列關鍵字僅用于可傳輸的表空間

TRANSPORT_TABLESPACE 導入可傳輸的表空間元數據 (N)

TABLESPACES 將要傳輸到數據庫的表空間

DATAFILES 將要傳輸到數據庫的數據文件

TTS_OWNERS 擁有可傳輸表空間集中數據的用戶

【P.S.】

1、高版本的 Export 導出來的轉儲文件,低版本的 Import 讀不了;低版本的 Export 導出來的轉儲文件,高版本的 Import 可以進行讀取。

2、從 Oracle 低版本的 Export 數據可以 Import 到 Oracle 高版本中,但限于 Oracle 的相鄰版本,兩個不相鄰版本間進行轉換應借助中間版本。

3、Oracle 10g export 的文件且包含大字段通過 Oracle 11g 客戶端 Import 到 Oracle10g 數據庫時會報“IMP-00058”、“ORA-00942”表不存在的錯誤,且含幾個大字段會報幾次,但最終數據會成功導入且無錯誤。想不報錯就換個 10g 客戶端或用 11g 客戶端導入 11g 服務器數據庫。

4、exp/imp 可以做到在不同版本 Oracle、不同數據庫上的遷移,在進行不同數據庫上遷移時很可能會出現表空間不存在的報錯。解決方法:首先,我們可以嘗試先建表且指定新的表空間,然后使用 imp 且 ignore= y 僅導入數據;若仍報表空間不存在則最佳方法是改變 exp,將需要備份的表的表空間指定為 USERS(系統默認表空間);也可以在要導入的數據庫上建一個極小的與導出數據庫表空間同名的表空間。

5、在有主外鍵關鍵時,若主外鍵表均存在于備份文件,則 imp 會自動識別并在導入數據后建立約束,若僅導入外鍵表而不導入主鍵表則數據成功導入但會報錯且外鍵約束丟失。

6、多表多條件導出,tables 指定多表,而 query 不能針對不同表做不同條件限制,可以寫多條語句分別導出各表,也可以使用 expdp 來多表多條件導出。

7、導入大表時存儲分配失敗,默認的 EXP 時,compress = Y,也就是把所有的數據壓縮在一個數據塊上。導入時, 如果不存在連續一個大數據塊,則會導入失敗。導出 80M 以上的大表時,記得 compress= N,則不會引起這種錯誤。

8、導入導出時有三種可選模式(全庫、用戶、表),exp/imp 使用時必須選用其中一種模式且全文件模式時不能出現其他模式;

9、使用用戶模式導入導出時,USERID 需要使用高權限用戶如 system/manager;

10、借助 PL/SQL,在表中不存在大字段時,我們還可以借助 PL/SQL 的導出工具來導入導出;需要注意的是,從一個庫中導出的文件可能默認的時間格式與另一個庫不同而產生出錯,且導出的純 SQL insert 語句有時間不能直接用于 DB2,里面對于空、大字段等的定義是不同的。

11、從 Oracle 10g 開始提供了稱為數據泵新的工具 expdp/impdp,它為 Oracle 數據提供高速并行及大數據的遷移。imp/exp 可以在客戶端調用,但是 expdp/impdp 只能在服務端,因為在使用 expdp/impdp 以前需要在數據庫中創建一個 Directory。

數據泵的特點與傳統導出導入的區別

1. EXP 和 IMP 是客戶端工具程序,它們既可以在客戶端使用,也可以在服務端使用;EXPDP 和 IMPDP 是服務端的工具程序,他們只能在 ORACLE 服務端使用,不能在客戶端使用。

2.EXP 和 IMP 效率比較低.EXPDP 和 IMPDP 效率高

3. 數據泵功能強大并行、過濾、轉換、壓縮、加密、交互等等

4. 數據泵不支持 9i 以前版本,EXP/IMP 短期內還是比較適用

5. 數據泵導出包括導出表, 導出方案, 導出表空間, 導出數據庫 4 種方式,而 imp/exp 是 3 種

6.IMP 只適用于 EXP 導出的文件,不適用于 EXPDP 導出文件;IMPDP 只適用于 EXPDP 導出的文件,而不適用于 EXP 導出文件

【expdp/impdp】

該命令僅能在服務端使用!也就是說必須在數據庫導入或導出的服務器上使用該命令!

使用該命令需要邏輯目錄與物理目錄均存在!

如,導出本地 orcl 數據庫中 soctt 用戶的 emp,dept 兩表步驟:

1) 創建邏輯目錄

該命令不會在操作系統創建真正的目錄,最好以 system 等管理員創建

登錄 SQLPLUS:

sqlplus system/manager@orcl as sysdba

創建邏輯目錄:

create directory dptest as‘d:\dptest’;

2) 給導出用戶授權

grant read,write on directory dptest to scott;

3) 建立物理目錄

在 D 盤新建目錄 dptest

4) 導出 emp、dept 表

expdp scott/scott@orcl tables = emp,dept dumpfile =empdept_dp.dmp directory = dptest

【expdp 常用參數】

DIRECTORY  供轉儲文件和日志文件使用的目錄對象,需要在導出前創建;

DUMPFILE  指定導出數據文件名,不填寫目錄路徑則默認為 direcory 指定的目錄,也可指定已創建的目錄對象;

CONTENT  指定要導出的內容,可選參數有 all、data_only 和 metadata_only,默認為 all,當參數為 all 時將導出 DDL 及其數據,data_only 只導出數據,metadata_only 只導出 DDL;

EXCLUDE  排除特定的對象類型,例如 EXCLUDE=TABLE:EMP;

INCLUDE  包括特定的對象類型,例如 INCLUDE=TABLE_DATA;

JOB_NAME  要創建的導出任務的名稱,若不指定則會默認會創建一個類似于 SYS_EXPORT_SCHEMA_01 的對象作為 JOB 名;

LOGFILE  指定日志文件名 (export.log);

NOLOGFILE  不寫入日志文件 (N);

FULL  導出整個數據庫 (N);

SCHEMAS  要導出的方案的列表 (登錄方案);

TABLES  指定要導出的表的列表;

TABLESPACES 指定要導出的表空間的列表;

QUERY  用于導出表的子集的謂詞子句;

【示例】

1、【全庫模式】將本地數據庫全庫導出到已創建的目錄對象 dptest 中

expdp system/manager@orcl dumpfile = orcl_dp.dmp directory= dptest full = y

2、【表模式】將本地數據庫 scott 中的表 emp、dept 導出到已創建的目錄對象 dptest 中

expdp scott/scott@orcl tables = emp,dept dumpfile =empdept_dp.dmp directory = dptest

3、【用戶模式】將本地數據庫 scott 用戶數據導出到已創建的目錄對象 dptest 中

expdp scott/scott@orcl schemas = scott dumpfile = scott_dp.dmpdirectory = dptest

4、【表空間模式】將本地數據庫中 USERS 和 TEMP 表空間下數據導出到已創建的目錄對象 dptest 中

expdp system/manager@orcl dumpfile = users_temp_dp.dmpdirectory = dptest tablespace = users,temp

5、按表導出且指定條件(可實現多表多條件),將表 emp 中 SAL 字段大于 1000 的記錄導出

expdp scott/scott@orcl directory= dptest dumpfile=expdp.dmp tables=empquery= where sal 1000

6、并行進程 parallel

expdp scott/scott@orcl directory= dptest dumpfile=scott1.dmp parallel=40 job_name=scott1

【impdp 常用參數】

DIRECTORY  供轉儲文件和日志文件使用的目錄對象,需要在導入前創建;

DUMPFILE  指定導入數據文件名,不填寫目錄路徑則默認為 direcory 指定的目錄,也可指定已創建的目錄對象;

CONTENT  指定要導入的內容,可選參數有 all、data_only 和 metadata_only,默認為 all,當參數為 all 時將導入 DDL 及其數據,data_only 只導入數據,metadata_only 只導入 DDL;

EXCLUDE  排除特定的對象類型,例如 EXCLUDE=TABLE:EMP;

INCLUDE  包括特定的對象類型,例如 INCLUDE=TABLE_DATA;

JOB_NAME  要創建的導入任務的名稱;

LOGFILE  指定日志文件名 (import.log);

NOLOGFILE  不寫入日志文件 (N);

FULL  導出整個數據庫 (N);

SCHEMAS  要導出的方案的列表 (登錄方案);

TABLES  指定要導出的表的列表;

TABLESPACES 指定要導出的表空間的列表;

QUERY  用于導出表的子集的謂詞子句;

REMAP_SCHEMA  將一個方案中的對象加載到另一個方案;

REMAP_TABLESPACE  將表空間對象重新映射到另一個表空間,在不同數據庫導入導出時用于更改表空間;

【示例】

1、【全庫模式】將數據文件全庫導入本地數據庫,數據文件存放于到已創建的目錄對象 dptest 中

impdp system/manager@orcl dumpfile = orcl_dp.dmpdirectory = dptest full = y

2、【表模式】將數據文件中表 emp、dept 導入本地數據庫 scott 用戶下

impdp scott/scott@orcl tables = emp,dept dumpfile =empdept_dp.dmp directory = dptest

將數據文件中表 emp 導入本地數據庫且將其擁有者改為 system

impdp system/manager dumpfile = empdept_dp.dmpdirectory = dptest tables=scott.dept remap_schema=scott:system

3、【用戶模式】將數據文件導入本地數據庫 scott 用戶下

impdp scott/scott@orcldumpfile = scott_dp.dmp directory = dptest SCHEMAS=scott;

4、更換表空間

impdp scott/scott@orcl dumpfile = scott_dp.dmpdirectory = dptest  remap_tablespace=users:temp

【大例子】

從一個用戶 expdp 導出再 impdp 導入到另一個用戶

如:Windows 為 A 服務器,Linux 為 B 服務器, 數據庫用戶為 test,把 A 服務器的數據遷移到 B 服務器中

在 A 服務器操作:

1、

SQL create directory expdp_dir as D:\mzl\backup

SQL grant read,write on directory expdp_dir totest;

2、在 windows 目錄創建目錄 D:\mzl\backup

3、在 DOS 命令窗口導出:

expdp test/test DIRECTORY=expdp_dir DUMPFILE=test.dmplogfile=testexpdp.log

在 B 服務器中操作:

4、SQL create directory impdp_diras /home/oracle/impdp_dir

SQL grantread,write on directory impdp_dir to test;

1、在系統中需要有 /home/oracle/impdp_dir 目錄,在 impdp_dir 目錄下必須有讀寫權限

(chmod 777 impdp_dir)

5、用 ftp 把 A 服務器導出的數據上傳到 B 服務器的 /home/oracle/impdp_dir 目錄中

在 A 服務器中配置好 B 服務器的服務器名, 在 A 服務器導入數據

6、在 DOS 命令窗口導出:

imppdp test/test@B_database DIRECTORY=impdp_dirDUMPFILE=test.dmp logfile=testimpdp.log

(這里注意大小寫,如果 test.dmp 在 linux 中為大寫,必須更改為大寫。Linux 區分大小寫)

以上是“Oracle 數據庫導入導出邏輯備份方法有哪些”這篇文章的所有內容,感謝各位的閱讀!希望分享的內容對大家有幫助,更多相關知識,歡迎關注丸趣 TV 行業資訊頻道!

正文完
 
丸趣
版權聲明:本站原創文章,由 丸趣 2023-07-20發表,共計9027字。
轉載說明:除特殊說明外本站除技術相關以外文章皆由網絡搜集發布,轉載請注明出處。
評論(沒有評論)
主站蜘蛛池模板: 吉安市| 兰溪市| 江源县| 高碑店市| 水城县| 巴林右旗| 玉环县| 宜良县| 永清县| 海宁市| 霍林郭勒市| 舟山市| 开阳县| 贵州省| 崇仁县| 四川省| 莫力| 库尔勒市| 西盟| 望江县| 华阴市| 承德县| 恭城| 东乌珠穆沁旗| 南皮县| 长岛县| 肥西县| 南漳县| 浦县| 岑溪市| 清镇市| 柏乡县| 昌都县| 瓦房店市| 新平| 博爱县| 马边| 三穗县| 汉寿县| 丹阳市| 东光县|