Post

Visualizzazione dei post da novembre, 2020

Metrics "Current Open Cursors Count" is at %

Immagine
La metrica "Current Open Cursors Count" conta il numero totale di cursori aperti del database nello stesso istante. Che cosa è il Cursor? Ogni volta che viene eseguia una SQL statement, viene allocata una quantità di memoria privata nella Shared pool , e in dettaglio nella Library Cache, chiamata Cursor o Context Area. Proprio per eviare che una sessione rinnegata riempia la Library Cache o ostruisca la CPU con milioni di richieste di analisi (PARSE), viene impostato il parametro del database OPEN_CURSORS che limita i cursori aperti contemopranemante per sessione. SQL> show parameter open_cursors Il parametro OPEN_CURSORS imposta il numero massimo di cursori per sessione, che ogni sessione può avere aperti. Ad esempio, se il valore di OPEN_CURSORS è impostato su 1000, ogni sessione può avere fino a 1000 cursori aperti contemporaneamente. Le soglie sono visibili nelle seguente query SQL> select * from dba_thresholds where metrics_name like 'Current Open Cursors Count

External Table with PARTITIONS

Immagine
 Una tabella partizionata è una tabella che è divisa in più sezioni per facilitare la ricerda dei dati. La partizione è usata quando la tabella ha milioni di records e consiste nel dividerla in più sezioni così che quando si effettua una query e si impone la where condition sulle colonne che definiscono la partizione, viene effettuata la ricerca solo in quella sezione della tabella ed ingnorata la restante. Colleghiamoci allo schema HR del pluggable database ORCLPDB. Creiamo una tabella partizionata per LIST (ci sono altre opzioni come il range, etc.). CREATE TABLE vendite_per_regione (trans_id number, trans_amount number, country varchar2(3)) PARTITION BY LIST (country) (PARTITION c1 VALUES ('LAZ'), PARTITION c2 VALUES ('PUG') ); Questa query individua il nome delle paritzioni e il valore: SELECT * FROM user_tab_partitions WHERE TABLE_NAME= 'VENDITE_PER_REGIONE' ORDER BY table_name, partition_name; insert into vendite_per_regione values (1,500,'LAZ');

SQL*Loader express mode

Immagine
Carica i dati da un file esterno s enza definire un control file ed è più veloce del classico loader perchè carica la tabella utilizzando insert parallele con l'opzione "append" che dice ad Oracle di utilizzare il metodo di caricamento "direct path". Vediamo un esempio. Collegarsi ad un plubggable database come hr: SQL> show  user; USER è "HR" SQL> show con_name; CON_NAME ------------------------------ ORCLPDB Creare tabelle così fatte: SQL> create table dept_x                (deptno number,                 dname varchar2(100),                 constraint dept_x primary key (deptno)                 );   SQL> insert into dept_x values (1, 'sales');                commit; SQL> select * from dept_x; SQL> create table emp_x                ( empid number,                  name varchar2(10) not null,                  gender varchar(1),                  deptno number,                  address varchar2(100),                   constrai