在oracle中的imp/exp 中在exp匯出了dmp檔案後需要再次還原的話,最好還是先刪除原有的表,應為在imp匯入dmp檔案的時候只能相當於乙個insert語句,匯出後存在的資料還是會在資料表中,他不會被匯入後dmp檔案覆蓋掉所有的資料。
在此之前做的刪除資料可以刪除使用者,當然是要做級聯的刪除,那樣才會吧該使用者的資料表刪除掉,不然只是簡單的刪除了乙個使用者了,資料表還是在的,資料記錄也是存在,給匯入有影響,就不能還原為初始的資料記錄。級聯的刪除有以下幾個語句:
//刪除使用者以及使用者所有的物件
drop user zfmi cascade;
//cascade引數是級聯刪除該使用者所有物件,經常遇到如使用者有物件而未加此引數則使用者刪不了的問題,所以習慣性的加此引數。
以下在做一些常用的語句,匯入的詳情可見本部落格另外的oracle imp/exp 的匯入匯出篇章。
//建立臨時表空間
create temporary tablespace zfmi_temp
tempfile 'd:\oracle\oradata\zfmi\zfmi_temp.dbf'
size 32m
autoextend on
next 32m maxsize 2048m
extent management local;
//tempfile引數必須有
//建立資料表空間
create tablespace zfmi
logging
datafile 'd:\oracle\oradata\zfmi\zfmi.dbf'
size 100m
autoextend on
next 32m maxsize 2048m
extent management local;
//datafile引數必須有
//刪除使用者以及使用者所有的物件
drop user zfmi cascade;
//cascade引數是級聯刪除該使用者所有物件,經常遇到如使用者有物件而未加此引數則使用者刪不了的問題,所以習慣性的加此引數
//刪除表空間
前提:刪除表空間之前要確認該錶空間沒有被其他使用者使用之後再做刪除
drop tablespace zfmi including contents and datafiles cascade onstraints;
//including contents 刪除表空間中的內容,如果刪除表空間之前表空間中有內容,而未加此引數,表空間刪不掉,所以習慣性的加此引數
//including datafiles 刪除表空間中的資料檔案
//cascade constraints 同時刪除tablespace中表的外來鍵參照
如果刪除表空間之前刪除了表空間檔案,解決辦法:
如果在清除表空間之前,先刪除了表空間對應的資料檔案,會造成資料庫無法正常啟動和關閉。
可使用如下方法恢復(此方法已經在oracle9i中驗證通過):
下面的過程中,filename是已經被刪除的資料檔案,如果有多個,則需要多次執行;tablespace_name是相應的表空間的名稱。
$ sqlplus /nolog
sql> conn / as sysdba;
如果資料庫已經啟動,則需要先執行下面這行:
sql> shutdown abort
sql> startup mount
sql> alter database datafile 'filename' offline drop;
sql> alter database open;
sql> drop tablespace tablespace_name including contents;
//建立使用者並指定表空間
create user zfmi identified by zfmi
default tablespace zfmi temporary tablespace zfmi_temp;
//identified by 引數必須有
//授予message使用者dba角色的所有許可權
grant dba to zfmi;
//給使用者授予許可權
grant connect,resource to zfmi; (db2:指定所有許可權)
附錄一:
給使用者增加匯入資料許可權的操作
第一,啟動sql*puls
第二,以system/manager登陸
第三,create user 使用者名稱 identified by 密碼 (如果已經建立過使用者,這步可以省略)
第四,grant create user,drop user,alter user ,create any view ,
drop any view,exp_full_database,imp_full_database,
dba,connect,resource,create session to 使用者名字
第五, 執行-cmd-進入dmp檔案所在的目錄,
imp userid=system/manager full=y file=*.dmp
或者 imp userid=system/manager full=y file=filename.dmp
Oracle建立刪除表空間及使用者
1 檢視使用者連線狀態 select username,sid,serial from v session 2 找到要刪除的使用者的sid和serial,並刪除 alter system kill session 66 88 3 查詢使用者 select from dba users 4 查詢工作間...
建立oracle使用者及刪除使用者
建立使用者 create user 使用者名稱 identified by 密碼 default tablespace 表空間名 temporary tablespace 臨時表空間名 profile default quota unlimited on 表空間名 grant revoke obje...
oracle資料庫使用者刪除及表空間刪除
以system使用者登入,查詢需要刪除的使用者 查詢使用者 select fromdba users 查詢工作空間的路徑 select fromdba data files 刪除使用者 drop user使用者名稱cascade 刪除表空間 drop tablespace表空間名稱including...