După ce în urma cu un an am scris aici ce noutăți aduce versiunea 11g Release 2, iată ca a sosit momentul sa trecem în revista noutățile destinate celor care programează în noua versiune Oracle Database12c.
Câteva cifre despre Oracle Database 12c:
Pe 1 iulie 2013 Oracle lansează prima baza de date destinată mediului cloud și totodată prima modificare de arhitectură Oracle din 1988! Pentru aceasta versiune a fost nevoie de:
- 5 ani de dezvoltare
- 500 de noi caracteristici
- 2.500 de dezvoltatori
- 3.000 de sisteme utilizate în teste
- 1 milion de teste de caracteristici exploatate zilnic
- 1,2 milioane de ore de teste de stres
Mai jos sunt primele 15 noi caracteristici ale Oracle Database 12c pentru dezvoltatori.
1. Îmbunătățiri ale clauzei WITH
În Oracle 12c, este posibil să se utilizeze o funcție PL / SQL într-o clauza WITH
Exemplu:
WITH FUNCTION commission(sal number) RETURN number IS BEGIN return sal * 1.1; END; SELECT ename, sal, commission(sal) FROM emp;
2. Valorile implicite pentru coloane bazate pe secvențe Oracle
Valorile implicite pentru coloane se pot referi direct la secvențe Oracle. Valorile valide sunt sequence.CURRVAL și sequence.NEXTVAL.
Exemplu:
Create table my_table ( id number default my_sequence.nextval primary key );
3. Coloane „IDENTITY”
Putem defini coloane cu identificatorul IDENTITY care este cuvint cheie SQL American National Standards Institute (ANSI). Acest lucru oferă o abordare bazată pe standarde pentru a declara coloane cu incrementarea în mod automat iar în final va duce la simplificarea dezvoltărilor de aplicații și face migrarea instrucțiunilor DDL mult mai simplă.
Exemplu:
create table my_table ( id number generated as identity );
4. Creșterea limitei de dimensiune pentru VARCHAR2, NVARCHAR2 și tipuri de date RAW
Lungimea tipurile de date VARCHAR2, NVARCHAR2 și RAW a fost extinsă de la 4000 la 32767 bytes.
Deci, tipul LOB este mai puțin necesar iar acest lucru ar putea avea un impact semnificativ asupra utilizarea memoriei și discului bazei de date.
5. Coloane invizibile
O coloană definită ca invizibilă nu va apărea în interogări generice (select * from), trebuie să fie menționată în mod explicit în declarația SQL sau în clauza WHERE și să fie menționată explicit în declarația INSERT pentru a introduce date.
Exemplu:
create table users ( id number, name varchar2(100), email varchar2(255), password varchar2(100) INVISIBLE ); SQL>desc users Name Null? Type ------------ ------------- ------------------------- ID NUMBER NAME VARCHAR2(100) EMAIL VARCHAR2(255)
6. Indecși multipli pe aceleași coloane
Înainte de Oracle Database 12c, nu am fi putut avea mai multi indecși pe o singură coloană. În Oracle Database 12c o coloană poate avea mai multi indecși cat timp are caracteristici diferite. Caracteristicile de calificare sunt:
- B-tree versus bitmap
- Strategii diferite de partiționare
- Unique versus nonunique
7. Cascade pentru TRUNCATE și EXCHANGE partition
TRUNCATE (sau EXCHANGE partition) poate fi executat cu opțiunea CASCADE, iar în acest caz va șterge înregistrările copil.
Exemplu:
TRUNCATE TABLE my_table CASCADE;
8. Suport SQL nativ pentru limitarea interogărilor
Clauzele FETCH FIRST și OFFSET oferă suport nativ limbajului SQL pentru a limita numărul de rânduri returnate și pentru a specifica un rând de pornire pentru setul de retur.
Numeroase interogări au nevoie de limitarea numărul de rânduri returnate, o interogare Top-N este utilizată pentru a prelua partea de sus sau de jos N rânduri de la un set ordonat.
FETCH FIRST și OFFSET simplifica sintaxa în conformitate cu standardul ANSI SQL.
Exemplu:
SELECT ename, sal FROM emp ORDER BY sal DESC FETCH FIRST 5 ROWS ONLY;
9. Redenumirea/mutarea online a fișierelor de date
Oracle Database 12c oferă un mod simplu on-line pentru redenumirea sau mutarea fișierelor de date folosind comanda „ALTER DATABASE MOVE DATAFILE”. Fișierele de date pot fi migrate on-line de la ASM la NON-ASM și NON-ASM pentru ASM.
Exemplu:
Redenumire datafile:
SQL> ALTER DATABASE MOVE DATAFILE '/u01/oradata/indx.dbf' TO '/u01/oradata/indx_01.dbf';
Mutare Datafile:
SQL> ALTER DATABASE MOVE DATAFILE '/u01/oradata/indx.dbf' TO '/u01/oradata/orcl/indx.dbf';
NON-ASM to ASM:
SQL> ALTER DATABASE MOVE DATAFILE '/u01/oradata/indx.dbf' TO '+DISKGROUP_DATA01';
10. Mutare online a tabelelor partiționate către alt tablespace
Operațiunea a devenit mai ușoară fără să necesite măsuri complexe.
Exemplu:
SQL> ALTER TABLE MY_LARGE_TABLE MOVE PARTITION MY_LARGE_TABLE_PART1 TO TABLESPACE USERS_NEW;
11. UNDO temporar
Înainte de Oracle Database 12c, înregistrările UNDO ale tabelelor temporare erau stocate în tablespace-ul UNDO. Cu optiunea UNDO temporar din Oracle Database 12c, înregistrările undo ale tabelelor temporare pot fi stocate într-o altă tabelă temporară. Principalele beneficii sunt:
- utilizarea redusa a tablespace-ului UNDO
- mai puține date redo generate.
Pentru a utiliza acest parametru compatibilitatea trebuie să fie setată la 12.0.0 sau mai mare și parametru TEMP_UNDO_ENABLED trebuie să fie ENABLED.
12. Auditarea DDL
Prin utilizarea parametrul ENABLE_DDL_LOGGING din Oracle Database 12c, se poate audita acțiunea DDL în fișiere XML și fișiere jurnal pentru a capta cazurile în care a fost folosita comanda create sau drop. Parametrul poate fi setat la nivelul bazei de date sau al sesiunii.
SQL> ALTER SYSTEM SET ENABLE_DDL_LOGGING=TRUE;
13. Parametrul PGA_AGGREGATE_LIMIT
Înainte de Oracle Database 12c nu a existat nici o opțiune pentru a limita și a controla dimensiunea PGA. Acum prin folosirea parametrului PGA_AGGREGATE_LIMIT Oracle va abandona în mod automat sesiunea care deține memoria PGA atunci când limita de PGA depășește valoarea definită.
14. Sintaxa SQL în RMAN
De la Oracle Database 12c, putem executa orice instrucțiune SQL și PL / SQL în RMAN fără prefixul SQL.
15. Oprirea logurilor redo pentru import DATA PUMP
Opțiunea TRANSFORM, DISABLE_ARCHIVE_LOGGING, din comanda impdp determina Oracle DATA PUMP sa dezactiveze înregistrarile logurilor redo atunci când se încărca datele în tabele și la crearea indecsilor. Această caracteristică oferă o mare ușurare atunci când se importă multe date și reduce generarea excesiva a logurilor redo , ceea ce duce la un import mai rapid. Acest atribut se aplică la tabele și indecși.
Exemplu:
impdp directory=mydir dumpfile=mydmp.dmp logfile=mydmp.log TRANSFORM=DISABLE_ARCHIVE_LOGGING:Y