(转)ORA-01502
问题:ora-01502 索引或这类索引的分区处于不可用状态
引发:移动数据表分区,导致索引失效
解决:重建失效索引
1.
select index_name ,status from user_indexes where Status = 'UNUSABLE'; //查找失效索引名和状态
select 'alter index ' || index_name || ' rebuild online;' from user_indexes where Status = 'UNUSABLE' ; //构建重建索引语句
2.
create or replace procedure p_rebuild_all_index
   (tablespace_name in varchar2,--这里是表空间名,如果不改变表空间,可以传入null
   only_unusable in boolean)    --是否仅对无效的索引操作
as
   sqlt varchar(200);
begin
    --只取非临时索引
    for idx in (select index_name, tablespace_name, status from user_indexes where temporary = 'N') loop
        --如果是如重建无效的索引,且当索引不是无效时,则跳过
        if only_unusable = true and idx.status <> 'UNUSABLE' then
           goto continue;
        end if;
if (tablespace_name is null) or idx.status = 'UNUSABLE' then
           --如果没有指定表空间,或索引无效,则在原表空间重建
           sqlt := 'alter index ' || idx.index_name || ' rebuild ';
        elsif upper(tablespace_name) <> idx.tablespace_name then
           --如果指定的不同的表空间,则在指定表空间待建索引
           sqlt := 'alter index ' || idx.index_name || ' rebuild tablespace ' || tablespace_name;
        else
           --如果表空间相同,则跳过
           goto continue;
        end if;
dbms_output.put_line(idx.index_name);
        EXECUTE IMMEDIATE sqlt;
        <<continue>>
        null;
     end loop;
end;
重建索引。如果表空间参数传入null,则在原表空间内重建索引,否则在目标表空间重建索引。如果表空间相同,则跳过。 only_unusable表示是否只对无效的索引进行重建
测试时:暂时令索引失效
1、
ALTER INDEX indexname UNUSABLE;
ALTER SESSION  SET SKIP_UNUSABLE_INDEXES = TRUE;
--do something here
ALTER INDEX indexname REBUILD ONLINE;
2、
DROP INDEX indexname;
CREATE INDEX indexname ...
其中,ALTER INDEX indexname DISABLE | ENABLE; // Only for FBI (Function-Based Indexes) ,也就是说只有基于函数的索引才能临时禁用和启用。不是处处可用。
(转)ORA-01502的更多相关文章
- ORA-12541:TNS:no listener  客户端tnsnames.ora配置,以及服务端listener.ora配置
		需求:客户端(192.168.25.1)需要访问服务端(192.168.7.215)的Oracle库ORCL. 步骤一:配置客户端tnsnames.ora 步骤二:配置服务端listener.ora ... 
- Oracle的tnsnames.ora配置(PLSQL Developer)
		首先打开tnsnames.ora的存放目录,一般为D:\app\Administrator\product\11.2.0\client_1\network\admin,就看安装具体位置了. 步骤阅读 ... 
- Oracle RAC客户端tnsnames.ora相关配置及测试
		1.Oracle RAC服务端/etc/hosts部分内容如下 2.查看服务端的local_listener和remote_listener参数 3.客户端tnsnames.ora配置参考 3.1 1 ... 
- oracle的sqlnet.ora,tnsnames.ora,listener.ora三个配置文件
		总结: 1 .三个配置文件都是放在$ORACLE_HOME\network\admin目录下. 2 .sqlnet.ora确定解析方式 3 .listener.ora上设SID_NAME,通常用于JD ... 
- oracle客户端安装配置 tnsnames.ora文件
		Oracle客户端tnsnames.ora连接配置 Oracle90的在C:\Oracle\ora90\network\ADMIN下面 Oracel10g的在D:\oracle\product\10. ... 
- 修改tnsnames.ora文件中配置内容中的连接别名后,连接超时解决办法
		1.tnsnames.ora文件中配置内容中的连接别名:由upaydb修改为IP地址 2.连接超时 定位原因: PLSQL登录界面的数据库列表就是读的tnsname.ora中连接的别名,这个文件中连接 ... 
- 安装了多个Oracle11g的客户端,哪个客户端的tnsnames.ora会起作用?
		如果我们由于需要安装了多个Oracle的client,哪个客户端的tnsnames.ora会起作用呢? 答案是: 在安装好clinent端后,安装程序会把client的bin目录放到path里面,pa ... 
- PLSQL登录数据库 报ORA -12154的诡异问题
		https://q.cnblogs.com/q/89420/ 现象: 1.机器上先后安装了oracle两个版本的client.在装第一个client后,plsql可以顺利连接数据库a并登录. 2.安装 ... 
- tnsnames.ora配置注意(连接新的数据库)
		文件地址D:\app\think\product\11.2.0\instantclient_11_2\network\admin\tnsnames.ora# tnsnames.ora Network ... 
- listener.ora/sqlnet.ora/tnsnames.ora配置文件详解
		oracle网络配置 三个配置文件 listener.ora.sqlnet.ora.tnsnames.ora ,都是放在$ORACLE_HOME/network/admin目录下. 英文说明: The ... 
随机推荐
- Spring Cloud Alibaba、Spring Boot、Spring Cloud对应版本关系
			Spring Boot Spring Cloud Spring Cloud Alibaba 2.1.x Greenwich 0.9.x 2.0.x Finchley 0.2.x 1.5.x Edgwa ... 
- vue   导航菜单默认子路由
			export default new Router({ routes: [ { path: '/', name: 'index', component: index, children: [ { pa ... 
- 移动端调试 vConsole
			<head> <script src="path/to/vconsole.min.js"></script> <script> va ... 
- CSS设置input默认样式
			HTML <ul class="box"> <li> <input type="checkbox" name="vehi ... 
- 2019-04-02 cast and covert
			convert 专用于SQLServer,cast对于其它数据库的兼容性更好 convert 处理日期和时间值更厉害 语法不一样: cast(itemvalue as decimal(19,6)) c ... 
- linux下Qt程序编译运行
			Qt程序编译运行很简单,利用Qt提供的qmake工具可以很好的进行编译,在命令行输入一下编译过程:qmake -project //声称项目文件(*.pro)qmake ... 
- 洛谷 P1129 BZOJ 1059 cogs 660 [ZJOI2007]矩阵游戏
			题目描述 小Q是一个非常聪明的孩子,除了国际象棋,他还很喜欢玩一个电脑益智游戏――矩阵游戏.矩阵游戏在一个N*N黑白方阵进行(如同国际象棋一般,只是颜色是随意的).每次可以对该矩阵进行两种操作: 行交 ... 
- Tarjan算法求解桥和边双连通分量(附POJ 3352 Road Construction解题报告)
			http://blog.csdn.net/geniusluzh/article/details/6619575 在说Tarjan算法解决桥和边双连通分量问题之前我们先来回顾一下Tarjan算法是如何 ... 
- C#--async-await的用法
			NET 中的 async/await 异步编程 MSDN上的文章 **async与await最佳实践 需要先理解thread的用法,再掌握task的用法,才能力理解async和await的用法 usi ... 
- Github Pages 建立过程记录
			之前建立过一个測试页面. 如今在折腾CreateJS 试着把离线版的文档传到github pages上面. 第一步:创建Repository 第二步:本地初始化 主要命令:git init 第三步:复 ... 
