Home >Database >Mysql Tutorial > Oracle 数据结构知多少(一)

Oracle 数据结构知多少(一)

WBOY
WBOYOriginal
2016-06-07 17:41:41861browse

更多精彩内容请光临www.leonarding.com《Oracle数据结构知多少(一)》一概念篇这里呢我只是把Oracle逻辑结构和物理结构所涉及到的segment段extent区block块的概

更多精彩内容请光临

《Oracle 数据结构知多少(一)》

一 概念篇

这里呢我只是把Oracle逻辑结构和物理结构所涉及到的segment段  extent区  block块的概念和相互管理简要的说明一下。

Segment段:Oracle内部常叫“段对象”,凡是分配存储空间的对象就叫段对象。既可以自动段空间管理ASSM,又可以手动段空间管理MSSM。段属性依赖于块属性。

Extent区:多个区组成一个段,区是Oracle最小的分配单元,区与区不一定是连续的,区可以分布在不同的数据文件上。

Block块:一片连续的块组成一个区,是Oracle最小的IO单元,最小的操作单元,RMAN备份/恢复最小单元,数据库块是操作系统块的整数倍。

数据I/O:由磁盘与内存之间的通道决定的,而不是由数据怎么分割决定的。分割只是善于管理,I/O方面影响不大。(例如 放在一个表空间和放在多个表空间)

一方面I/O通道导致性能下降

一方面latch争用导致性能下降


二 数据库版本

LEO1@LEO1> select * from v$version;

BANNER

--------------------------------------------------------------------------------

Oracle Database 11g Enterprise Edition Release 11.2.0.1.0 - 64bit Production

PL/SQL Release 11.2.0.1.0 - Production

CORE    11.2.0.1.0      Production

TNS for Linux: Version 11.2.0.1.0 - Production

NLSRTL Version 11.2.0.1.0 - Production

三 实验篇

1.查看一个表空间,有多少个extents,多少blocks,多少空余空间。

查看表空间空间使用情况,我想这是100%DBA每天都要做的工作,现在我把自己常用的表空间查询语句测试一下。

LEO1@LEO1> select df.tablespace_name "表空间名",totalspace "总空间M",freespace "剩余空间M",round((1-freespace/totalspace)*100,2) "使用率%"

from

(select tablespace_name,round(sum(bytes)/1024/1024) totalspace from dba_data_files group by tablespace_name) df,

(select tablespace_name,round(sum(bytes)/1024/1024) freespace from dba_free_space group by tablespace_name) fs

where df.tablespace_name=fs.tablespace_name order by df.tablespace_name ;   

表空间名                 总空间M     剩余空间M     使用率%

--------------------------------------------------------------------------------------------------------------------

LEO1                     400           248           38       业务表空间

SYSAUX                   610           38            93.77

SYSTEM                   710           18            97.46

UNDOTBS1                165           134           18.79

UNDOTBS2                100           0             100

USERS                    5             4             20

查看一个表空间,有多少个extents,多少blocks呢?

LEO1@LEO1> select tablespace_name,file_id,extent_id,block_id,blocks from dba_extents where tablespace_name='LEO1' order by extent_id;

TABLESPACE_NAME                   FILE_ID  EXTENT_ID   BLOCK_ID     BLOCKS

------------------------------ ---------- ---------- ---------- ----------

LEO1                                    5         22      39040        128

LEO1                                    5         22      40192        128

LEO1                                    5         22      41344        128

LEO1                                    5         22      42752        128

LEO1                                    5         22       8576        128

Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn