Oracle Database

**Oracle Database** (normalean **Oracle DBMS** edo **Oracle** deitua) software tresneri multzoa da, Oracle Corporationek garatutako datu-baseak kudeatzeko sistema. Grid arkitektura berrian oinarrituta dago. Arkitektura berri honek zerbitzarien aniztasuna eta biltegiratzearen errekurtsoak eta prozesamendua lotzen ditu modu eraginkor batean.

Oracle Grid Computing hiru elementu dira:

1. **Oracle Database 10g**: Datu baseen ardatz-eragilea da. Beharrezkoak diren trenak dauzka funtzio ezberdinak lortzeko: informazioaren biltegiratzea antolatu, aurkezten diren zerbitzuen artean arreta handiagoa eduki,...eta abar. Era eraginkorrean antolatzen du informazioa, korreo elektronikoa, dokumentuak, multimedia fitxategiak eta XML.

2. **Oracle Application Server 10g**: Oracle-k daukan aplikazioen zerbitzaria. Zerbitzuen multzo bat da, ahalbidetzen du web-nabigatzaileari aldi berean parte hartzea datu-baseekin.

3. **Oracle Enterprise Manager 10g**: Ahalbidetzen dio datu-base kudeatzaileari bere eginkizunak. Web-nabigatzailea erabilita sartzen da: http://host_izena:5500/em. Ondoren, agertuko da orri bat erabiltzaile izena, pasahitza eta rolak eskatzen.

Datu basea kudeatzen duenari, *Data Base Administrator* (DBA) deritzogu, edo Datu-Base Kudeatzailea. Bere eginkizunak: Oracle instalatzea, datu-basea diseinatzea, sortzea, abiatzea, gelditzea, erabiltzaileak sortzea, lehentasunak ezartzea, segurtasun kopiak egitea eta datu basea berreskuratzea dira.

## Oracle Arkitektura 
Datu-base bat ez da bakarrik bere datu-fisikoak, baita ere objektu-fisikoak, memoriakoan eta prozesukoak diren datuen konbinazioak ezagutu behar du.

### Datu-Basearen Osagaiak 
Oracle datu-base baten osagaiak dira: Datuen fitxategiak (database files), Transakzio fitxategiak (log files) eta Kontrol fitxategiak (control files).

#### Datuen fitxategiak 
 Datu-basearen informazio guztia dauka: erabiltzailearen datuak eta sistemaren datuak. Datu basean informazio sartu baino lehen beharrezkoa da taulentzako espazio bat gordetzea (tablespace) eta gero taula sortu, espazio horren barruan datuak sartzen ditugu.
Tablespaces lagungarriak dira datu-basearen informazioa antolatzeko, horrela, tablespace ezberdinak erabiltzen dira datu-base ezberdinerako.
Tablespace bakoitzak fitxategi bat baino gehiago eduki ditzake diskoan. Datu fitxategi bakoitza tablespace bakar baten parte izan daiteke. Oracle instalatzean honako tablespaces sortzen dira: 
  SYSTEM: Oracle kudeatzeko beharrezko den informazioa gordetzen den lekua, adibidez: Datuen hiztegiari buruzko informazioa. SYSTEM01.DBF fitxategian gordetzen da. 10g bertsioan SYSAUX deituriko tablespace bat existitzen da, SYSTEM laguntzeko eginkizunarekin.  

 USERS: Erabiltzaileen informazioa gordetzen du. Normalean DB probak egiteko taulak gordetzeko uzten digun tokia da. USERS01.DBF fitxategian gordetzen da.

 TEMP: aldi baterako taulak gordetzen dira. TEMP01.DBF fitxategian biltegiratzen dira. 

 UNDOTBS1: Deuzestatzeko infromazioa gordetzen du. Datuak eguneratu baino lehen daukagun informazioa gordetzen du. UNDOTBS01.DBF fitxategian gordetzen dira. Transakzioa aaitu gabe dagoenean datuak berreskuratu daitezke. Tablespace honek rollback segmentuak ditu eta hauek barik ezingo lirateke transakzioak egin. Transakzioak egiten direnean segmentu bat lehenesten zaio. Hurrengo kontsultak rollback segmentuak, bere jabea eta tablespacea non dagoen erakusten digu:  
 
**Adibidea:**

SQL> SELECT SEGMENT_NAME, OWNER, TABLESPACE_NAME FROM DBA_ROLLBACK_SEGS;
 

#### Transakzio fitxategiak 
 Fitxategi hauek, datuen fitxategiak dira eta bertan Oracle-k gordetzen du datuen gainean gertatzen diren aldaketa guztiak (INSERT,UPDATE,DELETE). Datu hauek datuak berreskuratzeko erabiltzen dira. Fitxategi anitzak daude eta gomendagarria da beste disko batean gordetzean datuak ez galtzeko. Normalean sortzen dira Redo Log Online-eko taldea batzuk, talde bakoitzak partaideak egonda, taldearen partaide bakoitzak kopia berdinak izanda. LGWR prozesua (background process) idazte du aldi berean talde bateko Redo Log fitxategi guztietan. Oracle-k gutxienez bi Redo Log Online talde sortzen ditu, bere partaideak izando: RED001.LOG, RED002.LOG eta RED003.LOG. 
 Redo Log erregistro baten edukia: Transakzioaren identifikazioa, bloke helbidea , errenkada zenbakia, zutabe zenbakia eta aldarazi den datuaren balioa. 
 Redo Log Online bat erabiltzen denean, Oracle-k esleitzen dio sekuentzia zenbaki bat identifikaziorako. Sekuentzia-zenbaki hau gordetzen da kontrol-fitxategian eta datu-fitxategi guztien hasieran. Honekin berreskuratu ahal dira akats batengatik galdu diren datuak. 

#### Kontrol fitxategiak 
 Oracle datu-basearekin zerikusia duen fitxategien informazioa dauka Datu basearen egituran egiten diren aldaketa guztiak agertzen dira kontrol fitxategietan. Fitxategietan agertzen den informazioa bakarrak aldatu ahal da Oracle zerbitzarian. Gomendagarria da babes-kopiak sortzea. Instalazioan sortzen diren kontrolerako fitxategiak hurrengoak dira: CONTROL01.CTL, CONTROL02.CTL, CONTROL03.CTL. Eta edukitzen duten informazioa hurrengoa da: 
  Datu basearen izena eta identifikazioa  
  Datu basearen sortze-data eta sortze-orduaren erregistroa  
 Lan-egiteko fitxategien eta Redo Log fitxategien izena eta kokapena  
  Redo Log historiala eta erregistratzen diren aldaketak.  
 Gordeta dauden Redo Logs-en kokapena eta egoera.  
 Babes-kopien kokapenak eta egoerak.  
 Aldaketak ematen direnean log-ean momentu horretan daukan zenbakiarekin gordetzen da (log-a)  
  Checkpoints-en informazioa  
  Datu fitxategien egoerak (On-line eta off-line)  

### Memoriaren Egitura 
Erabiltzailearen (client) eta zerbitzariaren (server) prozesuak haien artean komunikatzeko erabiltzen dira memoria egiturak. Oracle-k bi memoria-egiturak erabiltzen ditu: SGA (System Glbal Area) eta PGA (Program Global Area).

#### System Global Area, SGA 
 Datu basean kontsultatu diren azkenengo datuak gordetzeko erabiltzen diren memoria-egituren multzoa da. Datuen Informazioa eta Oracle zerbitzari kontrolerako Informazioa dauka. Hurrengo eremutan banatzen da: 

  **SQL-ren inguru konpartituak :** Datuei buruzko hiztegi-cacheaz eta liburutegi-cacheaz osatutakoa. Datuei buruzko hiztegi-cachea datu-baseen azkenengo aldaketen informazioa dauka, definizio desberdinaz edukiz: datu-base fitxategiak, zutabeak, erabiltzaileak, lehentasunak eta bestelako objektuak. Liburutegi-cachea exekutatu diren SQL aginduak biltzen ditu: aginduaren testua, aztertutako kodea eta exekuzio-plan.  

  **Datuen buffer-a:** erabili diren azkeneko datu-fitxategien eta irakurri diren azkenengo datu-blokeen kopiak biltzen ditu. Erabiltzaileak memoria eremu honetara sartzen dira. Datu-bloke edo datu-buffer bezala ezagutzen da.  

  **Multzo handia:** hautagarri den memoria-eremua da. SQL aginduen prozesamendurako erabiltzen ez diren egiturak gordetzeko erabiltzen da.  

  **Java Multzoa:** Tamaina zehazten du Java komandoen analisien betebeharrak betetzeko eta Java kodea biltzen du  

  **Redolog-aren buffer-a:** Transakzioak erregistratzen diren (INSERT, UPDATE, DELETE) edo datu basean idatzi baino lehen gertatzen diren aldaketen eremua da. Background prozesuek edo zerbitzariek erabiltzen dute.  

#### Program Global Area, PGA 
 Oracle erabiltzaile bakar batek erabiltzen duen memoria gunea da eta prozesuaren datuak eta informazioa dauka. PGA memoria ez da elkar trukatzen. Zerbitzari den prozesu bakoitzari PGA bat esleituko zaio, eta prozesu horretarako beste ezeinetarako ez da izango. 
  Antolaketa eremua SQL aginduen antolakuntzarako.  
  Bileraren informazioa: erabiltzaileen lehentasunak eta errendimenduaren estatistikak.  
  Kurtsorearen egoera, prozesamenduaren urratsaren kokapena adierazten duena.  

### Background Prozesuak 
Datu basearen egitura fisikoak eta memoria egiturak mantentzen eta aplikatzen dira background prozesu batzuk erabiliz. Prozesuen zenbakia aldakorra da eta datu basearen konfiguratzearen menpe dago. Datu-base berak kudeatzen ditu prozesu hauek.
Zerbitzari prozesu multzo bat dago, datu-baseari funtzionatzen laguntzen diona: hauek background prozesuak dira.

 

Background prozesuak hurrengoak dira:

#### DBWR prozesua (DataBase WRiter): 
SGAko datuen bufferra kudeatzeko erabiltzen den prozesua da. idazketa diferitua egiten duen prozesua da. Redolog-en fitxategiak irauliko ditu DB-aren gainean beteta daudenean, eta lehenen aldarazitako blokeak grabatuko ditu SGAren datu-buffer-etik, baldin eta beste datu batzuk prozesatzeko bloke libreak behar baditu. DB-aren gainean idazten duen prozesu bakarra da.

#### CKPT prozesuak (CheckPoint): 
Modu bat da datu-basearen bufferra sinkronizatzeko datuen fitxategiekin. Chekpoint-a gertatzen da era automatikoan RedoLog erregistro moduko fitxategi bat betetzen denean eta instantzia bat ixtean (SHUTDOWN) .

#### LGWR prozesuak (LogWriter): 
Redolog-buffer-ean erregistratzen diren aldaketak grabatuko ditu redolog-fitxategien gainean.

Transakzio bat balioztatzen denean
RedoLog bufferraren heren bat betetzen denean 
RedoLog bufferrean Mega bat baino gehiago aldatu denean 
Timeout (3 segundoko tartean) gertatzen denean
DBWR eragiketak egin baino lehenago.

#### SMON prozesuak (System MONitor): 
SMON prozesuak (sistemaren monitorea), SELECT-en bat gauzatzeko beharrezkoak diren kalkulu konplexuen emaitza izanik, baliorik ez duten datuak desagerrarazi egingo ditu, eta espazioa askatu egingo du. Gainera, instantzia berreskuratzeari ekingo dio datu basea abaian jartzean, eta tablespace-etan aldamenean dauden tarte hutsak trinkotuko ditu. PMON-en bezala, prozesu hau “itzarri” egiten da aldian behin, esku hartu behar ote duen egiaztatzeko.

#### PMON prozesuak (Process MONitor): 
PMON prozesuak (prozesuen monitorea) era anormalean bukatu diren konexioek blokeatuta dauzkaten baliabideak askatuko ditu.

#### ARCH prozesuak (ARCHiver): 
RedoLog-en kopiak egiten ditu akatsen bat izanez gero datuak berreskuratu ahal izateko eta aukerakoa da.

#### RECO prozesuak (RECOverer): 
LCKn, Pnnn eta SNPn prozesuei aukera jakin batzuk erabiltzen direnean baino ez zaie eragingo. Adibidez, aukera banatua (RECO), parallel server (LKCn), parallel query (Pnnn) eta erreplika aukera (SNPn) erabiltzen direnean.

### Errendimenduaren ikuspegi dinamikoak 
Kontrol fitxategien informazioa biltzen dute. Diskoaren eta memoriaren egituran datuak ematen dizkigute eta errendimenduarekin erlazionatuta daude. Bakarrik DBA (Datu basearen administratzailea) dauzka baimenak fitxategien informazioak ikusteko.

### Zer da oracle instantzia? 
Memoriaren egitura eta background-eko prozesu multzo bat da, datu basea kudeatzeko erabiltzen dena.

 

### Biltegiratze-egiturak 
Datu basearen datu guztiak maila logikoko tablespace-etan daude biltegiratuta.Tablespace bat maila fisikoan fitxategi bat edo gehiagotan biltegiratu daiteke.

**Segmentuak:** Datu-base batean objektuan okupatzen duten lekuak (spaces) dira. Objektu sortzerakoan, adibidez, taula bat, automatikoki sortzen eta esleitzen zaio segmentu bat gutxienez.

**Luzapenak:** Segidan dauden Oracle sententziak dira. Tablespace bat sortzerakoan, dagokion datu-.fitxategia goiburuko bloke bat edukiko du eta gainera luzapena aske bat soberan geratzen den fitxategiarekin osatuta.

**Oracle Blokeak:** irteera/sarrerako gutxienezko unitateak dira. Sistema eragileen bloke bat edo gehiagoz osatuta daude. Oracle blokea definitzen da datu basea sortzerakoan, honako parametroan, DB_BLOCK_SIZE.

#### Segmentuak 
Ikusi dugunez, objektu bat sortzerakoan segmentu bat sortzen da. Segmentuak tablespace barruan biltzen dira. Esan dezakegu segmentu bat tablespace baten fitxategi ezberdinetan egon dezakeen Oracle-bloke bat dela.
Segmentu bat ezabatzean, okupatuta zegoen espazioa tablespace-ra itzultzen da. Segmentu bakoitzak honako parametroak dauzka: INITIAL, NEZT, MINEXTENTS, MAXEXTENTS, PCTINCREASE, PCTFREE, PCTUSED, TABLESPACE.

Biltegiratze egiturak ikusteko hurrengo ikuspegiak erabiltzen dira:

 DBA_SEGMENTS: Segmentuei buruzko informazioa: izena, jabea, segmentu-mota, tablespace, luzapenen eta blokeen tamaina, biltegiratze definizioak,...eta abar. Hurrengo kontsultak segmentuak, luzapenen kopurua eta jabeen (SCOTT izenakoa) blokeak erakusten ditu:
 SQL> SELECT SEGMENT_NAME, TABLESPACE_NAME, EXTENTS, BLOCKS FROM DBA_SEGMENTS WHERE OWNER=’SCOTT’ ; 

 DBA_EXTENTS: Luzapenei buruzko informazioa: izena, jabea, blokeen tamaina, tablespace izena,...eta abar. Hurrengo kontsulta SCOTT jabeak daukan EMP segmentuaren luzapenak erakusten ditu: 
 SQL> SELECT TABLESPACE_NAME, BLOCKS, BYTES FROM DBA_EXTENTS WHERE OWNER=’OWNER’ AND SEGMENT_NAME=’EMP’;

#### Segmentu motak 
 **Taula edo Datuen segmentuak:** CREATE TABLE erabilita sortzen dira. Datuak biltegiratzeko era arruntena taula izaten da. 

 **Indize segmentuak:** CREATE INDEX, indize jakin bateko erregistro guztiak, indize segmentu batzuetan biltegiratzen dira. Gomendagarria da tablespace edukitzea datuak ez diren indizeentzako, errendimendua hobetzeko. 

 **Rollback segmentuak:** Transakzioa okerra gertatu eta gero berreskurapena ahalbidetzen dutenak dira. Rollback erregistroaren egitura hurrengoa da: transakzioa identifikadorea, blokearen helbidea, errenkada zenbakia, zutabearen zenbakia eta aldaketa gertatu baino lehen zegoen datua. Datu-basean eragiketak egiteko beharrezkoa gutxienez Rollback segmentua bat edukitzea. Rollback bat sortzeko erabiltzen dugu: 

 CREATE [PUBLIC] ROLLBACK SEGMENT segmentu_izena_rb
 TABLESPACE izena_tablespace
 STORAGE (
 INITIAL tamaina [K|M]
 NEXT tamaina [K|M]
 OPTIMAL tamaina [K|M]
 MINEXTENTS luz_kopurua
 MAXEXTENTS luz_kopurua | UNLIMITED);

**Aldi Baterako Segmentuak:** Oracle-k sortutakoak dira eta memorian sartzen ez diren eragiketak egiteko erabiltzen dira: CREATE INDEX, ORDER BY, GROUP BY, DISTINCT, UNION, INTERSECT, MINUS. Sententzia amaitzerakoan ezabatzen dira.

## Segurtasun kudeaketa 
Segurtasuna bi mailatan banatu dezakegu: datuen segurtasuna eta sistemaren segurtasuna:
**Sistemaren segurtasuna**: datu basearen sarbidea eta erabilpena, sistema mailan kontrolatzen dute. Adib: erabiltzaile bat sartzen denean, segurtasun mekanismoak kontrolatzen dute ea posiblea den erabiltzaile hori datu basera sartzea.  
**Datuen segurtasuna**: datu basearen sarbidea eta erabilpena, objektu mailan kontrolatzen dute. Erabiltzaileak objektu batera sartu direnean, segurtasun mekanismoak kontrolatzen dute ea posiblea den ala ez. 

### Erabiltzaileak 
Erabiltzailea, datu basean definitutako izen bat da. Izen horren bitartez datu basera konektatu daiteke eta objektu desberdinetara sar daiteke administratzaileak eman dizkion baimenak kontutan hartuz.
Eskema batzuk daude erabiltzaile bakoitzari lotuta. Eskema hauek objektuen bilduma logikoak dira.

#### Erabiltzaileak sortu 
Instalazioa egiten denean badaude sistematikoki sortzen diren bi erabiltzaile, hauek SYS eta SYSTEM erabiltzaileak dira. Bia erabiltzaile hauek administratzaile baimenak dauzkate eta nahi dutena egin dezakete datu basearen kudeaketan. Erabiltzaile berriak sortzeko hurrengo agindua erabiltzen dugu; CREATE USER, ondorengoa da SQL kodea:

  CREATE USER erabiltzailearen_izena
  IDENTIFIED BY sarrera-kodea
  DEFAULT TABLESPACE taula_espazioa
  TEMPORARY TABLESPACE taula_Espazioa
  QUOTA taulei_atxikitako_espazioa (MB kopurua)
  PROFILE erabiltzailearen_profila

Jakiteko erabiltzaileen zerrenda, bi modutara egin dezakegu hurrengo aginduak erabiliz: USER_USERS orainaldiko_erabiltzailea eta ALL_USERS sortutako_erabiltzaile_guztiak.

#### Erabiltzaileak birmoldatu 
Erabiltzaileak behin sortuta daudela moldatu daitezke hurrengo agindua erabiliz: ALTER USER. Aldaketak egitean erabiltzaile bakoitzak bere kodea baino ezin dezake aldatu, beste aldaketaren bat egiteko baimen bereziak eduki behar ditu.

#### Erabiltzaileak ezabatu 
Erabiltzaileak ezabatu daitezke eta baita menpean dituzten objektu guztiak ere, DROP USER agindua erabiltzen dugu.

  SQL> DROP USER erabiltzailearen_izena [CASCADE];

[CASCADE] agindua erabiltzaileak menpean dituen objektuak ezabatzeko erabiltzen da.

### Lehentasunak 
Datu base batean erabiltzaileak eragiketa zehatzak egiteko dituen ahalmenak dira. Erabiltzaileka sortzen direnean beharrezkoa da lehentasunak ematea eragiketa desberdinak egin ahal izateko. Oraclek rol edo funtzio ezberdinak eskaintzen ditu eta horietako hiru garapen inguruari aplikatuta daude. Rolak lehentasun multzo ezberdinak osatzen dute.

Bi lehentasun mota desberdin daude: objektuekiko lehentasunak eta sistemarekiko lehentasunak.

**1- Objektuekiko lehentasunak:** 
Beste erabiltzaileen objektuekiko aldaketak egiten baimena ematen digute. Adib: beste erabiltzaile baten taula begiratzeari deitzen diogu objektuekiko lehentasuna. GRANT agindua erabiltzen dugu objektuekiko lehentasuna emateko. GRANT aginduarekin INSERT; UPDATE edo REFERENCES lehentasunak eman daitezke. 

**2- Sistemarekiko lehentasunak:** 
SQL aginduak exekutatzeko beharrezkoak diren lehentasunak dira, hauek ekintza desberdinak egiteko beharrezkoak dira. 

#### Lehentasunak kendu 
SQL REVOKE aginduarekin lehentasunak kendu ditzakegu, formatua hurrengoa da:
 
  REVOKE {priv_objeto [,priv_objeto] ...|ALL [PRIVILEGES]}
  ON [usuario.] objeto
  FROM {usuario | rol | PUBLIC} [,{usuario | rol | PUBLIC}]...;

### Rolak 
Rolak lehentasun kopuru bat dira. CREATE ROL aginduarekin sortzen dira rolak

#### Rolei baimenak eman 
Rolak sortuak ditugunean baimenak eman behar dizkiogu, GRANT aginduarekin egiten dugu. Erabiltzaile bati baimenak emateko hurrengo agindua idatziko dugu: GRANT ACCESO TO “erabiltzailearen izena ” .

#### Rolen baimenen limiteak 
Rolak egiten direnean askotan ez dira baimen guztiak ematen, orduan limite horiek gauza asko egitera murrizten gaitu.

#### Rolei baimenak kentzea 
Rolak sortzerakoan baimenak ematen dira, baimen hauek kentzea posiblea da eta hurrengo agindu hau erabiltzen da: REVOKE.

#### Rolak kentzea 
Rolak ere kendu daitezke eta honetarako **DROP ROLE ”rolaren izena”** agindua erabiltzen dugu.

#### Rolen informazioa datuen hiztegietan 
Hurrengo ikuspegiak erabili ditzakegu rolei emandako baimenak zeintzuk diren ikusi ahal izateko: ROLE_SYS_PRIVS, ROLE_TAB_PRIVS, ROLE_ROLE_PRIVS, SESSION_ROLES, USER_ROLE_PRIVS.

### Profilak 
Datu basearen errekurtsoen limiteen multzoak dira profilak. Profilak sortzen ez baditugu lehenetsitako profilak erabiltzen ditugu. Profilak sortzeko hurrengo agindua erabiliko dugu: CREATE PROFILE.

Profilak erabili ahal izateko administratzaileak hurrengo agindua exekutatu behar du: ALTER SYSTEM SET RESOURCE_LIMIT=TRUE; (FLASE izango balitz profilen erabilpena bertan behera gelditu litzateke).

Agindu desberdinak erabil ditzakegu profilen informazioa ezagutu ahal izateko. Profilen limiteei buruz informazioa jakiteko DBA_PROFILES agindua erabiliko dugu.
Profilak ezabatzeko hurrengo agindua erabiliko dugu: DROP PROFILE “profilaren_izena”.

## Tablespace-ren Kudeaketa 
Tablespace bat biltegiratzeko unitate logiko bat da, maila fisikoan diskoaren fitxategi bat edo gehiago dira. Gomendagarria da ez nahastea aplikazio ezberdineko datuak tablespace berean. Oracle instalatzean hurrengo tablespace-ak sortzen dira: SYSTEM, USERS, TEMP edo UNDOTBS1.

### Tablespacearen sorrera: 
Tablespace bat sortzeko CREATE TABLESPACE agindua erabiltzen da. Agindu honek ahalbidetzen du taulen espaziora fitxategi bat edo gehiago esleitzea eta baliorik gabeko espazioa (space) ezartzea.

  CREATE [UNDO] TABLESAPCE tablespace_izena 
  DATAFILE ‘fitxategiizena’ [SIZE osoa [K|M] [REUSE] 
  [AUTOEXTEND {OFF|ON klausulak}] [, ‘‘fitxategiizena’ [SIZE osoa [K|M] [REUSE] 
  [AUTOEXTEND {OFF|ON klausulak}] ] . . .
  [DEFAULT STORAGE
  (INITIAL tamaina 
  NEXT tamaina 
  MINEXTENTS tamaina
  MAXEXTENTS tamaina
  PCTINCREASE balioa
  ) ]
  [ONLINE | OFFLINE]
  [PERMANENT | TEMPORARY]
  [EXTENT MANAGEMENT
  {DECTIONARY | LOCAL {AUTOALLOCATE | UNIFORM [SIZE tamaina[K|M]}}];

Atalen azalpena: 
**1.UNDO :** “aldaketak desegin” motako tablespace bat sortzen dela ezartzen du, hau da, Rollback bat. Ez badago ‘desegin’ motako tablespace bat, UNDO aukerarekin sortuko da bat eta Oracle-k automatikoki esleitzen dio instantzia “desegin” tablespacez moduan. 
**2.DATAFILE:** tablespace-a osatzen duen edo duten fitxategia edo fitxategiak zehaztuko ditu. 
**3.SIZE:** tablespace-ren tamaina adierazten duen zenbaki osoa da. Kilobytetan edo Megabytetan agertu daiteke. K ipiniz 1.024 bider zenbaki osoaz biderkatzen da, M ipiniz 1.048.576 bider zenbaki osoaz biderkatzen da.
**4.REUSE:** fitxategia existitzen bada berrerabiltzen du, existitzen ez da sortuko du.
**5.DEFAULT STORAGE:** tablespace-an sortzen diren objektu guztien lehenespenezko parametroak zehaztuko ditu.
**6.INITIAL:** lehenengo luzapenaren tamaina (bytetan) definituko du.
**7.NEXT:** bigarren luzapenaren tamainari dagokio. Objektuari esleituko den hurrengo luzapenaren gutxieneko tamaina ezartzen du.
**8.MINEXTENTS:** segmentua sortzen denean esleitzen den luzapen-kopurua da. Gutxienekoa eta lehenespenezkoa 1 izango da.
**9.MAXEXTENTS:** segmentu batek gehienez eduki ditzakeen luzapenen kopurua. Gutxienekoa izango da eta lehenespenezko gehienezkoa, berriz, datuen blokearen tamainaren araberakoa izango da.
**10.PCTINCREASE:** Luzapenaren tamainak haztean erabiliko duen ehunekoa. Gainerako luzapenen tamaina (3, 4.a...) ondorengo formula hau erabilita kalkulatuko dugu: 

  NEXT = NEXT + (PCTINCREASE*NEXT)/100

**11.ONLINE:** beraren eraginez, tablespace-a, sortu eta berehala, erabilgarri egongo da. 
**12.OFFLINE:** beraren eraginez, tablespace-a, sortu eta berehala, ez da erabilgarri egongo.
**13.PERMANENT:** tablespace-a objektu iraunkorrak gordetzeko erabil daitekeela zehaztuko du.
**14.TEMPORARY:** tablespace-a aldi baterako objektuak gordetzeko baino ez dela erabiliko zehaztuko du.
**15.	AUTOEXTEND:** Tablespace-tan dauden datu-fitxategien hazkuntza automatikoa aktibatu edo desaktibatzeko. Tablespace bat betetzen bada, aukera hau erabil dezakegu fitxategiaren tamaina hazteko. Desaktibatzeko AUTOEXTEND OFF erabiltzen da. Aktibatzeko honako formatua erabiltzen da:

  AUTOEXTEND ON NEXT osoa {K|M} 
  MAXSIZE { UNLIMITED | osoa {K|M} }

* NEXT osoa: emandako diskoan fitxategiarentzat alokatuko den espazioaren (space) hazkuntza da, Kilobytetan edo Megabytetan ematen da. 
* MAXSIZE : Fitxategiaren luzapenera diskoan alokatzen den espazio maximoa da.
* UNLIMITED: Alokatutako diskoan ez dagoela espazio (space) limiterik.
* EXTENT MANGEMENT: Tablespace-ak daukan luzapenen kudeaketa ezartzen du.

#### Aldi-baterako Tablespace-ak 
Nahiz eta Aldi-baterako Tablespace-aren sorkuntza CREATE TABLESPACE aginduarekin egin daiteke, gomendagarria da hurrengo komandoa erabiltzea:

  CREATE TEMPORARY TABLESAPCE tablespace_izena
  TEMPFILE ‘fitxategiizena’ [SIZE osoa [K|M] [REUSE] 
  [AUTOEXTEND {OFF|ON klausulak}]
  [, ‘‘fitxategiizena’ [SIZE osoa [K|M] [REUSE]
  [AUTOEXTEND {OFF|ON klausulak}] ] . . .
  [MAXSIZE { UNLIMITED | osoa { K | M } } ]
  [EXTENT MANAGEMENT LOCAL UNIFORM [SIZE osoa { K | M } ]];

TEMPFILE fitxategia ez da beharrezkoa DB_CREATE_FILE_DEST parametroa definituta badago. Parametro honetan Oracle-k 100 MBko aldi-baterako fitxategia sortzen du.

SIZE motako luzapenak SORT_AREA_SIZE parametroaren multiploak izango dira. Aldi-baterako segmentua ezarritako tamainaren blokeak jasango ditu.

Adibidez:

  CREATE TEMPORARY TABLESPACE TEMPEJER TEMPFILE
 ‘ C:\ORACLE\ PRODUCT\10.1.0\ORADATA\ORCL\TEMP_EJERCCI.DBF ’ SIZE 10M;

#### Tablespaceri buruzko informazioa duten Ikuspegiak (view) 
Tablespaceei buruzko informazio lortzeko ikuspegi ezberdinak daude:

* DBA_DATA_FILES: Tablespaceak erabilitako fitxategien buruzko informazioa erakusten du. Espazioa bytetan definituta dago. Eduki dezakeen tamaina maximoa MAXBYTES izango da. Kontsulta egiteko SYS ematen dituen lehentasunak behar dira.

* USER_FREE_SPACE: Erabiltzaileak erabili dezakeen luzapen askeak erakusten ditu. Ez dira ondoz-ondoko blokeetan egon behar. Ikuspegi honetako zutabeak izango dira:
** FILE_ID: Fitxategiaren identifikazio zenbakia 
** BYTES: Aske dauden byte kopurua 
** BLOCK_ID: Lehenengo bloke askearen identifikazioa 
** BLOCKS: Bloke askeen kopurua. 
** RELATIVE_FNO: Lehengo bloke luzapenaren fitxategiak daukan zenbaki erlatiboa. 

* DBA_FREE_SPACE: Tablespace guztietan aske dauden luzapenak erakusten ditu.
* DBA_TABLESPACES: Tablespace guztien deskribapenak erakusten ditu. Hurrengo agindua erabiltzen da:

  SQL> SELECT TABLESPACE_NAME, CONTENTS FROM DBA_TABLESPACES;

* DBA_TS_QUOTAS: Tablespace bakoitzean erabiltze bakoitzak erabilitako byte kopuruak erakusten ditu. Kontsulta egiteko SYS ematen dituen lehentasunak behar dira. Ikuspegiaren zutabeak honakoak dira: BYTES, MAX_BYTES, BLOCKS, MAX_BLOCKS.

### Tablespaceen aldaketak: 
Tablespaceak behin sortuak, aldatu ahal dira. Aldaketa hau egiteko ALTER TABLESPACE agindua erabiltzen da. Aginduaren formatua hurrengoa da:

  **ALTER TABLESPACE** tablespace_izena
  {
  [ADD DATAFILE  ‘fitxategi_izena’ [SIZE osoa [K|M] ] [ REUSE ]
  [ AUTOEXTEND ON .. | OFF ]
  [, ‘‘fitxategiizena’ [SIZE osoa [K|M] [REUSE]
  [ AUTOEXTEND ON . . | OFF ] ] . .]
  [ RENAME DATAFILE ‘fitxategia’ [ , ‘fitxategia’ ] . . .
  TO ‘fitxategia’ [ , ‘fitxategia’ ] ]
  [DEFAULT STORAGE biltegiratze_klausulak ]
  [ONLINE | OFFLINE]
  };

Atalen azalpena:
* **tablespace_izena:** aldatu nahi dugun tablespace izena da.
* **ADD_DATAFILE:** Gehitzen dizkio tablespace-ri fitxategi bat edo gehiago.
* **RENAME DATAFILE:** Tablespace-ean existitzen den fitxategi baten izena aldatzen du. Aldaketa hau sistema eragilerik egiten da. Beraz, tablespacea desaktibatuta (offline) egon behar da.
* **DEFAULT DATAFILE:** Tablespace batean sortzen diren elementuen lehenetsiko balioak dira.
* **ONLINE:** Taulak aktibatzen ditu.
* **OFFLINE:** Taulak desaktibatzen ditu.

### Tablespaceak Ezabatu: 
Erabiltzen ez dugun tablespace bat ezabatzeko DROP TABLESPACE agindua erabiltzen dugu.
Aginduaren formatua hurrengoa da:

  **DROP TABLESPACE** tablespace_izena
  [INCLUDING CONTENTS [AND DATAFILES] [CASCADE CONSTRAINTS] ];

Atalen azalpena:
* **tablespace_izena:** ezabatuko den tablespace izena da.
* **INCLUDING CONTENTS** aukerak ahalbidetzen du datuak dauzkaten tablespaceak ezabatu. Aukera hau ez balego, hutsik dauden tablespaceak bakarrik ezabatuko lirateke.
* **ADD DATAFILES:** erlaziorik daukaten fitxategiak ezabatzen ditu.
* **CASCADE CONSTRAINT:** Tablespacearekin erlazionatuak dauden murrizketak ezabatzeko.

Adibidea:
  DROP TABLESPACE txikia INCLUDING CONTENTS AND DATAFILES;

Gomendagarria da tablespacea OFFLINE moduan ipintzea ezabatu baino lehen.

### Biltegiratze parametroak: 
Biltegiratzeko parametroa DEFAULT STORAGE da normalean, hala ere, ‘eskuz’ definitu ditzakegu behar ditugun biltegiratze parametroak. CREATE TABLE agindua hurrengoa izango da:

  **CREATE TABLE** taularen_izena
  (
  Zutabe1 	Datu_mota	 [NOT NULL], 
  Zutabe2 	Datu_mota	[NOT NULL],
  [taularen murrizketak]......................
  )
  **STORAGE**
  (
  INITIAL	tamaina
  NEXT	        tamaina
  MINEXTENTS	tamaina
  MAXEXTENTS	tamaina
  PCTINCREASE	balioa
  )
  [ TABLESPACE tablespacearen izena];

### Tablespace baten deskonexioa : 
Datu basea irekita badago edozein tablespace deskonektatu ahal da, SYSTEM, Rollback edo aldi baterako segmentuak dauzkaten tablespaceak izan ezik.
Erabiltzaile bat, deskonektatuta dagoen tablespace batera sartzen saiatzen bada erroreko mezu bat agertuko da. Tablespace baten deskonexioa egiteko hurrengo agindua erabiltzen da:

  **ALTER TABLESPACE** tablespace_izena **{ ONLINE | OFFLINE [NORMAL | TEMPORARY | IMMEDIATE ] }**;

* **OFFILE:** Tablespacea desaktibatzen du eta bere segmentuei sarrera debekatzen du.
* **NORMAL:** Tablespacearen fitxategien SGA garbitzen du.
* **TEMPORARY:** Oraclek checkpoint bat exekutatzen du.
* **IMMEDIATE:** Ez du checkpoint bat exekutatzen.

## Beste Objektuak 
### Sekuentziak: 
Sekuentzia bat Datu-Basearen objektu bat da, bere funtzioa zenbaki osoa bakarrak (unique) sortzea da.Erabilgarria da klabe primarioen balioak sortzeko. Aginduaren formatua hurrengoa da:

  CREATE SEQUENCE sekuentziaren_izena
  [INCREMENT BY osoa]
  [START WITH osoa]
  [MAXVALUE osoa |NOMAXVALUE]
  [MINVALUE osoa |NOMINVALUE]
  [CYCLE|NOCYCLE]
  [ORDER|NOORDER]
  [CACHE osoa |NOCACHE];

Atalen azalpena:

* INCREMENT BY osoa: Sekuentziaren gehikuntza. Lehenetsiko balioa 1 izango da. Negatiboa bada beherapena gertatuko da.

* START WITH osoa: Sekuentziaren hasierako balioa

* MAXVALUE osoa: Sekuentziak lortuko duen balio maximoa.

* NOMAXVALUE: Balio maximoa 1027 izango da gehikuntza sekuentzia baterako edo –1 beherapen sekuentzia baterako.

* MINVALUE osoa: Sekuentziak lortuko duen balio minimoa.

* NOMINVALUE: Balio minimoa 1 izango da gehikuntza sekuentzia baterako edo -1026 beherapen sekuentzia baterako

* CYCLE | NOCYCLE: CYCLE sekuentziak berriro martxen jartzen da maximora edo minimoa ailegatzerakoan, NOCYCLE ez.

* ORDER | NOORDER: ORDER segurtasun neurria da, sekuentziaren zenbakien ordena ziurtatzen du, baina NOORDER aldiz ez.

* CACHE | NOCACHE: Datuak memorian gorde ahal diren ala ez definitzen du.

Adibidea:

  CREATE SEQUENCE KODEAK START WITH 1 INCREMENT BY 1 MAXVALUE 99;

**1.** Sekuentziaren datuetara sartzeko **SEKUENTZIAREN_IZENA.CURVAL** edo **SEKUENTZIAREN_IZENA.NEXTVAL** erabiltzen da.

Adibidea:
  INSERT INTO FRUTAS VALUES (KODEAK.NETVAL, ‘NARANJAS’);

**2.** Sekuentzia datu basetik ezabatzeko:

Adibidea:

  DROP SEQUENCE KODEAK;

### Aurkibideak: 
Taula bateko lerrora iristeko bidea emango digun zuhaitz-egitura da aurkibidea. Funtsean, bi eratakoak izango dira aurkibideak: erabiltzaileak definitzen dituenak eta taulen lehen mailako gakoen gainean Oracle-k sortzen dituenak.

Lehen mailako gakoen gainean sortzen diren aurkibideak murrizketak ere badira (constraints) eta, horrela, aurkibidea erabiltzaileak ala sistemak sortua izan den jakin nahi badugu, aurkibidea ez ezik murrizketa ere baden egiaztatu beharko dugu.

Aurkibide bat, murrizketen aurkibide-taulan barik (user_constraints), hiztegiaren aurkibideen taulan (user_indexes) ageri bada, erabiltzaileak sortutako aurkibidea izango da.
Aurkibidea sortzeko, hurrengo agindua erabiltzen da.

  **CREATE INDEX** izen_aurkibidea
  ON izen_taula(izen_zutabea [ASC | DESC], [, izen_zutabea[ASC | DESC]]...)
  [TABLESPACE izen_tablespace]
  [STORAGE storage_clause]
  [beste_klausulak]

Atalen azalpena:

* **izen_taula:** indexatuko den taula da.
* **Colum:** indexatzen diren zutabeak
* **ASC | DESC:** Indizea gorakorra edo beherakorra definitzen du.

Adibidea:

  **CREATE INDEX** INIDICEEMPLE ON EMPLE (EMP_NO);

Aurkibideak ezabatzeko, DROP INDEX agindua erabiltzen da.

Adibidea:

  **DROP INDEX** INDICEEMPLE;

### Datu-baseen loturak (LINK): 
Datu basearen loturak, ahalbidetzen dio Oracle aplikazioari datu-baseen arteko komunikazioa. Honen bidez, Oraclek bi Datu-Baseak konektatzen ditu elkarrekin.Oro har urrutiko datu baseetan kontsultak egiteko erabiltzen dira loturak.

  **CREATE [PUBLIC] DATABASE LINK** lotura_izena
  CONNECT TO erabiltzailea IDENTIFIED BY pasahitza
  USING ‘konexio_katea’;

Atalen azalpena,

* **PUBLIC:** Datu-base lotura publikoa sortzen da.

* **konexio_katea:** Urrutian konektatzeko erabiltzen den konexioaren katea da.

* **erabiltzailea/pasahitza:** Urrutian (remote) dagoen datu-basearen erabiltzailea eta pasahitza da.

urrutiko datu baseetan konektatzeko: **TAULA_IZENA@LOTURA_IZENA**

Adibidea:

  CREATE DATABASE LIINK NIRE_LOTURA CONNECT TO MAJESUS IDENTIFIED BY RAMOS USING ‘DAI’;

  SELECT * FROM **EMPLE@NIRE_LOTURA**;

Loturak ezabatzeko, DROP DATABASE LINK agindua erabiltzen da. Formatua:

  DROP [PUBLIC] DATABASE LINK lotura_izena

Adibidea:

  **DROP DATABASE LINK** NIRE_LOTURA;

## Segurtasun kopiak 
Datu base kudeatzaile baten eginkizunik garrantzitsuenetariko bat, datuak beti erabilgarri edukitzea da, datu basea zaintzea egon daitezkeen erroreengandik eta erabilgarri egotea egitea ahal bezain laster. Horregatik datu base kudeatzailea segurtasun kopiak egin behar dute erregularki. Oso garrantzitsuak dira datu baseak errekuperatzeko.

### Segurtasun Kopia Logikoak 
Kopia logikoak, datu basearen datuak irakurtzea eta kanpora ateratzea baliatuko dira, esportazio fitxategi bat sortzen, zeinek Oracleren IMPORT aginduarekin errekupera daitekeena. Erabiltzaileak, taulak eta datu batera kanporatu daiteke.

### Segurtasun Kopia Fisikoak 
Kopia hauek, datu-baseak osatzen dituzten fitxategiak kopiatzean datza. Fitxategien sistemetako segurtasun kopiak ere deituta. Oracle-k segurtasun kopia fisikoen bi modu jasatzen ditu: lerroz kanpokoa edo lerroan.

#### Lerroz Kanpoko Segurtasun Kopiak 
Datu Basea era normalean deskonektatu denean sortzen da, eta ez edozein akatsengatik, baizik eta datu-basea honetako komando batetik itxi egin denean: SHUTDOWN, SHUTDOWN INMEDIATE edo SHUTDOWN TRANSACCTIONAL.

#### Lerroetako Segurtasun Kopiak 
Datu-Basea irekita dagoenean egitan dira, horretarako datu-basea ARCHIVELOG moduan egon behar da, REDO Log-ak artxibatzeko eta egindako transakzio guztien erregistroak sortzeko.

## Kanpo estekak