将字典管理表空间转换为本地管理表空间

使用ORACLE块的空间有两个目的:插入刷新数据或更新块中已有的数据。在删除块中数据或更新语句使已有数据的长度变小时,块的可用空间增加。段空间管理指ORACLE如何管理每个块中的可用空间。
手动段空间管理(MANUAL):
数据库使用Free list的实体和一对参数PCTFREE和PCTUSED 来管理可用空间。PCTFREE参数可以在每个数据块中保留一定比例的空间,以便以后更新已有的数据,也就是已有行可增长的空间。PCUSED参数处理新数据插入块之前已用空间必须小于设置的极限值。比如PTCUSED设置为40%,除非已有空间量低于此极限值,否则ORACLE不能插入新数据。手动段空间管理涉及PCTFREE和PCTUSED参数以及可用列表,因此在大量处理DML操作时,事务处理的速度会减慢。
自动段空间管理(AUTO):
Oracle使用位图(bitmaps)跟踪一个段空间的可用性。位图,包含在一个位图块中,指明数据块中的可用空间低于25%,25%~50%、50%~75%,还是高于75%,对于索引块,位图可以告知索引块是否为空块或格式化过的块。

一、移动表和索引到新的本地管理表空间
1.创建本地管理表空间,使用段空间自动管理特性(Automatic segment space management)

SQL> create tablespace localmanage datafile '/u01/app/oracle/oradata/orcl/localmanage01.dbf' size 500m autoextend on extent management local segment space management auto;

Tablespace created.

2.移动表到新空间,执行查询出来的语句
SQL> SELECT 'alter table ' || TABLE_NAME  ||' move tablespace localmanage;' FROM DBA_TABLES WHERE OWNER='SCOTT';

'ALTERTABLE'||TABLE_NAME||'MOVETABLESPACELOCALMANAGE;'
-----------------------------------------------------------------------
alter table EMP_BAK move tablespace localmanage;
alter table SALGRADE move tablespace localmanage;
alter table BONUS move tablespace localmanage;
alter table EMP move tablespace localmanage;
alter table DEPT move tablespace localmanage;


3.在新空间创建索引,执行查询出来的语句
SQL> SELECT 'alter index ' || INDEX_NAME  ||' rebuild tablespace localmanage;' FROM DBA_INDEXES WHERE OWNER='SCOTT';


'ALTERINDEX'||INDEX_NAME||'REBUILDTABLESPACELOCALMANAGE;'
--------------------------------------------------------------------------
alter index PK_DEPT rebuild tablespace localmanage;
alter index PK_EMP rebuild tablespace localmanage;


4.转换完成以后,删除原来的表空间,释放空间


alter database drop tablespace "表空间名" including contents and datafiles;


二、使用PL/SQL 完成表空间转换(转换前使用RMAN冷备)。
exec dbms_space_admin.tablespace_migrate_to_local('USER');

在转换SYSTEM表空间前,保证其他表空间已经转换完成。如果先转换SYSTEM表空间,则其他表空间会处于只读模式。dbms_space_admin.tablespace_migrate_to_local可联机使用,用户可以修改的选择数据,但是DML若要分配一个新区,则要转换完成前会处理阻塞状态。

如果使用 dbms_space_admin 将表空间从字典管理转换为本地管理 ,则没有切换到自动段空间管理特性的选项。所有字典管理的表空间都使用默认的段空间管理方式,并且在转换为本地管理时,不能更改为自动段空间管理。另外,若当前字典管理表空间存在空间碎片,使用 dbms_space_admin不能进行消除。







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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值