--1.檢視索引和表的初始大小
select bytes/1024/1024 ||'m' table_size ,u.* from dba_segments u
where u.owner in ('clear','trade','inte***ce','security')
order by 1 desc
--2. 通過上面語句找到占用空間較大的表,刪除表記錄
delete
from clear.tc_syscfee_inquire_fee_detail t
where t.trade_date <'20180101';
--3.消除行遷移,清除空間碎片,刪除空閒空間,實現縮小所佔的空間
alter table clear.tc_syscfee_inquire_fee_detail move
/*因為alter table jk_test move 是通過消除行遷移,清除空間碎片,刪除空閒空間,實現縮小所佔的空間,但會導致此表上的索引無效(因為rowid變了,無法找到),
所以執行 move 就需要重建索引。
找到表對應的索引。
select index_name,table_name,tablespace_name,index_type,status from dba_indexes where table_owner='scott' ;
根據status 的值,重建無效的就行了。
sql='alter index '||index_name||' rebuild'; 使用儲存過程執行。
還要注意alter table move過程中會產生鎖,應該避免在業務高峰期操作!*/
--4.刪除主鍵
alter table clear.tc_syscfee_inquire_fee_detail drop primary key drop index;
--5.重新建主鍵
alter table clear.tc_syscfee_inquire_fee_detail
add constraint pk_syscfee_inquire_fee_detail primary key (trade_date, seq_no);
--6.原建表初始化大小為10m,每次增加5m,會造成空間浪費,例如只要往表中插入一條資料,就會占用10m的空間
--故修改設定 表和索引 initial初始化大小為1m,之後每次增加1m。
select 'alter table '||owner||'.'||table_name||' move tablespace '||tablespace_name||' storage(initial 1m next 1m);'
from dba_tables
where owner='clear' ;
select 'alter index '||owner||'.'||index_name||' rebuild storage(initial 1m next 1m);'
from dba_indexes
where owner='clear'
--重建索引
select 'alter index clear.' || t.index_name ||' rebuild;' from dba_indexes t where t.owner ='clear';
oracle測試環境表空間清理
測試場景下,使用的oralce遇到表空間的占用超大,可以採用如下的方式進行空間的清理 首先使用sqlplus連線資料庫 sqlplus sys password orcl as sysdba 之類進行資料庫的連線沒然後進行如下的操作 建立表空間 對於自己的測試庫和表等最好都建立自己的表空間,以方便清...
oracle測試環境表空間清理
測試場景下,使用的oralce遇到表空間的占用超大,可以採用如下的方式進行空間的清理 首先使用sqlplus連線資料庫 sqlplus sys password orcl as sysdba 之類進行資料庫的連線沒然後進行如下的操作 建立表空間 對於自己的測試庫和表等最好都建立自己的表空間,以方便清...
清理表空間
1 清理表 truncate table 2 重建temp表空間 create temporary tablespace temp1 tempfile d oracle product 10.2.0 oradata xgp3 temp02.dbf size 512m reuse autoextend...