Ir para o conteúdo principal

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;