<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="ca">
	<id>http://wiki.joanillo.org/index.php?action=history&amp;feed=atom&amp;title=Pr%C3%A0ctica_ASI-C6-ASGBD%3A_Arquitectura_d%27Oracle</id>
	<title>Pràctica ASI-C6-ASGBD: Arquitectura d'Oracle - Historial de revisió</title>
	<link rel="self" type="application/atom+xml" href="http://wiki.joanillo.org/index.php?action=history&amp;feed=atom&amp;title=Pr%C3%A0ctica_ASI-C6-ASGBD%3A_Arquitectura_d%27Oracle"/>
	<link rel="alternate" type="text/html" href="http://wiki.joanillo.org/index.php?title=Pr%C3%A0ctica_ASI-C6-ASGBD:_Arquitectura_d%27Oracle&amp;action=history"/>
	<updated>2026-08-30T15:25:22Z</updated>
	<subtitle>Historial de revisió per a aquesta pàgina del wiki</subtitle>
	<generator>MediaWiki 1.34.2</generator>
	<entry>
		<id>http://wiki.joanillo.org/index.php?title=Pr%C3%A0ctica_ASI-C6-ASGBD:_Arquitectura_d%27Oracle&amp;diff=5281&amp;oldid=prev</id>
		<title>Joan a 13:07, 19 abr 2010</title>
		<link rel="alternate" type="text/html" href="http://wiki.joanillo.org/index.php?title=Pr%C3%A0ctica_ASI-C6-ASGBD:_Arquitectura_d%27Oracle&amp;diff=5281&amp;oldid=prev"/>
		<updated>2010-04-19T13:07:43Z</updated>

		<summary type="html">&lt;p&gt;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Pàgina nova&lt;/b&gt;&lt;/p&gt;&lt;div&gt;==Objectius==&lt;br /&gt;
*Unitat Didàctica: UD 2. Arquitectura d'Oracle&lt;br /&gt;
&lt;br /&gt;
En aquesta pràctica has d'executar les sentències bàsiques que mostren informació de l'arquitectua d'un servidor Oracle, i així afiançar la teoria vista a classe.&lt;br /&gt;
&lt;br /&gt;
==Desenvolupament==&lt;br /&gt;
&lt;br /&gt;
Al final de la pràctica, l'alumne haurà de pujar al servidor un fitxer comprimit que contingui el script realitzat i el fitxer de sortida (log).&lt;br /&gt;
&lt;br /&gt;
El script, que es dirà script_arq_XX.sql (XX és el número d'usuari), constarà de:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
SPOOL script_arq_XX.log&lt;br /&gt;
sentències...&lt;br /&gt;
SPOOL OFF&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
comentaris REM allà on calgui&lt;br /&gt;
&lt;br /&gt;
També podeu utilitzar PAUSE si voleu que el script no s'executi de forma ininterrompuda&lt;br /&gt;
&lt;br /&gt;
'''Espais de taules''':&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
DESC user_tablespaces;&lt;br /&gt;
select * from user_tablespaces;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
En comptes de *, ficar els camps que consideris significatius&lt;br /&gt;
&lt;br /&gt;
Dins de cada espai de taules es poden emmagatzemar objectes de diferent naturalesa: taules, index, etc. Però no es poden mesclar. Necessitem una manera de separar-los, i això són els segments.&lt;br /&gt;
&lt;br /&gt;
La taula que guarda la informació dels segments d'usuari és user_segments:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
DESC user_segments;&lt;br /&gt;
select * from user_segments;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
En comptes de *, ficar els camps que consideris significatius&lt;br /&gt;
&lt;br /&gt;
'''Fitxers de dades''':&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
select 'dades' tipus, substr(name,1,70) nombre from v$datafile;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Taules i columnes'''&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
DESC ALL_ALL_TABLES&lt;br /&gt;
select table_name, num_rows, OWNER from all_all_tables where owner='ASI2AXX';&lt;br /&gt;
&lt;br /&gt;
DESC ALL_TAB_COLUMNS&lt;br /&gt;
&lt;br /&gt;
select RPAD(COLUMN_NAME, 10), RPAD(DATA_TYPE,10), DATA_LENGTH, DATA_PRECISION, COLUMN_id from ALL_TAB_COLUMNS where  owner='ASI2AXX' and table_name='ORDINADOR';&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Restriccions de taules'''&lt;br /&gt;
&lt;br /&gt;
Una tabla puede tener asociadas restricciones que deben cumplir todas las filas. Entre las restricciones que se pueden fijar algunas reciben nombres especiales.: clave primaria, clave ajena. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
describe all_constraints&lt;br /&gt;
&lt;br /&gt;
select constraint_name, constraint_type, last_change from all_constraints where table_name='ORDINADOR' and OWNER='ASI2A01';&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
'''Usuaris''':&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
describe ALL_USERS&lt;br /&gt;
select * from all_users where username like '%ASI%';&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Index''':&lt;br /&gt;
Los índices se crean automáticamente cuando se define una restricción UNIQUE o PRIMARY KEY.&lt;br /&gt;
&lt;br /&gt;
Per exemple, per al cas de la taula MUNICIPIS (8000 files), seria bo crear un index sobre aquesta taula de manera que quedin ordenats els municipis de forma alfabètica:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
CREATE INDEX ASI2AXX.INDX_MUNICIPIS ON ASI2AXX.MUNICIPIS(MUNICIPI);&lt;br /&gt;
ALL_INDEXES&lt;br /&gt;
DESC ALL_INDEXES&lt;br /&gt;
&lt;br /&gt;
SELECT INDEX_NAME,INDEX_TYPE,TABLE_OWNER,TABLE_NAME, TABLE_TYPE FROM ALL_INDEXES WHERE OWNER='ASI2AXX' AND TABLE_NAME='MUNICIPIS';&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Vistes''':&lt;br /&gt;
&lt;br /&gt;
Conceptualmente, una vista puede considerarse como una máscara que se extiende sobre una o más tablas, de modo que cada columna de la vista se corresponde con una o más columnas de las tablas subyacentes. Cuando se consulta una vista, esta traspasa la consulta a las tablas sobre las que se asienta. Las vistas no se pueden indexar.&lt;br /&gt;
&lt;br /&gt;
Las vistas no generan almacenamiento de datos, y sus definiciones se almacenan en el diccionario de datos.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
CREATE VIEW MUNICIPIS_BARCELONA AS&lt;br /&gt;
SELECT MUNICIPI FROM MUNICIPIS M, PROVINCIES P WHERE M.COD_PROV=P.COD_PROV AND PROVINCIA='Barcelona';&lt;br /&gt;
&lt;br /&gt;
SELECT * FROM MUNICIPIS_BARCELONA WHERE MUNICIPI LIKE 'A%';&lt;br /&gt;
&lt;br /&gt;
DESCRIBE ALL_VIEWS&lt;br /&gt;
&lt;br /&gt;
SELECT VIEW_NAME FROM ALL_VIEWS WHERE OWNER='ASI2AXX';&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Seqüències''':&lt;br /&gt;
&lt;br /&gt;
Las definiciones de secuencias se almacenan en el diccionario de datos. Son mecanismos para obtener listas de números secuenciales.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
DESCRIBE ALL_SEQUENCES&lt;br /&gt;
&lt;br /&gt;
SELECT * FROM ALL_SEQUENCES WHERE SEQUENCE_OWNER='SYSTEM';&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Procediments i Funcions'''&lt;br /&gt;
&lt;br /&gt;
Un procedimiento es un bloque de código PL/SQL, que se almacena en el diccionario de datos y que es llamado por las aplicaciones. Se pueden utilizar para implementar seguridad, no dando acceso directamente a determinadas tablas sino es a través de procedimientos que acceden a esas tablas. Cuando se ejecuta un procedimiento se ejecuta con los privilegios del propietario del procedimiento. La diferencia entre un procedimiento y una función es que ésta última puede devolver valores.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
DESCRIBE ALL_OBJECTS&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
de fet, amb la vista ALL_OBJECTS podem veure no només procediments, sinó qualsevol objecte del diccionari i dels usuaris:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
SELECT DISTINCT OBJECT_TYPE FROM ALL_OBJECTS;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Per veure els procediments:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
SELECT * FROM ALL_OBJECTS WHERE OBJECT_TYPE='PROCEDURE' AND OWNER='ASI2AXX';&lt;br /&gt;
&lt;br /&gt;
'''Fitxers redo log''':&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
DESCRIBE V$LOGFILE&lt;br /&gt;
&lt;br /&gt;
select group#, status, substr(member,1,60) from v$logfile;&lt;br /&gt;
Per saber quin és el fitxer actiu, he de mirar quin fitxer té status='STALE'&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Si vull mirar informació detallada d'aquests arxius, número de seqüencia, etc...:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
DESCRIBE V$LOG&lt;br /&gt;
select * from v$LOG;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Puc provocar un canvi de fitxer de Redo Log (i així simular que hi ha hagut activitat a la base de dades):&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
SQL&amp;gt; ALTER SYSTEM SWITCH LOGFILE;&lt;br /&gt;
&lt;br /&gt;
select * from v$LOG;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
ara puc veure com el número de seqüència ha canviat. Per saber quin és el grup de redo log que està actiu (equivalent a un fitxer), ara miraré STATUS='CURRENT'.&lt;br /&gt;
v$log i v$logfile estan units pel camp group#&lt;br /&gt;
&lt;br /&gt;
Informació:  Val a dir que les taules-vistes que comencen per V$ no són pròpiament taules de la base de dades, i es poden consultar amb la base de dades tancada.&lt;br /&gt;
&lt;br /&gt;
Actualment estem treballant en mode No-arxivat. Per comprovar-ho mitjançant SQL, haurem de tenir els privilegis suficients: &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
SQL&amp;gt; connect system/manager@bbdd as sysdba&lt;br /&gt;
SQL&amp;gt; archive log list;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Ficheros de control'''&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
select 'control' tipus, substr(name,1,70) nom from v$controlfile&lt;br /&gt;
union all&lt;br /&gt;
select 'datos' tipus, substr(name,1,70) nom from v$datafile&lt;br /&gt;
union all&lt;br /&gt;
select 'redo log' tipus, substr(member,1,70) nom from v$logfile&lt;br /&gt;
/&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Entrega==&lt;br /&gt;
* entregar el script SQL que has generat i el fitxer de log, indicant clarament el nom i el número de classe (script_arq_XX.sql, script_arq_XX.log). Exercici individual o per parelles. En el nom del fitxer s'haurà d'identificar clarament el número de pràctica i el número de classe. Si has d'entregar diferents fitxers m'envies un sol fitxer comprimit (rar, zip).&lt;br /&gt;
* entregar al Moodle: http://192.168.0.15/moodle&lt;br /&gt;
&lt;br /&gt;
==Recursos==&lt;br /&gt;
*[[Arquitectura_Oracle]]&lt;br /&gt;
&lt;br /&gt;
==Durarda==&lt;br /&gt;
2 hores&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{Autor}}, novembre 2009&lt;br /&gt;
[[Categoria: IES Jaume Balmes]]&lt;br /&gt;
[[Categoria: Pràctiques ASI-C6-ASGBD]]&lt;br /&gt;
[[Categoria: Oracle]]&lt;/div&gt;</summary>
		<author><name>Joan</name></author>
		
	</entry>
</feed>