ORACLE管理存储结构之物理机构+逻辑结构【weber出品】
一、数据库的存储结构有物理结构和逻辑结构组成的
物理结构:物理上,oracle是由一些操作系统文件组成的
SQL> select name from v$datafile; NAME
--------------------------------------------------------------------------------
/u01/app/oracle/oradata/orcl/system01.dbf
/u01/app/oracle/oradata/orcl/undotbs01.dbf
/u01/app/oracle/oradata/orcl/sysaux01.dbf
/u01/app/oracle/oradata/orcl/users01.dbf
/u01/app/oracle/oradata/orcl/example01.dbf
如何更好的访问和管理这些文件以及文件中的数据呢?
必须使用逻辑方法,比如表就是一种逻辑方式
逻辑结构:从逻辑上分,一个oracle数据库是由多个表空间组成的
表空间的作用:根据实际的需要,对物理文件进行分组,比如系统数据单独放到一个表空间中,用户数据可以放到单独的
一个表空间中
数据库中有哪些表空间?
SQL> col ts for a15
SQL> col file_name for a45
SQL> / SQL> select tablespace_name ts,file_id,file_name from dba_data_files; TS FILE_ID FILE_NAME
--------------- ---------- ---------------------------------------------
USERS /u01/app/oracle/oradata/orcl/users01.dbf
SYSAUX /u01/app/oracle/oradata/orcl/sysaux01.dbf
UNDOTBS1 /u01/app/oracle/oradata/orcl/undotbs01.dbf
SYSTEM /u01/app/oracle/oradata/orcl/system01.dbf
EXAMPLE /u01/app/oracle/oradata/orcl/example01.dbf
SYSTEM:系统表空间,存储系统数据,比如数据字典信息,oracle预定义的包
SYSAUX:系统辅助表空间,是oracle10g新增加的一个表空间,要来分担SYSTEM表空间的压力,主要存储
自动性能诊断数据
UNDOTBS1:undo表空间,主要是存储undo数据(是数据被修改之前的原值)
USERS:用户表空间,主要是存储普通用户的数据
EXAMPLE:示例表空间,比如hr、oe等示例方案的数据
段:表空间从逻辑上是由段组成的,在创建对象的时候,如果这个对象需要空间,oracle都会为这个对象分配一个段
查看当前数据库中的段的类型:
SQL> select distinct segment_type from dba_segments; SEGMENT_TYPE
------------------
LOBINDEX
INDEX PARTITION
TABLE PARTITION
NESTED TABLE
ROLLBACK
LOB PARTITION
LOBSEGMENT
INDEX
TABLE
CLUSTER
TYPE2 UNDO
从以上的输出可以看出:表、索引需要段
区:段是由区组成的,区是为段进行空间分配的单位,当段的空间不足的时候,oracle会以区为单位为段分配空间
oracle数据块:一个区是由连续的n个oracle数据块组成的
os块:一个oracle数据块是由n个连续的os块组成的
oracle最小的I/O单位是一个oracle数据块
实验:
在a会话:
SQL> create table t as select * from emp; Table created. SQL> insert into t select * from t; /
---不停的翻倍
在b会话:
查看区的分配以及区的大小:
SQL> col owner for a5
SQL> col segment_name for a14
SQL> set linesize SQL> select owner,segment_name,segment_type,extent_id,file_id,blocks
from dba_extents where owner='SCOTT' and segment_name='T'; SQL> / OWNER SEGMENT_NAME SEGMENT_TYPE EXTENT_ID FILE_ID BLOCKS
----- -------------- ------------------ ---------- ---------- ----------
SCOTT T TABLE SQL> / OWNER SEGMENT_NAME SEGMENT_TYPE EXTENT_ID FILE_ID BLOCKS
----- -------------- ------------------ ---------- ---------- ----------
SCOTT T TABLE
SCOTT T TABLE select owner,segment_name,segment_type,extent_id,file_id,blocks,block_id
from dba_extents where owner='SCOTT' and segment_name='T' OWNER SEGMENT_NAME SEGMENT_TYPE EXTENT_ID FILE_ID BLOCKS BLOCK_ID
----- -------------- ------------------ ---------- ---------- ---------- ----------
SCOTT T TABLE
SCOTT T TABLE SQL> / .
.
. OWNER SEGMENT_NAME SEGMENT_TYPE EXTENT_ID FILE_ID BLOCKS BLOCK_ID
----- -------------- ------------------ ---------- ---------- ---------- ----------
SCOTT T TABLE
SCOTT T TABLE
SCOTT T TABLE
SCOTT T TABLE
SCOTT T TABLE
SCOTT T TABLE
SCOTT T TABLE
SCOTT T TABLE
SCOTT T TABLE
SCOTT T TABLE
SCOTT T TABLE OWNER SEGMENT_NAME SEGMENT_TYPE EXTENT_ID FILE_ID BLOCKS BLOCK_ID
----- -------------- ------------------ ---------- ---------- ---------- ----------
SCOTT T TABLE
SCOTT T TABLE
SCOTT T TABLE
SCOTT T TABLE
SCOTT T TABLE
SCOTT T TABLE rows selected.
手动为段分配区:
SQL> create table e as select * from emp; Table created. SQL> desc user_extents
Name Null? Type
----------------------------------------- -------- ----------------------------
SEGMENT_NAME VARCHAR2()
PARTITION_NAME VARCHAR2()
SEGMENT_TYPE VARCHAR2()
TABLESPACE_NAME VARCHAR2()
EXTENT_ID NUMBER
BYTES NUMBER
BLOCKS NUMBER select segment_name,segment_type,extent_id,blocks from user_extents where segment_name='E' SEGMENT_NAME SEGMENT_TYPE EXTENT_ID BLOCKS
-------------------- ------------------ ---------- ----------
E TABLE SQL> alter table e allocate extent; Table altered. SQL> select segment_name,segment_type,extent_id,blocks from user_extents where segment_name='E'; SEGMENT_NAME SEGMENT_TYPE EXTENT_ID BLOCKS
-------------------- ------------------ ---------- ----------
E TABLE
E TABLE SQL> alter table e deallocate unused; Table altered. SQL> select segment_name,segment_type,extent_id,blocks from user_extents where segment_name='E'; SEGMENT_NAME SEGMENT_TYPE EXTENT_ID BLOCKS
-------------------- ------------------ ---------- ----------
E TABLE SQL> conn /as sysdba
SQL> alter tablespace users add datafile '/u01/app/oracle/oradata/orcl/users02.dbf' size 100M; SQL> conn scott/tiger
Connected. alter table e allocate extent(size 1M datafile '/u01/app/oracle/oradata/orcl/users02.dbf') SQL> select segment_name,segment_type,extent_id,blocks from user_extents where segment_name='E'; SEGMENT_NAME SEGMENT_TYPE EXTENT_ID BLOCKS
-------------------- ------------------ ---------- ----------
E TABLE
E TABLE
E TABLE
E TABLE
E TABLE
E TABLE
E TABLE
E TABLE
E TABLE
E TABLE
E TABLE SEGMENT_NAME SEGMENT_TYPE EXTENT_ID BLOCKS
-------------------- ------------------ ---------- ----------
E TABLE
E TABLE
E TABLE
E TABLE
E TABLE
E TABLE rows selected. SQL> conn /as sysdba
Connected.
SQL> col owner for a5
SQL> col segment_name for a14
SQL> set linesize select owner,segment_name,segment_type,extent_id,file_id,blocks,block_id
* from dba_extents where owner='SCOTT' and segment_name='E'
SQL> / OWNER SEGMENT_NAME SEGMENT_TYPE EXTENT_ID FILE_ID BLOCKS BLOCK_ID
----- -------------- ------------------ ---------- ---------- ---------- ----------
SCOTT E TABLE
SCOTT E TABLE
SCOTT E TABLE
SCOTT E TABLE
SCOTT E TABLE
SCOTT E TABLE
SCOTT E TABLE
SCOTT E TABLE
SCOTT E TABLE
SCOTT E TABLE
SCOTT E TABLE OWNER SEGMENT_NAME SEGMENT_TYPE EXTENT_ID FILE_ID BLOCKS BLOCK_ID
----- -------------- ------------------ ---------- ---------- ---------- ----------
SCOTT E TABLE
SCOTT E TABLE
SCOTT E TABLE
SCOTT E TABLE
SCOTT E TABLE
SCOTT E TABLE SQL> alter table scott.e deallocate unused; Table altered. SQL> select owner,segment_name,segment_type,extent_id,file_id,blocks,block_id
from dba_extents where owner='SCOTT' and segment_name='E'; OWNER SEGMENT_NAME SEGMENT_TYPE EXTENT_ID FILE_ID BLOCKS BLOCK_ID
----- -------------- ------------------ ---------- ---------- ---------- ----------
SCOTT E TABLE
ORACLE管理存储结构之物理机构+逻辑结构【weber出品】的更多相关文章
- ORACLE数据库存储结构简介(转)
首先,oracle数据库的存储结构可以分为逻辑存储结构和物理存储结构,对于这两种存储结构,oracle是分别进行管理的. 逻辑存储结构:oracle内部的组织和管理数据的方式. 物理存储结构:o ...
- Oracle 逻辑存储结构
一.总述 逻辑存储结构是 Oracle 数据库存储结构的核心内容,对 Oracle 数据库的所有操作都会涉及逻辑存储结构.逻辑存储结构是从逻辑的角度分析数据库的组成,是对数据存储结构在逻辑概念上的划分 ...
- oracle逻辑存储结构
oracle数据库管理系统有三个重要的概念:实例.数据库.数据库服务器.oracle数据库的存储结构可以分为逻辑存储结构和物理存储结构.逻辑存储结构用于描绘Oracle内部组织和管理数据的方式,而物理 ...
- oracle整体结构-内存结构、物理结构、逻辑结构、进程
Oracle的体系结构大体上分为两部分:Instance(实例)和Database(数据库). Instance(实例) :在Oracle Instance中主要包含了SGA以及一些进程(例如:PMO ...
- ORACLE数据库存储结构
一.数据块 Oracle对数据库数据文件中的存储空间进行管理的单位是数据块.数据块是数据库中最小的(逻辑)数据单位,是最小的I/O单位.与数据块对应的,所有数据在操作系统级的最小物理存储单位是字节.每 ...
- Oracle的存储的三大物理文件
分享一下我老师大神的人工智能教程!零基础,通俗易懂!http://blog.csdn.net/jiangjunshow 也欢迎大家转载本篇文章.分享知识,造福人民,实现我们中华民族伟大复兴! 一. ...
- oracle的存储结构
表空间 当一个用户被创建以后,随之就要为用户分配数据存储的空间,这在oracle中成为“表空间”(Tablespace). 在数据库中创建用户时,基于应用性能和管理的考虑,最好为不同的用户创建独立的表 ...
- ORACLE SQL单行函数(一)【weber出品必属精品】
1.SUBSTR:求父串中的子串 SUBSTR('HelloWorld',1,5) 1:代表子串的起始位置,如果为正,正数,如果为负,倒数 5:代表字串的终止位置,只能向右数,可以省略,如果省略就是数 ...
- ORACLE SQL单行函数(三)【weber出品必属精品】
16.L:代表本地货币符,这个和区域有关.这个时候我们想来显示一下人民币的符号:¥ $ vi .bash_profile ---写入如下内容: export NLS_LANG='SIMPLIFIED ...
随机推荐
- Rand
我看了下网上,是这样的:rand()随机产生一个数(0-65535),加上%后,就是对其它数求余,求余产生的数取决于求余的数.比如,rand()%20;意思是利用rand()的返回值(一个0-6553 ...
- jQuery的map()与jQuery.map()总结
请注意他们不是同一个函数.前者是jQuery对象的实例方法(即$.fn.map),后者是一个仅仅挂在jQuery对象下的静态方法(即$.map). 他们用法的异同:map()的返回值是包裹了一个Arr ...
- 【结构型】Bridge模式
桥接模式是为了将对象的抽象与实现分离,使得它们可以独立变化.简简单单的一句话,却已经是站在了更高抽象层面上来看待.设计.解决问题.平常我们多是对具体问题进行分析.抽象,然后就开始设计,这对多数情况下基 ...
- C 简单单元测试框架
大约2年前,仿照GTEST写了个简单的C++单元测试框架. http://www.cnblogs.com/imlgc/archive/2012/02/09/2344506.html 后来用C写后台程序 ...
- Dedecms v5.7包含上传漏洞利用
Title:Dedecms v5.7包含上传漏洞利用 --2012-09-21 10:16 注册,登录,免邮箱验证. up.htm ---------------------------------- ...
- 3个QT新闻网,2个发烧友网站
http://planet.qt.io/ http://blog.basyskom.com/2015/introducing-qtopcua/ http://www.qtworldsummit.com ...
- windows 10是如何做到全平台统一的?
1.EXE本身就是个容器,它可以在ARM平台上包含ARM的native code执行,也可以在x86平台上包含x86的native code执行,本质上无差别(所以麻烦那些说EXE不能在ARM平台上运 ...
- Linux企业级项目实践之网络爬虫(26)——线程池
一旦有一个抓取请求开始,就创建一个新的线程,由该线程执行任务,任务执行完毕之后,线程就退出.这就是"即时创建,即时销毁"的策略.尽管与创建进程相比,创建线程的时间已经大大的缩短,但 ...
- hdu-1598
思路: 首先如果想到了Kruskal算法,那么下一步我们可能马上会想:那我们就从头开始写这个算法吧.然后一写就很容易发现一个问题——如果按照正常的Kruskal算法来做,那么start到end的舒适度 ...
- APP纯黑盒测试---某些可以试试的操作
一.多次快速点击一处功能入口: 该测试方法可以在某些应用中打开俩次目标界面,举一些具体一点的例子: 1.比如现在很多APP需要登陆,如果打开了俩次登录页面,就容易造成登录成功后应用跳转界面又是登录界面 ...