Oracle收縮表空間檔案並去除多餘檔案關聯

2021-08-15 08:22:53 字數 1056 閱讀 7214

在平時的工作中,有時候把資料庫的資料部分刪除掉(比如測試庫不需要太多資料),但是刪除資料之後,表空間並沒有自動收縮,還是會占用很多的硬碟空間。下文幫助大家解決這個困擾。

下文中的 資料庫使用者名稱 用 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...