删除Ogg用户报ORA-00604、ORA-20782、ORA-20782、ORA-06512错误的解决方法

16 篇文章 0 订阅
4 篇文章 0 订阅

删除Ogg用户报ORA-00604、ORA-20782、ORA-20782、ORA-06512错误的解决方法
一、背景
搭建了一套ogg进行数据同步,并开启了DDL功能,后来因为不需要使用ogg,想将数据库里的ogg用户删除掉,结果删除报以下错误:

SQL> drop user ogg cascade;
drop user ogg cascade
*
第 1 行出现错误:
ORA-00604: 递归 SQL 级别 2 出现错误
ORA-20782: Oracle GoldenGate DDL Replication Error: Code :ORA-20782: Cannot
DROP object used in Oracle GoldenGate replication while trigger is enabled.
Consult Oracle GoldenGate documentation and/or call Oracle GoldenGate Technical
Support if you wish to do so., error stack: ORA-06512: 在 line 305
ORA-06512: 在 line 1267

二、原因分析
由于在安装OGG时,配置并开启了DDL捕获功能,而OGG的DDL捕获,是依赖DDL触发器实现的,DDL处于enabled状态,drop goldengate user操作也属于DDL操作,所以产生ORA-00604 ORA-20782错误
三、查看触发器状态

SQL>  set linesize 999
SQL> select owner,trigger_name,trigger_type,triggering_event,status from dba_triggers where trigger_name like 'GGS%';
OWNER                          TRIGGER_NAME                   TRIGGER_TYPE     TRIGGERING STATUS
------------------------------ ------------------------------ ---------------- ---------- --------
SYS                            GGS_DDL_TRIGGER_BEFORE         BEFORE EVENT     DDL        ENABLED

四、将触发器删除

SQL> drop trigger sys.GGS_DDL_TRIGGER_BEFORE;
触发器已删除。

五、再执行删除ogg用户

SQL> drop user ogg cascade;

drop user ogg cascade
*
第 1 行出现错误:
ORA-00604: 递归 SQL 级别 1 出现错误
ORA-14452: 试图创建, 变更或删除正在使用的临时表中的索引
六、查看正在使用的会话,然后kill掉

SQL> select 'alter system kill session '''||sid||','||serial#||''''||';'from v$session where sid in(select sid  from v$lock where id1 in(select object_id from dba_objects where object_name in (select table_name from dba_tables where owner='OGG')));
'ALTERSYSTEMKILLSESSION'''||SID||','||SERIAL#||''''||';'
--------------------------------------------------------------------------------------------------------------
alter system kill session '63,7901';
alter system kill session '86,25811';
alter system kill session '142,56653';
alter system kill session '159,38375';
alter system kill session '167,15813';
alter system kill session '253,57101';

已选择6行。
SQL> alter system kill session '63,7901';
系统已更改。
SQL> alter system kill session '86,25811';

	系统已更改。
```sql
SQL> alter system kill session '142,56653';
系统已更改。
SQL> alter system kill session '159,38375';
系统已更改。
SQL> alter system kill session '167,15813';
系统已更改。
SQL> alter system kill session '253,57101';
alter system kill session '253,57101'
*
第 1 行出现错误:
ORA-00027: 无法终止当前会话

七、在杀进程的时候报ORA-00027错误

ORA-00027 cannot kill current session
Cause
An attempt was made to use ALTER SYSTEM KILL SESSION to kill the current session.
Action
If it is necessary to kill the current session, do so from another session.[@more@]

根据ORA-00027错误提示,需要另外开一个窗口然后终止会话;
八、重新删除用户

SQL> drop user ogg cascade;
用户已删除。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值