Post

Visualizzazione dei post da agosto, 2020

Automatic Diagnostic Repository

ADR è un insieme di file e directory di repository, al di fuori del db, che contengono i dati diagnostici come:   -Trace - AlertLog - Health monitor reports L'istallazione di default prevede che la variabile ADR_BASE =ORACLE_BASE e ADR_HOME =$ADR_BASE/diag/<product_type>/<db_id>/<instance_id> ADR_BASE è estratto dal  seguente parametro: SQL> show parameter diagnostic NAME                                 TYPE        VALUE ------------------------------------ ----------- ------------------------------ diagnostic_dest                      string      /u01/app/oracle Nell'esempio di un container ORCL e un pluggable ORCLPDB abbiamo come ADR_HOME /u01/app/oracle/diag/rdbms/orcl/orcl che contiene le directory seguenti: alert  cdump  hm  incident  incpkg  ir  lck  log  metadata  metadata_dgif  metadata_pv  stage  sweep  trace Per visualizzare la locations delle varie directory  SQL> col name format a25 SQL> col value format a50 SQL> select name,value from

Comandi Oracle 12c e 18c

[oracle@test ~]$ sqlplus SQL*Plus: Release 18.0.0.0.0 - Production on Mon Aug 17 15:56:56 2020 Version 18.3.0.0.0 Copyright (c) 1982, 2018, Oracle. All rights reserved. Enter user-name: sys as sysdba Enter password: Connesso a: Oracle Database 18c Enterprise Edition Release 18.0.0.0.0 - Production Version 18.3.0.0.0 Per verificare se siamo nel root database SQL>   show con_name CON_NAME ------------------------------ CDB$ROOT Per visualizzare i pdb SQL> show pdbs     CON_ID CON_NAME OPEN MODE  RESTRICTED ---------- ------------------------------ ---------- ---------- 2 PDB$SEED READ ONLY  NO 3 ORCLPDB        MOUNTED MOUNTED significa database chiuso Per aprire un pdb SQL> alter pluggable database orclpdb open; SQL> show pdbs;     CON_ID CON_NAME OPEN MODE  RESTRICTED ---------- ------------------------------ ---------- ----------------------------- 2 PDB$SEED  READ ONLY             NO 3 ORCLPDB  READ WRITE            NO Per arp

Initialization Parameters

I parametri di inizializzazione possono essere modificati a livelli di sistema o di sessione SQL> alter  SYSTEM set... scope=MEMORY | BOTH | SPFILE | DEFERRED SQL> alter SESSION set.....scope=MEMORY | BOTH | SPFILE | DEFERRED La vista V$PARAMETER contiene tre colonne che indicano in base a loro valore come effettuare la modifica: ISSES_MODIFIABLE :   a livello di sessione ISSYS_MODIFIABLE : a livello di sistema.  Assume i seguenti valori:  FALSE, vuole dire che è un parametro statico e quindi potrebbe essere cambiato ma solo a livello di Spfile e occorre riavviare il db;  IMMEDIATE vuol dire che i cambiamenti sono immediati;  DEFERRED, i cambiamenti diventato effettivi per le nuove sessioni. ISPDB_MODIFIABLE : a livello di PDB. Se TRUE vuol dire che può sovrascrivere i parametri ereditati dal container db. Vediamo i valori di "scope": MEMORY indica che le modifiche sono fatte in memoria e sono immediate ma si perdono al prossimo riavvio del db. SPFILE indica che la modi

Pluggable Database Save state

Ogni volta che si riapre il container root anche il pdb deve essere riavviato. SQL> column name format a30 SQL> select name, open_mode from v$pdbs; NAME OPEN_MODE ------------------------------ ---------------- PDB$SEED READ ONLY ORCLPDB READ WRITE SQL> show con_name CON_NAME ------------------------------ CDB$ROOT SQL> shutdow immediate; Database chiuso. NOMOUNT del database eseguito. Istanza ORACLE chiusa. Per fare in modo che il pdb si apra in automatico, quando si avvia il container eseguiamo i seguenti comandi: SQL> alter pluggable database orclpdb open; SQL> alter pluggable database orclpdb save state; SQL> show pdbs CON_ID   CON_NAME     OPEN MODE    RESTRICTED ---------- ------------------------------ ---------- -------------------------- 2                PDB$SEED     READ ONLY             NO 3                ORCLPDB       READ WRITE          NO Se spengo il contai

Temporary file

Un tempfile è un file del database Oracle. I file temporanei vengono utilizzati con tablespace temporanei e vengono utilizzati per operazioni speciali, in particolare per l'ordinamento dei risultati dei dati su disco e per hash join in SQL.  L'operazione di ordinamento per una query che restituisce milioni di righe  è troppo grande per la RAM e deve essere presente sul disco.  SQL> show con_name CON_NAME ------------------------------ ORCLPDB SQL>  select file_name, file_id, tablespace_name, con_id from cdb_temp_files; FILE_NAME                                                 FILE_ID TABLESPACE_NAME   CON_ID --------------------------------------------------------------------------------------------------------------------------- /u01/app/oracle/oradata/ORCL/orclpdb/temp01.dbf         3                TEMP       3 SQL> alter session set container=CDB$ROOT; SQL> select file_name,file_id,tablespace_name,con_id from cdb_temp_files; FILE_NAME                           

DBMS_UTILITY.get_parameter_value

Quando viene eseguita la funzione DBMS_UTILITY.get_parameter_value ('db_name', intval, db_name); Compare l'errore seguente select USER1.F_GET_USER_SERVICE_NAME from dual; ORA-01031: insufficient privileges ORA-06512: at "SYS.DBMS_UTILITY", line ... La causa è legata alla nuova sicurezza introdotto con la PSU 11.2.0.4 che richiede per invocare la procedura DBMS_UTILITY di avere le grant sugli oggetti utilizzati dalla procedura. Occorre dare la grant "select on sys.v_$parameter" all'utente che deve utilizzare la  DBMS_UTILITY.get_parameter_value Soluzione : 1) SQL>    sqlplus / as sysdba 2) SQL> grant select on sys.v_$parameter to USER1;