AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • Início
  • system&network
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • Início
  • system&network
    • Recentes
    • Highest score
    • tags
  • Ubuntu
    • Recentes
    • Highest score
    • tags
  • Unix
    • Recentes
    • tags
  • DBA
    • Recentes
    • tags
  • Computer
    • Recentes
    • tags
  • Coding
    • Recentes
    • tags
Início / dba / Perguntas / 39092
Accepted
Leigh Riffel
Leigh Riffel
Asked: 2013-04-03 12:24:00 +0800 CST2013-04-03 12:24:00 +0800 CST 2013-04-03 12:24:00 +0800 CST

O que deve estar em vigor para validar um XMLTYPE em um esquema?

  • 772

Eu tenho um procedimento que gera um XMLTYPE e quero validá-lo em um esquema. O problema é que parece haver um problema de permissão executando createSchemaBasedXML porque quando executo o procedimento como AUTHID DEFINER ele dá o erro "ORA-31050: Acesso negado", mas quando executo como AUTHID CURRENT_USER ele realmente retorna um erro específico de validação (Vou lidar com isso separadamente). CURRENT_USER não é uma solução aceitável.

Minha suposição é que CURRENT_USER funciona porque o usuário tem a função XMLADMIN. Conceder as permissões incluídas na função não resolve o problema, portanto, deve ser a capacidade das funções ignorar as ACLs.

O problema é que consultar RESOURCE_VIEW para a ACL que protege o recurso mostra que ele é protegido por /sys/acls/all_owner_acl.xml. DBMS_XDB.getPrivilegesmostra que o xsd tem todas as seguintes permissões:

  <read-properties/>
  <read-contents/>
  <write-config/>
  <link/>
  <unlink/>
  <read-acl/>
  <write-acl-ref/>
  <update-acl/>
  <resolve/>
  <link-to/>
  <unlink-from/>
  <dav:lock/>
  <dav:unlock/>
  <dav:write-properties/>
  <dav:write-content/>
  <dav:execute/>
  <dav:take-ownership/>
  <dav:read-current-user-privilege-set/>

O uso DBMS_XDB.getAclDocumentmostra que um principal dav:ownertem todos os privilégios, portanto, isso não deve ser suficiente para permitir que o proprietário do esquema crie XML baseado em esquema. Pensando nisso criei um bloco para rodar DBMS_XDB.createResourcecriando uma nova ACL. Posso criar a ACL com êxito e, a partir do SQLDeveloper, posso ver que ela existe no local em que a criei.

Há uma série de lugares em que posso estar errado neste processo, então o núcleo do que estou procurando é o seguinte:

O que deve estar em vigor para validar um XMLTYPE em um esquema?

=== Atualização 03/04/2013 ===
Posso definir o acl para meu arquivo xsd para /sys/acls/all_all_acl.xmle voltar para /sys/acls/all_owner_acl.xml. Como antes, nenhum deles resolve o problema de permissões. Eu também tentei um createResource usando a definição acl copiada de all_owner_acl.xl e usando o mesmo caminho daqueles arquivos de /sys/acls/. Isso pelo menos define com êxito a ACL. Eu o executei para todos os meus XSDs e consultei RESOURCE_VIEW para confirmar se eles estão configurados para a nova ACL. Depois de tudo isso, createSchemaBasedXML ainda fornece um erro de acesso negado. Minha ACL está correta ou pode haver outro problema?

<acl xmlns="http://xmlns.oracle.com/xdb/acl.xsd" 
   xmlns:dav="DAV:" 
   xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"   
   xsi:schemaLocation="http://xmlns.oracle.com/xdb/acl.xsd 
      http://xmlns.oracle.com/xdb/acl.xsd" shared="true">
       <ace>
         <grant>true</grant>
         <principal>MY_ORACLE_USER</principal>
         <privilege>
           <all/>
         </privilege>
       </ace>
     </acl>

=== Atualização 09/04/2013 ===
Eu tenho um bloco anônimo que pode validar XML com sucesso com base em um esquema. Isso aponta novamente para um problema de permissão que permite que isso funcione quando as funções estão habilitadas, mas não quando não estão disponíveis.

== Atualização 12/04/2013 ===
Todas as evidências que recebo parecem indicar que há algo errado com minha ACL ou talvez mais provável com a maneira como configuro a ACL. Retirar a função XDBADMIN do usuário faz com que o bloco anônimo falhe com um erro de acesso negado, embora eu tenha concedido todas as permissões que a função fornece de acordo com dba_tab_privs. Meu setACL segue este formulário:

DBMS_XDB.setACL('/sys/schemas/MY_ORACLE_USER/account.xsd', '/sys/acls/acl_acc.xml');

Um caso de teste completo pode ser encontrado no Oracle Communities .

oracle oracle-11g-r2
  • 1 1 respostas
  • 1250 Views

1 respostas

  • Voted
  1. Best Answer
    Leigh Riffel
    2013-04-18T06:19:34+08:002013-04-18T06:19:34+08:00

    Meu caso de teste funcionou bem em vários outros bancos de dados e várias fontes (incluindo suporte oracle) perguntaram se o usuário ANONYMOUS havia sido descartado. Embora não tivesse, houve algumas alterações no XML DB Repository que foram feitas sem um entendimento completo. Para tentar reduzir o problema, reinstalei o XDB usando a nota 1292089.1. Isso permitiu que meu caso de teste funcionasse corretamente e depois de descartar os tipos e tabelas criados e registrar novamente nosso esquema XML, tudo funcionou corretamente.

    • 0

relate perguntas

  • Backups de banco de dados no Oracle - Exportar o banco de dados ou usar outras ferramentas?

  • ORDER BY usando prioridades personalizadas para colunas de texto

  • Interface sqlplus confortável? [fechado]

  • Como encontrar as instruções SQL mais recentes no banco de dados?

  • Como posso consultar nomes usando expressões regulares?

Sidebar

Stats

  • Perguntas 205573
  • respostas 270741
  • best respostas 135370
  • utilizador 68524
  • Highest score
  • respostas
  • Marko Smith

    Como fazer a saída do sqlplus aparecer em uma linha?

    • 3 respostas
  • Marko Smith

    Selecione qual tem data máxima ou data mais recente

    • 3 respostas
  • Marko Smith

    Como faço para listar todos os esquemas no PostgreSQL?

    • 4 respostas
  • Marko Smith

    Conceder acesso a todas as tabelas para um usuário

    • 5 respostas
  • Marko Smith

    Listar todas as colunas de uma tabela especificada

    • 5 respostas
  • Marko Smith

    Como usar o sqlplus para se conectar a um banco de dados Oracle localizado em outro host sem modificar meu próprio tnsnames.ora

    • 4 respostas
  • Marko Smith

    Como você mysqldump tabela (s) específica (s)?

    • 4 respostas
  • Marko Smith

    Listar os privilégios do banco de dados usando o psql

    • 10 respostas
  • Marko Smith

    Como inserir valores em uma tabela de uma consulta de seleção no PostgreSQL?

    • 4 respostas
  • Marko Smith

    Como faço para listar todos os bancos de dados e tabelas usando o psql?

    • 7 respostas
  • Martin Hope
    Stéphane Como faço para listar todos os esquemas no PostgreSQL? 2013-04-16 11:19:16 +0800 CST
  • Martin Hope
    Mike Walsh Por que o log de transações continua crescendo ou fica sem espaço? 2012-12-05 18:11:22 +0800 CST
  • Martin Hope
    Stephane Rolland Listar todas as colunas de uma tabela especificada 2012-08-14 04:44:44 +0800 CST
  • Martin Hope
    haxney O MySQL pode realizar consultas razoavelmente em bilhões de linhas? 2012-07-03 11:36:13 +0800 CST
  • Martin Hope
    qazwsx Como posso monitorar o andamento de uma importação de um arquivo .sql grande? 2012-05-03 08:54:41 +0800 CST
  • Martin Hope
    markdorison Como você mysqldump tabela (s) específica (s)? 2011-12-17 12:39:37 +0800 CST
  • Martin Hope
    pedrosanta Listar os privilégios do banco de dados usando o psql 2011-08-04 11:01:21 +0800 CST
  • Martin Hope
    Jonas Como posso cronometrar consultas SQL usando psql? 2011-06-04 02:22:54 +0800 CST
  • Martin Hope
    Jonas Como inserir valores em uma tabela de uma consulta de seleção no PostgreSQL? 2011-05-28 00:33:05 +0800 CST
  • Martin Hope
    Jonas Como faço para listar todos os bancos de dados e tabelas usando o psql? 2011-02-18 00:45:49 +0800 CST

Hot tag

sql-server mysql postgresql sql-server-2014 sql-server-2016 oracle sql-server-2008 database-design query-performance sql-server-2017

Explore

  • Início
  • Perguntas
    • Recentes
    • Highest score
  • tag
  • help

Footer

AskOverflow.Dev

About Us

  • About Us
  • Contact Us

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve