|
藍森林 http://www.lslnet.com 2006年8月08日 13:08
如何導入導出ORACLE中的數據?急!
我的一台服務器(A)安裝了sco unix5.0.5和oracle7.3.2,是IDE硬盤。並且無磁帶機;另一台服務器(B)安裝了sco unix 5.0.6和ORACLE7.3.4是SCSI硬盤,有磁帶機。
我現在要將A上的數據(包括數據庫結構)完全導入到B上,是不是用EXPORT和IMPORT命令,但具體如何做?請教大蝦! |
如何導入導出ORACLE中的數據?急!
是 |
如何導入導出ORACLE中的數據?急!
下面是引自網上的一篇文章:
使用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 <username/password>; PARFILE = <filename>;
Imp <username/password>; PARFILE = <filename>;
命令行方式是指在命令行中指定參數:
Exp <username/password>; TABLES = (emp,dept) GRANTS = y
Imp <username/password>; 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 <user/passwd>; tables = T
- imp <user/passwd>; tables = T indexfile = temp.sql
- drop table T
- 編輯 temp.sql 只保留所需的建表命令並指定表空間為tbs2
- 以表的所有者執行temp.sql
- imp <user/passwd>; tables = T ignore = Y
- 只輸出一個的表空間
通常數據庫設計成用戶若屬於某個表空間, 那麼這個用戶創建的數據庫對象也在該表空間內.
Export某個表空間可用如下方法:
- 查看表空間內所有用戶
spool owners
select owner
from dba_segments
where tablespace_name = '<TablespaceName>;';
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段, 從而避免上述現象. |
| |