Resumo : neste tutorial, você aprenderá como usar a GRANT
instrução Oracle para conceder SELECT
privilégio de objeto em uma ou mais tabelas a um usuário.
SELECT
em uma tabela a um usuárioPara conceder o SELECT
privilé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 SELECT
privilégio de objeto em uma tabela a um usuário.
Primeiro, crie um novo usuário chamado DW
e conceda CREATE SESSION
ao 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 SELECT
privilégio de objeto na ot.customers
tabela ao dw
usuário:
GRANT SELECT ON customers TO dw;
Linguagem de código: SQL (Structured Query Language) ( sql )
Por fim, utilize o dw
usuário para efetuar login no Banco de Dados Oracle e consultar os dados da ot.customers
tabela:
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 )
SELECT
todas as tabelas em um esquema a um usuárioÀs vezes, você deseja conceder SELECT
em 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 SELECT
privilé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 SELECT
privilégios de objeto de todas as tabelas que pertencem ao usuário OT
para o usuário DW
:
Linguagem de código: SQL (Structured Query Language) ( sql )EXEC grant_select('OT','DW');
Quando você usa o usuário DW
para efetuar login no banco de dados Oracle, o usuário DW
deve ter o SELECT
privilégio de objeto em todas as tabelas do OT
esquema do.
Neste tutorial, você aprendeu como conceder o SELECT
privilégio de objeto em uma ou mais tabelas a um usuário.
Social