大家好,欢迎来到IT知识分享网。
(四)、创建表空间
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
免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。 本文来自网络,若有侵权,请联系删除,如若转载,请注明出处:https://yundeesoft.com/22652.html