Resumo : neste tutorial, você aprenderá como usar a GRANTinstrução Oracle para conceder SELECTprivilégio de objeto em uma ou mais tabelas a um usuário.
SELECTem uma tabela a um usuárioPara conceder o SELECTprivilégio de objeto em uma tabela a um usuário ou função, use a seguinte instrução:
GRANT SELECT ON table_name TO {user | role};
Linguagem de código: SQL (Structured Query Language) ( sql )O exemplo a seguir ilustra como conceder o SELECTprivilégio de objeto em uma tabela a um usuário.
Primeiro, crie um novo usuário chamado DWe conceda CREATE SESSIONao usuário:
CREATE USER dw IDENTIFIED BY abcd1234;
GRANT CREATE SESSION TO dw;
Linguagem de código: SQL (Structured Query Language) ( sql )Em segundo lugar, conceda o SELECTprivilégio de objeto na ot.customerstabela ao dwusuário:
GRANT SELECT ON customers TO dw;
Linguagem de código: SQL (Structured Query Language) ( sql )Por fim, utilize o dwusuário para efetuar login no Banco de Dados Oracle e consultar os dados da ot.customerstabela:
SELECT COUNT(*)
FROM ot.customers;
Linguagem de código: SQL (Structured Query Language) ( sql )Aqui está a saída:
COUNT(*)
----------
319
Linguagem de código: SQL (Structured Query Language) ( sql )SELECTtodas as tabelas em um esquema a um usuárioÀs vezes, você deseja conceder SELECTem todas as tabelas que pertencem a um esquema ou usuário para outro usuário. Infelizmente, o Oracle não oferece suporte direto a isso usando uma única instrução SQL.
Para contornar isso, você pode selecionar todos os nomes de tabela de um usuário (ou um esquema) e conceder o SELECTprivilégio de objeto em cada tabela a um beneficiário.
O procedimento armazenado a seguir ilustra a ideia:
CREATE PROCEDURE grant_select(
username VARCHAR2,
grantee VARCHAR2)
AS
BEGIN
FOR r IN (
SELECT owner, table_name
FROM all_tables
WHERE owner = username
)
LOOP
EXECUTE IMMEDIATE
'GRANT SELECT ON '||r.owner||'.'||r.table_name||' to ' || grantee;
END LOOP;
END;
Linguagem de código: SQL (Structured Query Language) ( sql )Este exemplo concede os SELECTprivilégios de objeto de todas as tabelas que pertencem ao usuário OTpara o usuário DW:
Linguagem de código: SQL (Structured Query Language) ( sql )EXEC grant_select('OT','DW');
Quando você usa o usuário DWpara efetuar login no banco de dados Oracle, o usuário DWdeve ter o SELECTprivilégio de objeto em todas as tabelas do OTesquema do.
Neste tutorial, você aprendeu como conceder o SELECTprivilégio de objeto em uma ou mais tabelas a um usuário.
Social