我正在尝试使用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:通讯渠道上的文件结尾
什么错了?任何想法?
答案 0 :(得分:0)
由于代理或防火墙问题,可能无法访问DTD。您可以从XML模式中删除或注释DTD引用,并尝试注册它。
如果您希望能够在不进行编辑的情况下注册架构,则需要确保在尝试注册架构之前可以使用httpuritype()
访问DTD的URL而不会出现任何错误。
select httpuritype('http://www.w3.org/2001/XMLSchema.dtd').getClob() from dual;
答案 1 :(得分:0)
ORA-03113 表示您的连接已关闭。出于某种原因,您的客户端计算机和数据库服务器停止了相互通信。 可能性:
查看警报日志。更多信息请访问:How to solve Error Message ORA-03113 in Oracle 11g ?