union all
select tablespace_name, sum(bytes) / 1024 / 1024 / 1024||'GB' from dba_temp_files group by tablespace_name order by 2;
--这个是一个比较各个空间的使用情况的查询语句 select tablespace_name,
sum(bytes) / 1024 / 1024 / 1024 || ' GB', 'user_segments' from user_segments group by tablespace_name union all
select tablespace_name,
sum(bytes) / 1024 / 1024 / 1024 || ' GB', 'dba_segments' from dba_segments
group by tablespace_name union all
select tablespace_name,
sum(bytes) / 1024 / 1024 / 1024 || ' GB', 'dba_data_files' from dba_data_files
group by tablespace_name union all
select tablespace_name,
sum(bytes) / 1024 / 1024 / 1024 || ' GB', 'dba_temp_files' from dba_temp_files group by tablespace_name union all
select tablespace_name,
sum(bytes) / 1024 / 1024 / 1024 || ' GB', 'dba_free_space' from dba_free_space group by tablespace_name order by 1;
--如何建立表空间
表空间的建立有如下几种方式 --Create tablespace in Oracle
--The create tablespace statement is used to create a tablespace. -- --Permanent tablespace--
create tablespace ts_something logging
datafile '/dbf1/ts_sth.dbf' size 32m
autoextend on
next 32m maxsize 2048m extent management local;
create tablespace data datafile '/home/oracle/databases/ora10/data.dbf' size 10M autoextend on maxsize 200M extent management local uniform size 64K;
--Temporary tablespace--
create temporary tablespace temp_mtr tempfile '/dbf1/mtr_temp01.dbf' size 32m
autoextend on
next 32m maxsize 2048m extent management local;
Note, a temporary tablespace has tempfiles, not datafiles. --Undo tablespace--
create undo tablespace ts_undo datafile '/dbf/undo.dbf' size 100M; Misc
More than one datafile can be created with a single create tablespace command: create tablespace ts_sth
datafile 'c:\\xx\\sth_01.dbf' size 4M autoextend off, 'c:\\xx\\sth_02.dbf' size 4M autoextend off, 'c:\\xx\\sth_03.dbf' size 4M autoextend off logging
extent management local;
--如何更改表空间的大小
有两种方式:1--增加数据文件 2--修改数据文件大小
alter database datafile '/ocsdata/ahocs/OCS_TBS_CUST_02.dbf' resize 2047M;
alter tablespace ocs_tbs_cust add datafile '/ocsdata/ahocs/OCS_TBS_CUST_02.dbf' size 2047M;
其他表空间问题
用delete 方法删掉表中的数据后,发现数据所占的空间释放不了,怎么办?
需要你对 high water mark (高水位) 有一个认识 除了truncate表和drop表外
要释放空间,就只能重新建立表(exp/imp等)或者:
Alter table table_name move tablespace tab_space_name; 把表移动到其他表空间,这样索引会失效的 oracle的数据空间是只能增大,不能减小的
Oracle表空间小知识
Oracle表空间,底层以data_file文件形式存放,可以定义一个数据库能打开多少个数据文件,一个表空间可以有1到多个数据文件,一个数据文件只能隶属于一个表空间。 建表时:
1、指定表空间 2、指定扩展大小
普通表只能建在一个表空间,分区表可以建在多个表空间上。
delete只能删除数据,还占着表空间,用truncate命令,但truncate没有条件。
如何将表移动表空间?
ALTER TABLE TABLE_NAME MOVE TABLESPACE_NAME;
如何将索引移动表空间?
ALTER INDEX INDEX_NAME REBUILD TABLESPACE TABLESPACE_NAME;
查询表空间信息?
SELECT * FROM DBA_DATA_FILES;
如何查看各个表空间占用磁盘情况? SQL> col tablespace format a20 SQL> select
b.file_id 文件ID号,
b.tablespace_name 表空间名, b.bytes 字节数,
(b.bytes-sum(nvl(a.bytes,0))) 已使用, sum(nvl(a.bytes,0)) 剩余空间,
sum(nvl(a.bytes,0))/(b.bytes)*100 剩余百分比 from dba_free_space a,dba_data_files b where a.file_id=b.file_id
group by b.tablespace_name,b.file_id,b.bytes order by b.file_id;
事务要求的回滚段空间不够,表现为表空间用满(ORA-01560错误),回滚 段扩展到达参数MAXEXTENTS的值(ORA-01628)的解决办法.
向回滚段表空间添加文件或使已有的文件变大;增加MAXEXTENTS的值。
如何监控表空间的I/O 比例?
select B.tablespace_name name,B.file_name \A.phyblkrd pbr,A.phywrts pyw, A.phyblkwrt pbw from v$filestat A, dba_data_files B where A.file# = B.file_id order by B.tablespace_name;
如何知道表在表空间中的存储情况?
select segment_name,sum(bytes),count(*) ext_quan from dba_extents
where tablespace_name='&tablespace_name' and segment_type='TABLE' group by tablespace_name,segment_name;
如何知道索引在表空间中的存储情况? select segment_name,count(*)
from dba_extents where segment_type='INDEX' and owner='&owner' group by segment_name;
DBA_TABLESPACES 所有表空间的描述.
V$TABLESPACE
控制文件中表空间的信息
V$TEMP_EXTENT_MAP
显示所有临时表空间的每一个单元的状态信息.
V$TEMP_SPACE_HEADER
显示每一个临时表空间中每一个文件的聚集信息,涉及每个空间首部中当前使用多少空间和有多少自由空间.
USER_TABLESPACES 可存取的表空间的描述.
USER_TS_QUOTAS 用户的表空间限额.
DATABASE_PROPERTIES
列出当前缺省的临时表空间的名称.
DBA_FREE_SPACE
列出所有表空间中的空闲分区.
DBA_FREE_SPACE_COALESCED 包含表空间中合并空间的统计数据
DBA_TS_QUOTAS
所有用户的表空间的限额.
DBA_UNDO_EXTENTS
在撤消表空间的每个范围的提交时间.
USER_FREE_SPACE
用户可存取表空间中的空闲范围.
TS_PITR_CHECK
提供可能禁止表空间及时点恢复继续的依赖或约束信息
TS_PITR_OBJECTS_TO_BE_DROPPED
列出作为执行表空间及时点恢复的结果而丢失的所有对象.
Oracle高水位标志的概念 Oracle高水位标志的概念
来源:linux宝库 作者:linux宝库 发布时间:2007-09-30
Oracle高水位标志: high-water mark
能够用以下几点对high-water mark进行理解
1.指一个表中曾被用过的最后一个块
2.假如有数据被插入表,high-water mark 就移到到被使用的最后一个块
3.假如有数据被删除,high-water mark的位置不会变
4.high-water mark被储存在表的段头(segment header of the table)
5.当对表执行全表扫描时,oracle server 被任何的块直到high-water mark
另外我的理解如下,
1 假如为表分配了大量的extents , 但这些extent 还没使用能够手工收回。并且有如下两种情况