表空间

一、表空间的管理方式

  1、dictionary管理

    字典管理的表空间,使用数据字典fet$和uet$记录区段的可用情况。当数据库需要为段分配区段时,oracle会查询fet$,为段分配区段,在fet$上删除相应的记录,且在uet$上增加相应的记录。使用字典管理的表空间,当需要分配或者释放区段时,会产生递归sql,同时在修改数据字典时也会产生撤销数据,影响性能

    extent management dictionary

  2、本地管理

    本地管理的表空间,数据库在数据文件的头部使用位图定位跟踪区段的使用情况。

    extent management locl

二、段空间管理方式

  1、手工管理

    oracle使用空闲列表和pctfree、pctused记录段中数据块的可用情况。(在创建模式对象时,如果使用本地管理的表空间,可以不设置pctused,即便设置也不会出错,但被忽略。可以设置pctfree)

    segment space management manual

  2、自动管理

    oracle使用位图跟踪数据块的可用情况。

    segment space management auto

三、区段分配类型

  1、自动分配

    oracle自动选择区段的尺寸,从64k到64m,甚至大于64m,但以64k为单位不断递增。

    autoallocate

  2、统一分配

    使用uniform指定统一分配,使用size指定区段的尺寸。如果没有size选项,则oracle默认为1m。

    uniform 【size n m】 --n为区段尺寸的数值,m为单位。

四、指定闪回方式

  1、启用

    flashback on

  2、禁用

    flashback off

    如果某个表空间禁用闪回,则在闪回数据库时必须先把该表空间脱机。

五、创建表空间

create tablespace tablespace_name

datafile 'datafile_path_name'

size nm         --n为数据文件大小的数值

                       --默认情况下是本地管理,区段大小自动分分配,自动管理段空间。可以创建不同的,如:

create tablespace tablespace_name

datefile 'datafile_path_name'

size nm

uniform size 1m  --可以不指定size选项,默认为1m。

segment space management manual;

可以指定多个数据文件 如:

create tablespace tablespace_name

datafile 'datafile_path_name1'

size nm,

'datafile_path_name2'

size mm;

可以在创建表空间时指定数据文件自动扩展 如:

create tablespace tablespace_name

datafile 'datafile_path_name '

size nm

autoextend on next mm maxsize pm ;      --mm为下次扩展的大小,单位m,pm为

创建不同块尺寸的表空间:

create tablespace tablespace_name

datafile 'datafile_path_name '

size nm

blocksize nk  --nk为块尺寸

表空间不能闪回:

create tablespace tablespace_name

datafile 'datafile_path_name '

size nm

flashback off;

六、删除表空间

  1、drop tablespace tablespace_name;

    如果表空间中含有数据,可以使用以下方式删除:

    2、drop tablespace tablespace_name including contents;

    或者:drop tablespace tablespace_name including contents and datafiles;

    --若使用including contents 方式删除表空间,则数据绕过回收站直接删除;若不使用,且表空间中有数据,则删除不成功,但回收站中的数据仍然被删除。

  3、如果表空间中的数据被其他表空间的数据引用,则需要使用以下方式删除:

    drop tablespace tablespace_name including contents and datafiles cascade constraints;

七、区段的分配与解除

  当段需要更多的区段的时候,oracle按照表空间的存储参数自动为段分配区段,dba也可以手工分配:

  如:alter table table_name allocate extent (size nm datafile 'datafile_path_name');

  当区段分配给段之后,区段永远属于段,直到段被删除。dba也可以解除这些区段:

  如:truncate table table_name drop storage;

  或者:alter table table_name deallocate unused;

八、扩展表空间

  1、增加数据文件

    alter tablesapce tablespace_name add datafile 'datafile_path_name' size nm [autoextend on next mm maxsize pm] ;   --可以在增加一个自动扩展的数据文件。

  2、更改原有数据文件的大小(可大也可小)

    alter database datafile 'datafile_path_nmae' resize nm;  --不可以在更改原有数据文件大小的同时使数据文件自动扩展

  3、数据文件自动扩展

    alter database datafile 'datafile_path_name' autoextend on next nm maxsize mm;

九、更改表空间

  1、脱机

    脱机的方式:normal ,immediate,temporary,for recover默认为normal   如:

    alter tablespace tablespace_name offline [normal];

    数据文件的脱机:

    alter database datafile 'datafile_path_name' offline或者alter database datafile n offline     --n为数据文件的编号。

  2、联机

    alter tablespace tablespace_name online;

    数据文件的脱机:

    alter database datafile 'datafile_path_name' online或者alter database datafile n online     --n为数据文件的编号。

  3、只读

    alter tablespace tablespace_name read only;

    限制:表空间处于开始备份模式,不能更改为只读

                表空间中含有撤销数据,不能更改为只读

                表空间处于脱机或者有部分数据文件处于脱机,则不能更改为只读

                表空间正在发送数据,不能更改为只读模式

    表空间处于只读模式,不能对table进行insert update delete ,但可以drop,并且可以对其他对象进行insert、update、delete。

  4、读写

    alter tablespace tablespace_name read write;

  5、重命名

    alter tablespace tablespace_name rename to new_name;

    限制:不能对system和sysaux表空间重命名

                不能对处于脱机或者部分数据文件处于脱机的表空间进行重命名

                 如果表空间只读,则重命名不能更改数据文件的文件头。

    数据文件的重命名:open状态:表空间脱机或者数据文件脱机

                                                             在操作系统重命名数据文件(cp、mv)

                                                              alter tablespace tablespace_name rename datafile 'datafile_path_name' to 'new_datafile_path_name'

                                        mount状态:startup mount

                                                                在操作系统重命名数据文件

                                                                alter database rename file 'datafile_path_name' to 'new_datafile_path_name';

                                                                alter database open;

  6、开始备份模式

    alter tablespace tablespace_name begin backup;

  7、结束备份模式

    alter tablespace tablespace_name end backup;

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值