export 和 import 是一對讀寫oracle資料的工具. export 將 oracle 資料庫中的資料輸出到作業系統檔案中, import 把這些檔案中的資料讀到oracle 資料庫中. export/import可以用來完成以下工作: 資料歸檔, 資料庫公升級, 備份資料庫, 把資料從乙個資料庫移到另乙個資料庫, **資料庫儲存碎片等等.
使用export除了要保證磁碟或磁帶上有足夠的空間, 還必須執行expvew.sql和expvew.sql來建立export使用的示圖, 並建立exp_full_database role. 使用export的使用者應具有create session的許可權, 若要export其他使用者的表還要有exp_full_database role.同樣, 使用import必須用catex.sql來建立imp_full_database role. 使用import的使用者應具有create session的許可權. import只能讀入用export建立的檔案. 如果該檔案是全庫export, 使用import的使用者還要有imp_full_database role.
export/import有三個級別: 表級, 使用者級和全資料庫級.
表級允許export/import指定的表而不涉及其他資料庫物件. 使用者級export/import只針對屬於指定使用者的全部資料庫物件. 只有擁有exp_full_database/imp_full_database role 的使用者才能使用全資料庫級的export/import.
有三種方式執行export/import: 引數檔案方式, 命令列方式和互動式.
使用引數檔案是一種比較好的方式, 格式為:
exp parfile =
imp parfile =
命令列方式是指在命令列中指定引數:
exp tables = (emp,dept) grants = y
imp fromuser = scott touser = test tables = (emp,dept)
互動式只要敲入exp或imp然後回答螢幕上的提問即可.
下面介紹一些export/import的使用技巧
- 把資料庫物件從乙個使用者移到另乙個使用者
oracle 不允許直接改變表的擁有者, 利用export/import可以達到這一目的.
假設要把表 t 的擁有者user1改為user2, 具體步驟是:
- exp system/manager tables = user1.t
- imp system/manager fromuser = user1 touser = user2 tables = t
- drop table user1.t
- 把資料庫物件從乙個表空間移到另乙個表空間
建表時可以指定表空間, 表空間一經確定就部能隨意改變. 若要表 t 從表空間 tbs1移到表空間 tbs2, 就要採用以下方法:
- exp tables = t
- imp tables = t indexfile = temp.sql
- drop table t
- 編輯 temp.sql 只保留所需的建表命令並指定表空間為tbs2
- 以表的所有者執行temp.sql
- imp tables = t ignore = y
- 只輸出乙個的表空間
通常資料庫設計成使用者若屬於某個表空間, 那麼這個使用者建立的資料庫物件也在該錶空間內.
export某個表空間可用如下方法:
- 檢視表空間內所有使用者
spool owners
select owner
from dba_segments
where tablespace_name = '';
spool off
- 檢視表空間內所有資料庫物件
spool objects
select owner, object_name, object_type
from dba_objects
where owner = 'owner1'
or owner = 'owner2'
...
or owner = 'ownern';
spool off
- 作表級export
- 從exp檔案中提取建立資料庫物件的命令
在import時使用 'indexfile = filename', import把建立資料庫物件的命令輸出到指定的檔案中, 編輯後執行這個檔案就能建立資料庫物件.
下面介紹export/import 使用中幾個常見的問題和解決辦法
- export/import 使用不同的字符集
export檔案中包含著字元資訊. 如過輸入/輸出都使用擔位元組字符集, 如ebcdic或us7ascii, 輸入時將自動進行字符集轉換. 轉換過程中, 若輸出檔案中含有的目標字符集中不能匹配的字元會自動設成預設字元.
對於多位元組字符集, 如zhs16cgb231280, 通常不能自動轉換, 只有在字串長度不變的情況下才能自動轉換.
- 空間不夠 -- 碎片問題
有些時候, 即使資料庫仍有足夠的空間, 使用import時卻出空間不夠的錯誤. 出現這種現象通常是由於資料庫中存在碎片, 即有很多小的不連續的空閒空間. 解決辦法是先將資料庫全庫export(full=y), shutdown資料庫, 重新建庫(create database)後用import full=y恢復資料.
- rollback段不夠
export/import使用過程中, 如果資料量很大會出現'rollback段不夠'的錯誤. 這時要建乙個足夠大的rollback段, 使它online而其他rollback段offline. 這樣, export/import使用這個大rollback段, 從而避免上述現象.
ES6模組化 使用export import
node.js 中通過 babel 體驗 es6 模組化 es6 模組化的基本語法 1.預設匯出 與 預設匯入 2.按需匯出 與 按需匯入 3.匯出物件 與 通過匯出物件同時按需匯入與一次性匯入 預設匯出 export default 預設匯入 import m1 from m1.js 按需匯出 e...
UIAlertController使用技巧
由於在ios8之後,蘋果將uialertview和uiactionsheet兩者進行了整合,用uialertcontroller來代替 如何建立uialertcontroller uialertcontroller alertcontroller uialertcontroller alertcon...
perl use vars pragma使用技巧
perl 中的vars是perl中的乙個pragma 預編譯指示符 專門用來預定義全域性變數,這些預定義後的全域性變數在qw 列表中,在整個引用perl檔案中皆可使用,即便使用use strict也不會報錯 複製 如下 use strict str hello world n 報錯資訊 global...