Post

Visualizzazione dei post da aprile, 2019

Segment Shrink

Immagine
Consiste nel recuperare spazio sopra e sotto l'hwm (high-water mark), liberando spazio e resettando il valore di hwm. Poiché vengono mosse le righe e cambiano i ROWIDs occorre abilitare la tabella alla modalità row movement e il tablespace di appartenenza deve eesere gestito in modalità ASSM (automatic segment space management). SQL > alter table .... enable row movement; Inoltre occorre disabilitare trigger, dml e query basati sul rowid. Può essere eseguita on line pertanto durante lo shrink vengono bloccate le dml che operano su quei segmenti mentre gli indici risultano utilizzabili. Può essere usato per i seguenti oggetti. - Heap tables - Index-organized tables and their overflow segments - LOBs and LOB segments - Materialized views and materialized view logs - Indexes - Partitions and subpartitions select SEGMENT_NAME, BLOCKS ,bytes  from dba_segments where segment_type='TABLE' and  TABLESPACE_NAME= 'TS_PEPT_DATA' and segment_name

Transportable Tablespaces

E' una caratteristica dei tablespace che permette ad un tablespace di essere trasportato da un db ad un altro in maniera più veloce rispetto ad export/import o copiare le righe. Viene utilizzato per - Database migrations - Condividere il tablespace con db remoti - TSPITR - Archiviare dati da un db ad un altro - Export e import di partizioni. Durante il processo di trasporto il tbs deve essere in modalità read-only. Non si può trasportare il tbs System o oggetti posseduti da sys. 1) Il db sorgente e destinazione devono avere lo stesso character set e national character set. 2) Inoltre devono avere lo steso endian format altrimenti usare il comando Rman di conversione.  select d.platform_name "Source", t.platform_name "Compatible Targets", endian_format  from v$transportable_platform t, v$database d  where t.endian_format =   (select endian_format  from v$transportable_platform t, v$database d  where d.platform_name = t.platform_name)     &q

Shrink the Undo Tablespace Size

Il modo migliore per ridurre il tablespace di Undo è quello di passare a un nuovo tablespace di Undo e rilasciare il vecchio tablespace Undo. I passaggi sono: 1) Creare un nuovo tablespace di appoggio SQL>  create undo tablespace UNDOTBS2 datafile '/u01/app/oracle/oradata/S11TEST1/S11TEST1/datafile/undotbs02.dbf' SIZE 4096M AUTOEXTEND ON NEXT 5M MAXSIZE 5120M ONLINE RETENTION NOGUARANTEE BLOCKSIZE 8K FLASHBACK ON; 2) Impostarlo come nuovo tablespace di Undo ALTER SYSTEM SET UNDO_TABLESPACE = UNDOTBS2 SCOPE=BOTH; Verifica SQL> show parameter undo_tablespace ------------------------------------------------------------ undo_management       string     AUTO undo_retention             integer  1440 undo_tablespace          string     UNDOTBS2 3) Controllare lo stato dei segmenti di undo e determinare se tutti i segmenti nel vecchio uno tablespace sono offline. select tablespace_name , status , count(*)  from dba_rollback_segs  group by tablespace_n

TNS-12502: TNS:listener received no CONNECT_DATA from client

L'errore indica che il Listener non ha ricevuto l'informazione completa della stringa di connessione, manca la sezione CONNECT_DATA. Aprire il listener.log e controllare l’errore TNS-12502. Se il messaggio si ripete con frequenza costante andiamo a vedere quali processi interrogano il listener. [root@oradbt04 ~]# ps -ef | grep tns oracle   14991 1  0 10:57 pts/3    00:00:06 /u01/app/oracle/product/9.2.0/bin/tnslsnr LISTENER -inherit root     31774 30867  0 14:52 pts/1    00:00:00 grep tns [root@oradbt04 ~]# strace -p 14991 oppure strace -p 26124 | grep accept | grep sin_addr Troviamo de indirizzi più frequenti: "10.aaa.bbb.ccc" Accediamo alla macchina con ip 10.aaa.bbb.ccc. 10.aaa.ddd.eee è invece l'ip della server che contiene il db. [root@ orafm28 ~]# netstat -nap | grep 10.aaa.ddd.eee tcp        0      0 10.aaa.bbb.ccc:63440        10.aaa.ddd.eee:1521           ESTABLISHED 14942/perl tcp        0      0 10.aaa.bbb.ccc:63438   

Query monitoraggio tablespace

Immagine
Di seguito due query per individuare lo stato di occupazione dei tablespace.  max_ts_size è lo spazio massimo disponibile (MB) max_ts_pct_used è la percentuale di spazio disponibile usato cioè  la % di occupazione sul totale disponibile.  Questa % è stata calcolata considerando l’autoextend dei datafile. E’ quella da considerare per aggiungere un tbs . Se ragguinge il 97%, ad esempio, si potrebbe aggiungere un nuovo datafile.  curr_ts_size è la dimensione attualmente allocata (MB) used_ts_size lo spazio attualmente usato (MB) ts_pct_used è la percentuale di spazio allocato usato free_ts_size spazio libero allocato (MB) ts_pct_free   è la percentuale di spazio allocato libero set pagesize 200 verify off sqlprompt "" term off entmap off echo off set markup html on spool on spool TS_info_emen_2.html  SELECT df.tablespace_name tablespace_name,   max(df.autoextensible) auto_ext,   round(df.maxbytes / (1024 * 1024), 2) max_ts_size,   round((df.bytes - sum(fs.bytes)) / (df.maxb

FLASHBACK TRANSACTION QUERY

Immagine
E' un tool che permette di vedere i cambiamenti fatti sul database a livello di transazione. Come la Flashback Versions Query utilizza i dati di undo e permette di risalire ai cambiamenti subito dalla tabelle in un intervallo di tempo ed in più fornisce anche le istruzioni delle ddl che permettono di rollbackare la transazione. Non è necessario abilitare la modalità flashback database. Per utilizzarlo occorre: - verificare che il database sia compatibile con la versione 10.0 - abilitare il supplemental logging alter database add supplemental log data; - dare allo user le seguenti grant grant flashback on <tabella> to <user>; oppure le grant flashback any table grant select any transaction to  <user>; La Flashback Transaction Query è implementata attraverso la vista FLASHBACK_TRANSACTION_QUERY select * from test_flash  where x=10;          X DEC ---------- ----------         10 OOO update test_flash set dec='AAA' where x=10; commit; u

FLASHBACK VERSIONS QUERY

Immagine
Le operazioni Flashback Versions Query utilizzano gli  Undo data  per poter visualizzare i valori restituiti da una query in un intervallo di tempo definito dal valore SCN o timestamp. Esso restituisce solo dati che hanno subito una commit, pertanto i valori vecchi vengono mantenuti per un tempo determinato da parametro undo retention. Inoltre è una operazione che può usare un qualsiasi user con i privilegi di flashback e select. Non è necessario abilitare la modalità flashback database. Viene utilizzato per - recuperare dati committati per errore - confrontare valori  attuali con quelli passati - correggere errori utente E s e m  p i o Sessione#1 select DEPARTMENT_NAME from EMP_1 where DEPARTMENT_ID = 100; Supponiamo di eseguire le seguenti dml. update EMP_1 set DEPARTMENT_NAME ='Accounting'  where DEPARTMENT_ID = 100; commit; update EMP_1 set DEPARTMENT_NAME ='Shipping'  where DEPARTMENT_ID = 100; commit; update EMP_1 set DEPARTMENT_N

FLASHBACK vs RMAN

L'istruzione FLASHBACK è utilizzato per recuperare oggetti, dati e dipendenze tra oggetti; recuperare tabelle droppate per errore; recuperare dati manipolati con una serie di DML; confrontare dati in intervalli di tempo differenti. Quindi è una tecnologia da utilizzare quando si verificano corruzioni logiche dei dati mentre se si verificano perdita di datafile e cancellazione di file in genere, blocchi corrotti e problemi hardware allora occorre usare RMAN. Inoltre non richiedere di avere un backup del database.

FLASHBACK DROP

Immagine
L'istruzione FLASHBACK è utilizzato per recuperare oggetti, dati e dipendenze tra oggetti; recuperare tabelle droppate per errore; recuperare dati manipolati con una serie di DML; confrontare dati in intervalli di tempo differenti. Durante l'operazione di flashback drop, tutte le tabelle impattate vengono poste in modalità exclusive dml locks. L'istruzione flashback drop esegue il restore della tabella dal  Recycle Bin  compreso i dati, gli indici, i privilegi concessi e le constraint ad eccezione delle foreign key. Non usa gli  undo. Non è necessario abilitare la modalità flashback database. FLASHBACK TABLE  nome_tabella1, nome_tabella2,.  TO BEFORE DROP [RENAME TO  nome_tabella ]; L'opzione  RENAME TO  serve per assegnare alla tabella droppata un nuovo nome. Non è possibile effettuare il Rollback di una istruzione FLASHBACK TABLE. L'istruzione FLASHBACK TABLE deve essere considerata come un singola statement perché se in una stessa sessione vengo

FLASHBACK TABLE

L'istruzione FLASHBACK è utilizzato per recuperare oggetti, dati e dipendenze tra oggetti; recuperare tabelle droppate per errore; recuperare dati manipolati con una serie di DML; confrontare dati in intervalli di tempo differenti. Durante l'operazione di flashback table, tutte le tabelle impattate vengono poste in modalità exclusive dml locks. Con l'istruzione flashback table è possibile recuperare i dati di una tabella in un determinato intervallo di tempo.  Utilizza gli  undo data  nei segmenti di undo. Non è necessario abilitare la modalità flashback database. FLASHBACK TABLE  nome_tabella  TO SCN  valore_scn [ENABLE TRIGGERS] ; FLASHBACK TABLE  nome_tabella  TO TIMESTAMP  to_timestamp('03/04/2019 08:05','dd/mm/yyyy hh24:mi:ss')  [ENABLE TRIGGERS] ; FLASHBACK TABLE  nome_tabella  TO RESTORE POINT  punto_di_restore  [ENABLE TRIGGERS] ; Durante l'operazione di flashback vengono disabilitati i triggers ed occorre abilitarli successivamente