创建表空间

(四)、创建表空间

1.  创建表空间要考虑的因素

创建数据库完毕~ 创建所需的 非system表空间 ~

创建表空间 ~ 空间数量 、对应数据文件大小 ~ 表空间存储管理方式、默认存储参数、块大小

oracle本身 ~ 不限制表空间数目~ 限制于数据库所能拥有 数据文件数目 ~只能创建有限数的表空间

表空间数据文件总和 ~ 不能超过 创建数据库时 ~指定的maxdatafiles参数的限制

创建的表空间 ~默认下具有标准块大小 ~ 但也可创建具有非标准块大小的表空间


datafile: 纸递给表空间所对应的数据文件

size: 用于指定数据文件的尺寸

extent management dictionary: 表空间中区的管理方式为字典管理凡是

default storage: 用于指定默认存储参数设置。 当不设置默认存储参数时~ 系统自动使用system表空间的存储参数设置

initial: 指定数据库对象所分配的第一个区的大小

next: 指定数据库对象所分配的第二个区的大小

minextents: 指定 数据库对象所分配的最少区个数

maxentents: 指定数据库对象所分配的最多区个数

pctincrease: 指定 从第三个区开始, 每个区比前一个区所增长的百分比

size = next*(1+pctincrease/100)(n-2)

n~ 表示第n个区, ~ 除第一个区和第二个区外,其他区尺寸会自动转变为db_block_size的整数倍


2. 本地管理的表空间中的段空间管理

create tablespace语句 ~创建一个 本地管理的表空间~

可以使用 segment space management 子句 ~ 设定段内的可用/已用空间如何管理

可选方式:

2.1. auto

这种设置下 ~ oracle使用位图管理段内可用空间 
此处的位图 ~用于描述段内每个数据块 ~是否有足够的可用空间,来插入新数据。
随着一个数据块中可用空间的变化,~ 及时在位图中反映她的状态。

oracle使用位图~ 更加自动化的管理段内的可用空间。 ~自动段空间管理

一个本地管理的 ~ 且自动段空间管理的表空间, ~ 可被创建为小文件表空间、 大文件表空间。

创建本地管理表空间时, 自动段空间管理是默认值。


2.2 manual

该设置下, oracle使用可用块列表 free list ~管理段内的可用空间。

可用块列表 ~ 记录了所有可以被用于插入新数据的 数据块


(五)、 其他表空间操作

1. 调整表空间大小

查看表空间大小~ 数据占满了表空间 ~不能分配新的区,~用户不能插入数据记录

dba改变表空间的尺寸 ~ 目前对象的大小、对象的增长速度、有规律的检查数据库对象的大小~

快速增长的表上 ~ 经常查看表空间中的自由空间~主动增加表空间容量,~提高系统性能

表空间 ~ 一个或多个数据文件
表空间尺寸 ~表空间所有数据文件尺寸的总和

表空间的大小 ~决定于数据文件的个数和大小


调整表空间大小方法:

重置数据文件大小: alter database datafile '' | fileno resize xx

更改数据文件大小: 数据文件 ~ aotuextend (自动扩展)属性 ~自动调整数据文件的大小~

也可以使用 alter tablespace 手动调整

使用alter tablespace命令 ~ 添加新的数据文件给表空间


1.1 数据文件的自动扩展属性(autoextend)

激活数据文件的自动扩展选项 ~ 当数据占满数据文件所以空间 ~并且数据文件不能容纳新数据~
系统自动扩展该数据文件。

指定数据文件的 aotuextend子句 ~启用或禁用数据文件的自动扩展。

文件按指定的增量增加 ~ 直到达到指定的最大值。


使用autoextend子句优点:

表空间的空间用尽时~无需过多的直接干预

确保应用程序~不会由于未能分配区而暂停


创建数据文件后,使用下列sql命令 ~启用数据文件的自动扩展:

create tablespace

alter tablespace


autoextend off: 禁用
autoextend on:启用

next : 自动扩展是每次分配给数据文件的磁盘空间
maxsize: 指定允许分配给该数据文件的最大磁盘空间

unlimited: 数据文件磁盘空间设为不受限






1.2 为表空间增加数据文件

通过alter tablespace add datafile 命令 ~ 添加数据文件给表空间 ~增加分配给表空间的磁盘空间总量



1.3 手工修改数据文件大小

自动扩展选项 ~ 数据文件在数据写满时自动扩展 --》会导致递归空间操作,减低系统性能

例: 使用sql*loader ~装载大批量数据给表emp ~数据写满数据文件 ~

先扩展数据文件 ~才能装载数据 --》导致系统性能的降低。

因此~ 执行批量数据装载操作前 ~ 先确定数据文件是否能够容纳足够的数据。

如果不足,~应先扩展该数据文件~再装载数据。

使用alter database命令 ~ 手动增加或减少 数据文件的大小

而不必通过~ 添加数据文件、 更改自动扩展属性~ 来更改表空间的大小


Integer: 字节为单位, 表示数据文件的绝对大小

更改数据文件大小~ 如果比实际存储的数据库对象要小~ 大小只能减少到~
数据文件内最后一个对象的最后一个块为止~

保证缩减尺寸后的表空间~必须能容纳已存在的数据对象,否则提示出错信息




2. 修改表空间读写属性

表空间用于存放静态数据~ 不会对这些数据进行修改操作~将数据存放到只读设备上

例:存放到光盘上

表空间放到只读设备上~ 转变状态为只读状态。

将表空间改为只读模式命令:


执行命令时~ 自动回滚与表空间相关的所有事物 ~
过度状态期间 ~ 不允许对表空间进行写入操作

当所有事物处理提交 或者 回退后,~只读命令完成 ~表空间置于只读模式


--》 执行命令后~ 表空间mytbs3 转变为只读状态。

用户只能 执行查询操作select ~该表空间的对象上

不能执行dml或ddl操作,~ 有一种ddl除外~

可以执行 drop table 或drop index ~ 删除该表空间的表或索引

因为这些命令 ~只影响数据字典(数据字典位于system表空间)

drop命令只更新数据字典,~而不更新只读表空间上的物理文件


对本地管理的表空间,~删除的段 将改为临时段 ~避免更新位图。

将表空间设为只读状态前,~引发对表空间的数据文件 ~执行检查点操作

表空间设为只读~可防止对表空间的数据文件进行任何写操作。

因此,数据文件可~驻留在只读介质上,如cd-rom 或一次性写入(worm)驱动器

使用只读表空间的好处~ 免去对数据库大量的静态数据执行备份


要在只读表空间上~执行dml操作,~将表空间改为可写状态

使用alter tablespace [tablespace] read|write命令~ 表空间内的所有数据文件必须联机




3.修改表空间的online/offline属性

通过表空间置于联机或脱机状态~来控制表空间可用性。

表空间~联机状态~用户可访问其数据

表空间~脱机状态,用户无法访问其数据,允许正常访问数据库~其余处于联机的表空间。


dba让表空间脱机的几种情况

使数据库的一部分表空间不可用,~但允许正常访问数据库的其余表空间

执行脱机表空间备份~ (尽管表空间可以在~联机使用时备份)

数据库打开时~ 恢复表空间或数据文件

数据库打开时! 移动数据文件



normal:将表空间所有数据文件内的所有块~从sga中写入数据文件~
并将数据文件关闭。~缺省设置。

在该表空间重新联机前~ 无须对其执行介质恢复。~尽可能使用normal子句

temporary: 
对表空间所有联机的数据文件~ 执行检查点操作~

但是执行检查点时~并不检查数据文件的状态,~即使某些文件无法写入检查点~oracle也会忽略这些错误

在使用此表空间重新联机之前,所有脱机文件可能都需要进行介质恢复


immediate: 不保证表空间的文件可用,~而且不执行检查点操作

表空间重新联机前,必须对其执行介质恢复操作


for recover: 使表空间脱机~以进行表空间时间点恢复


只要数据库打开,dba可以使任意一个表空间脱机~

(system表空间和任何具有活动还原段或临时段的表空间除外)。

当一个表空间脱机后,oracle服务器~ 将使与之相关联的所有数据文件脱机


执行查询操作~用户将收到一条错误信息 ~ 

因为表空间脱机后,~oracle不允许有任何sql语句引用该表空间含有的对象~即用户不能访问该表空间


当表空间脱机或者重新联机后~ 该事件记录在数据字典和控制文件内。

如果关闭数据库时表空间仍然脱机,-》当随后数据库装载并重新打开时~该表空间仍保持脱机状态且不会被检查。

如果遇到某些错误,(例如~ 当数据库写入程序进程dbwn几次~

试图向某表空间的数据文件写入都失败时)~ oracle实例自动~将表空间从联机状态切换为脱机状态

不能设为脱机的表空间~ system表空间~具有活动的还原段的表空间,缺省临时表空间


当希望访问表空间中的数据~ 如表、索引等对象时~表空间必须处于联机状态



4.数据文件的脱机与联机

类似于表空间~ 联机的数据文件也可以被设置为脱机状态。

脱机的数据文件对于数据库~ 是不可用的~直至它们被恢复到联机状态为止

数据文件发生损坏,~oracle自动将这个数据设置为脱机状态,~并记录于警告文件中

如果损坏的文件恢复后,~需要手工方式重新将数据文件恢复为联机状态。


数据文件设置为脱机状态,不会影响表空间的状态~

相反,~将表空间设置为脱机状态~ 表空间的数据文件同时会进入脱机状态

该表数据文件状态,~可使用alter database命令







5. 数据文件的移动

为防止数据丢失~和减少i/o冲突,提供i/o性能, ~尽可能将数据文件分布到不同磁盘上~

并且尽可能均衡不同磁盘之间的i/o操作。


移动数据文件 ~ 一方面出于性能方面的考虑,~另一方面出于安全考虑

因此,在实际数据库应用中~ 可能会移动数据文件

移动数据文件有两种方法 ~ 一种是使用alter tablespace命令,~
另一种方法是使用alter database命令

具体采用哪种方法取决于表空间类型

   5.1.使用alter tablespace命令


它仅适用于~不含活动还原段或临时段的非system表空间中~数据文件的移动

源文件名必须与存储在控制文件内的名称匹配~ 表空间必须脱机~
并且to子句后的目标数据文件必须存在


alter tablespace 命令重命名数据文件的步骤:

使表空间脱机
使用操作系统命令移动或复制文件
执行alter tablespace rename datafile 命令
使表空间联机

必要时使用操作系统命令~删除原来的数据文件




5.2 使用alter database命令

alter database命令可用来~ 移动任意类型的数据文件,~但数据库必须处于已装载的状态~

且目标数据文件必须存在。步骤如下:

关闭数据库
使用操作系统命令移动文件
装载数据库

执行alter database rename file命令

打开数据库


因为system表空间无法脱机~ 必须使用该方法移动system表空间内的数据文件。

使用此命令重命名无法脱机的表空间内的文件。


----------------------------------------------------------
(六)、删除表空间
https://blog.csdn.net/u012596785/article/details/79951330

阅读更多
想对作者说点什么? 我来说一句

没有更多推荐了,返回首页

关闭
关闭
关闭