Oracle学习笔记一 8-9

表空间和数据文件

Oracle逻辑上将数据存储在表空间中,物理上将数据存储在数据文件中。

表空间 

        一次只能属于一个数据库

        由一个或多个数据文件组成

        是否进一步划分为逻辑存储单元

数据文件: 

        只能属于一个表空间和一个数据库

        是模式对象数据的存储库

Oracle数据库的存储结构

表空间的类型

创建表空间

创建表空间的命令如下:

        CREATE TABLESPACE

   

表空间中的空间管理

        本地管理表空间:

                空闲区段在表空间中管理。

                位图用于记录空闲区段。

                每个位对应一个或一组块。

                位值表示空闲或已使用。

        Dictionary-managed表空间:

                空闲区段由数据字典管理。

                在分配或释放区段时更新相应的表。

Bit and Byte

Dictionary-Managed TS

区段在数据字典中进行管理。

存储在表空间中的每个段可以有不同的存储子句。

需要合并。
 

CREATE TABLESPACE userdata

DATAFILE '/u01/oradata/userdata01.dbf'

SIZE 500M EXTENT MANAGEMENT DICTIONARY

DEFAULT STORAGE

(initial 1M NEXT 1M PCTINCREASE O);

本地管理表空间

减少了数据字典表上的争用,

在空间分配或重新分配时不会产生撤销

不需要合并

CREATETABLESPACE userdata
DATAFILE '/u01/oradata/userdata01.dbf'SIZE500MEXTENT MANAGEMENT LOCAL UNIFORM SIZE 128K;

迁移DM SYSTEM TS

将字典管理的SYSTEM表空间迁移到本地管理:

DBMS SPACEADMIN.

TABLESPACE MIGRATETO LOCAL ( 'sYSTEM ' );

移动前的准备

我们对数据库进行完整备份。

确保数据库有一个默认的临时表空间,而不是SYsTEM。

临时表空间是通过CREATE TEMPORARYTABLESPACE命令创建的。3.在字典管理的表空间中消除任何撤消(回滚)段。

 在本地管理的表空间中至少应该有一个在线undo段,或者undo表空间应该是在线的。

除了包含undo空间和默认临时表空间的表空间外,所有表空间都应该设置为READ ONLY模式。

以受限模式启动实例。

迁移SYSTEM表空间:

DBMS_SPACE_ADMIN.TABLESPACE_MIGRATE_TO_LOCAL('SYSTEM');

Undo Tablespace

用于存储undo段

不能包含任何其他对象

区段是本地管理的

只能使用DATAFILE和EXTENT管理子句
 

CREATE UNDO TABLESPACE undo1

DATAFILE'/u01/oradata/undo01.dbf' SIZE 40M;

Temporary Tablespaces

用于排序操作

能被多个用户共享吗

不能包含任何永久对象

建议使用本地管理的区段

CREATE TEMPORARY TABLESPACE temp

TEMPFILE'/u01/oradata/temp01.dbf' SIZE 20

MEXTENT MANAGEMENT LOCAL UNIFORM SIZE 4M;

临时表空间

当SYSTEM表空间是本地管理时,在创建数据库时必须至少定义一个默认的临时表空间。本地管理的SYSTEM表空间不能用于默认的临时存储。

如果SYSTEM是字典管理的,并且在创建数据库时没有定义默认的临时表空间,那么SYSTEM仍然用于默认的临时存储。但是,您将在ALERT.LOG中收到一条警告,指出建议使用默认的临时表空间,并且在将来的版本中是必需的。

Default Temporary TS

指定数据库范围的默认临时表空间

避免使用SYSTEM表空间存储临时数据

可以使用以下命令创建:

        CREATE DATABASE
        ALTER DATABASE

Creating a Default Temp TS

数据库创建后:

        ALTER DATABASE
        DEFAULT TEMPORARY TABLESPACE default temp2;

查找数据库查询DATABASE_PROPERTIES的默认临时表空间。

SELECT * FROM DATABASE-PROPERTIES:

限制

默认临时表空间不能为:

        删除,直到新的默认值可用。

        脱机

        修改为永久表空间

只读表空间

使用以下命令将表空间设置为只读模式:

        ALTER TABLESPACE userdata rEAD ONLY

导致检查点

只能用于读操作的数据

对象可以从表空间中删除

使表空间脱机

不能用于数据访问

不能脱机的表空间:

        系统表空间

        具有活动撤消段的表空间

        默认临时表空间

使表空间离线。

ALTER TABLESPACE userdata oFFLINE:

使表空间在线:

ALTER TABLESPACE userdata oNLINE;

更改存储设置

使用ALTER TABLESPACE命令修改存储设置:

ALTER TABLESPACE userdata MInIMUM EXTENT 2M;

ALTER TABLESPACE userdata

DEFAULT STORAGE (INITIAL 2M NEXT 2MMAXEXTENTS 999):

不能更改本地管理的表空间的存储设置。

调整表空间大小

表空间可以通过以下方式调整大小:

        更改数据文件的大小:

                自动使用AUTOEXTEND

                手动使用ALTER DATABASE

        使用ALTER TABLESPACE添加数据文件

动态调整数据文件大小

向TS添加数据文件

添加表空间

启用自动扩展

        可以使用以下命令自动调整大小:

                CREATE DATABASE

                CREATE TABLESPACE

                ALTER TABLESPACEADD DATAFILE

例子:

CREATE TABLESPACE user data

DATAFILE
'/u01/oradata/userdata01.dbf' SIZE 200MAUTOEXTEND ON NEXT 10M MAXSIZE 500M:

查询DBA_DATA_FILES视图,确定是否启用了AUTOEXTEND。

手动调整日期文件大小

手动增加或减少数据文件大小更改数据库。

调整数据文件大小可以在不添加更多数据文件的情况下增加空间。

手动调整数据文件大小会回收数据库中未使用的空间。

例子:

向TS添加数据文件

通过添加额外的数据文件来增加分配给表空间的空间

ADD DATAFILE子句用于添加数据文件

例子:

移动DF的方法

修改表空间

        表空间必须离线。

        目标数据文件必须存在。

ALTER TABLESPACE userdata RENAME

DATAFILE '/u01/oradata/userdata01.dbf

TO'/u02/oradata/userdata01.dbf'

修改数据库

        必须挂载数据库。

        目标数据文件必须存在。

ALTER DATABASE RENAME

FILE'/u01/oradata/system01.dbf

TO'/u03/oradata/system01.dbf';

删除表空间

在以下情况下不能删除表空间:

        是SYSTEM表空间

        有活动片段

包括CONTENTS删除片段。

包括内容和数据文件删除数据文件。

CASCADE CONSTRAINTS删除所有引用

        DROP TABLESPACE userdata
        INCLUDING CONTENTS AND DATAFILES:

定义DB_CREATE_FILE_DEST参数的方法如下:

        初始化参数文件

        使用ALTER SYSTEM命令动态设置

ALTER SYSTEM SET
db_create_file_dest =/u01/oradata/dba01';

创建表空间时:

数据文件自动创建并位于DB_CREATE_FILE_DEST

默认大小为100mbAUTOEXTEND设置为UNLIMITED

存储和关系支柱

段的类型

存储条款优先级

1. 如果更改了存储参数,则新选项仅应用于尚未分配的区段。

2. 某些参数不能在表空间级别指定。这些参数只能在段级别指定。

3.如果为表空间指定了最小区段大小,则该大小适用于将来为表空间中的段分配的所有区段。

Extent Alloc & Dealloc

区段是表空间内的段使用的一块空间。

An extent is allocated when the segment is

        创建 扩展 改变

An extent is deallocated when the segment is:

        丢弃 改变 截断

已使用和空闲区段

数据库块

最小I/O单位

由一个或多个操作系统块组成

在表空间创建时设置

DB_BLOCK_SIZE是默认的块大小

多块大小支持

可以使用标准块大小和最多四个非标准块大小创建数据库。

块大小可以是任意的2次幂值介于 2 KB 和 32 KB 之间。

标准块大小

在数据库创建时使用DB_BLOCK_SIZE参数设置;除非重新创建数据库,否则无法更改

用于系统和临时表空间

DB_CACHE SIZE指定标准块大小的默认缓存大小:

        Minimum size = one granule (4 MB or 16 MB)

        Default value = 48 MB

非标准块大小

使用以下动态参数配置额外的缓存:

DB_2K_CACHE_SIZE for 2 KB blocks

DB_4K_CACHE_SIZE for 4 KB blocks

DB_8K_CACHE_SIZE for 8 KB blocks

DB_16K_CACHE_SIZE for 16 KB blocks

DB_32K_CACHE_SIZE for 32 KB blocks

如果nK是标准块大小,则不允许使用DB nK CACHE SIZE。

每个缓存的最小大小是一个颗粒。

创建非标准块大小TS

多个块大小规则

一个分区对象的所有分区必须驻留在相同块大小的表空间中。

所有临时表空间,包括作为默认临时表空间使用的永久表空间,必须具有标准块大小。

索引组织的表溢出和脱行LOB段可以存储在块大小不同于基表的表空间中。

数据库块内容

块空间使用参数

数据块管理

有两种方法可用于管理数据块:

        自动段空间管理

        手册的管理

自动段空间管理

它是一种管理数据库段内空闲空间的方法。

跟踪段内空闲空间和已使用空间使用位图来完成,而不是使用空闲列表。

此方法提供:

        易于管理

        更好的空间利用

        提高并发INSERT操作的性能

位图段包含一个位图,它描述了段中每个块相对于其可用空间的状态。

该映射包含在一组单独的块中,称为位图块(BMBs)。

当插入新行时,服务器在映射中搜索具有足够空间的块。

当块中可用的空间量发生变化时,它的新状态反映在位图中。

配置ASSM

对于本地管理的表空间,只能在表空间级别启用自动段空间管理。

CREATE TABLESPACE data02

DATAFILE'/u0l/oradata/data02.dbf' SIZE 5M

EXTENT MANAGEMENT LOCAL UNIFORM SIZE 64K

SEGMENT SPACE MANAGEMENT AUTO:

手动数据块管理

允许您使用如下参数手动配置数据块:

        PCTFREE

        PCTUSED
        FREELIST

在以前的Oracle版本中唯一可用的方法

HWM(High-Water Mark)

块空间使用情况

获取存储信息

可以通过以下视图查询存储的相关信息:

DBA_EXTENTS

DBA_SEGMENTS

DBA_TABLESPACES

DBA_DATA_FILES

DBA_FREE_SPACE

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值