ORACLE: Es una tecnología de base de datos relacional.

PLSQL: Significa "lengua de procedimiento extensiones a SQL", y puede ser utilizado en bases de datos Oracle. PLSQL está estrechamente integrado en el lenguaje SQL, sin embargo, añade que la programación no se construye a SQL nativo.

TABLAS La sentencia CREATE TABLE le permite crear y definir una tabla. La sintaxis básica para un comando CREATE TABLE es la siguiente: PROMPT “Creando tabla nombre de la tabla” CREATE TABLE nombre de la tabla ( Campo 1 tipo de dato, Campo 2 tipo de dato, ... ); Cada columna debe tener un dato. La columna debe ser definida como "nulo" o "no es nulo" y si este valor se deja en blanco, la base de datos supone "nulo" es la opción predeterminada. EJEMPLO: PROMPT "Creando tabla Pais" CREATE TABLE Division.Pais ( idPais number (3), nombre varchar2(30), ); ALTER TABLE: Le permite cambiar el nombre de una tabla existente. También se puede utilizar para agregar, modificar o eliminar una columna de una tabla existente.

Cambiar el nombre de una tabla : La sintaxis básica para cambiar el nombre de una tabla es la siguiente: ALTER TABLE nombre de la tabla RENAME TO nuevo nombre de la tabla;

Adición de la columna (s) a una tabla: Para agregar una columna a una tabla existente, la sintaxis de ALTER TABLE es la siguiente:

ALTER TABLE nombre de la tabla ADD nombre de la columna tipo de dato;

Modificación de la columna (s) en una tabla: Para modificar una columna en una tabla existente, la sintaxis de ALTER TABLE es la siguiente: ALTER TABLE nombre de la tabla MODIFY nombre de la columna tipo de dato;

Eliminar una columna (s) en una tabla: Para excluir a una columna en una tabla existente, la sintaxis de ALTER TABLE es la siguiente: ALTER TABLE nombre de la tabla DROP COLUMN nombre de la columna;

DROP TABLE: El DROP TABLE le permite eliminar una tabla a partir de la base de datos. La sintaxis básica para la declaración de DROP TABLE es la siguiente: DROP TABLE nombre de la tabla;

PRIMARY KEY Una clave principal es un único campo o combinación de campos que se define únicamente un registro. Ninguno de los campos que forman parte de la clave principal puede contener un valor nulo. Una tabla sólo puede tener una clave principal.

Usando una sentencia CREATE TABLE: La sintaxis para crear una clave principal mediante una sentencia CREATE TABLE es la siguiente: CREATE TABLE nombre de la tabla ( Campo 1 tipo de dato, Campo 2 tipo de dato, ... CONSTRAINT nombre de la PK PRIMARY KEY (nombre del campo) ); EJEMPLO: PROMPT "Creando tabla Pais" CREATE TABLE Pais (

idPais number (3), nombre varchar2(30), CONSTRAINT Pais_PK PRIMARY KEY (idPais) );

Uso de un comando ALTER TABLE: La sintaxis para crear una clave principal en un ALTER TABLE es la siguiente: ALTER TABLE nombre de la tabla ADD CONSTRAINT nombre de la PK PRIMARY KEY (nombre del campo); EJEMPLO: PROMPT "Creando Primary Key para Pais" ALTER TABLE Division.Pais ADD CONSTRAINT PKPais Primary key (idPais);

Borrar un primary key: La sintaxis para borrar un clave principal es la siguiente: ALTER TABLE nombre de la tabla DROP CONSTRAINT nombre de la PK;

FOREIGN KEY Una clave externa significa que los valores en una tabla debe figurar también en otra tabla. Una clave foránea se pueden definir ya sea en un comando CREATE TABLE o ALTER TABLE.

Usando una sentencia CREATE TABLE: La sintaxis para crear una clave externa usando la sentencia CREATE TABLE es la siguiente: CREATE TABLE nombre de la tabla ( Campo 1 dato nulo o no nulo, Campo 2dato nulo o no nulo, ... CONSTRAINT nombre de la fk FOREIGN KEY (campo1) REFERENCES nombre de la tabla (nombre del campo) ); EJEMPLO: PROMPT"creando tabla Ciudad" CREATE TABLE Division.Ciudad (

idCiudad number (5), nombre varchar2(30) CONSTRAINT Ciudad_pk PRIMARY KEY (id Ciudad) ); PROMPT "Creando tabla Pais" CREATE TABLE Pais ( idPais number (3), nombre varchar2(30), idCiudad number (3), CONSTRAINT Ciudad_fk FOREIGN KEY (idCiudad) REFERENCES Ciudad (idCiudad) );

Uso de un comando ALTER TABLE: La sintaxis para crear una clave foránea en una sentencia ALTER TABLE es la siguiente: ALTER TABLE nombre de la tabla ADD CONSTRAINT nombre de la fk FOREIGN KEY (nombre del campo) REFERENCES nombre de la tabla relacionada (nombre del campo); EJEMPLO: PROMPT "Creando Foreing Key para Pais" ALTER TABLE Division.Pais ADD CONSTRAINT FKPais Foreign Key (idCiudad)

Borrar un foreign key: La sintaxis para borrar un clave foránea es la siguiente: ALTER TABLE nombre de la tabla DROP CONSTRAINT nombre de la fk;

UNIQUE

Un unique es un solo campo o una combinación de campos que se define únicamente un registro. Algunos de los campos pueden contener valores nulos, siempre que la combinación de valores es única. El unique puede definirse por el create table o alter table.

Usando una sentencia CREATE TABLE: La sintaxis para crear una única limitación utilizando una sentencia CREATE TABLE es la siguiente: CREATE TABLE table_name CREATE TABLE nombre de la tabla ( campo1 tipo de dato, campo2 tipo de dato, ... ... CONSTRAINT nombre de uk UNIQUE (nombre del campo) ); EJEMPLO: PROMPT "Creando tabla Pais" CREATE TABLE Pais ( idPais number (3), nombre varchar2(30), idCiudad number (3), CONSTRAINT nombre_uk UNIQUE(nombre) );

Uso de un comando ALTER TABLE: La sintaxis para crear una única limitación, en una sentencia ALTER TABLE es la siguiente: ALTER TABLE nombre de la tabla ADD CONSTRAINT nombre de uk UNIQUE (nombre del campo); EJEMPLO:

PROMPT "Creando unique nombre Pais " ALTER TABLE Division.Pais ADD CONSTRAINT "UKPais_nombre" UNIQUE (nombre);

Borrar un unique: La sintaxis para borrar un unique es la siguiente: ALTER TABLE nombre de la table DROP CONSTRAINT nombre de uk; EJEMPLO: PROMPT "Borrando el unique de Pais "

ALTER TABLE Division.Pais DROP CONSTRAINT "UKPais_nombre";

CHECK El Check permite especificar una condición en cada fila de una tabla. Un Check puede definirse ya sea en una sentencia CREATE TABLE o ALTER TABLE.

Usando una sentencia CREATE TABLE : La sintaxis para crear un control utilizando una limitación de CREATE TABLE es la siguiente: CREATE TABLE table_name ( Campo1 tipo de dato, campo2 tipo de dato, ... CONSTRAINT nombre del ck CHECK (nombre del campo IN (condiciones)) ); EJEMPLO: PROMPT "Creando tabla Pais" CREATE TABLE Pais ( idPais number (3), nombre varchar2(30), idCiudad number (3), CONSTRAINT "CKPais_GOBIERNO" CHECK (gobierno IN('D','I','M')) );

Uso de un comando ALTER TABLE: La sintaxis para crear un control en un obstáculo ALTER TABLE es la siguiente: ALTER TABLE nombre de la tabla ADD CONSTRAINT nombre del ck CHECK (nombre del campo IN (condicion); EJEMPLO: PROMPT "Creando check gobierno Pais "

ALTER TABLE Division.Pais ADD CONSTRAINT "CKPais_GOBIERNO" CHECK(gobierno IN('D','I','M'));

Borrar un check: La sintaxis para borrar un check es la siguiente: ALTER TABLE nombre de la tabla DROP CONSTRAINT nombre del ck; EJEMPLO: PROMPT "Borrando check de Pais " ALTER TABLE Division.Pais DROP CONSTRAINT "CKPais_GOBIERNO";

INDEX Un Index es un método de ajuste rápido de permitir la recuperación de registros. Un índice crea una entrada para cada valor que aparece en las columnas indexadas. CREATE INDEX: La sintaxis para crear un índice es: CREATE INDEX nombre del index ON nombre de la tabla (nombre del campo); EJEMPLO: PROMPT"CREANDO INDEX" CREATE INDEX indice ON Division.Pais(idCiudad);

Cambiar el nombre a un Index: La sintaxis para renombrar un index es la siguiente: ALTER INDEX nombre del Index RENAME TO nuevo nombre del Index;

EJEMPLO: ALTER INDEX índice RENAME TO índice país;

Borrar un Index: La sintaxis para borrar un index es la siguiente: DROP INDEX nombre del index; EJEMPLO: DROP INDEX índice;

INSERT La sentencia INSERT permite insertar un solo registro o varios registros en una tabla. La sintaxis de la sentencia INSERT es: INSERT INTO nombre de la tabla ( campo1, campo2, campon…) VALUES (valor1, valor2, valorn…); EJEMPLO: INSERT INTO Division.Pais (idPais,nombre,gobierno,idCiudad) VALUES (1,'Colombia','D',1);

PRIVILEGIOS DEL SISTEMA Los roles de sistema se utilizan para distribuir la disponibilidad de los comandos del sistema utilizados para gestionar la BD. Los privilegios más comunes están en la siguiente tabla. En ella se distinguen entre privilegios de manejo de objetos y de gestión de la BD. La palabra clave ANY significa que ese usuario tiene el privilegio para todos los esquemas en la BD. Hay que hacer notar que ANY y PUBLIC no son sinónimos. Privilegio Manejo de Objetos CREATE [PUBLIC] SYNONYM Capacidades ...

CREATE ANY INDEX Crear cualquier índice. Crear sinónimos [públicos].

CREATE [ANY] TABLE ALTER ANY INDEX ALTER ANY TABLE DROP ANY INDEX DROP ANY SYNONYM DROP PUBLIC SYNONYM DROP ANY VIEW DROP ANY TABLE INSERT ANY TABLE DELETE ANY TABLE ALTER SESSION CREATE SESSION CREATE PROFILE CREATE ROLE

Crear tablas. El usuario debe tener cuota en el espacio de tablas, o ha de tener asignado el privilegio UNLIMITED TABLESPACE. Alterar cualquier índice. Alterar cualquier tabla Borrar cualquier índice. Borrar cualquier sinónimo. Borrar sinónimos públicos. Borrar cualquier vista. Borrar cualquier tabla. Insertar en cualquier tabla o vista. Borrar filas de cualquier tabla o vista, y también truncar. Alterar los parámetros de la sesión. Conectarse a la BD. Crear perfiles de usuario. Crear roles.

CREATE [ANY] VIEW Crear vistas.

SELECT ANY TABLE Efectuar selecciones de cualquier tabla o vista.

Gestión de la BD ...

CREATE ROLLBACK Creación de segmentos de rollback. SEGMENT CREATE TABLESPACE CREATE USER ALTER PROFILE ALTER ANY ROLE ALTER ROLLBACK SEGMENT ALTER USER DROP PROFILE DROP ANY ROLE DROP ROLLBACK SEGMENT DROP USER ALTER DATABASE GRANT ANY Crear espacios de tablas. Crear usuarios. Alterar perfiles existentes. Alterar cualquier rol. Alterar segmentos de rollback. Alterar usuarios. Borrar un perfil existente. Borrar cualquier rol. Borrar un segmento de rollback existente. Borrar un usuario. Añadir CASCADE si el usuario posee objetos. Permite una sentencia ALTER DATABASE. Otorgar cualquiera de estos privilegios.

ALTER TABLESPACE Alterar espacios de tablas.

DROP TABLESPACE Borrar un espacio de tablas.

PRIVILEGE GRANT ANY ROLE UNLIMITED TABLESPACE DROP PROFILE Otorgar cualquier rol a un usario. Puede usar una cantidad de almacenamiento ilimitada. Borrar un perfil existente.

Los privilegios se pueden agrupar en roles, para así satisfacer a distintos tipos de usuarios. En la instalación se crea un rol llamado OSOPER que sirve para los operarios de la máquina donde está la BD y permite realizar copias de seguridad en frio y en caliente. Los privilegios de OSOPER son STARTUP, SHUTDOWN, ALTER DATABASE OPEN/MOUNT, ALTER DATABASE BACKUP, ARCHIVE LOG, RECOVER y RESTRICTED SESSION. Se pueden crear nuevos roles. Por ejemplo, podemos crear un rol llamado creadorCuentas que sólo pueda crear usuarios y no pueda realizar ninguna otra operación de DBA. Las sentencias que permiten hacer esto son las siguientes: SVRMGR> create role creadorCuentas; Statement processed. SVRMGR> grant create session, create user to creadorCuentas; Statement processed. Oracle incluye otros tres roles de sistema: CONNECT, RESOURCE y DBA, cuyos privilegios son: Rol Privilegios

alter session, create session, create cluster, create table, CONNECT create view, create synonym, create sequence, create database link RESOURCE DBA create cluster, create table, create procedure, create sequence, create trigger todos los privilegios de sistema con la opcion with admin option

2.4 Perfiles de Usuario Los perfiles se utilizan para limitar la cantidad de recursos del sistema y de la BD disponibles para un usuario. Si no se definen perfiles para un usuario se utiliza el perfil por defecto, que especifica recursos ilimitados. Los recursos que pueden ser limitados via perfil son los siguientes: Recurso SESSIONES_PER_USER CPU_PER_SESSION Descripción El número de sesiones concurrentes que un usuario puede tener en una instancia. El tiempo de CPU, en centenas de segundos, que una sesión puede utilizar.

CONNECT_TIME IDLE_TIME

El número de minutos que una sesión puede permanecer activa. El número de minutos que una sesión puede permanecer sin que sea utilizada de manera activa.

LOGICAL_READS_PER_SESSIO El número de bloques de datos que se N pueden leer en una sesión. LOGICAL_READS_PER_CALL PRIVATE_SGA El número de bloques de datos que se pueden leer en una operación. La cantidad de espacio privado que una sesión puede reservar en la zona de SQL compartido de la SGA. El número de total de recursos por sesión, en unidades de servicio. Esto resulta de un calculo ponderado de CPU_PER_SESSION, CONNECT_TIME, LOGICAL_READS_PER_SESSION y PRIVATE_SGA, cuyos pesos se pueden variar con el comando ALTER RESOURCE COST.

COMPOSITE_LIMIT

Los perfiles se pueden crear via el comando CREATE PROFILE, y se pueden modificar con la sentencia ALTER PROFILE. En general, el perfil por defecto debe ser adecuado para los usuarios normales; los usuarios con requerimientos especiales deberían tener perfiles especiales. 2.5 Cuentas BD sobre Cuentas SO Los usuarios pueden entrar en la BD una vez que han dado un nombre de usuario y una palabra de paso. Sin embargo, es posible aprovecharse del Sistema Operativo para obtener un nivel adicional de autentificación. La cuenta de la BD y del SO pueden relacionarse de manera que la de la BD se diferencie sólo en un prefijo de la cuenta del SO. Este prefijo se fija en el parámetro OS_AUTHENTIC_PREFIX del fichero init.ora. Por defecto esta puesto a "OPS$", pero puede tomar cualquier forma, incluso ser la cadena nula, "", con lo que no existe prefijo que diferencie las cuentas en la BD y en el SO. Por ejemplo, consideremos la cuenta del SO llamada alu10. La correspondiente cuenta en la BD sería OPS$ALU10. Cuando el usuario alu10 está en activo en el SO, puede acceder a su cuenta OPS$ALU10 sin especificar el password, como se muestra a continuación: $ sqlplus / En este caso el carácter "/" toma el lugar de la combinación del nombre de usuario y del password que debería aparecer.

Las cuentas pueden ser creadas con passwords aunque no vaya a ser utilizado. Ya que de este modo será posible acceder a la cuenta de OPS$ALU10 desde otra cuenta diferente a la alu10 del SO. La sentencia de creación de la cuenta OPS$ALU10 puede ser la siguiente: SVRMGR> create user ops$alu10 2> identified by 01ula 3> default tablespace users 4> temporary tablespace temp; Así, la forma de conectarse como OPS$ALU10 desde una cuenta del SO diferente es: $ sqlplus ops$alu10/01ula Existen dos formas de evitar este problema. La primera es creando el usuario BD sin especificar un password, utilizando la claúsula IDENTIFIED EXTERNALLY . De esta manera evitamos la necesidad de expecificar un password para la cuenta, obligando a la conexión entre las cuentas de la BD y del SO: SVRMGR> create user ops$alu10 2> identified externally 3> default tablespace users 4> temporary tablespace temp; La otra manera de evitar el problema es crear una cuenta con un password imposible, aspecto este que se explicará más adelante. 2.6 Protegidos por passwords Los passwords puede proteger tanto cuentas como roles. Los passwords se fijan a la hora de la creación de ambos y se pueden modificar con los comandos ALTER USER y ALTER ROLE, respectivamente. No es necesario asignar un password a un rol, pero si tiene uno debe ser especificado por el usuario cuando se asigna ese rol. 2.7 Gestionando Privilegios Los privilegios dan acceso a los usuarios a los datos que no poseen. Los roles con grupos de privilegios que facilitan la administración de los privilegios. Pero los privilegios se pueden manejar de manera explícita en algunas circunstancias. Los privilegios se crean via el comando GRANT y son registrados en el diccionario de datos.

Los privilegios que pueden otorgarse sobre objetos son los siguientes: Privilegio SELECT INSERT Capacidades Otorgadas Puede consultar a un objeto. Puede insertar filas en una tabla o vista. Puede especificarse las columnas donde se permite insertar dentro de la tabla o vista. Puede actualizar filas en una tabla o vista. Puede especificarse las columnas donde se permite actualizar dentro de la tabla o vista. Puede borrar filas dentro de la tabla o vista. Puede alterar la tabla. Puede crear índices de una tabla. Puede ejecutar un procedimieto, paquete o función.

UPDATE DELETE ALTER INDEX EXECUTE

REFERENCES Puede crear claves ajenas que referencie a esta tabla.

Haciendo un privilegio PUBLIC lo hace disponible a todos los usuarios de la BD. Aunque los privilegios se puedan otorgar individualmente, no resulta razonable basar la gestión de los privilegios en su asignación individual. La gestión de los privilegios se facilita con la utilización de los roles. A continuación se puede ver como se crean dos roles, el ALUMNOS que permite establecer una sesión, y el rol INSERTA_PEREZ que permite insertar y seleccionar en la tabla emp de perez: SVRMGR> create role alumnos; Statement processed. SVRMGR> grant create session to alumnos; Statement processed. SVRMGR> create role inserta_perez; Statement processed. SVRMGR> grant select, insert on perez.emp to inserta_perez; Statement processed. Se pueden asignar roles a roles: SVRMGR> grant usuarios to inserta_perez; Los roles pueden asignarse a los usuarios. Así, podemos asignar el rol INSERTA_PEREZ al usuario alu20: SVRMGR> grant inserta_perez to alu20; Los roles se pueden denegar con el comando REVOKE.

2.8 Listar Privilegios Otorgados La información de los privilegios otorgados se almacena en el diccionario de datos. Estos datos son accesibles a través de las siguientes vistas del diccionario de datos: Vista DBA_ROLES DBA_SYS_PRIVS DBA_TAB_PRIVS DBA_COL_PRIVS ROLE_SYS_PRIVS ROLE_TAB_PRIVS Auditando Acciones Se puede auditar cualquier acción que afecte a cualquier objeto de la BD. Para facilitar la gestión, las acciones a auditar se encuentran agrupadas según los grupos que se muestran en la siguiente tabla: Grupo CLUSTER DATABASE LINK EXISTS INDEX NOT EXISTS PROCEDURE PROFILE PUBLIC DATABASE LINK PUBLIC SINONYM Comandos Auditados Todas las sentencias que afecten a clusters. Todas las sentencias que afecten a enlaces de BD. Todas las sentencias que fallen porque ya existe un objeto en la BD. Todas las sentencias que afecten a índices. Todas las sentencias que fallen porque un determinado objeto no existe. Todas las sentencias que afecten a procedimientos. Todas las sentencias que afecten a perfiles. Todas las sentencias que afecten a enlaces públicos de BD. Todas las sentencias que afecten a sinónimos públicos. Contenidos Nombres de los roles y su estado del password. Usuarios a los que han sido otorgados privilegios del sistema. Usuarios a los que han sido otorgados privilegios sobre objetos. Usuarios a los que han sido otorgados privilegios sobre columnas de tablas. Privilegios de sistema que han sido otorgados a roles. Privilegios de tabla que han sido otorgados a roles.

DBA_ROLES_PRIVS Usuarios a los que han sido otorgados roles.

ROLE_ROLE_PRIVS Roles que han sido otorgados a otros roles.

ROLE ROLLBACK SEGMENT SEQUENCE SESSION SYNONYM SYSTEM AUDIT SYSTEM GRANT TABLE TABLESPACE TRIGGER USER VIEW
Concepto Significado

Todas las sentencias que afecten a roles. Todas las sentencias que afecten a segmentos de rollback. Todas las sentencias que afecten a secuencias. Todas las sentencias de acceso a la BD. Todas las sentencias que afecten a sinónimos. Todas las sentencias AUDIT y NOAUDIT. Todas las sentencias afecten a privilegios. Todas las sentencias que afecten a tablas. Todas las sentencias que afecten a espacios de tablas. Todas las sentencias que afecten a disparadores. Todas las sentencias que afecten a las cuentas de usuarios. Todas las sentencias que afecten a vistas.

Conceptos de gestión de privilegios y recursos Privilegio Permiso para realizar una acción, asignable a un usuario o un rol Rol Usuario Perfil Recurso CONNECT RESOURCE DBA EXP_FULL_DATABASE IMP_FULL_DATABASE DELETE_CATALOG_ROLE EXECUTE_CATALOG_ROLE SELECT_CATALOG_ROLE Recursos en Oracle (select * from user_resource_limits;) COMPOSITE_LIMIT SESSIONS_PER_USER CPU_PER_SESSION Conjunto de privilegios, asignables a un usuario o un rol Colección de objetos y privilegios identificado con un nombre y password Conjunto de restricciones relativas al uso de recursos, y asignable a usuarios. Un usuario sólo puede tener un perfil Uso susceptible de ser restringido, asignable a un perfil

Roles Predefinidos por Oracle (select * from dba_roles;)

CPU_PER_CALL LOGICAL_READS_PER_SESSION LOGICAL_READS_PER_CALL IDLE_TIME CONNECT_TIME PRIVATE_SGA Limites en uso del espacio en disco (select * from dba_ts_quotas;) ALTER USER SCOTT QUOTA UNLIMITED ON USER_DATA; ALTER USER SCOTT QUOTA 5M ON TEMPORARY_DATA; ALTER USER SCOTT QUOTA 0 ON SYSTEM; Para la gestión de Privilegios Roles se utilizan los comandos GRANT (conceder un privilegio a un usuario o a un rol) REVOKE (denegar un privilegio a un usuario o a un rol) CREATE ROLE (crear) ALTER ROLE (modificar) DROP ROLE (borrar) SET ROLE (activar, desactivar) GRANT (conceder un permiso o un rol a un rol) REVOKE (denegar un permiso o un rol a un rol) CREATE USER (crear) ALTER USER (modificar) DROP USER (borrar) GRANT (conceder un permiso o un rol a un usuario) REVOKE (denegar un permiso o un rol a un usuario) CREATE PROFILE (crear) ALTER PROFILE (modificar) DROP PROFILE (borrar) ALTER USER ... PROFILE (asignar a un usuario) CREATE USER ... PROFILE (asignar a un usuario) Acción RESOURCE_LIMIT = TRUE en c:\orant\database\initorcl.ora ALTER SYSTEM SET RESOURCE_LIMIT = TRUE;

Usuarios

Perfiles y Recursos

Activación de perfiles Estado de la Base de Datos Base de Datos Parada Base de Datos Arrancada Vistas más relevantes Significado Usuarios Roles Roles asignados a roles o usuarios Privilegios asignados a roles o usuarios Permisos sobre tablas asignados a roles o usuarios Roles asignados a roles

Privilegios de cada rol Límites de recursos Perfiles y sus límites de recursos asociados Límites de recursos en cuanto a restricciones en claves Límites de recursos en cuanto a espacio máximo en tablespaces

INFOGRAFIA • http://www.techonthenet.com • http://www.infor.uva.es/~jvegas/cursos/bd/oraseg/oraseg.html • http://www.redcientifica.com/oracle/c0004p0004.html

Sign up to vote on this title
UsefulNot useful