0

我正在尝试使用 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 模式不是本地的,所以我必须将local设置为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 : end-of-file on communication channel

怎么了 ?有任何想法吗 ?

4

2 回答 2

0

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

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

select httpuritype('http://www.w3.org/2001/XMLSchema.dtd').getClob() from dual;
于 2012-08-21T14:58:32.000 回答
0

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

  • 服务器挂了?
  • 你的网线有问题吗?
  • 进程被杀死?
  • 日志满了?
  • 甲骨文内部错误?

查看您的警报日志。更多信息在这里:如何解决 Oracle 11g 中的错误消息 ORA-03113?

于 2015-04-04T22:38:10.483 回答