Bom dia, tenho o seguinte cenário:
Em um banco de dados com o usuário A e o schema A, surgiu a necessidade de se criar outro usuário, porém esse usuário deve ter acesso ao schema A, mas sem que ele tenha que fazer referência, ex.: SELECT * FROM A.TABELA.
Existe alguma maneira de fazer isso sem que precise criar sinônimos?
Pois não queria criar sinônimos para todos os objetos.
Obrigado
Schemas / Criar sinônimos
- dr_gori
- Moderador
- Mensagens: 5026
- Registrado em: Seg, 03 Mai 2004 3:08 pm
- Localização: Portland, OR USA
- Contato:
Thomas F. G
Você já respondeu a dúvida de alguém hoje?
https://glufke.net/oracle/search.php?search_id=unanswered
Você já respondeu a dúvida de alguém hoje?
https://glufke.net/oracle/search.php?search_id=unanswered
Terá que criar sinônimo. Mas isso é uma tarefa muito fácil se você criar um script que monta o código pra você. Veja o exemplo:

SELECT 'CREATE PUBLIC SYNONYM '||OBJECT_NAME||' FOR '||OBJECT_NAME||';'
FROM USER_OBJECTS
WHERE OBJECT_TYPE IN ('TABLE', 'FUNCTION', 'PROCEDURE','VIEW','PACKAGE')
AND OBJECT_NAME LIKE 'TB_%'
AND NOT EXISTS (SELECT SYNONYM_NAME
FROM ALL_SYNONYMS
WHERE OWNER='PUBLIC'
AND SYNONYM_NAME=OBJECT_NAME
AND TABLE_OWNER='seu_owner')

-
- Rank: Analista Sênior
- Mensagens: 130
- Registrado em: Seg, 22 Nov 2004 1:45 pm
- Localização: Niterói - RJ
Gustavo Erthal Jr. | TRISCAL
...................................................
Rio de Janeiro | (21) 2507-2010
São Paulo | (11) 3167-0526
www.triscal.com.br
...................................................
Rio de Janeiro | (21) 2507-2010
São Paulo | (11) 3167-0526
www.triscal.com.br
Ou então você pode dar grants para o outro usuário acessar o schema A. Mas deve ter certeza de que esse outro usuário não terá objetos com o mesmo nome dos já existentes no schema A. Se houver você terá que usar os sinônimos, bastando para isso utilizar o script fornecido pelo dr_gori.
- MuLtAnI
- Moderador
- Mensagens: 90
- Registrado em: Ter, 01 Jun 2004 9:21 am
- Localização: Videira - SC
- Contato:
Olá erthal, mas como eu daria um grant para todo o schema?
é isso mesmo que preciso, este novo usuário não terá objeto nenhum, apenas acesso a todos os objetos do usuário A.
Eu não quero é ter que ficar criando um monte de sinônimos e fazendo referência aos objetos.
obrigado!
[]'s
é isso mesmo que preciso, este novo usuário não terá objeto nenhum, apenas acesso a todos os objetos do usuário A.
Eu não quero é ter que ficar criando um monte de sinônimos e fazendo referência aos objetos.
obrigado!
[]'s
-
- Rank: Analista Sênior
- Mensagens: 130
- Registrado em: Seg, 22 Nov 2004 1:45 pm
- Localização: Niterói - RJ
Gustavo Erthal Jr. | TRISCAL
...................................................
Rio de Janeiro | (21) 2507-2010
São Paulo | (11) 3167-0526
www.triscal.com.br
...................................................
Rio de Janeiro | (21) 2507-2010
São Paulo | (11) 3167-0526
www.triscal.com.br
Brother,
Então rode esse pequeno script no SQL*Plus, ou qualquer outra ferramenta que você utilize, como o PlSql Developer:
Lembrando somente de alterar o NOVO_USUARIO para o usuário que você quer dar os grants.
Se você só quiser dar grants para as tabelas, altere a tabela da cláusula FROM para a USER_TABLES, e o atributo da cláusula SELECT deverá ser TABLE_NAME.
Resolvido seu problema?
Então rode esse pequeno script no SQL*Plus, ou qualquer outra ferramenta que você utilize, como o PlSql Developer:
BEGIN
FOR R1 IN (SELECT OBJECT_NAME FROM USER_OBJECTS) LOOP
EXECUTE IMMEDIATE ('GRANT SELECT, INSERT, UPDATE, DELETE ON '||R1.OBJECT_NAME||' TO NOVO_USUARIO');
END LOOP;
END;
Se você só quiser dar grants para as tabelas, altere a tabela da cláusula FROM para a USER_TABLES, e o atributo da cláusula SELECT deverá ser TABLE_NAME.
Resolvido seu problema?
-
- Rank: Estagiário Júnior
- Mensagens: 2
- Registrado em: Ter, 04 Jul 2006 12:41 pm
- Localização: Campinas - SP
Mas ainda vai ser necessário criar sinônimos, só dando grant não resolve.
Pode ser usado as linhas abaixo para gerar o script sql para isso:
Use as linhas geradas para o script do grant logando com a ContaOwner e as linhas geradas para os sinônimos com a conta do novo usuario.
Espero que tenha sido claro e que ajude.
Pode ser usado as linhas abaixo para gerar o script sql para isso:
# script do GRANT
sqlplus ContaOwner/ContaOwner
SET HEADING OFF;
SET PAGESIZE 0;
SELECT 'GRANT SELECT,UPDATE,INSERT,DELETE ON ',TNAME, ' TO usuario_novo;' from tab;
SELECT 'GRANT ALL ON ', SEQUENCE_NAME, ' TO usuario_novo;' from USER_SEQUENCES;
SELECT 'GRANT ALL ON ', OBJECT_NAME, ' TO usuario_novo;' from USER_OBJECTS WHERE OBJECT_TYPE = 'FUNCTION';
EXIT;
# script dos SINÔNIMOS
sqlplus ContaOwner/ContaOwner
SET HEADING OFF;
SET PAGESIZE 0;
SELECT 'CREATE SYNONYM ',TNAME, ' FOR ContaOwner.',TNAME, ';' from tab;
SELECT 'CREATE SYNONYM ',SEQUENCE_NAME, ' FOR ContaOwner.',SEQUENCE_NAME, ';' from USER_SEQUENCES;
SELECT 'CREATE SYNONYM ',VIEW_NAME, ' FOR ContaOwner.',VIEW_NAME, ';' from user_views;
SELECT 'CREATE SYNONYM ',OBJECT_NAME, ' FOR ContaOwner.',OBJECT_NAME,';' from USER_OBJECTS WHERE OBJECT_TYPE = 'FUNCTION';
EXIT;
Espero que tenha sido claro e que ajude.
- MuLtAnI
- Moderador
- Mensagens: 90
- Registrado em: Ter, 01 Jun 2004 9:21 am
- Localização: Videira - SC
- Contato:
valeu rapaziada, quanto a criar os sinônimos não é problema, eu apenas queria saber se havia alguma forma de fazer isso sem o uso dos sinônimos, imaginei que houvesse algo como compartihamento de schemas entre usuários.
obrigado pela força!
[]'s
obrigado pela força!
[]'s
-
- Informação
-
Quem está online
Usuários navegando neste fórum: Google [Bot] e 1 visitante