Eu tenho um usuário CDB chamado "MYADMIN" e estou tentando fazer com que ele se conecte ao log miner.
-- enable calling admin username on CDB
ALTER SESSION set "_ORACLE_SCRIPT"=true
/
-- create unique table space for admin
CREATE TABLESPACE myadmints DATAFILE '/path/to/admints.dbf' SIZE 20M AUTOEXTEND ON
/
-- create admin user on CDB
CREATE USER myadmin IDENTIFIED BY P@ssw0rd DEFAULT TABLESPACE myadmints QUOTA UNLIMITED ON myadmints ACCOUNT UNLOCK
/
-- allow access to all PDBs to the admin user
ALTER USER myadmin SET CONTAINER_DATA=ALL CONTAINER=CURRENT
/
-- grant needed permissions
GRANT DBA to myadmin
GRANT CREATE SESSION TO myadmin
GRANT CREATE TABLE TO myadmin
GRANT EXECUTE_CATALOG_ROLE TO myadmin
GRANT EXECUTE ON DBMS_LOGMNR TO myadmin
GRANT SELECT ON V_$DATABASE TO myadmin
GRANT SELECT ON V_$LOGMNR_CONTENTS TO myadmin
GRANT SELECT ON V_$ARCHIVED_LOG TO myadmin
GRANT SELECT ON V_$LOG TO myadmin
GRANT SELECT ON V_$LOGFILE TO myadmin
GRANT RESOURCE, CONNECT TO myadmin
Selecionei uma linha de 'v$archived_log' e tentei carregar o arquivo.
BEGIN
DBMS_LOGMNR.ADD_LOGFILE(LogFileName=>'/path/to/archive/ARC000011_1061542581',Options=>DBMS_LOGMNR.new);
DBMS_LOGMNR.START_LOGMNR(StartScn=>3083464, EndScn=>3388245, Options=>DBMS_LOGMNR.DICT_FROM_ONLINECATALOG+DBMS_LOGMNR.NO_ROW_ID_IN_STMT);
END;
Eu posso executá-lo do sys as sysdba
usuário, mas quando o executo do meu usuário "myadmin", estou recebendo:
Error report -
ORA-01435: user does not exist
ORA-06512: at "SYS.DBMS_LOGMNR", line 72
ORA-06512: at line 3
01435. 00000 - "user does not exist"
*Cause:
*Action:
O erro é sobre a START_LOGMNR
linha quando eu removo não há erro.
Qual privilégio estou perdendo?
Isso é o que você obtém quando quebra e ignora os conceitos básicos da arquitetura CDB e usuários comuns e usa "soluções alternativas" não suportadas (
ALTER SESSION set "_ORACLE_SCRIPT"=true
).O código acima funciona perfeitamente quando você cria o usuário de maneira compatível.
Então:
Sempre que você usa
ALTER SESSION set "_ORACLE_SCRIPT"=true
para criar seus próprios usuários e objetos, eles têm suasORACLE_MAINTAINED
propriedades definidas comoY
. Isso não é suportado e pode interromper a funcionalidade dos recursos.Se você adicionar outro PDB após criar o usuário do logminer, dbms_logmnr.start_logmnr resultará em ORA-01435: usuário não existe.