Delete/Truncate删除,释放表空间、降低高水位线、resize释放磁盘空间相关优化汇总
阅读前注意:磁盘空间 表的数据库空间 表空间的数据库空间不同之处。
硬盘空间不足,打算删除数据库中的多余数据,但删除数据后,硬盘硬盘空间不能释放。
【delete后用:alter table table_name move truncate后用:alter table table_name deallocate unused 均不可解决】
解决方法:
--delete/truncate删除,释放表空间、降低高水位线、resize释放磁盘空间相关优化汇总
--查询DBF文件、数据库空间、高水位线占用情况
select /*+ ordered use_hash(a,b,c) */
a.file_id,
a.file_name,
a.tablespace_name,
a.filesize,
b.freesize,
(a.filesize - b.freesize) usedsize,--使用空间
c.hwmsize,
c.hwmsize - (a.filesize - b.freesize) unsedsize_belowhwm,--未使用空间
a.filesize - c.hwmsize canshrinksize--文件大小
from (select tablespace_name,file_id, file_name, round(bytes / 1024 / 1024) filesize
from dba_data_files) a,
(select file_id, round(sum(dfs.bytes) / 1024 / 1024) freesize
from dba_free_space dfs
group by file_id) b,
(select file_id, round(max(block_id) * 8 / 1024) HWMsize--高水位线
from dba_extents
group by file_id) c
where a.file_id = b.file_id
and a.file_id = c.file_id
order by unsedsize_belowhwm desc
--查询【各用户】【表空间】数据存储空间占用大小(用户与表空间对应关系)
select owner,tablespace_name ,sum(bytes)/1024/1024 from dba_segments group by owner,tablespace_name
--查询当前用户【表】数据存储空间占用大小
select segment_name, bytes/1024/1024
from user_segments
where segment_type = 'TABLE';
--查询当前用户【所有对象】数据存储空间占用大小
Select segment_type,Segment_Name,Sum(bytes)/1024/1024 From User_Extents Group By Segment_Name,segment_type
--查询【表空间】与【DBF】对应关系与存储情况
select tablespace_name, file_id, file_name,
round(bytes/(1024*1024),0) total_space
from dba_data_files
order by tablespace_name;
--删除表数据
truncate table ZW_FZHSZD
TRUNCATE TABLE JC_ASSETS_ADD --DROP STORAGE
--分析(不分析,会导致下面步骤查询表的高水位线时候数值会不准)
ANALYZE TABLE ZW_FZHSZD ESTIMATE STATISTICS;
--查询表的水位分配情况
SELECT blocks, empty_blocks, num_rows
FROM user_tables
WHERE table_name = 'ZW_FZHSZD';
--TRUNCATE后可释放表数据库空间,表默认把TRUNCATE数据前的空间大小作为初始空间大小,表的高水位线不会降低,需要Shring收缩表的大小(下面详解)后方可降低表的水位线
--释放/收缩表数据库空间
--alter table tablename move --选择性操作,delete后可通过此方法释放数据库空间,但此操作MOVE时需要双倍的表空间,大表有可能会导致高水位线提高,而且如果表上有索引的话,需要重构索引,不建议使用
alter table tablename deallocate unused keep 0;--成功释放数据库空间,但高水位线不降低(表的高水位线降低,表空间的不降低??)
alter table JC_ASSETS_CHANGE enable row movement;--开启movement功能
alter index xx rebuild--movement后需要重建索引(未验证可行性)
ALTER TABLE USERS SHRINK SPACE --cascade --成功收缩表的数据库空间为最小值,但【表空间】水位有时降低、有时不降低,原因不详
--回缩索引为最小值(选择性操作)
ALTER INDEX INDEXINDEX1_FZHSZD SHRINK SPACE
--查询最大可resize空间
select a.file#,
a.name,
a.bytes / 1024 / 1024 CurrentMB,
ceil(HWM * a.block_size / 1024 / 1024) Resizeto,
(a.bytes - HWM * a.block_size) / 1024 / 1024 releaseMB,
'alter database datafile ''' || a.name || ''' resize ' ||
ceil(HWM * a.block_size / 1024 / 1024) || 'M;' ResizeCmd
from v$datafile a,
(select file_id, max(block_id + blocks - 1) HWM
from dba_extents
group by file_id) b
where a.file# = b.file_id(+)
and (a.bytes - HWM * a.block_size) > 0
order by 5
--Resize释放硬盘空间(resize值必须大于高水位线,所以降低水位线非常重要)
ALTER DATABASE DATAFILE 'C:\APP\ADMINISTRATOR\ORADATA\ORCL\USERS01.DBF' resize 1000M;
--释放HWM上面的未使用空间,但是并不会释放HWM下面的自由空间,也不会移动HWM的位置.
Alter table table_name deallocate unused
终极方法:把表空间A内所有对象(表、索引)移动到表空间B,然后Resize 表空间A为最少值(表空间内所有对象移走后高水位线会降到最低),然后再把对象从表空间B移回表空间A(测试可用,但不知道有没副作用)
PS:
【清理临时表空间方法】
ALTER TABLESPACE 临时表空间名 SHRINK SPACE KEEP 512M
EMP:ALTER TABLESPACE TEMP_FMMS2 SHRINK SPACE KEEP 512M
--表空间DBF文件大小
select bytes/1024/1024 free_size from dba_data_files where tablespace_name='USERS';
--表空间空闲空间
select SUM(BYTES/1024/1024) total_size from dba_free_space where tablespace_name='USERS';
select max(block_id)*8/1024 "m size" from dba_extents where tablespace_name='USERS'
Oracle数据文件收缩实例
查看数据文件的使用情况
包括内容:数据文件大小,已经used空间,free空间,hwm信息
select /*+ ordered use_hash(a,b,c) */ a.file_id,a.file_name,a.filesize, b.freesize, (a.filesize-b.freesize) usedsize, c.hwmsize, c.hwmsize - (a.filesize-b.freesize) unsedsize_belowhwm, a.filesize - c.hwmsize canshrinksize from ( select file_id,file_name,round(bytes/1024/1024) filesize from dba_data_files ) a, ( select file_id,round(sum(dfs.bytes)/1024/1024) freesize from dba_free_space dfs group by file_id ) b, ( select file_id,round(max(block_id)*8/1024) HWMsize from dba_extents group by file_id) c where a.file_id = b.file_id and a.file_id = c.file_id order by unsedsize_belowhwm desc
结果说明:
File_id : 文件编号
File_name: 文件名称
File_size: 数据文件占用磁盘空间大小
Freesize:文件中被标记为free的空间大小
Usedsize: 使用的空间大小。
Hwmsize: 已经分配出去的空间大小,如果希望通过alter database datafile … resize integerM回收空间,将需要这个值作为参考,不能回收到这个值之下,否则会报错。
Freee_belowhwm_size: 在HWM(高水位标记线之下的空闲空间数),这个是理论上的可以回收的空间大小。
Curr_can_shrink: 这个是实际大小与HWM标记之间的差,就是还没有分配出去的空间大小。
file_id | file_name | filesize | freesize | usedsize | hwmsize | free_belowhwm_size | curr_can_shrink |
11 | /oradata/ODSD01.dbf | 2048 | 1908 | 140 | 2048 | 1908 | 0 |
12 | /oradata/ODSD02.dbf | 2048 | 1897 | 151 | 2048 | 1897 | 0 |
20 | /oradata/ODSD10.dbf | 2048 | 1897 | 151 | 2048 | 1897 | 0 |
16 | /oradata/ODSD06.dbf | 2048 | 1889 | 159 | 2048 | 1889 | 0 |
15 | /oradata/ODSD05.dbf | 2048 | 1888 | 160 | 2048 | 1888 | 0 |
19 | /oradata/ODSD09.dbf | 2048 | 1885 | 163 | 2048 | 1885 | 0 |
13 | /oradata/ODSD03.dbf | 2048 | 1884 | 164 | 2048 | 1884 | 0 |
17 | /oradata/ODSD07.dbf | 2048 | 1884 | 164 | 2048 | 1884 | 0 |
14 | /oradata/ODSD04.dbf | 2048 | 1813 | 235 | 2041 | 1806 | 7 |
34 | /oradata/DWD01.dbf | 4000 | 3701 | 299 | 2088 | 1789 | 1912 |
51 | /oradata/ODSD11.dbf | 2048 | 1963 | 85 | 1584 | 1499 | 464 |
21 | /oradata/ODSI01.dbf | 2048 | 1913 | 135 | 1617 | 1482 | 431 |
25 | /oradata/ODSI05.dbf | 2048 | 1910 | 138 | 1607 | 1469 | 441 |
22 | /oradata/ODSI02.dbf | 2048 | 1903 | 145 | 1606 | 1461 | 442 |
24 | /oradata/ODSI04.dbf | 2048 | 1909 | 139 | 1592 | 1453 | 456 |
23 | /oradata/ODSI03.dbf | 2048 | 1892 | 156 | 1603 | 1447 | 445 |
48 | /oradata/ODSI06.dbf | 2048 | 1925 | 123 | 1559 | 1436 | 489 |
30 | /oradata/TODSD05.dbf | 2048 | 1804 | 244 | 1315 | 1071 | 733 |
18 | /oradata/ODSD08.dbf | 2048 | 1881 | 167 | 1225 | 1058 | 823 |
27 | /oradata/TODSD02.dbf | 2048 | 1818 | 230 | 1244 | 1014 | 804 |
31 | /oradata/TODSI01.dbf | 2048 | 1977 | 71 | 936 | 865 | 1112 |
35 | /oradata/DWI01.dbf | 2048 | 1973 | 75 | 936 | 861 | 1112 |
32 | /oradata/TODSI02.dbf | 2048 | 1969 | 79 | 867 | 788 | 1181 |
43 | /oradata/DWI03.dbf | 2048 | 1975 | 73 | 802 | 729 | 1246 |
42 | /oradata/DWI02.dbf | 2048 | 1983 | 65 | 755 | 690 | 1293 |
39 | /oradata/TODSI04.dbf | 2048 | 1971 | 77 | 680 | 603 | 1368 |
26 | /oradata/TODSD01.dbf | 2048 | 1819 | 229 | 830 | 601 | 1218 |
40 | /oradata/TODSI05.dbf | 2048 | 1976 | 72 | 609 | 537 | 1439 |
28 | /oradata/TODSD03.dbf | 2048 | 1793 | 255 | 702 | 447 | 1346 |
37 | /oradata/TODSI03.dbf | 2048 | 1946 | 102 | 450 | 348 | 1598 |
29 | /oradata/TODSD04.dbf | 2048 | 1793 | 255 | 485 | 230 | 1563 |
33 | /oradata/CTL01.dbf | 500 | 494 | 6 | 21 | 15 | 479 |
10 | /oradata/xdb01.dbf | 47 | 3 | 44 | 46 | 2 | 1 |
1 | /oradata/system01.dbf | 1040 | 6 | 1034 | 1034 | 0 | 6 |
3 | /oradata/cwmlite01.dbf | 20 | 2 | 18 | 18 | 0 | 2 |
4 | /oradata/drsys01.dbf | 20 | 10 | 10 | 10 | 0 | 10 |
36 | /oradata/OD01.dbf | 500 | 407 | 93 | 93 | 0 | 407 |
5 | /oradata/example01.dbf | 139 | 0 | 139 | 139 | 0 | 0 |
54 | /oradata/TCLKING.dbf | 5 | 0 | 5 | 5 | 0 | 0 |
56 | /oradata/undotbs03.dbf | 1000 | 996 | 4 | 4 | 0 | 996 |
55 | /oradata/HWM01.dbf | 5000 | 4963 | 37 | 37 | 0 | 4963 |
49 | /oradata/DP23.dbf | 10 | 7 | 3 | 3 | 0 | 7 |
7 | /oradata/odm01.dbf | 20 | 11 | 9 | 9 | 0 | 11 |
9 | /oradata/users01.dbf | 83 | 0 | 83 | 82 | -1 | 1 |
46 | /oradata/RPTI01.dbf | 1024 | 802 | 222 | 221 | -1 | 803 |
45 | /oradata/RPTD01.dbf | 1024 | 923 | 101 | 100 | -1 | 924 |
38 | /oradata/FBI.dbf | 200 | 79 | 121 | 120 | -1 | 80 |
对想收缩的表空间中的表及索引进行rebuild
建立测试表空间
SQL> create tablespace HWM datafile ‘/oradata/HWM01.dbf’ size 5000M;
Tablespace created;
SQL> alter tablespace HWM add datafile '/oradata/HWM02.dbf' size 5000M;
Tablespace altered
move表空间的long类型
LONG类型的数据超难管理,不能通过move来传输,也不能通过诸如insert t1 select long_col from t2的方式(或者使用游标可以解决这个问题)请注意在设计中尽量避免使用LONG类型。
检查当前表空间中的LONG类型字段。
select /*+use_hash(ds,dtc)*/ ds.tablespace_name,ds.owner||'.'||ds.segment_name,ds.segment_type, dtc.DATA_TYPE,dtc.COLUMN_NAME from dba_tab_columns dtc , dba_segments ds where dtc.TABLE_NAME = ds.segment_name and dtc.OWNER = ds.owner and ds.tablespace_name not in ('SYSTEM','CWMLITE','EXAMPLE','UNDOTBS2','HWM') and data_type = 'LONG'
tablespace | segmentname | segtype | datatype | colname |
CTL | CTL.ETL_LOG | TABLE | LONG | EXECUTE_SQL |
CTL | CTL.PLAN_TABLE | TABLE | LONG | OTHER |
DWD | DW.PLAN_TABLE | TABLE | LONG | OTHER |
CTL | OD.PLAN_TABLE | TABLE | LONG | OTHER |
FBI | FBI.PLAN_TABLE | TABLE | LONG | OTHER |
对long类型的数据处理的一个简单的方法实将LONG类型字段直接修改为LOB类型。
select /*+use_hash(ds,dtc)*/ 'alter table '||ds.owner||'.'||ds.segment_name||' modify '||dtc.COLUMN_NAME||' clob;' from dba_tab_columns dtc , dba_segments ds where dtc.TABLE_NAME = ds.segment_name and dtc.OWNER = ds.owner and ds.tablespace_name not in ('SYSTEM','CWMLITE','EXAMPLE','UNDOTBS2','HWM') and data_type = 'LONG'
修改类型语句 |
alter table CTL.ETL_LOG modify EXECUTE_SQL clob; |
alter table CTL.PLAN_TABLE modify OTHER clob; |
alter table DW.PLAN_TABLE modify OTHER clob; |
alter table OD.PLAN_TABLE modify OTHER clob; |
alter table FBI.PLAN_TABLE modify OTHER clob; |
SQL> alter table CTL.ETL_LOG modify EXECUTE_SQL clob;
Table altered
SQL> alter table CTL.PLAN_TABLE modify OTHER clob;
Table altered
SQL> alter table DW.PLAN_TABLE modify OTHER clob;
Table altered
SQL> alter table OD.PLAN_TABLE modify OTHER clob;
Table altered
SQL> alter table FBI.PLAN_TABLE modify OTHER clob;
Table altered
move表空间下的普通table及index
SQL> alter table tbname move tablespace newtbname;
Move一个表到另外一个表空间时,索引不会跟着一块move,而且会失效。在创建失效的索引之前,使用到索引的查询语句将会报错。失效的索引需要使用rebuild重创建。
Alter index index_name rebuild;
Alter index pk_name rebuild;
如果我们需要move索引到另外一个表空间,则需要使用rebuild
Alter index index_name rebuild tablespace tbs_name;
Alter index pk_name rebuild tablespace tbs_name;
select ds.tablespace_name,'alter table '||ds.owner||'.'||ds.segment_name||' move tablespace HWM;' from dba_segments ds where ds.tablespace_name not in('SYSTEM','CWMLITE','EXAMPLE','UNDOTBS2', 'HWM','XDB','WKSYS','CTXSYS','ODM_MTR','USERS','DRSYS','HTEC','HAPPYTREE') and ds.segment_type = 'TABLE';
SQL> alter table ODS.SM_PRODUCT_SPEC_SHOW move tablespace HWM;
Table altered
SQL> alter table DW.D_PRODUCT_INFO move tablespace HWM;
Table altered
select ds.tablespace_name,'alter INDEX '||ds.owner||'.'||ds.segment_name||' rebuild tablespace HWM;' from dba_segments ds where ds.tablespace_name not in('SYSTEM','CWMLITE','EXAMPLE','UNDOTBS2', 'HWM','XDB','WKSYS','CTXSYS','ODM_MTR','USERS','DRSYS','HTEC','HAPPYTREE') and ds.segment_type = 'INDEX'
…
SQL> alter INDEX CTL.IDX_TL_ADJUSTMENT_CONFIRMDATE rebuild tablespace HWM;
Index altered
SQL> alter INDEX CTL.IDX_TL_ADJUSTMENT_ORDER rebuild tablespace HWM;
Index altered
…
move表空间下的分区table及index
和普通表一样,索引也会失效,区别的仅仅是语法而已。
分区表move基本语法
如果是单级分区,则使用关键字partition,如果是多级分区,则使用subpartition替代partition。如果分区或分区索引比较大,可以使用并行move或rebuild,parallel(degree 2)。
重建全局索引
Alter index global_index rebuild;
或
Alter index global_index rebuild tablespace tbs_name;
重建局部索引
Alter table tab_name modify partition partition_name rebuild unusable local indexes;
或
Alter index local_index_name rebuild partition partition_name tablespace tbs_name;
Move分区表
select cname from ( select rownum rm,'alter table '||ds.owner||'.'||ds.segment_name||' move partition '||ds.partition_name||' tablespace HWM;' cname from dba_segments ds where ds.tablespace_name not in('SYSTEM','CWMLITE','EXAMPLE','UNDOTBS2', 'HWM','XDB','WKSYS','CTXSYS','ODM_MTR','USERS','DRSYS','HTEC','HAPPYTREE') and ds.segment_type = 'TABLE PARTITION' ) c where rm between 1 and 100;
循环执行上述语句,直到选不出结果。
SQL> alter table ODS.CR_PS_INVENTORY_ITEM move partition CR_PS_INVENTORY_ITEM_P070603 tablespace HWM;
Table altered
SQL> alter table ODS.CR_PS_INVENTORY_ITEM move partition CR_PS_INVENTORY_ITEM_P070604 tablespace HWM;
Table altered
重建全局索引
Oracle的全局索引也存储在dba_segments中,并以index标志,而且其重建方式跟普通索引一致,所以在执行忘回导入的时候需要按照move 普通表;move分区表;move全局索引;move分区索引;move lob对象的顺序进行。
重建分区索引
视图dba_part_indexes存储分区表的本地索引,查询发现当前系统中不存在本地索引,可以忽略。
select * from dba_part_indexes t where t.owner not in ('SYSTEM','SH')
move表空间下的LOB类型
在建立含有Lob字典的表时,oracle会自动为Lob字段建立两个单独的segment,一个用来存放数据(segment_type=LOBSEGMENT),另一个用来存放索引(segment_type=LOBINDEX)。默认他们会存储在和表一起的表空间。
我们对表move时,LOB类型字段和该字段索引不会跟着move,必须使用单据的语句来执行该字段的move,语法如下:
Alter table t321 move tablespace HWM;
Later table t321 move lob(en) store as (tablespace HWM);
select 'alter table '||dtc.owner||'.'||dtc.TABLE_NAME||' move lob('||dtc.COLUMN_NAME||') store as(tablespace HWM);' from dba_tab_columns dtc where dtc.OWNER in('CTL','DW','RPT','OD','ODS','TODS','FBI','DP22','DP23','TCLKING') and dtc.DATA_TYPE like '%LOB'
SQL> alter table DP22.D_KPI move lob(KPIFORM) store as(tablespace HWM);
Table altered
SQL> alter table DP22.D_KPI move lob(KPIFORMDSPN) store as(tablespace HWM);
Table altered
执行完上述操作步骤后,我们检查tablespace的空间使用情况可以发现,所有相关数据文件的hwm都已经变为0,也就是说所有的空间都已经变为未分配状态。但这时如果我们将数据文件dump出去,会发现原来的数据还在,只不过在数据字典中将其标识为未分配。
Move对象的逆顺序
普通表对象
将普通表对象和分区表对象按照其owner的不同从HWM临时表空间move到其默认的表空间中区。
select ds.tablespace_name,'alter table '||ds.owner||'.'||ds.segment_name||' move tablespace '||du.default_tablespace||';' from dba_segments ds , dba_users du where ds.owner = du.username and ds.owner in ('CTL','DW','RPT','OD','ODS','TODS','FBI','DP22','DP23','TCLKING') and ds.tablespace_name = 'HWM' and ds.segment_type = 'TABLE';
SQL> alter table TODS.CR_PARTY_RELATIONSHIP move tablespace TODSD;
Table altered
SQL> alter table TODS.CR_PARTY_RELATIONSHIP_TYPE move tablespace TODSD;
Table altered
分区表对象
select cname from ( select rownum rm,'alter table '||ds.owner||'.'||ds.segment_name||' move partition '||ds.partition_name||' tablespace '||du.default_tablespace||';' cname from dba_segments ds , dba_users du where ds.owner = du.username and ds.owner in ('CTL','DW','RPT','OD','ODS','TODS','FBI','DP22','DP23','TCLKING') and ds.tablespace_name = 'HWM' and ds.segment_type = 'TABLE PARTITION' ) c where rm between 1 and 500;
反复执行上述过程,直到没有记录可以选择。
SQL> alter table ODS.CR_PS_INVENTORY_ITEM move partition CR_PS_INVENTORY_ITEM_P080513 tablespace ODSD;
Table altered
SQL> alter table ODS.CR_PS_INVENTORY_ITEM move partition CR_PS_INVENTORY_ITEM_P080514 tablespace ODSD;
Table altered
索引对象
索引对象存储的tablespace的命令标准为username+’I’,如果类似的表空间不存在,我们就将索引数据存储到用户的默认表空间中。所以我们可以使用下面的语句将index rebuild到对应的表空间中。
select 'alter INDEX '||ds.owner||'.'||ds.segment_name||' rebuild tablespace '||nvl(dt.tablespace_name,du.default_tablespace)||';' from dba_segments ds , dba_users du, dba_tablespaces dt where ds.owner = du.username and dt.tablespace_name(+) = du.username||'I' and ds.owner in ('CTL','DW','RPT','OD','ODS','TODS','FBI','DP22','DP23','TCLKING') and ds.tablespace_name = 'HWM' and ds.segment_type = 'INDEX'
LOB类型
Lob类型数据随着table对象存储在对象owner的默认表空间中。
select 'alter table '||dtc.owner||'.'||dtc.TABLE_NAME||' move lob('||dtc.COLUMN_NAME||') store as(tablespace '||du.default_tablespace||');' from dba_tab_columns dtc,dba_users du where dtc.OWNER = du.username and dtc.OWNER in('CTL','DW','RPT','OD','ODS','TODS','FBI','DP22','DP23','TCLKING') and dtc.DATA_TYPE like '%LOB'
SQL> alter table FBI.TIME_FORMAT move lob(FORMAT) store as(tablespace FBI);
Table altered
SQL> alter table FBI.URLTABLE move lob(DETAIL) store as(tablespace FBI);
Table altered
SQL> alter table OD.PLAN_TABLE move lob(OTHER) store as(tablespace OD);
Table altered
收缩空闲表空间
首先,如果没有分配的空间不足100M,则不考虑收缩。
收缩目标:当前数据文件大小 - (没分配空间- 100M)×0.8 select /*+ ordered use_hash(a,c) */ 'alter database datafile '''||a.file_name||''' resize ' ||round(a.filesize - (a.filesize - c.hwmsize-100) *0.8)||'M;', a.filesize, c.hwmsize from ( select file_id,file_name,round(bytes/1024/1024) filesize from dba_data_files ) a, ( select file_id,round(max(block_id)*8/1024) HWMsize from dba_extents group by file_id) c where a.file_id = c.file_id and a.filesize - c.hwmsize > 100
收缩语句 | 文件大小 | 收缩目标 |
alter database datafile '/oradata/HWM02.dbf' resize 2671M; | 5000 | 1989 |
alter database datafile '/oradata/ODSD01.dbf' resize 598M; | 2048 | 136 |
alter database datafile '/oradata/ODSD02.dbf' resize 592M; | 2048 | 128 |
alter database datafile '/oradata/ODSD03.dbf' resize 591M; | 2048 | 127 |
alter database datafile '/oradata/ODSD04.dbf' resize 742M; | 2048 | 316 |
alter database datafile '/oradata/ODSD05.dbf' resize 594M; | 2048 | 130 |
alter database datafile '/oradata/ODSD06.dbf' resize 597M; | 2048 | 134 |
alter database datafile '/oradata/ODSD07.dbf' resize 598M; | 2048 | 135 |
alter database datafile '/oradata/ODSD08.dbf' resize 472M; | 1470 | 122 |
alter database datafile '/oradata/ODSD09.dbf' resize 587M; | 2048 | 122 |
alter database datafile '/oradata/ODSD10.dbf' resize 595M; | 2048 | 132 |
alter database datafile '/oradata/ODSI01.dbf' resize 507M; | 1783 | 88 |
alter database datafile '/oradata/ODSI02.dbf' resize 505M; | 1774 | 88 |
alter database datafile '/oradata/ODSI03.dbf' resize 529M; | 1772 | 118 |
alter database datafile '/oradata/ODSI04.dbf' resize 517M; | 1763 | 105 |
alter database datafile '/oradata/ODSI05.dbf' resize 525M; | 1775 | 113 |
alter database datafile '/oradata/TODSD01.dbf' resize 497M; | 1154 | 233 |
alter database datafile '/oradata/TODSD02.dbf' resize 561M; | 1485 | 230 |
alter database datafile '/oradata/TODSD03.dbf' resize 465M; | 1051 | 218 |
alter database datafile '/oradata/TODSD04.dbf' resize 431M; | 878 | 219 |
alter database datafile '/oradata/TODSD05.dbf' resize 598M; | 1542 | 262 |
alter database datafile '/oradata/TODSI01.dbf' resize 385M; | 1238 | 72 |
alter database datafile '/oradata/TODSI02.dbf' resize 365M; | 1183 | 60 |
alter database datafile '/oradata/CTL01.dbf' resize 146M; | 197 | 33 |
alter database datafile '/oradata/DWD01.dbf' resize 770M; | 2550 | 225 |
alter database datafile '/oradata/DWI01.dbf' resize 386M; | 1238 | 73 |
alter database datafile '/oradata/OD01.dbf' resize 152M; | 254 | 27 |
alter database datafile '/oradata/TODSI03.dbf' resize 288M; | 850 | 48 |
alter database datafile '/oradata/TODSI04.dbf' resize 324M; | 1034 | 46 |
alter database datafile '/oradata/TODSI05.dbf' resize 343M; | 977 | 84 |
alter database datafile '/oradata/DWI02.dbf' resize 356M; | 1094 | 72 |
alter database datafile '/oradata/DWI03.dbf' resize 366M; | 1131 | 75 |
alter database datafile '/oradata/RPTD01.dbf' resize 231M; | 365 | 98 |
alter database datafile '/oradata/RPTI01.dbf' resize 300M; | 462 | 159 |
alter database datafile '/oradata/ODSI06.dbf' resize 505M; | 1737 | 97 |
alter database datafile '/oradata/ODSD11.dbf' resize 535M; | 1757 | 129 |
alter database datafile '/oradata/undotbs03.dbf' resize 176M; | 283 | 49 |
检查磁盘当前剩余空间
$ bdf
/dev/vg01/lvol1 133120000 33173720 99166120 25% /oradata
小结
执行整个步骤之前,/oradata磁盘下的剩余空间不足6G,执行步骤之后我们看到,目前系统中有将近100G的剩余空间^_^。
效果明显。
目录 返回
首页