--找出目前TEST表空间最大的block_id
SELECT MAX(block_id)FROM dba_extentsWHERE tablespace_name = 'TEST'
MAX(BLOCK_ID)
-------------
136
--计算目前最大块的段所占用的空间(该数据库的block大小是8192)
show parameter db_block_size
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
db_block_size integer 8192
SELECT 136*8192/1024/1024 "MAX(M)" FROM dual
MAX(M)
----------
1.0625
--查看表空间物理文件的名称及大小
set line 200
col file_name for a50
select
tablespace_name, file_id, file_name,round(bytes/(1024*1024),0)
"total_space(M)"from dba_data_fileswhere tablespace_name ='TEST'
TABLESPACE_NAME FILE_ID FILE_NAME total_space(M)
------------------------------ ---------- -------------------------------------------------- --------------
TEST 6 /u01/oradata/source/test01.dbf 100
4
--resize表空间
SQL>ALTER DATABASE DATAFILE '/u01/oradata/source/test01.dbf' RESIZE 1M
ALTER DATABASE DATAFILE '/u01/oradata/source/test01.dbf' RESIZE 1M*ERROR at line 1:
ORA-03214: File Size specified is smaller than minimum required
SQL>ALTER DATABASE DATAFILE '/u01/oradata/source/zfl01.dbf' RESIZE 2M
Database altered.
alter table 表名 move和alter table 表名 shrink space都可以用来进行段收缩,降低高水位HWM,也都可以用来消除行链接(Row Chaining)和行迁移(Row Migration),估计效果不明显,看你的数据库用途是干什么的(如果是数据仓库肯定是不明显的)。
1、当表空间里没有数据时:alter database datafile ‘/data1/oracle/data_201708.dbf’ resize 1G
alter database tempfile ‘/u02/oracle/oradata/orcl/temp01.dbf’ resize 1G
2、查询有哪些表空间及相应数据文件
col name format a50
set linesize 200
select a.name,b.name from v$tablespace a ,v$datafile b where a.TS#=b.TS#
或者
col file_name format a50
select TABLESPACE_NAME,FILE_NAME from dba_data_files order by TABLESPACE_NAME
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)