使用dbms_xmlschema.registerschema时ORA-03113

时间:2012-08-21 14:07:16

标签: xml oracle plsql xsd

我正在尝试使用Oracle plsql存储过程注册一个Xml架构来验证一些xml文档。这是一段代码:

begin
    dbms_xmlschema.registerschema(
         schemaurl => 'http://www.w3.org/TR/xmldsig-core/xmldsig-core-schema.xsd',
         SCHEMADOC => bfilename('XMLDIR','xmldsig-core-schema.xsd'),
         local => false,
         gentypes => false,
         gentables => false,
    );
end;

我的XML架构不是本地的,因此我必须将本地设置为 false 。我确切地说,所有这些陈述都是在SYS用户下执行的。

我已经创建了一个目录,并通过以下命令授予每个人访问权限:

create or replace directory XMLDIR as '/absolute/path/to/xmlschema';
create public synonym XMLDIR for XMLDIR;
GRANT ALL ON DIRECTORY XMLDIR TO PUBLIC;

我注意到如果在运行第一个plsql块之前磁盘上没有 xmldsig-core-schema.xsd 文件,结果是 ORA-22288 错误(文件或LOB操作字符串失败的字符串)。所以我之前创建了 xmldsig-core-schema.xsd 文件。

当我运行* dbms_xmlschema.registerschema ... *我收到错误 ORA-03113:通讯渠道上的文件结尾

什么错了?任何想法?

2 个答案:

答案 0 :(得分:0)

由于代理或防火墙问题,可能无法访问DTD。您可以从XML模式中删除或注释DTD引用,并尝试注册它。

如果您希望能够在不进行编辑的情况下注册架构,则需要确保在尝试注册架构之前可以使用httpuritype()访问DTD的URL而不会出现任何错误。

select httpuritype('http://www.w3.org/2001/XMLSchema.dtd').getClob() from dual;

答案 1 :(得分:0)

ORA-03113 表示您的连接已关闭。出于某种原因,您的客户端计算机和数据库服务器停止了相互通信。 可能性:

  • 服务器已关闭?
  • 网线问题?
  • 进程被杀?
  • 日志已满?
  • Oracle内部错误?

查看警报日志。更多信息请访问:How to solve Error Message ORA-03113 in Oracle 11g ?