一、徹底備份sql
exp demo/demo@orcl buffer=1024 file=d:\back.dmp full=y
demo:用戶名、密碼 數據庫
buffer: 緩存大小緩存
file: 具體的備份文件地址 服務器
full: 是否導出所有文件 oracle
ignore: 忽略錯誤,若是表已經存在,則也是覆蓋 spa
二、將數據庫中system用戶與sys用戶的表導出 日誌
exp demo/demo@orcl file=d:\backup\1.dmp owner=(system,sys)
三、導出指定的表 code
exp demo/demo@orcl file=d:\backup2.dmp tables=(teachers,students)
四、按過濾條件,導出 blog
exp demo/demo@orcl file=d:\back.dmp tables=(table1) query=\" where filed1 like 'fg%'\"
導出時能夠進行壓縮: cmd
命令後面 加上 compress=y
若是須要日誌,後面: log=d:\log.txt
五、備份遠程服務器的數據庫
exp 用戶名/密碼@遠程的IP:端口/實例 file=存放的位置:\文件名稱.dmp full=y
打開cmd直接執行以下命令,不用再登錄sqlplus。
一、完整還原
imp demo/demo@orcl file=d:\back.dmp full=y ignore=y log=D:\implog.txt
指定log很重要,便於分析錯誤進行補救。
二、導入指定表:
imp demo/demo@orcl file=d:\backup2.dmp tables=(teachers,students)
三、還原到遠程服務器
imp 用戶名/密碼@遠程的IP:端口/實例 file=存放的位置\文件名稱.dmp full=y
11G中有個新特性,當表無數據時,不分配segment,以節省空間。這樣在導出數據的時候,空表不被導出
解決方法:
一、insert一行,再rollback就產生segment了。
該方法是在在空表中插入數據,再刪除,則產生segment。導出時則可導出空表。
二、設置deferred_segment_creation 參數
該參數值默認是TRUE,當改成FALSE時,不管是空表仍是非空表,都分配segment。
需注意的是:該值設置後對之前導入的空表不產生做用,仍不能導出,只能對後面新增的表產生做用。如需導出以前的空表,只能用第一種方法。
須要查詢全部的空表,而後執行
select 'alter table '||table_name||' allocate extent;' from user_tables where num_rows=0
而後再導出便可。
IMP-00003: 遇到 ORACLE 錯誤 959
ORA-00959: 表空間 'xxx' 不存在 IMP-00017: 因爲 ORACLE 錯誤 959, 如下語句失敗:
解決方案:
一、導入前,先建立表空間
(建立目錄即爲oracle的數據目錄)
create tablespace xxx datafile 'D:\oracle\data\xxx.dbf' size 100M autoextend on;
二、指定用戶該表空間不受限
alter user demo quota unlimited on xxx;//後面的xxx是表空間名
三、而後再imp便可
注意導入時必定要指定log,便於分析解決
成功提示是這樣的:
成功終止導入,沒有出現警告