将已存在的实例上的某一个用户拥有的表和索引分离到不同的表空间.

一. 场景: 广西电信生成环境要求将CMCS,TAS,BCDL三个系统目前的各自实例上的表,索引分别存放在不同的表空间.

二. 将表和索引分开存放在不同的表空间好处:
       1. 分而治之管理.
       2. 减少热点,提高访问效率: 因为正常建表和索引的时候如果不指定特定的表空间,表和索引都将存储同一个表空间(用户默认的表空间中).并且某一条行记录和行记录对应的索引可能在同一个块(block)上, 在操作(包括增,删,改查)这条数据的时候,同时也要操作(包括增,删,改查)对应的索引,由于索引和记录在同一个块上, 会造成这个块称为热点. 将索引和表分别存放在不同的表空间可以减少热点.
      3. 提高i/0访问速度: 不同的表空间可以建在不同的磁盘上,一个操作同时从不同的磁盘读取,操作数据比在同一个磁盘上快

三. 将现有实例某一个用户拥有的表,索引分开到不同的表空间具体操作如下:

1. 创建索引所在的表空间.

       用dba用户登录营收稽核系统所有的oracle实例的sqlplus.执行下面的语句.

          create tablespace tas_gx_index_ts datafile 'F:/oradata/tas_gx_index_ts.dbf' size 2048M autoextend on next 1024M maxsize unlimited;

         注: 上面的语句中"F:/oradata/" 请修改成适当的路径.

2. 用tas用户登录sqlplus.创建并且执行下面的存储过程.将索引转存到表空间 tas_gx_index_ts中.

     create or replace procedure RebuildIndex

         as insertStr varchar2(500);

         indexName varchar2(50);

         cursor mycur is

                                 select distinct d.index_name

                                            from user_indexes d where d.table_name not like '%$%';

      begin

      open mycur;

       loop

            fetch mycur into indexName ;

           exit when mycur %notfound;

            insertStr := 'alter index ' || indexName || ' rebuild tablespace tas_gx_index_ts nologging ' ;

           execute immediate insertStr;

        end loop;

      close mycur;

       end;

/exec rebuildindex ;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值