Oracle表空间介绍

1)Oracle表空间是一个逻辑的概念,它在物理上是不存在的

表空间属性:

一个数据库可以包含多个表空间,一个表空间只能属于一个数据库

一个表空间包含多个数据文件,一个数据文件只能属于一个表空间

Oracle表空间介绍_第1张图片

 

2)Oracle数据库存储结构

Oracle表空间介绍_第2张图片

 

 

从逻辑上看,一个数据库(database)下面可以分多个表空间(tablespace),一个表空间下可以分多个段(segment),一个表要占一个段,一个索引也要占一个段。一个段由多个区间(extent)组成,一个区间又有一组连续的数据块(data block)组成。这连续的数据库在逻辑上是连续的,有可能在物理磁盘上是分散的。

     从物理上看,一个表空间由多个数据文件组成,数据文件是实实在在的磁盘上的文件,这些文件是由Oracle数据库操作系统的block组成的。

 

 

 

 

 

创建表空间

--Oracle表空间(tablespaces)

select * fromv$tablespace;             --查看表空间

select * fromdba_data_files;           --查看数据表空详细文件

select * fromdba_temp_files;           --查看临时表空间详细文件

select * fromv$tempfile;

create tablespacepaul datafile 'C:\APP\ADMINISTRATOR\ORADATA\ORCL11C\paul02.DBF' size 20m;      --创建表空间paul

create undotablespace undo datafile 'C:\APP\ADMINISTRATOR\ORADATA\ORCL11C\undo01.DBF' size20m; --创建undo类型的表空间

create temporarytablespace user_temp tempfile 'C:\APP\ADMINISTRATOR\ORADATA\ORCL11C\temp02.DBF'size 20m

extent managementlocal; --创建临时表空间

create temporarytablespace tmp tempfile 'C:\APP\ADMINISTRATOR\ORADATA\ORCL11C\tmp01.DBF' size4m ;--创建临时表空间

 

 

 

 

 

 

 

--删除表空间

drop tablespacetmp;                    --删除表空间后,保留datafiles文件

drop tablespace paulincluding contents; --删除表空间中的segments , ***.DBF文件没有删除

drop tablespace paulincluding contents and datafiles; --删除表空间中的segment和datafiles

drop tablespaceuser_temp including contents and datafiles cascade constraints; --删除所有与该空间相关的完整性约束条件

--查看表空间使用率

SELECT SUM(bytes) /(1024 * 1024) AS free_space, tablespace_name

FROM dba_free_space

GROUP BYtablespace_name;

SELECTa.tablespace_name,

a.bytes total,

b.bytes used,

c.bytes free,

(b.bytes * 100) /a.bytes "% USED ",

(c.bytes * 100) /a.bytes "% FREE "

FROM sys.sm$ts_availa, sys.sm$ts_used b, sys.sm$ts_free c

WHEREa.tablespace_name = b.tablespace_name

AND a.tablespace_name= c.tablespace_name;

--查看所有的表

select * fromall_tables;

--查看指定用户下的表的详情 包括 所属表空间 表大小等

select * fromall_tables where OWNER = 'TESTUSER' AND TABLE_NAME = 'TEST10W';

SELECT  SEGMENT_NAME, BYTES/1024/1024/1024 FROMUSER_segments WHERE SEGMENT_NAME = 'TEST10W';

--使用block块方法查看指定用户下表的大小(单位M)

select table_name,blocks*8192/1024/1024from all_tables where OWNER = 'TESTUSER' AND TABLE_NAME = 'TEST10W';

 

select SEGMENT_NAME,BYTES/1024/1024/1024 from USER_segments;

SELECT  * FROM USER_segments;

--在指定用户下查找表大下 通过segment大小

SELECT  SEGMENT_NAME, BYTES/1024/1024 FROMUSER_segments WHERE SEGMENT_NAME = 'TEST10W';

 

 

-- BYTE方法计算表大小 (G)  1000w 51列 15G

select SEGMENT_NAME,BYTES/1024/1024/1024 from user_segments ;

selecttable_name,blocks*8192/1024/1024/1024 size_me from user_tables

where table_name ='TEST10W';

 

--block方法计算表大小 单位(M)

selecttable_name,blocks*8192/1024/1024 size_me from user_tables;--计算用户表大小

selecttable_name,blocks*8192/1024/1024 size_me from user_tables;

where table_name ='TEST10W';  --test为查找的表名(大写),user_tables用户下的表

 

--查看指定用户下视图、触发器、索引详情

select * fromall_triggers where owner='TESTUSER';  -- 所有触发器触发器

select * fromall_views where owner='TESTUSER';     --所有视图

select * fromall_tables where owner='TESTUSER';     --

select * fromall_procedures where owner='TESTUSER'; --存储过程

selectsegment_name,bytes/1024/102/1024 from dba_segments where owner='TESTUSER';  --表中字段segment_name包含表和索引

 

select * from dba_tablespaces;

select * from dba_data_files;

alter tablespace system add datafile '路径/system0*.dbf' size 10g autoextend on next 500M maxsize 30g

 

 

 

 

 

 

参考:http://liujianshiwo.iteye.com/blog/1988094

 

 

 

 

 

 

 


 

 

 

 

 

 

 

 

 

你可能感兴趣的:(Oracle)