暂无图片
ORA-06575: 程序包或函数 BATCH_REBUILD_INDEX 处于无效状态
我来答
分享
Edward
2021-08-06
ORA-06575: 程序包或函数 BATCH_REBUILD_INDEX 处于无效状态

1、在其它表空间定义的存储过程,可以正常执行。
定义如下:
create PROCEDURE BATCH_REBUILD_INDEX
IS
S_SQL VARCHAR2(500);
ACCOUNT NUMBER := 0;
BEGIN
FOR LINE2 IN (select owner, segment_name, tablespace_name
from dba_extents
where segment_type=‘INDEX’
and owner=(SELECT SYS_CONTEXT (‘USERENV’, ‘SESSION_USER’) ur FROM DUAL)
group by owner,segment_name,tablespace_name
having count() >10
order by count(
) desc
) LOOP
S_SQL:= ‘alter index ’ || LINE2.OWNER ||’.’|| LINE2.segment_name || ’ rebuild online PARALLEL 10 nologging’;
ACCOUNT := ACCOUNT + 1;
EXECUTE IMMEDIATE S_SQL;
END LOOP;
DBMS_OUTPUT.PUT_LINE(ACCOUNT);
EXCEPTION
WHEN OTHERS THEN
DBMS_OUTPUT.PUT_LINE(SQLERRM);
END BATCH_REBUILD_INDEX;
/

2、在datagrip 中执行报错
call BATCH_REBUILD_INDEX()
ORA-06575: 程序包或函数 BATCH_REBUILD_INDEX 处于无效状态

3、删除重建后还是报错,删除后也清除了回收站

我来答
添加附件
收藏
分享
问题补充
4条回答
默认
最新
Edward

重新编译提示
7:25:PL/SQL: ORA-00942: 表或视图不存在.
6:17:PL/SQL: SQL Statement ignored.
14:31:PLS-00364: 循环索引变量 ‘LINE2’ 的使用无效.
14:5:PL/SQL: Statement ignored.

暂无图片 评论
暂无图片 有用 0
打赏 0
文成
select owner, segment_name, tablespace_name
from dba_extents
where segment_type=‘INDEX’
and owner=(SELECT SYS_CONTEXT (‘USERENV’, ‘SESSION_USER’) ur FROM DUAL)
group by owner,segment_name,tablespace_name
having count() >10
order by count() desc

复制

查询一下这个sql的结果

暂无图片 评论
暂无图片 有用 0
打赏 0
Edward

select owner, segment_name, tablespace_name
from dba_extents
where segment_type=‘INDEX’
and owner=(SELECT SYS_CONTEXT (‘USERENV’, ‘SESSION_USER’) ur FROM DUAL)
group by owner,segment_name,tablespace_name
having count() >10
order by count() desc

这个执行是OK的,如果把这个查询改成
select user owner, segment_name, tablespace_name
from user_extents
where segment_type=‘INDEX’
group by owner,segment_name,tablespace_name
having count() >10
order by count() desc
就能编译通过,不知道为什么

暂无图片 评论
暂无图片 有用 0
打赏 0
DarkAthena

因为你另一个用户没有查询 dba_extents 的权限 ,做个grant select on 即可

暂无图片 评论
暂无图片 有用 1
打赏 0
回答交流
Markdown


请输入正文
提交
相关推荐
这道题错哪里了?
回答 1
已采纳
A.通过awrsqrpt.sql获取到的SQL的AWR报告:AWR(AutomaticWorkloadReplay)报告是Oracle数据库提供的一种工具,用于分析数据库的性能问题。awrsqrpt.
求Oracle 12c 12.1.0.2的补丁
回答 5
Patch34850184:DATABASEJAN2023RELEASEUPDATE12.2.0.1.230117Patch34849165:GIJAN2023RELEASEUPDATE12.2.0.
Oracle的行级锁有开销吗?
回答 1
已采纳
在Oracle中,行级锁没有相关的开销,一点都没有。不论你是有1个行锁,还是1000000个行锁,专用于锁定这个信息的资源数都是一样的。当然,与修改1行相比,修改1000000行要做的工作肯定多得多,
Oracle什么时候视图不能进行更新操作?
回答 1
已采纳
当视图中包含如下内容时视图的更新操作将不能被执行:1)视图中不包含基表中被定义为非空的列;2)在定义视图的select语句后的字段列表中使用数学表达式;3)在定义视图的select语句后的字段列表中使
精简制备磁盘组,ASM如何释放存储空间
回答 2
在我的知识洗脚盆里面是没有的不过可以用,加入新的小磁盘,删除旧的大磁盘的方式逐步进行替换类似参考https://www.modb.pro/db/108074
DVF, DVSYS这两个用户是数据库默认创建的吗?
回答 1
是的,别删除
Oracle不是开源数据库,那么Navicat这样的连接工具是怎么发起TNS的包,建立连接?
回答 3
有现成的jar包,下下来直接用就行。Navicat印象中没有手动配过jar之类的,plsqldev倒是要手动配置,跟版本也有关系
oracle 的dg是物理复制还是逻辑复制?
回答 2
已采纳
两种模式都有,通常布署DG都是物理复制模式,如果想逻辑复制,还不如布署OGG。
各位大佬 CPU iowait time 偶尔大于20% 数据库都动不了 axi 10G rac 有什么排查思路吗
回答 2
通过awr报告来看系统概括。当然首先检查硬件故障。检查osmessage信息。
oracle库里面设定多久切一次归档的那个参数是什么?
回答 3
已采纳
日志满了就切换。或者altersystemcheckpoint。