存储过程中动态重建指定表的索引

本文介绍了一个使用Oracle PL/SQL编写的存储过程,该过程能够批量在线重建NORMAL类型的索引,并可指定新的表空间。适用于数据库管理员及开发人员,有助于提高数据库维护效率。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

使用authid current_user语句可以动态授权;可以指定索引表空间;

 

CREATE OR REPLACE PROCEDURE rebuildindx
authid current_user
IS
/******************************************************************************
   NAME:       add_column
   PURPOSE:

   REVISIONS:
   Ver        Date        Author           Description
   ---------  ----------  ---------------  ------------------------------------
   1.0        2009/4/28          1. Created this procedure.

   NOTES:

   Automatically available Auto Replace Keywords:
      Object Name:     add_column
      Sysdate:         2009/4/28
      Date and Time:   2009/4/28, 14:06:28, and 2009/4/28 14:06:28
      Username:         (set in TOAD Options, Procedure Editor)
      Table Name:       (set in the "New PL/SQL Object" dialog)

******************************************************************************/
   v_statement   VARCHAR2 (2000);
BEGIN
      FOR objectname IN
      (SELECT    'alter index '
              || index_name
              || ' rebuild online nologging tablespace 索引表空间名 AS sql1
         --修改tablespace name
       FROM   user_indexes
        WHERE index_type = 'NORMAL'
          AND table_name NOT IN
                               ('xxx', 'xxxx'))
   LOOP
      BEGIN
         v_statement := objectname.sql1;

         --dbms_output.put_line (v_statement);
         EXECUTE IMMEDIATE v_statement;
      EXCEPTION
         WHEN OTHERS
         THEN
            RAISE;
      END;
   END LOOP;
END rebuildindx;
/

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值