暂无图片
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
程序里根据“”分割字符串取第一个packagemainimport("fmt""strings")funcmain(){str:[]string{"022","011","030"}for,v:ran
Oracle 生产环境vm集群跑rac可行吗?
回答 1
已采纳
回答过类似问题,你可以看看我的建议https://www.modb.pro/issue/15618VM上安装文档看这个https://www.modb.pro/doc/2670
请教下啊,异机恢复的时候,报错这个。搞好几天了,换过全备,不加压缩的备份,都是这个(如下图)
回答 8
在异机恢复的场景里,一般是不会有redo日志的需要不完全恢复,指定备份文件的scn<o:p></o:p>recoverdatabaseuntilscnxxxxx;<o:p
awrsqrpt可以分析 超过2000字符的sql吗?
回答 1
BEGINDBMSOUTPUT.ENABLE(BUFFERSIZE>NULL);END;/
ORA-39082: Object type VIEW:"NSAUSER"."NEW_PRODUCT_VIEW" created with compilation warnings 用数据泵导入报错对象编译警告,怎么处理?
回答 1
警告问题不大
Duplicat 搭建DG与rman恢复搭建DG相比,其优势在哪里?
回答 2
我喜欢用duplicate,duplicate是在线的,一条命令梭过去,不用管了。rman备份你还得备份到本地,本地也得有额外的空间,还得进行restore和recover。duplicate相当于把
大家都在用什么工具监控oracle?
回答 9
我这边有一套针对oracle的监控软件。
AWR分析报告问题求助:数据库出现严重的log file sync等待,如何解决
回答 4
1、存储IO可能也有问题,需要存储工程师检查一下。2、检查redolog以及alert日志,检查日志切换频率,一般建议1520分钟切换一次,重新设计redo日志组3、“usercommits”也很高,
Oracle12C GI升级一个节点成功,一个节点失败
回答 2
这种情况比较常见,排查起来比较复杂,一般都是手工单独去打节点2的补丁。
有没有办法把oracle库的表转换成mysql的?
回答 1
已采纳
我说两种方法:一是通过navicat等三方软件,直接做表传输,直接就给你转了;二是查看oracle的建表语句,然后改写为mysql的,然后数据通过导出为csv文件,然后在mysql中导入即可。大数据量