`
秋天的童话穷
  • 浏览: 79571 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

oracel逻辑结构—表空间

 
阅读更多

Tablespace:表空间是一个逻辑的概念,是数据文件( datafile )的容器,是数据文件在数据库中逻辑的组织形式。而数据文件真实的存在于操作系统之上 , 也可以是裸设备( ASM )。

 

常见的表空间有:

1、 system系统表空间

数据库创建时就创建,必须包含,存放数据库基本组件信息 比如基表。主要存储的是基表和数据字典,其实大家在对表、索引等数据库对象修改结构时都是在操作system 表空间里的表。如 alter 语句;

 

2、 sysaux辅助表空间

10G引入  system 太大了 . 就将部分功能组件(如 sqlplus 的工具)取出放到 sysaux 里, 属于SYSTEM 表空间的辅助表空间,独立出来的好处, SYSTEM 表空间的负荷得以减轻 . ,反复创建一些相关对象及组件引起 SYSTEM 表空间的碎片问题得以避免。

查看sysaux 表空间内的组件信息和大小

Select OCCUPANT_NAME,SPACE_USAGE_KBYTES from V$SYSAUX_OCCUPANTS;

 

3、 undotbs回退表空间

用于事务回退, 保存改前镜像块

 

4、 temp临时表空间

存放临时数据 磁盘排序或临时表

 

5、 users example

oracle提供的样本数据表空间

 

6、 用户数据表空间

用户自建

 

一、 表空间的类型

查看表空间的类型

idle> select TABLESPACE_NAME,CONTENTS from dba_tablespaces;

有:永久表空间

临时表空间

回退表空间

1、永久表空间管理

又分为:

小文件表空间( 一个表空间可以存放 1023 个文件 每个文件 4M*block_size)

基本应用都是这类 默认创建也是它

大文件表空间( 一个表空间可以存放 1 个文件 文件管理 4G*block_size)

很少使用, 不利于 IO 分散 , 容易产生争用 , 容易被 FS 限制

1)、查看:

select tablespace_name,file_id,file_name,ceil(bytes/1048567)||'M' MB from dba_data_files;

 

2)、创建小表空间

文件系统:create tablespace mytbs datafile '/PATH/file.dbf' size 10m;

裸设备:create tablespace rawtbs datafile '/dev/raw/raw1' size 4095M

 

3)、创建大文件表空间

 create bigfile tablespace bigtbs datafile '/u01/oracle/oradata/beijing/bigtbs01.dbf' size 5M;

 select tablespace_name,bigfile from dba_tablespaces;

 

二、临时表空间

    存放排序的中间结果或临时表

查看:

select tablespace_name,contents from dba_tablespaces where CONTENTS='TEMPORARY';

创建临时表空间:

create temporary tablespace NAME tempfile '' size 10M;

 

修改用户的临时表空间:

select temporary_tablespace from dba_users where username='SCOTT';

 

alter user scott temporary tablespace temp2;

 

修改数据库默认临时表空间:

alter database default temporary tablespace temp;

 

三、 回退表空间

UNDO表空间 存储的是  rollback segment

1 system 回退段 系统创建 为 system 表空间的对象提供回退

2、非系统回退段 用户创建 为用户表空间的对象提供回退

3、延迟回退段   系统创建 表空间非正常离线时自动创建 我们不能管理

回退表空间的作用:

1.交易的回退 : 没有提交的交易可以 rollback

2.交易的恢复 : 数据库崩溃时 , 将磁盘的不正确数据恢复到交易前

3.读一致性   : 被查询的记录有事务占用 , 转向回滚段找改前镜像

4.闪回数据   : 从回滚段中构造历史数据

回滚段创建的时候是空闲的,只有事务产生时候才会产生数据。

 

创建UNDO 表空间:

 create undo tablespace undo2 datafile '/u01/oracle/oradata/ora10g/undo02.dbf' size 10M;

 

管理风格:自动或手动

 

SQL> show parameter undo

 

NAME                                 TYPE        VALUE

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

undo_management                      string      AUTO

undo_retention                       integer     900

undo_tablespace                      string      UNDOTBS1

 

undo_management=AUTO 回滚表空间段的段管理模式,

自动管理:

管理员只需要备足够的表空间容量,oracle 会自动管理扩展回滚段的数量。

只能使用一个UNDO 表空间

undo_tablespace:只有在自动管理模式下才可以使用。指明使用哪个 UNDO 表空间。

查看回顾段:select segment_name,tablespace_name,status from dba_rollback_segs;

 

回滚段的名字系统自动取

system是系统回退段 ,DBA 不能管理 .

 

切换回滚表空间的时候不会影响回滚数据:

SQL> alter system set undo_tablespace=undo2;

 

undo_retention 900  :提交之后旧的镜像保持在回滚段中的时间。非强制的回退保持时间 .( 回滚空间不足老的镜像就会被覆盖 )

 

强制保持:但是对空间要求较大,要慎用。(10g 开始支持 )

alter tablespace UNDOTABS1 RETENTION GUARANTEE;

select  tablespace_name,RETENTION from dba_tablespaces;

 

手工管理UNDO:

修改方法

SYS@beijing> show parameter rollback;

NAME      TYPE  VALUE

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

fast_start_parallel_rollback      string  LOW

rollback_segments      string

transactions_per_rollback_segment    integer  5

 

默认一个回滚段可以维持5 个事务  不要放太多事务 会产生回滚段头争用 

因为段头中记录段中的块的位置   找段里的数据就要访问段头

 

改成手动

SQL> alter system set undo_management=manual scope=spfile;

SQL> startup force

由于undo_management 是非自动管理,所以要重启才可以生效。

查看undo 段:

select SEGMENT_NAME,TABLESPACE_NAME,STATUS from dba_rollback_segs;

手动创建回滚段 段会自动拓展大小 所以不需要指明

create rollback segment rbs1 tablespace undotbs1;

修改状态:alter rollback segment rbs1 online;

 

关于回滚段的知识我会在segment 中详细讲解。

 

 

五、表空间的状态

查看表空间的状态:

select tablespace_name,status from dba_tablespaces;

修改状态:

alter tablespace mytbs read write/read only/offline;

 

1、 Online(读写 ) 状态

 

2、 Readonly(只读)状态

只读表空间 只能select 查询和 drop 删除对象 不能修改 (INTSERT update delete truncate)system undotbs temp  包含活动事务的表空间都不能只读,只读表空间不可以修改表数据 但可以删除表结构 因为表结果存储在数据字典中 数据字典在 system 表空间。

 

3、 offline(离线 ) 状态

只可以删除对象(drop)  不可以 select dml truncate, 系统表空间 +default 临时 + 包含活动事务的表空间是不能离线的 , 离线状态 DBA 可以移动数据文件路径 , 离线就是冻结 将 SCN 号锁定在某一时刻

select name,checkpoint_change# open_scn,last_change# stop_scn from v$datafile;

结果:NAME      OPEN_SCN STOP_SCN

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

/u01/oracle/oradata/ora10g/system01.dbf        475662

/u01/oracle/oradata/ora10g/undotbs01.dbf         475662

/u01/oracle/oradata/ora10g/sysaux01.dbf         475662

/u01/oracle/oradata/ora10g/users01.dbf         476689   476689

/u01/oracle/oradata/ora10g/mytbs01.dbf         476652

 

 

六、表空间扩容

查看表空间大小:

select tablespace_name,sum(bytes/1048576) curr_MB,sum(MAXBYTES/1048576) MAX_MB from dba_data_files group by TABLESPACE_NAME;

结果:

TABLESPACE_NAME    CURR_MB     MAX_MB

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

SYSAUX 240 32767.9844

UNDOTBS1 25 32767.9844

USERS 25 32767.9844

SYSTEM     480 32767.9844

MYTBS 10    10

如果最大大小为空 说明不能增长。

 

 

查询当前分配大小中的剩余尺寸:

SQL> select TABLESPACE_NAME,sum(bytes/1048576) free_mb from dba_free_space group by TABLESPACE_NAME;

结果:

TABLESPACE_NAME    FREE_MB

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

UNDOTBS1     4.0625

SYSAUX       .875

USERS    24.5625

SYSTEM      6.875

MYTBS     10.875

 

扩容的方法:

1、使文件自动增长

alter database datafile '' autoextend on next 10M maxsize 4G;

alter database datafile '' autoextend off;

2、 增加新文件

alter tablespace uses add datafile '' size 5M;

alter tablespace uses drop datafile ''; /*10G才能删 有数据不能删 第一个文件不能删 */

3、 修改现有文件的大小

alter database datafile '' resize 15M;

alter database datafile '' resize 10M;

 

删除表空间和数据文件

1、 删除表空间及其内容一起删除

drop tablespace mytbs INCLUDING CONTENTS;

2、 删除表空间及其文件一起删除

drop tablespace mytbs INCLUDING CONTENTS and datafiles;

 

注意:

创建索引或主键和唯一约束时将索引指定位置存放 生产库一定要把表和索引分开存放

创建索引和带索引的约束时, 指定索引的存储位置

SQL> create index t1_ind on t1(empno) tablespace mytbs;

SQL> ALTER TABLE T1 MODIFY(ENAME constraint T1_pk primary key using index tablespace mytbs);

分享到:
评论

相关推荐

    oracle基本机构逻辑结构

    首先,Oracle数据库的逻辑结构包括了表空间和数据文件。表空间是数据库的逻辑划分,每个数据库至少有一个名为SYSTEM的表空间。表空间的主要目的是为了组织和管理数据,通过创建不同的表空间,可以将不同类型的数据...

    获取oracle表空间脚本

    在Oracle数据库中,表空间是存储空间的逻辑划分。每个表空间由一个或多个数据文件组成,并且可以包含一个或多个段(如表、索引等)。表空间用于管理数据文件的增长和收缩,并为数据库中的不同数据类型提供组织结构。...

    oracle9i逻辑结构,oracle9i逻辑结构

    Oracle 9i 逻辑结构是数据库管理系统的核心组成部分,它决定了数据如何在数据库中组织和管理。在Oracle 9i中,逻辑结构主要包括以下几个关键概念: 1. **数据库的逻辑结构**:Oracle数据库的逻辑结构是数据组织和...

    Oracle用户(user)和表空间(tablespace).pdf

    接着,表空间是 Oracle 存储结构中的重要组成部分,它由一个或多个数据文件构成,用于存储用户的数据。表空间分为多种类型,包括系统表空间(如 `SYSTEM` 和 `SYSAUX`)、回滚表空间(UNDO)、临时表空间(TEMP)...

    oracle 创建表空间命令

    表空间是数据库中用于存储数据对象(如表、索引、视图等)的逻辑结构。它将物理磁盘上的一个或多个数据文件组织成一个逻辑单元,使得数据库可以高效地管理和使用存储资源。以下是对"Oracle 创建表空间命令"以及...

    oracle数据库、表空间及数据文件之间的关系

    表空间是Oracle数据库中的一种逻辑存储单元,它是数据库中的一个概念性的分组,用于组织和管理物理存储空间。每个表空间由一个或多个数据文件组成。表空间可以进一步细分为多个段(Segment),段又可以细分为多个...

    Oracle表空间和数据文件的管理.docx

    逻辑结构主要包括数据库、表空间、段、区段和Oracle数据块,而物理结构则主要指操作系统层面的数据文件和数据块。下面是这些结构之间的关系概述: - **数据库与表空间**:每个数据库至少包含一个表空间,并且可以...

    oracle快速删除表空间

    在管理Oracle数据库时,有时需要删除不再使用的表空间,以释放磁盘空间或优化数据库结构。本篇文章将详细介绍如何在Oracle数据库中快速删除表空间,以及相关的重要知识点。 首先,理解表空间在Oracle中的角色至关...

    Oracle应用项目——使用OracleEM创建表空间.pdf

    在Oracle数据库中,表空间(Tablespace)是存储数据的主要单位,它由一个或多个数据文件组成,用于容纳数据库对象如表、索引等。在Oracle企业管理器(Oracle Enterprise Manager,简称Oracle EM)中创建表空间是...

    \Oracle 表空间与数据文件

    1. **逻辑结构**:描述了数据库如何从逻辑上组织数据。 - **Schema**:代表用户,每个Schema可以创建各种数据库对象,如表、视图、序列、函数等。 - **Tablespace**:表空间是逻辑存储单元,包含一个或多个数据...

    oracle数据库扩展表空间代码

    在Oracle数据库中,表空间是逻辑存储单元,它将物理文件映射到数据库中的逻辑结构上。表空间由一个或多个数据文件组成,每个数据文件对应于操作系统上的一个文件。通过管理表空间,可以有效地控制数据库的空间分配与...

    Oracle数据库用户、表、表空间之间关系.doc

    在Oracle的逻辑结构中,表空间是最高级别的逻辑单位,它由一个或多个数据文件组成。表空间可以分为在线和离线状态,SYSTEM表空间是系统默认的,用于存储系统数据字典、程序单元等,也可用于用户数据。用户可以使用一...

    oracle增加表空间

    表空间是Oracle数据库中逻辑存储结构的一部分,用于组织物理存储空间。下面是创建表空间的具体步骤: 1. **登录Oracle**:首先需要切换到Oracle用户并登录数据库。 ```bash su - oracle sqlplus "/as sysdba" ``...

    Oracle 表空间与数据文件

    Oracle 表空间的逻辑结构包括 Schema、逻辑结构和物理结构。Schema 是用户创建对象的组织方式,逻辑结构是 Oracle 内部管理数据库中对象的方式,物理结构是 OS block 到 datafile 的物理存储方式。逻辑结构包括 ...

    oracle数据库_实例_用户_表空间之间的关系

    Oracle 数据库实例用户表空间之间的关系 Oracle 数据库实例用户表空间之间的关系是 Oracle 数据库管理系统的核心概念。了解它们之间的关系对于数据库的设计、管理和优化至关重要。 数据库 Oracle 数据库是一个...

    Oracle数据库_实例_用户_表空间之间的关系.doc

    表空间是Oracle数据库中用于组织和管理数据存储的逻辑单元。每个表空间都与一个或多个数据文件关联,数据文件是数据库中实际存储数据的物理文件。一个表空间可以包含多个数据文件,而每个数据文件只能属于一个表空间...

    oracle表空间详解

    Oracle 表空间是 Oracle 数据库中一个非常重要的概念,它是数据库中存储空间的逻辑概念。由于 Oracle 数据库可以存储大量的数据,但是数据文件大小受操作系统的限制,而过大的数据文件对数据的存取性能影响非常大。...

    Oracle的逻辑结构、物理结构与实例.docx

    - **定义**:数据库是所有表空间的集合,是Oracle数据库系统的最高级别逻辑结构。 #### 二、Oracle的物理结构 Oracle数据库的物理结构是数据在磁盘上实际的存储方式,主要包括以下组成部分: 1. **数据文件...

    oracle逻辑结构分析

    oracle的逻辑结构包括表空间(tablespace),段(segment),区(extent),数据块(data block) oracle数据库在逻辑上是由多个表间组成的,表空间中存储的对象叫段,比如数据段,索引段,和回退段。段由区组成,区是磁盘...

Global site tag (gtag.js) - Google Analytics