Oracle怎么压缩表空间
你可以使用 Oracle 数据库中的 ALTER TABLESPACE 语句来压缩表空间。以下是一些基本步骤:
1. 首先,使用以下语句检查表空间的当前大小:
SELECT tablespace_name, ROUND(SUM(bytes) / 1024 / 1024, 2) AS size_mb FROM dba_segments WHERE tablespace_name = 'your_tablespace_name' GROUP BY tablespace_name;
2. 使用以下语句收缩表空间:
ALTER TABLESPACE your_tablespace_name SHRINK SPACE CASCADE;
这将压缩表空间并将其大小减小到最小值。
3. 最后,再次运行第一步中的查询,以确保表空间已压缩并且大小已减小。
请注意,压缩表空间可能需要一些时间,具体取决于表空间的大小和数据库的负载。因此,在执行此操作之前,请确保已备份数据库以防万一。
oracle 表空间压缩
SELECT --B.file_name "文件名", A.TABLESPACE_NAME "表空间名", TOTAL "表空间大小", FREE "表空间剩余大小", (TOTAL - FREE) "表空间使用大小", TOTAL / (1024 * 1024 * 1024) "表空间大小(G)", FREE / (1024 * 1024 * 1024) "表空间剩余大小(G)", (TOTAL - FREE) / (1024 * 1024 * 1024) "表空间使用大小(G)", ROUND((TOTAL - FREE) / TOTAL, 4) * 100 "使用率 %" FROM (SELECT TABLESPACE_NAME, SUM(BYTES) FREE FROM DBA_FREE_SPACE GROUP BY TABLESPACE_NAME) A, (SELECT TABLESPACE_NAME, -- file_name, SUM(BYTES) TOTAL FROM DBA_DATA_FILES GROUP BY TABLESPACE_NAME/*,file_name*/) B WHERE A.TABLESPACE_NAME = B.TABLESPACE_NAME; SELECT V.FI "文件ID", V.TN "表空间", V.FN "物理文件名", V.BS "总字节数 ", V.BS/ (1024 * 1024 * 1024) "总字节数(G)", V.P "剩余百分比", V.U "已使用", V.U/ (1024 * 1024 * 1024) "已使用(G)", V.NS/ (1024 * 1024 * 1024) " 剩余(G)" FROM ( select b.file_id FI, b.tablespace_name TN, b.file_name FN, b.bytes BS, (b.bytes-sum(nvl(a.bytes,0))) U, sum(nvl(a.bytes,0)) NS, sum(nvl(a.bytes,0))/(b.bytes)*100 P from dba_free_space a,dba_data_files b where a.file_id=b.file_id group by b.tablespace_name,b.file_name,b.file_id,b.bytes ) V order by V.TN ; select file#,name from v$datafile; --- 1. 查该数据文件中数据处在最大位置 select max(block_id) from dba_extents where file_id=6; --- 查出最大块位置 5755M select 736640*8/1024 from dual; --- ALTER DATABASE datafile 'H:\ORACLE11G\APP\ADMIN\ORADATA\ORCL\SYNC_PLUS_1_02.DBF' RESIZE 3000M; -- alter database datafile 7 resize 5755M;
版权声明:除特别声明外,本站所有文章皆是本站原创,转载请以超链接形式注明出处!