我申请这个blog是为了督促自己,把自己平时的一些想法和思考结果保留下来。 本博客所有内容均为原创,如有转载请注明作者和出处

ORA-19206错误

上一篇 / 下一篇  2006-12-18 00:00:00 / 个人分类:Bug

今天在一个数据库上执行DBMS_METADATA包的时候,出现了ORA-19206的错误。

ITPUB个人空间n}r o%OV$oM

具体错误信息如下:

SQL> SELECT DBMS_METADATA.GET_DDL('MATERIALIZED_VIEW', 'CAT_AUTH_GMP', 'NDMAIN') FROM DUAL;ITPUB个人空间,]ce1[4^}
ERROR:ITPUB个人空间 E#eH*l-eu.f u
ORA-19206: Invalid value for query or REF CURSOR parameterITPUB个人空间;cn&|*Xs
ORA-06512: at "SYS.DBMS_XMLGEN", line 83
Nl-h#w)Ho0ORA-06512: at "SYS.DBMS_METADATA", line 345ITPUB个人空间R6r!ENi
ORA-06512: at "SYS.DBMS_METADATA", line 410ITPUB个人空间yx%K%E-RW)NS IW
ORA-06512: at "SYS.DBMS_METADATA", line 449
D ]Kx8C-Tc0ORA-06512: at "SYS.DBMS_METADATA", line 615ITPUB个人空间*F~ s#c(d3}1X]7ARQj
ORA-06512: at "SYS.DBMS_METADATA", line 1221ITPUB个人空间7I+?(ut.Q$Z/aj
ORA-06512: at line 1

no rows selected

仔细检查了一下,发现所有和物化视图相关的表在执行DBMS_METADATA.GET_DDL时都会出现上面的错误,而其他的对象并没有受到影响。

由于这个数据库的数据是通过EXP/IMP迁移得到的,虽然在IMP过程中没有什么明显的错误信息,但是仍然怀疑是EXP/IMP造成的数据字典出现了错误。

查询了一下METALINK信息,发现了很多类似的错误,而Oracle给出的解决方法是重装XDB

于是尝试重装XML方案:

首先以SYSDBA身份登陆,关闭并重启数据库,为卸载XML对象做准备:

SQL> CONN / AS SYSDBA
4q\0x d ^)T7T\}0Connected.
U t7B3k7r2U:w*RH0SQL> SHUTDOWN IMMEDIATEITPUB个人空间2Zb y6d A$n&D7C0C
Database closed.
ofQp)lJ-q(x0Database dismounted.
f9S-z-PKZr G0ORACLE instance shut down.ITPUB个人空间zet+}+x)nk0q#L&a~ u!?
SQL> STARTUPITPUB个人空间"kR6S2\ V4p Z*Ux9\ e
ORACLE instance started.

Total System Global Area 5876197568 bytesITPUB个人空间1x i#t\3os'{,U-?^E
Fixed Size 739520 bytes
Lh I@&HV4|6@*`1~a0Variable Size 503316480 bytesITPUB个人空间%v KQYZ s!R%\-[6z
Database Buffers 5368709120 bytes
A2I ` K3m0Redo Buffers 3432448 bytes
V:^|1|2R9\0Database mounted.
$g"M6Q*k EN0Database opened.ITPUB个人空间$ePn'c9[?7tq Pg_
SQL> SET ECHO ON
A$CN|(C0SQL> SPO XDB_REMOVAL.LOG
0u[c*D4wx0SQL> @?/rdbms/admin/catnoqm.sqlITPUB个人空间\?7u'tw]t\!\
SQL> RemITPUB个人空间[6Yzmfj~3M
SQL> Rem $Header: catnoqm.sql 03-jan-2002.17:32:31 spannala Exp $ITPUB个人空间H)G/B^c1Ts5Pn s"C
SQL> Rem
Z9S5FY {@{[0SQL> Rem catnoqm.sqlITPUB个人空间 Tq Kg*D W'f
SQL> RemITPUB个人空间 nR0^`,H
SQL> Rem Copyright (c) 2001, 2002, Oracle Corporation. All rights reserved.
:c|+|)R,k:D&S0SQL> RemITPUB个人空间.},o.~$_ Lv
SQL> Rem NAME
|YR$AL7VPE0w0SQL> Rem catnoqm.sql - CATalog script for removing (NO) XDBITPUB个人空间t6a)km N}
SQL> RemITPUB个人空间tX1BN y;KLD
SQL> Rem DESCRIPTIONITPUB个人空间{H8l ET:@p
SQL> Rem this script drops the metadata created for SQL XML managementITPUB个人空间'p$@5` z;sw#z5[Ty j
SQL> Rem This scirpt must be invoked as sys. It is to be invoked as
t{8jPQ]Mv0SQL> RemITPUB个人空间`0| {X6vU
SQL> Rem @@catnoqmITPUB个人空间D ls YApz J
SQL> Rem NOTESITPUB个人空间uEDd.r9M
SQL> RemITPUB个人空间$?I\E-sS7]T_
SQL> Rem MODIFIED (MM/DD/YY)
bK+N4Wm0i4r0SQL> Rem spannala 01/03/02 - tables are not handled by xdbITPUB个人空间1`%` O!rPh0k-c
SQL> Rem spannala 01/02/02 - registry
,?Z%r&@4R%b0SQL> Rem spannala 12/20/01 - passing in the resource tablespace name
,n[{1OyX `0SQL> Rem tsingh 11/17/01 - remove connection string
8c%E/u#L#G*m?0SQL> Rem tsingh 06/30/01 - XDB: XML Database merge
/u$|;d.}a0SQL> Rem amanikut 02/13/01 - CreationITPUB个人空间:M_!e5m!~
SQL> RemITPUB个人空间K'lG)e-} ai
SQL> RemITPUB个人空间-\m.m o%f)N;vw
SQL> ITPUB个人空间 o5Al5R{!J"TRu_
SQL> execute dbms_registry.removing('XDB');ITPUB个人空间:| W] `[B$D8z L'i k
BEGIN dbms_registry.removing('XDB'); END;

*ITPUB个人空间Fl ]BG1JV
ERROR at line 1:
+m~ B7Gc`:]6s^6{A0ORA-01403: no data foundITPUB个人空间E$RqS#?'x
ORA-06512: at "SYS.DBMS_REGISTRY", line 420ITPUB个人空间"xj-Mi!`A8} l
ORA-06512: at line 1


yq?'[0_P,K'Q/f c#H0SQL> drop user xdb cascade;

User dropped.

SQL> SPO OFF

从上面脚本调用的结果可以确定,XML对象在执行导入时没有注册成功,可能这就是导致错误产生的原因。

保证JAVA池和共享池都大于150M,且XDB表空间可扩展,或者大于150M。则可以重启系统。

SQL> SHUTDOWN IMMEDIATE
-\'f[:tH+_vgD0Database closed.ITPUB个人空间{[xu,E+k/G
Database dismounted.
N#ax Pm Upqc,[0ORACLE instance shut down.ITPUB个人空间GFi&|%L;s%sl7{
SQL> STARTUP
0u-xK8CNs0ORACLE instance started.

Total System Global Area 5876197568 bytesITPUB个人空间DpVWq T
Fixed Size 739520 bytes
%oKm X:\Wl"fS0Variable Size 503316480 bytesITPUB个人空间;EgHB0a'L Su3Wu
Database Buffers 5368709120 bytes
)EM|-VT3v%JV0Redo Buffers 3432448 bytes
&~D~}7O z(p0Database mounted.ITPUB个人空间 wui@_s
Database opened.

下面重新安装XML方案:

SQL> SET ECHO ONITPUB个人空间(Jx%j8^T
SQL> SPO XDB_INSTALL.LOGITPUB个人空间 uz~]NL zsQ oE
SQL> @?/rdbms/admin/catqm.sql XDBPASSWD XDB TEMP

调用catqm.sql时,后面的三个参数依次时XDB用户的密码、默认表空间和临时镖客。

SQL> @?/rdbms/admin/catxdbj.sql

然后继续执行上面的SQL

然后检查XDB用户是否存在错误对象,以及XDB是否注册到数据库中:

SQL> SELECT COUNT(*) FROM DBA_OBJECTS WHERE OWNER = 'XDB' AND STATUS = 'INVALID';

COUNT(*)ITPUB个人空间t6G$yi!s8H
----------ITPUB个人空间 |a.T5o-^"S~3I\y0f
0

SQL> SELECT COMP_NAME, STATUS, VERSION FROM DBA_REGISTRY WHERE COMP_NAME = 'Oracle XML Database';

COMP_NAME STATUS VERSIONITPUB个人空间 G&e]E6MX}6A^1j(q
---------------------------------------- ----------- --------------------
#zu-a3B&ttW-vOD#C0Oracle XML Database VALID 9.2.0.4.0

下面重启数据库和监听,XDB重装完毕。

重建XDB之后,对DBMS_METADATA的访问恢复正常:

SQL> SELECT DBMS_METADATA.GET_DDL('MATERIALIZED_VIEW', 'CAT_AUTH_GMP', 'NDMAIN') FROM DUAL;

DBMS_METADATA.GET_DDL('MATERIALIZED_VIEW','CAT_AUTH_GMP','NDMAIN')
&^H&N6_B0Up:hh0------------------------------------------------------------------

CREATE MATERIALIZED VIEW "NDMAIN"."CAT_AUTH_GMP"ITPUB个人空间V] nhHI
ORGANIZATION HEAP PCTFREE


TAG:

 

评分:0

我来说两句

显示全部

:loveliness: :handshake :victory: :funk: :time: :kiss: :call: :hug: :lol :'( :Q :L ;P :$ :P :o :@ :D :( :)

Open Toolbar