一台ORACLE实例(Oracle Database 10g Release 10.2.0.5.0)启动时,报Error 942 occured during Initialization of Bufq KUPC$S_1_20181023155636错误,具体情况如下所示,内容信息来自告警日志

 

SMON: enabling cache recovery

Thu Aug 08 18:57:04 CST 2019

Successfully onlined Undo Tablespace 1.

Thu Aug 08 18:57:04 CST 2019

SMON: enabling tx recovery

Thu Aug 08 18:57:04 CST 2019

Database Characterset is UTF8

replication_dependency_tracking turned off (no async multimaster replication found)

Error 942 occured during Initialization of Bufq KUPC$S_1_20181023155636

Starting background process QMNC

QMNC started with pid=80, OS id=1777

Thu Aug 08 18:57:06 CST 2019

Completed: ALTER DATABASE OPEN

Thu Aug 08 18:57:06 CST 2019

db_recovery_file_dest_size of 81920 MB is 0.00% used. This is a

user-specified limit on the amount of space that will be used by this

database for recovery-related files, and does not reflect the amount of

space available in the underlying filesystem or ASM diskgroup.

Thu Aug 08 19:00:57 CST 2019

Thread 1 advanced to log sequence 279278 (LGWR switch)

 

查了一下metalink官方字符,发现官方文档有这方面的资料,出现这个问题是因为 A datapump queue is invalid or it doesn't exist.  The problem occurs during the buffered queue initialization.,详情如下所示:

 

 

Errors ORA-31623 And ORA-600 [kwqbgqc: bad state] During DataPump Export Or Import (文档 ID 754401.1)原文如下:

 

APPLIES TO:

Oracle Server - Enterprise Edition - Version: 10.2.0.4 and later [Release: 10.2 and later ]
Information in this document applies to any platform.

SYMPTOMS

Next ORA-942 is reported in the alert log at database startup:

Starting ORACLE instance (normal)
...
Opening with internal Resource Manager plan
where NUMA PG = 4, CPUs = 2
replication_dependency_tracking turned off (no async multimaster replication found)
Error 942 occured during Initialization of Bufq KUPC$S_2_20081126123353
Starting background process QMNC
QMNC started with pid=19, OS id=1567
Fri Nov 25 07:33:56 2011
Completed: ALTER DATABASE OPEN

...



Trying to do an export, it fails with:

oracle:~ > expdp system/xxx STATUS=60 PARALLEL=4 DIRECTORY=data_pump_dir LOGFILE=expdp.log DUMPFILE=expdp_%u.dmp TABLES=user.table_name TRACE=480300

Export: Release 10.2.0.4.0 - 64bit Production on Monday, 28 November, 2011 13:06:37

Copyright (c) 2003, 2007, Oracle. All rights reserved.

Connected to: Oracle Database 10g Enterprise Edition Release 10.2.0.4.0 - 64bit Production
With the Partitioning, OLAP, Data Mining and Real Application Testing options

UDE-00008: operation generated ORACLE error 31623
ORA-31623: a job is not attached to this session via the specified handle
ORA-06512: at "SYS.DBMS_DATAPUMP", line 2772
ORA-06512: at "SYS.DBMS_DATAPUMP", line 3886
ORA-06512: at line 1



At the same time an ORA-600 error is reported an the alert log:

Mon Nov 28 13:06:39 2011
Errors in file /production/ora1/DUPDWH/var/DUPDWH/admin/udump/dupdwh_ora_16238.trc:
ORA-00600: internal error code, arguments: [kwqbgqc: bad state], [1], [1], [], [], [], [], []

 

CAUSE

A datapump queue is invalid or it doesn't exist.?

The problem occurs during the buffered queue initialization.

SOLUTION

To recreate the failing queue, follow the steps from?
Note 754401.1 - ORA-31623 and ORA-600 [kwqbgqc: bad state] During an Export or Import with DataPump

REFERENCES

NOTE:403036.1 - ORA-00600: [Kwqbgqc: Bad State], [1], [1] reported on Enqueue of BUFFERED message to a single or multiple consumer queue
NOTE:754401.1 - ORA-31623 and ORA-600 [kwqbgqc: bad state] During an Export or Import with DataPump

 

 

 

"Errors ORA-31623 And ORA-600 [kwqbgqc: bad state] During DataPump Export Or Import (文档 ID 754401.1)"原文如下所示:

 

APPLIES TO:

Oracle Database Cloud Schema Service - Version N/A and later
Oracle Database Exadata Express Cloud Service - Version N/A and later
Oracle Database Exadata Cloud Machine - Version N/A and later
Oracle Cloud Infrastructure - Database Service - Version N/A and later
Oracle Database Backup Service - Version N/A and later
Information in this document applies to any platform.


SYMPTOMS

An export or import operation using DataPump fails with the following errors:

UDI-00008: operation generated ORACLE error 31623
ORA-31623: a job is not attached to this session via the specified handle
ORA-06512: at "SYS.DBMS_DATAPUMP", line 2772
ORA-06512: at "SYS.DBMS_DATAPUMP", line 3886
ORA-06512: at line 1

and the alert log file of the database shows the error:

ORA-00600: internal error code, arguments: [kwqbgqc: bad state], [1], [1], [], [], [], [], []

CHANGES

 

CAUSE

A DataPump queue is invalid in data dictionary. This can happen after reruning the catpatch.sql or utlrp.sql scripts.

SOLUTION

1. Shutdown the database cleanly:

SQL> connect / as sysdba
SQL> shutdown immediate
SQL> startup restrict

2. Drop the queue table.

SQL> exec dbms_aqadm.drop_queue_table (queue_table => 'SYS.KUPC$DATAPUMP_QUETAB', force => TRUE);

NOTE:

- If the ORA-4020 error is reported, then wait some minutes and try again
- If an ORA-24* error is reported, then it could be necessary to perform a manual cleanup. To perform this, contact with a Support Engineer.

3. Recreate the queue

The SQL is in the?
Note.361025.1 or you can pull it from the catdpb.sql script in $ORACLE_HOME/rdbms/admin directory.

-- Create our queue table.
BEGIN
  dbms_aqadm.create_queue_table (queue_table => 'SYS.KUPC$DATAPUMP_QUETAB',
         multiple_consumers => TRUE,
         queue_payload_type => 'SYS.KUPC$_MESSAGE',
         comment => 'DataPump Queue Table',
         compatible => '8.1.3');

EXCEPTION
  WHEN OTHERS THEN
    IF SQLCODE = -24001 THEN NULL;
  ELSE RAISE;
  END IF;
END;
/

4. Run utlrp.sql to recompile all the database objects.

5. Retry the DataPump operation

 

 

测试验证,使用expdp导出时,确实会遇到ORA-06512错误,具体如下所示:

 

 

$ expdp system/xxx DIRECTORY=DUMP_DIR LOGFILE=expdp.log DUMPFILE=test.dmp TABLES=xxxx.xxxx 

Export: Release 10.2.0.5.0 - 64bit Production on Friday, 09 August, 2019 17:08:13

Copyright (c) 2003, 2007, Oracle.  All rights reserved.

Connected to: Oracle Database 10g Release 10.2.0.5.0 - 64bit Production

UDE-00008: operation generated ORACLE error 31623
ORA-31623: a job is not attached to this session via the specified handle
ORA-06512: at "SYS.DBMS_DATAPUMP", line 2772
ORA-06512: at "SYS.DBMS_DATAPUMP", line 3886
ORA-06512: at line 1

 

如果加上参数TRACE=480300, expdp会一直卡死,不出结果。告警日志也没有ORA-600错误,跟官方文档Errors ORA-31623 And ORA-600 [kwqbgqc: bad state] During DataPump Export Or Import (文档 ID 754401.1)描述的略有出入。

 

$ expdp system/xxx DIRECTORY=DUMP_DIR LOGFILE=expdp.log DUMPFILE=test.dmp TABLES=xxxx.xxxx TRACE=480300

 

解决方法:

 

1:关闭数据库实例,然后以约束方式启动(startup restrict)

 

SQL> connect / as sysdba

SQL> shutdown immediate

SQL> startup restrict

 

2: 删除queue表

 

SQL> exec dbms_aqadm.drop_queue_table (queue_table => 'SYS.KUPC$DATAPUMP_QUETAB', force => TRUE);

PL/SQL procedure successfully completed.

 

官方文档提示,如果遇到ORA错误,可以按下面方式处理,如果没有遇到任何错误,直接跳过下面内容。

 

- If the ORA-4020 error is reported, then wait some minutes and try again

- If an ORA-24* error is reported, then it could be necessary to perform a manual cleanup. To perform this, contact with a Support Engineer.

 

3:执行下面脚本,重建queue。此脚本位于$ORACLE_HOME/rdbms/admin目录下的catdpb.sql脚本中

 

SQL> 
SQL> BEGIN
  2  dbms_aqadm.create_queue_table(queue_table => 'SYS.KUPC$DATAPUMP_QUETAB', multiple_consumers => TRUE, queue_payload_type =>'SYS.KUPC$_MESSAGE', comment => 'DataPump Queue Table', compatible=>'8.1.3');
  3  
  4  EXCEPTION
   WHEN OTHERS THEN
  5    6        IF SQLCODE = -24001 THEN NULL;
  7        ELSE RAISE;
  8        END IF;
  9  END;
 10  /

PL/SQL procedure successfully completed.

 

 

4:重启数据库实例

 

重启数据库后已经没有遇到Error 942 occured during Initialization of Bufq KUPC$S_1_20181023155636这样的错误了

 

SQL> shutdown immediate;

SQL> startup

 

5:重编译失效对象

 

SQL> @$ORACLE_HOME/rdbms/admin/utlrp.sql

 

6:测试验证数据导出功能

 

 

 

参考资料:

 

Errors ORA-31623 And ORA-600 [kwqbgqc: bad state] During DataPump Export Or Import (文档 ID 754401.1)

Error 942 Occured During Initialization Of Bufq KUPC$S_<number>' Starting Database (文档 ID 1384131.1)