Il 0% ha trovato utile questo documento (0 voti)
15 visualizzazioni

sql

Il documento fornisce una panoramica delle operazioni di gestione del database Oracle, inclusi concetti come RAC, Streams, Data Guard e comandi SQL per la connessione e il monitoraggio del database. Viene descritto il processo di installazione di un database di esempio, l'abilitazione del log di archivio e le procedure di backup e ripristino. Inoltre, il documento esplora l'uso di SQL per interrogare e modificare dati, nonché la creazione di tablespace.

Caricato da

agenteostriche7s
Copyright
© © All Rights Reserved
Formati disponibili
Scarica in formato ODT, PDF, TXT o leggi online su Scribd
Il 0% ha trovato utile questo documento (0 voti)
15 visualizzazioni

sql

Il documento fornisce una panoramica delle operazioni di gestione del database Oracle, inclusi concetti come RAC, Streams, Data Guard e comandi SQL per la connessione e il monitoraggio del database. Viene descritto il processo di installazione di un database di esempio, l'abilitazione del log di archivio e le procedure di backup e ripristino. Inoltre, il documento esplora l'uso di SQL per interrogare e modificare dati, nonché la creazione di tablespace.

Caricato da

agenteostriche7s
Copyright
© © All Rights Reserved
Formati disponibili
Scarica in formato ODT, PDF, TXT o leggi online su Scribd
Sei sulla pagina 1/ 8

07/01

ORACLE

Difficile lavorare con Oracle – dalla prima versione era già buono, sicuro, sql non tanto. Instance –
l’utente si connetta. RAC: Real Application Cluster: più istance un database (se rompe, si rompe).
Streams: tante istance tante database: tutti gli utenti devono usare gli stessi dati, per questo streams
replica i dati di ogni database una volta che vengono modificati. Ha bisogno di una rete locale di
elevata capacità, minimo usare la fibra. Elevata disponibilità. DATA GUARD: 1 standby, 2
esecuzione.

CARTELLA:dbhomeXE\

CMD
C:\Users\Administrator>sqlplus /nolog
SQL> connect / as sysdba
*Utente tipo amministrativo e quello utente installa oracle: Amministratore sempre sysdba
SQL> sho user → USER Þ "SYS"
sho errors – errori delle procedure
sho sga -
Total System Global Area 645921624 bytes
Fixed Size 9857880 bytes
Variable Size 289406976 bytes
Database Buffers 343932928 bytes
Redo Buffers 2723840 bytes
sho parameters-→ parametri di inizializzazione
archive log list
SQL> SELECT parallel FROM v$instance; stiamo dentro un RAC?
select * from dba_streams_administrator; → stiamo dentro un stream?
→ Nessuna riga selezionata = no
select protection_level from v$database;

PROTECTION_LEVEL
--------------------
UNPROTECTED = non stiamo dentro un data guard

SMON: system monitor viene avviato a inizio serve per localizzare montare validare il controlfile e
poi apre il db.
*ControlFile, senza questo oracle si ferma.

PMON: Process monitor: monitorare i processi di sessione, controlla quello che fanno gli utenti,
risolve problemi di sessione

RECO: Recovery process: ripristina un db

ogni volta che oracle viene spento fa uno checkpoint

LGWR: logwriter: lavora sempre,

Redo Log Buffer è sempre 1/3 vuoto: le query sono cosi lunghe che possono occupare piu di 1/3
dello spazio.

MMAN: Memory Manager


MMNL

sho parameter control_files

Dove si trova un data file? → select name from v$datafile;

shutdown normal
Database chiuso.
NOMOUNT del database eseguito.
Istanza ORACLE chiusa.

Startup

come capire 99% dei problemi? → STARTUP NOMOUNT legge i parametri di inizializzazione e
avvia a distanza, file dei parametri di inizializzazione.
alter database mount; → errore? Controlfile il problema
alter database open; → errore? Apre tutti i quanti tipi file, problema? Tipifile.

SHUTDOWN!!
normal: default: chiude tutte le sezioni prima di spegnere la istanza
transactional: ← più usata: aspetta chiusura delle transazioni in corso, non accetta nuove sezioni,
non accetta nuove query.
Immediate: non accetta nuove connessione e neanche nuove query. Anche quelli non completate,
saranno annullate.
Abort: rimuove tutti i processi, e chiude, non aspetta niente. Come staccare la corrente.

-----------------------------------------------------08/01-----------------------------------------------------------

cercare sulla macchina virtuale, google: ‘oracle sample database download’


Github: Code: Download zip: estrai→ database de prova de oracle – human_resources
README:

C:\Users\Administrator\Downloads\human_resources – copia il percorso


SQL> exit
cd C:\Users\Administrator\Downloads\human_resources – incolla il percorso
sqlplus /nolog
connect / as sysdba
alter session set “_ORACLE_SCRIPT”=TRUE; (modificata sessione) default sono disabilitate –
possibile alterare solo per la sessione. Vale soltanto per l’utente connesso.
@hr_install.sql – password: 1234 – Invio – Invio Y
-ADESSO ABBIAMO IL DATABASE-

cd .. – fino ad administrator
sqlplus /nolog
connect / as sysdba
describe hr.employees – con questa tabella capiamo che i dati sono stati importati
estrai sqldeveloper – altra cartella sqldeveloper – copia su desktop tutta la cartella – apre
applicazione sqldeveloper
finestra inutile – NO
apre per vedere se funziona
no registrazione ORACLE
chiude tutto e fai un’istantanea
avvia dc1, apre sqldeveloper
Nuovo/Seleziona database: hr connessione
utente hr
password: 1234 – test

errore connessione: a volte succede: cmd : lsnrctl status -

salva connetti

lsnrctl → programma listner, che aiuta a connettere a Oracle -start,stop, restart, status

→ archive log list : archiviazione automatica e stata abilitata, consente fari turi i tipi di backup
→select log_mode from v$database; : stessa identica informazione, se l’archivio e abilitato o no,
questo serve anche alle applicazione più vecchie
→shutdown immediate – l’istanza deve essere chiusa e riavviata facendo questo con...
→startup mount
i file dati sono ancora fermi

ABILITARE ARCHIVE LOG!!!


→alter database archivelog; abilita database
→alter database open; riavvia il db
→archive log list; : verifica se l’archiviazione è stata abilitata
REDO (Log Files e Archived Redo Log Files) é importante per fare un backup

BACKUP!!!
→exit
→rman target / - recovery manager
→ backup database;
Archived Redo Log Files vengono salvati spesso non si fa il backup di questi, ne di inizializzazione

RIPRISTINA BACKUP!!!
controlfile aperti
→ restore database;
→ recover database;
exit
sqlplus /nolog – connect / as sysdba – archive log list
alter database open;
C:\app\Administrator\product\21c\oradata\XE - creare cartella con il nome flashback
serve per contenere flashback db – riporta il db a un punto specifico/data, torna indietro ma torna
indietro anche il backup – si puo tornare indietro nel caso di un attacco hacker
query un singolo dato com’era un determinato giorno
tables…

FLASHBACK!!!
C:\app\Administrator\product\21c\oradata\XE\FlashBack
cmd: alter system set db_recovery_file_dest_size=10G;
alter system set db_recovery_file_dest='C:\app\Administrator\product\21c\oradata\XE\FlashBack';
alter database flashback on;
C:\app\Administrator\product\21c\database
SQL> alter system
2 set trace_enabled = false
3 scope = spfile;
Memoria: SQL> alter system
2 set trace_enabled = false
3 scope = memory;

------------------------09/01-------------------------------------------------------------
gestire in modo corretto undo – flashback
indici rendono piu veloce
sql – su oracle – ti da tutto il codice di come fare la tabella

ORACLE
between: 122 and 180…includono sempre gli estremi
like (come…)
% si mette per cercare qualcosa dopo il nome, una parte che non si conosce per intero
Mallin: ‘Ma%’ tutti i cognomi che iniziano per Ma… ‘%in’ tutti quelli che finiscono in -in-
(_) carattere joly che vale solo per uno carattere ‘A_k%’ trova AtKinson – underscore si mette la
quantità di uno solo carattere.
(OR) una o altra opzione
(IN) sostituto di OR (60,70,80)

SELECT * FROM employees e


JOIN departments d
ON e.department_id = d.department_id;
*inner join: ci mostra solo le righe correlate all’interno della tabella deparments

SELECT * FROM employees e


LEFT OUTER JOIN departments d
ON e.department_id = d.department_id;
le righe non correlate della tabella di sinistra

SELECT * FROM employees e


RIGHT OUTER JOIN departments d
ON e.department_id = d.department_id;
le righe non correlate della tabella di destra

SELECT * FROM employees e


FULL OUTER JOIN departments d
ON e.department_id = d.department_id;

SELECT first_name, last_name, TRUNC(salary/30), ROUND(salary/30,3)


FROM employees
ORDER BY salary DESC;
fa il truncamento, trunca la virgola e ci mostra la parte intera

alcuni funzioni, oltre la funzione, non possiamo mettere il nome delle colonne

SELECT UPPER(first_name), LOWER(first_name), INITCAP(LOWER(first_name))


FROM employees;
da uppercase tutto il nome
il modo delle lettere che voglio che si trasformi
trasforma minusculo first name, iniziale first name maiusculo
SELECT first_name || ' ' || last_name
FROM employees;
spazio tra nome e cognome

SELECT first_name || ' ---->' || last_name


FROM employees;
Ellen ---→Abel

SELECT first_name, LENGTH(first_name)


FROM employees
ORDER BY LENGTH(first_name) DESC;
Christopher 11: lunghezza in numeri del nome em ordem descendente

SELECT LENGTH(first_name)
FROM employees;
5 quanti carattere c’è un nome, ma in questo caso non c’è il nome, ossia la persona
c’è solo il numero

SELECT first_name
FROM employees
WHERE LENGTH(first_name) = 11;
Christopher/Jose Manuel

SELECT * FROM employees


WHERE last_name='Chung'
188 Kelly Chung KCHUNG 1.650.555.0153 14-GIU-15 SH_CLERK 3800
→ perfettamente identico

SELECT * FROM employees


WHERE last_name='Chung';
UPDATE employees SET salary = 5000
WHERE last_name='Chung';
188 Kelly Chung KCHUNG 1.650.555.0153 14-GIU-15 SH_CLERK 5000

SELECT * FROM employees


AS OF TIMESTAMP(SYSTIMESTAMP - INTERVAL '1' DAY)
WHERE last_name='Chung';
188 Kelly Chung KCHUNG 1.650.555.0153 14-GIU-15 SH_CLERK 3800
SELECT * FROM employees
WHERE last_name='Chung';

UPDATE employees SET salary = (


SELECT salary FROM employees
AS OF TIMESTAMP(SYSTIMESTAMP - INTERVAL '1' DAY)
WHERE last_name='Chung'
)
WHERE last_name='Chung';

SELECT SYSDATE FROM dual;


SELECT SYSTIMESTAMP FROM dual;
09-GEN-25 12:46:49,433000000 +01:00

13/01

modifica una riga


shutdown abort
startup mount
exit
rman target /
restore database;
alter
attacco hacker che non ha eseguito un’istruzione sql db, exit
flashbak database to timestamp(sysdate -1);

SQL> flashback database to timestamp(sysdate -1);


SQL> alter database open resetlogs;

backup prima del flashback – perché questo elimina i file del log

extent: quantità minima di spazio di cui il file può essere steso

SQL> select segment_type, count(1)


2 from dba_segments
3 group by segment_type;

SEGMENT_TYPE COUNT(1)
------------------ ----------
CLUSTER 10
INDEX 1818
TABLE 1657
LOBSEGMENT 584
LOBINDEX 584
TABLE PARTITION 603
INDEX PARTITION 484
LOB PARTITION 23
NESTED TABLE 8
TABLE SUBPARTITION 32
SYSTEM STATISTICS 1

SEGMENT_TYPE COUNT(1)
------------------ ----------
ROLLBACK 1
TYPE2 UNDO 10

13 righe selezionate.

CREARE TABLESPACE

SQL> create smallfile tablespace "prova"


2 datafile 'C:\app\Administrator\product\21c\oradata\XE\PROVA.DBF'
3 size 100M autoextend on next 10M maxsize 200M
4 logging
5 extent management local
6 segment space management auto
7 default nocompress;

Creata tablespace.

SQL> alter tablespace "prova"


2 add datafile 'C:\app\Administrator\product\21c\oradata\XE\PROVA02.DBF'
3 size 100M;

Potrebbero piacerti anche