Gestione audit su database Oracle – parte 2, 12c architettura multitenant

martedì 27 febbraio 2018 alle 27:34 | Pubblicato su Diario | Lascia un commento

Torno sull’argomento gia trattato in un paio di post precedenti per riportare alcuni dettagli emersi ricontrollando la configurazione sui database interni. In particolare nei miei vari tentativi ho un po’ pasticciato sui database versione 12.1 in modalità multitenant. Come ho scritto in chiusura del post precedente sull’argomento, occorre fare attenzione che sulla versione 12 a tutte le procedure del package PL/SQL DBMS_AUDIT_MGMT è stato aggiunto il parametro “CONTAINER” che ha come default il valore CONTAINER_CURRENT. Quello che ho combinato io è stato di invocare, collegandomi al container root la procedura DBMS_AUDIT_MGMT.INIT_CLEANUP senza specificare il parametro, cosa che quindi ha significato l’inizializzazione solo per il container corrente, però ho invocato la procedura di creazione del job di puliza, DBMS_AUDIT_MGMT.PURGE_JOB con il parametro container valorizzato a DBMS_AUDIT_MGMT.CONTAINER_ALL. In questo modo la creazione del job non da errore, però durante l’esecuzione del job di pulizia c’erano degli errori che venivano registrati sull’alert con il messaggio: “ORA-46273: DBMS_AUDIT_MGMT operation failed in one of the PDB”. Nel file di trace specifico del job c’era la spiagazione chiara con un messaggio come questo:

“KZAM_TRC:Exception encountered in “PDBXXXP1″
KZAM_TRC:Exception is ORA-46258, message is: ORA-46258: Cleanup not initialized for the audit trail”

Fin qui niente di che, il problema sta nel trovare il modo di rattoppare, infatti secondo me in questa versione di Oracle il package manca di una gestione seria degli errori, per cui, nella mia situazione descritta sopra, invocando nuovamente DBMS_AUDIT_MGMT.INIT_CLEANUP con parametro CONTAINER=>DBMS_AUDIT_MGMT.CONTAINER_ALL si ottiene l’errore “ORA-46273: DBMS_AUDIT_MGMT operation failed in one of the PDB”, invocando la procedura DBMS_AUDIT_MGMT.DEINIT_CLEANUP sempre con parametro CONTAINER=>DBMS_AUDIT_MGMT.CONTAINER_ALL  si ottiene un errore che dice che in uno dei PDB il “cleanup” non è inizializzato (vado a memoria in questo caso con il messaggio perché ora ho sistemato tutto e mi sono perso la console con il messaggio). Collegandosi sui singoli container ho trovato una situazione un po’ strana, risultava inizializzata la pulizia per gli audit su file (così per lo meno risultava con una chiamata alla funzione “DBMS_AUDIT_MGMT.IS_CLEANUP_INITIALIZED”) però se cercavo di deinizializzare questi specifici canali mi dava errore. Alla fine ho risolto invocando per ciascun PDB in sequenza le procedure DBMS_AUDIT_MGMT.DEINIT_CLEANUP e DBMS_AUDIT_MGMT.INIT_CLEANUP con parametro CONTAINER=>DBMS_AUDIT_MGMT.CONTAINER_CURRENT. A quel punto la situazione era pulita la configurazione per la pulizia degli audit su tutti i container ha funzionato senza problemi. La soluzione non era difficile ma ho dovuto trovarla per tentativi.

Annunci

Lascia un commento »

RSS feed for comments on this post. TrackBack URI

Rispondi

Inserisci i tuoi dati qui sotto o clicca su un'icona per effettuare l'accesso:

Logo WordPress.com

Stai commentando usando il tuo account WordPress.com. Chiudi sessione /  Modifica )

Google+ photo

Stai commentando usando il tuo account Google+. Chiudi sessione /  Modifica )

Foto Twitter

Stai commentando usando il tuo account Twitter. Chiudi sessione /  Modifica )

Foto di Facebook

Stai commentando usando il tuo account Facebook. Chiudi sessione /  Modifica )

w

Connessione a %s...

Blog su WordPress.com.
Entries e commenti feeds.

%d blogger hanno fatto clic su Mi Piace per questo: