- Este tópico contém 28 respostas, 4 vozes e foi atualizado pela última vez 14 anos, 7 meses atrás por
airoosp.
-
AutorPosts
-
11 de maio de 2011 às 12:26 am #99152
airoosp
ParticipanteBoa tarde,
A view que retorna informações sobre os privilégios é a all_tab_privs mas sendo linha a linha, repetindo o nome da tabela para cada privilégio. Para retornar apenas uma única linha com todos os privilégios tenho que criar um cursor correto?
Alguém conhece outra forma de listar as informações de privilégio em coluna ao invés de ser linha a linha?
user1 cadvendas insert
user1 cadvendas updategerar:
user1 cadvendas insert, update
Obrigado.
Airton
11 de maio de 2011 às 7:32 pm #99162felipeg
ParticipanteAirton, boa tarde
Veja se este comando atende sua necessidade:
SELECT owner, table_name, select_priv, insert_priv, delete_priv, update_priv
FROM table_privileges
WHERE grantee = ”
ORDER BY owner, table_name;Atenciosamente,
Felipe.12 de maio de 2011 às 5:33 pm #99191airoosp
ParticipanteVou verificar.
Obrigado.
Airton
12 de maio de 2011 às 5:57 pm #99192felipeg
Participante[quote=”airoosp”:1vxo50ne]Vou verificar.
Obrigado.
Airton[/quote]
Sem problemas!
Caso você precisar listar da forma que citou é so colocar um case nas opções de retorno do select.
Qualquer dúvida é só postar!
Atenciosamente,
Felipe.13 de maio de 2011 às 12:29 am #99211airoosp
ParticipanteBoa tarde,
Estou montando outro servidor de testes na versão 9i, o banco já foi criado e gostaria de saber se ao utilizar o imp.exe as tablespaces dos sistemas são criadas automaticamente. Se sim, qual a sintaxe a ser utilizada e se há alguma restrição ou problema que pode ocorrer após a importação?
Obrigado.
Airton
13 de maio de 2011 às 12:36 am #99212burga
ParticipantePelo imp.exe você deve criar as tablespaces manualmente antes de importar o dump.
13 de maio de 2011 às 12:49 am #99214CleitonHanzen
ParticipanteOpá….
Se for feito import FULL cria as tablespaces também, só q a estrutura de diretórios deve estar igual….. 😉
13 de maio de 2011 às 3:51 am #99216burga
Participante[quote=”CleitonHanzen”:1v3ko6ea]Opá….
Se for feito import FULL cria as tablespaces também, só q a estrutura de diretórios deve estar igual….. 😉 [/quote]
Verdade!!! Quando se faz um export FULL e um import FULL não é necessário. Eu que tenho o costume de SEMPRE criar as tablespaces de forma manual… 8)
13 de maio de 2011 às 3:06 pm #99217felipeg
Participante[quote=”burga”:391oudtt][quote=”CleitonHanzen”:391oudtt]Opá….
Se for feito import FULL cria as tablespaces também, só q a estrutura de diretórios deve estar igual….. 😉 [/quote]
Verdade!!! Quando se faz um export FULL e um import FULL não é necessário. Eu que tenho o costume de SEMPRE criar as tablespaces de forma manual… 8) [/quote]
Tenho o mesmo costume!
Principalmente devido ao fato de nunca precisar fazer uma migração com export FULL acabei me acostumando a sempre criar as tablespaces manualmente.
Caso tenha alguma situação inusitada na sua migração é só postar aqui no fórum!
PS: O comando solicitado no começo do post ajudou?
Atenciosamente,
Felipe.13 de maio de 2011 às 5:05 pm #99218airoosp
ParticipanteBom dia,
Sim o comando ajudou, e pesquisando na internet encontrei outra solução que usa um type e function. Vou postar aqui no fórum.
Para que seja possível utilizar o import full é necessário que o db_block_size do novo banco seja igual ao banco de origem?
Obrigado.
Airton
13 de maio de 2011 às 7:15 pm #99223airoosp
ParticipanteBoa tarde,
Uma dúvida referente a importação, com o import full todas as tablespaces serão criadas, e as tablespaces default do banco aquelas criadas automaticamente na instalação do 9i (undo, drsys, indx, tools, users, xdb, system) não são criadas mas ocorre a importação dos dados?
Obrigado.
Airton
13 de maio de 2011 às 7:42 pm #99224airoosp
ParticipanteReferente ao assunto da query para retornar as informações em uma única linha encontrei a solução abaixo na internet.
Primeiro criar o type, type body e depois uma function.
CREATE OR REPLACE TYPE string_agg_type AS OBJECT
(
total VARCHAR2(4000),STATIC FUNCTION ODCIAggregateInitialize(sctx IN OUT string_agg_type ) RETURN NUMBER, MEMBER FUNCTION ODCIAggregateIterate(self IN OUT string_agg_type , value IN VARCHAR2 ) RETURN NUMBER, MEMBER FUNCTION ODCIAggregateTerminate(self IN string_agg_type, returnValue OUT varchar2, flags IN number) RETURN NUMBER, MEMBER FUNCTION ODCIAggregateMerge(self IN OUT string_agg_type, ctx2 IN string_agg_type) RETURN NUMBER)
CREATE OR REPLACE TYPE BODY string_agg_type
ISSTATIC FUNCTION ODCIAggregateInitialize(sctx IN OUT string_agg_type)
RETURN NUMBER
IS
BEGIN
sctx := string_agg_type( null );
RETURN ODCIConst.Success;
END;MEMBER FUNCTION ODCIAggregateIterate(self IN OUT string_agg_type,
value IN varchar2 )
RETURN NUMBER
IS
BEGIN
self.total := self.total || ‘,’ || value;
RETURN ODCIConst.Success;
END;MEMBER FUNCTION ODCIAggregateTerminate(self IN string_agg_type,
returnValue OUT varchar2,
flags IN number)
RETURN NUMBER
IS
BEGIN
returnValue := ltrim(self.total,’,’);
return ODCIConst.Success;
END;MEMBER FUNCTION ODCIAggregateMerge(self IN OUT string_agg_type,
ctx2 IN string_agg_type)
RETURN NUMBER
IS
BEGIN
self.total := self.total || ctx2.total;
return ODCIConst.Success;
END;end;
CREATE OR REPLACE FUNCTION stragg(input VARCHAR2)
RETURN varchar2
PARALLEL_ENABLE AGGREGATE USING string_agg_type;Como exemplo utilizei a pesquisa abaixo:
select grantee, stragg(privilege)
from all_tab_privs
where table_schema = ‘VENDAS’
and table_name = ‘COMISSAO’
and grantee = ‘FINANCEIRO’
group by granteeO resultado foi: financeiro select, insert, update
Espero que seja útil para alguém.
Airton
13 de maio de 2011 às 9:11 pm #99226CleitonHanzen
Participante[quote=”airoosp”:sii7s08x]Boa tarde,
Uma dúvida referente a importação, com o import full todas as tablespaces serão criadas, e as tablespaces default do banco aquelas criadas automaticamente na instalação do 9i (undo, drsys, indx, tools, users, xdb, system) não são criadas mas ocorre a importação dos dados?
Obrigado.
Airton[/quote]
Tablespaces de Sistema (system, undo e sysaux a partir do 10g) são necessárias até pra abrir o banco, ou seja, sem elas nem o IMPORT FULL começa. As demais tablespaces são “normais” e qualquer tablespace “normal” será criada, não importando o nome.
Como o Burga e o Felipe comentaram, as boas práticas recomendam que você crie as tablespaces antes de iniciar o IMPORT e que o espaço seja pelo menos igual ao que já está em uso no banco exportado.
13 de maio de 2011 às 9:23 pm #99227airoosp
ParticipanteCleiton,
Entendi o que você falou, mas a minha dúvida é se há uma tabela que estava no outro banco tablespace system será importada ou não porque esta tablespace já foi criada na instalação do banco 9i.
Obrigado.
Airton
13 de maio de 2011 às 9:52 pm #99229CleitonHanzen
ParticipanteOs unicos objetos que não são importados são do owner SYS…. 🙂
-
AutorPosts
- Você deve fazer login para responder a este tópico.