Criar usuário somente para consultas no banco de dados

Quando for necessário criar um usuário no banco de dados de consulta das tabelas da Ema, executar os comandos abaixo: 

1 - Criação do usuário:

CREATE USER DOX_CONSULTA
  IDENTIFIED BY PASSWORD
  DEFAULT TABLESPACE USERS
  TEMPORARY TABLESPACE TEMP
  PROFILE DEFAULT
  ACCOUNT UNLOCK;
  

declare
  va_sql varchar2(1000);
  va_scm varchar2(50);
  va_usr varchar2(50);
  va_typ varchar2(50);

begin
  va_scm := 'EMA';
  va_usr := 'DOX_CONSULTA';

  for reg in (select a.OBJECT_NAME, a.OBJECT_TYPE
              from ALL_OBJECTS a
              where a.OWNER = va_scm
              and a.OBJECT_TYPE in (select distinct(OBJECT_TYPE) from ALL_OBJECTS)
              and a.OBJECT_TYPE <> 'TRIGGER'
              and a.OBJECT_TYPE <> 'INDEX'
              AND A.OBJECT_TYPE <> 'SEQUENCE'
              AND A.OBJECT_TYPE <> 'TYPE'
              AND A.OBJECT_TYPE <> 'LOB'
  )loop
     begin
      if (reg.OBJECT_TYPE = 'FUNCTION' or reg.OBJECT_TYPE = 'PROCEDURE' or reg.OBJECT_TYPE = 'PACKAGE'or reg.OBJECT_TYPE = 'PACKAGE BODY') then
         va_typ := 'EXECUTE';
      else
         va_typ := 'SELECT';
      end if;
      va_sql := 'grant ' || va_typ || ' on ' || va_scm || '.' || reg.OBJECT_NAME || ' to ' || va_usr;
      execute immediate va_sql;

      exception
        when no_data_found then
          null;
        when others then
          dbms_output.put_line(sqlerrm);
          null;
     end;
  end loop;
end;
/

2 - Permissão:

grant create session to DOX_CONSULTA;

 


Revisão #1
Criado 9 March 2022 13:41:12 por Nicolly Andrielly
Atualizado 10 March 2022 14:23:40 por Nicolly Andrielly