UD1 ASI-C6-ASGBD. Introducció a Oracle

De wikijoan
Salta a la navegació Salta a la cerca

Sessió 1

  • Introducció a Oracle
  • Sessió remota SSH des de la màquina de l'Aula cap al servidor 192.168.0.10

Els alumnes tindran un login per fer una sessió remota SSH

  • Demostració dels conceptes bàsics: crear taules, inserir registres, modificar registres, eliminar registres, eliminar taules. Tipus de dades bàsics. claus primàries.
  • Implementar una relació M:M. Taules ALUMNE, ASSIGNATURA, MATRICULAR. Claus forànies, integritat referencia, selects creuades sobre vàries taules.

El script vist a classe és:

DROP TABLE ALUMNE;

CREATE TABLE ALUMNE (
id NUMBER(2) PRIMARY KEY,
nom VARCHAR2(15) NOT NULL,
cognom1 VARCHAR2(20) NOT NULL,
cognom2 VARCHAR2(20),
data_naix DATE
);

CREATE TABLE ASSIGNATURA (
id NUMBER(2) PRIMARY KEY,
nom VARCHAR2(15)
);

CREATE TABLE MATRICULA (
id_alumne NUMBER(2) REFERENCES ALUMNE,
id_assig NUMBER(2) REFERENCES ASSIGNATURA,
PRIMARY KEY(id_alumne,id_assig)
);

INSERT INTO ALUMNE(id, nom, cognom1, cognom2, data_naix) VALUES(1,'Pere','Ramiro','Pou','23/03/1980');
INSERT INTO ALUMNE VALUES(2,'Maria','Guixers','Perelló','11/12/1980');
INSERT INTO ALUMNE VALUES(3,'Rita','Pau','','23/03/1980');
INSERT INTO ALUMNE VALUES(4,'Jordi','Compte',NULL,'23/03/1970');
INSERT INTO ALUMNE(id, cognom1, nom, data_naix) VALUES(5,'Sans','Pau','12/04/1990');

INSERT INTO ASSIGNATURA VALUES (1,'DFSI');
INSERT INTO ASSIGNATURA VALUES (2,'IAIG');

INSERT INTO MATRICULA VALUES(1,1);
INSERT INTO MATRICULA VALUES(1,2);
INSERT INTO MATRICULA VALUES(2,1);
INSERT INTO MATRICULA VALUES(2,2);


SELECT * FROM ALUMNE;
SELECT * FROM ALUMNE WHERE cognom2 IS NULL;
SELECT * FROM ALUMNE WHERE cognom2 = '';
SELECT * FROM ALUMNE WHERE cognom2 <> '';
SELECT * FROM ALUMNE WHERE data_naix > '01/01/1980';
SELECT * FROM ALUMNE WHERE cognom1 LIKE '%a%';

SELECT * FROM ASSIGNATURA;

SELECT A.nom,A.cognom1, ASSIG.nom FROM ALUMNE A, ASSIGNATURA ASSIG, MATRICULA M WHERE A.id=M.id_alumne AND ASSIG.id=M.id_assig;

UPDATE ALUMNE SET cognom2='Perello' WHERE cognom2='Perelló';

DELETE FROM ALUMNE WHERE id=5;
SELECT * FROM ALUMNE;

DELETE FROM MATRICULAR;
DELETE FROM ASSIGNATURA;
DELETE FROM ALUMNE;
SELECT * FROM ALUMNE;

Inici de la sessió remota

Els alumnes han de tenir un compte d'usuari en el servidor, i iniciaran una sessió remota:

$ ssh asi2aXX@192.168.0.10
password: asi

asi2aXX$

Aleshores l'alumne ja es pot connectar a Oracle amb la utilitat sqlplus:

$ sqlplus asi2a01/asi
SQL>

Si no es troba l'executable sqlplus significa que no està ben configurat (falta dir quin és l'ORACLE_SID i el ORACLE_HOME). En principi això no ha de passar, perquè en l'inici de sessió s'executarà un script .bashrc que farà aquesta feina. Però si no fos el cas, la utilitat oraenv permet fer la configuració:

$ . oraenv
ORACLE_SID = [] ? BBDD

Més informació sobre oraenv a http://www.oracleutilities.com/OSUtil/oraenv.html.

L'executable oraenv es troba en el servidor a /usr/local/bin/oraenv:

$ whereis oraenv
oraenv: /usr/local/bin/oraenv

Si editem el fitxer veurem que és un script que a la capçalera hi ha la informació que ens interessa:

# The following environment variables are set:
#
#       ORACLE_SID      Oracle system identifier
#       ORACLE_HOME     Top level directory of the Oracle system hierarchy
#       PATH            Old ORACLE_HOME/bin removed, new one added
#       ORACLE_BASE     Top level directory for storing data files and 
#                       diagnostic information.

En el nostre cas tenim:

$ echo $ORACLE_SID
BBDD
$ echo $ORACLE_HOME
/u01/app/oracle/product/11.1.0/bbdd
$ echo $PATH
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/lib/jvm/java-6-sun/bin:/u01/app/oracle/product/11.1.0/bbdd/bin
$ echo $ORACLE_BASE
/u01/app/oracle

i aquesta és precisament la informació que s'haurà de traslladar als usuaris per tal de tenir ben configurada la connexió a Oracle. En el script .bashrc dels usuaris asi2aXX, afegeixo a sota de tot:

export ORACLE_SID=BBDD
export ORACLE_HOME=/u01/app/oracle/product/11.1.0/bbdd
export PATH="$PATH:/u01/app/oracle/product/11.1.0/bbdd/bin" 
export ORACLE_BASE=/u01/app/oracle

Recordem que el script .bashrc es troba en la carpeta de cada usuari, que és un fitxer ocult, i que té per missió executar-se en l'inici de sessió.

La manera automàtica de fer-ho és afegir aquesta informació en el fitxer /etc/skel/.bashrc, doncs el contingut de la carpeta /etc/skel és el que es copia quan es crea un usuari.