Visualizzazione post con etichetta oracle. Mostra tutti i post
Visualizzazione post con etichetta oracle. Mostra tutti i post

martedì 4 maggio 2010

Limiting the result sets in Oracle

In Oracle DB the number of rows can be limited using the ROW_NUMBER() function:
SELECT * FROM (
SELECT
ROW_NUMBER() OVER (ORDER BY <ordering_field> DESC) AS ROWNUMBER, <other columns>
FROM <table_name>
[WHERE <conditions>]
)
WHERE ROWNUMBER <= <max_row_number>

Example, retrieve the id of the last modified curve among curves with type equals to "ATT_MENS":

SELECT id_curve FROM (
SELECT
ROW_NUMBER() OVER (ORDER BY sys_modifydate DESC) AS ROWNUMBER, id_curve
FROM curve
where curve_type = 'ATT_MENS'
)
WHERE ROWNUMBER <= 1;

venerdì 25 settembre 2009

Il cestino di Oracle

A partire dalla versione 10g nel database Oracle è stato introdotto il concetto di cestino (Recycle Bin), il cui funzionamento è analogo a quello del cestino presente nei sistemi operativi: le tabelle droppate non vengono immediatamente rimosse dal database ma vanno invece a finire nella Recycle Bin, da cui possono poi eventualmente recuperate senza grosse difficoltà.

Le tabelle droppate non vengono cancellate ma rinominate (insieme a tutti gli oggetti collegati come indici, trigger, ...) con dei nomi generati dal sistema che cominciano per BIN$.

Per visualizzare le tabelle droppate presenti nella Recycle Bin:
select * from recyclebin;

Per ripristinare una tabella precedentemente droppata:
flashback table DROPPED_TABLE_NAME to before drop;

Per svuotare la Recycle Bin:
purge recyclebin;

Per eliminare definitivamente una tabella senza passare per la Recycle Bin:
drop table TABLE_NAME purge;

La Recycle Bin può essere abilitata/disabilitata:
alter session set recyclebin = on;
alter session set recyclebin = off;