在平時的工作中,有時候把資料庫的資料部分刪除掉(比如測試庫不需要太多資料),但是刪除資料之後,表空間並沒有自動收縮,還是會占用很多的硬碟空間。下文幫助大家解決這個困擾。
下文中的 資料庫使用者名稱 用 dbname代替;密碼用 dbpass 代替; 檔案路徑用 filesource代替;表空間名用 tablespacename 代替;
--給使用者分配許可權
sql>grant connect,resource,dba to dbname;
--建立備份路徑
sql>create directory dump as 'filesource';
--匯出備份(系統命令行執行)
expdp dbname/dbpass dumpfile=backup.dmp directory=dump logfile=backup.log job_name=exp_backup;
--表空間離線
sql>alter tablespace tablespacename offline;
--刪除表空間及檔案,但不會刪除使用者(使用者保留,我們的目的只是操作表空間檔案)
sql>drop tablespace tablespacename including contents and datafiles;
--建立新的表空間及表空間檔案
sql>create tablespace tablespacename datafile 'filesource/***.dbf' size 256m autoextend on next 256m maxsize unlimited;
--修改使用者預設表空間(原來的使用者直接指向新的表空間)
sql>alter user dbname default tablespace tablespacename;
--匯入備份(系統命令行執行)
impdp dbname/dbpass dumpfile=backup.dmp directory=dump schemas=dbname logfile=backup.log job_name=imp_backup;
切記!切記!切記!
不要直接在生產庫上直接操作
Oracle誤刪表空間檔案
oracle誤刪表空間檔案 網上給的說法是 sqlplus as sysdba 以dba身份登陸資料庫 shutdown immediate 關閉資料庫 startup mount 開啟控制檔案 alter database open 重啟資料庫到mount狀態,然後drop掉誤刪除的檔案,再開啟資...
mysql收縮空間 Oracle表空間收縮方案
對於表空間收縮,oracle只提供擴大的功能,而不提供收縮。所以,要實現這樣的要求,就只能先建立乙個中間表空間,然後將待收縮表 應用背景 某些情況下,由於前期設計上沒有考慮全面,導致表空間預建太大,遠遠超出實際使用大小。於是,就出現了收縮表空間這樣的需求,即將這個表空間的占用空間進行收縮。處理方案 ...
Oracle 表空間收縮
業務表頻繁寫入,刪除,清空後,表占用的空間不能夠及時釋放,需要通過如下方式手工釋放空間。更新業務表統計資訊 call dbms stats.gather table stats user name table name 收縮業務表空間占用 alter table enable row movemen...