You are on page 1of 9

Curso de Administracin de Base de Datos (ORACLE)

TEMA 5
EJERCICIOS
PRCTICOS
(Esquemas)

2011

Curso de Administracin de Base de Datos (ORACLE)

2011

1 Crear un usuario en el Tablespace de Datos propio y en el


Tablespace temporal propio.
CREATE USER nombre_usuario
IDENTIFIED BY password
DEFAULT TABLESPACE nombre_ts
TEMPORARY TABLESPACE nombreTMP_ts;

2 Conectarse a la Base de Datos con el usuario propio creado


CONNECT nombre_usuario/password@BasedeDAtos
No se puede conectar no tiene permisos.

3 Buscamos el usuario en el Diccionario de datos.


Buscamos primero la vista del Diccionario de Datos donde se encuentra la informacin
de los usuarios.
SELECT TABLE_NAME
FROM DBA_CATALOG
WHERE TABLE_NAME LIKE 'V$%USER%'
OR TABLE_NAME LIKE 'DBA%USER%';
Buscamos los campos de la vista que nos interesan
DESC DBA_USERS
Obtenemos la informacin que buscamos
SELECT *
FROM DBA_USERS
WHERE USERNAME =nombre_usuario;

4 Expirar la password del usuario e intentar conectarse


ALTER USER nombre_usuario
PASSWORD EXPIRE;

Nos intentamos conectar:


CONNECT nombre_usuario/password@BasedeDAtos

Curso de Administracin de Base de Datos (ORACLE)

2011

Nos informa de que la password ha expirado y nos pide que la introduzcamos una
nueva. Al hacerlo intenta conectarse a la Base de Datos y nos dice que no tenemos
permiso para hacerlo.

5 Dar al usuario creado 100k de cuota en el tablespace de datos


del compaero
ALTER USER nombre_usuario
QUOTA 100K ON nombrecompaero_ts;

6 Dar al usuario creado 100k de cuota en el tablespace de datos


del compaero
ALTER USER nombre_usuario
QUOTA 100K ON nombrecompaero_ts;

7 Dar al usuario creado cuota ilimitada en el tablespace creado


en el tema anterior.
ALTER USER nombre_usuario
QUOTA UNLIMITED ON nombre_ts;

8 Obtener las cuotas de nuestro usuario en cada tablespace y el


espacio usado en cada uno de ellos
Buscamos primero la vista del Diccionario de Datos donde se encuentra la informacin
de las QUOTAS.
SELECT TABLE_NAME
FROM DBA_CATALOG
WHERE TABLE_NAME LIKE 'V$%QUOTA%'
OR TABLE_NAME LIKE 'DBA%QUOTA%';
Buscamos los campos de la vista que nos interesan
DESC DBA_TS_QUOTAS
Obtenemos la informacin que buscamos
SELECT TABLESPACE_NAME,USERNAME, BYTES, MAX_BYTES
FROM DBA_TS_QUOTAS
WHERE USERNAME =nombre_usuario;

Curso de Administracin de Base de Datos (ORACLE)

2011

9 Borrar el usuario
DROP USER nombre_usuario

10 Crear el usuario desde Enterprise Manager con las condiciones


anteriores.
11 Crear un perfil con un mximo de dos sesiones por usuario,
tiempo de conexin ilimitado y el mximo nmero de intentos
de conexin antes de bloquear el usuario en 3.
CREATE PROFILE nombre_perfil LIMIT
SESSIONS_PER_USER 2
CONNECT _TIME UNLIMITED
FAILED_LOGIN_ATTEMPTS 3

12 Dar al usuario el perfil que se acaba de crear.


ALTER USER nombre_usuario
PROFILE nombre_perfil;

13 Buscar los perfiles del usuario y los lmites de los mismos en el


diccionario de datos.
Buscamos primero la vista del Diccionario de Datos donde se encuentra la informacin
de los Perfiles.
SELECT TABLE_NAME
FROM DBA_CATALOG
WHERE TABLE_NAME LIKE 'V$%PROFILE%'
OR TABLE_NAME LIKE 'DBA%PROFILE%';
Buscamos los campos de la vista que nos interesan
DESC DBA_PROFILES
Obtenemos la informacin que buscamos
SELECT RESOURCE_NAME,RESOURCE_TYPE,LIMIT
FROM DBA_PROFILES
WHERE PROFILE =nombre_perfil;

Curso de Administracin de Base de Datos (ORACLE)

2011

14 Modificar el perfil para que el tiempo de vida de la password


sea de 10 das y en nmero de intentos antes de bloquearlo
sea de 4.
ALTER PROFILE nombre_perfil LIMIT
PASSWORD_LIFE_TIME 10
FAILED_LOGGIN_ATTEMPTS 4;

15 Comprobar el cambio en el Diccionario de datos y el


Enterprise Manager.
Buscamos primero la vista del Diccionario de Datos donde se encuentra la informacin
de los Perfiles.
SELECT TABLE_NAME
FROM DBA_CATALOG
WHERE TABLE_NAME LIKE 'V$%PROFILE%'
OR TABLE_NAME LIKE 'DBA%PROFILE%';
Buscamos los campos de la vista que nos interesan
DESC DBA_PROFILES
Obtenemos la informacin que buscamos
SELECT RESOURCE_NAME,RESOURCE_TYPE,LIMIT
FROM DBA_PROFILES
WHERE PROFILE =nombre_perfil;

16 Probar a conectarse con password incorrecta 4 veces para


bloquear el usuario y desbloquearlo.
ALTER USER nombre_usuario
ACCOUNT UNLOCK;

17 Dar al usuario creado el permiso de CONNECT y probar a


conectarse.
GRANT CONNECT TO nombre_usuario
CONNECT nombre_usuario/password@BasedeDAtos
Nos informa de que la conexin se ha realizado correctamente

Curso de Administracin de Base de Datos (ORACLE)

2011

18 Obtener los roles de nuestro usuario del Diccionarios de Datos


Buscamos primero la vista del Diccionario de Datos donde se encuentra la informacin
de los ROLES.
SELECT TABLE_NAME
FROM DBA_CATALOG
WHERE TABLE_NAME LIKE 'V$%ROLE%'
OR TABLE_NAME LIKE 'DBA%ROLE%';
Buscamos los campos de la vista que nos interesan
DESC DBA_ROLE_PRIVS
Obtenemos la informacin que buscamos
SELECT GRANTEE, GRANTED_ROLE
FROM DBA_ROLE_PRIVS
WHERE GRANTEE =nombre_usuario;

19 Crear un role llamado nombre_r


CREATE ROLE nombre_r;

Asignarle al role el permiso de SELECT sobre la tabla


PRUEBAS, del usuario ANGEL
GRANT SELECT ON angel.pruebas TO nombre_r;

Consultar los datos de la tabla pruebas


SELECT * FROM pruebas
Nos dice que la tabla o vista no Existe, es debido a que no hemos colocado el
identificador del esquema al que pertenece antes del nombre de la tabla.
SELECT * FROM angel.pruebas

Insertar una fila en la tabla pruebas


INSERT INTO angel.pruebas(campo1,campo2)
VALUES (valor1,valor2);
Nos dice que no tenemos permisos para insertar datos en esta tabla.

Buscar en el Diccionario de datos los privilegios que tenemos


sobre esa tabla.

Curso de Administracin de Base de Datos (ORACLE)

2011

Buscamos primero la vista del Diccionario de Datos donde se encuentra la informacin


de los privilegios de las tablas.
SELECT TABLE_NAME
FROM DBA_CATALOG
WHERE TABLE_NAME LIKE 'V$%TAB%PRIV%'
OR TABLE_NAME LIKE 'DBA%TAB%PRIV%';
Buscamos los campos de la vista que nos interesan
DESC DBA_TAB_PRIVS
Obtenemos la informacin que buscamos
SELECT GRANTEE, PRIVILEGE
FROM DBA_TAB_PRIVS
WHERE OWNER=ANGEL
AND TABLE_NAME=PRUEBAS;

Asignarle al role los permisos de ISERT, UPDATE y DELETE


sobre la tabla PRUEBAS, del usuario ANGEL
GRANT INSERT,UPDATE,DELETE ON angel.pruebas TO nombre_r;

20 Obtener los privilegios del sistema, del Diccionarios de Datos


Buscamos primero la vista del Diccionario de Datos donde se encuentra la informacin
de los PRIVILEGIOS DEL SISTEMA.
SELECT TABLE_NAME
FROM DBA_CATALOG
WHERE TABLE_NAME LIKE 'V$%SYS%PRIV%'
OR TABLE_NAME LIKE 'DBA%SYS%PRIV';
Buscamos los campos de la vista que nos interesan
DESC DBA_SYS_PRIVS
Obtenemos la informacin que buscamos
SELECT GRANTEE, PRIVILEGE
FROM DBA_SYS_PRIVS;

21 Darle el permiso para crear tablas al role


GRANT CREATE TABLE TO nombre_r;

Curso de Administracin de Base de Datos (ORACLE)

2011

22 Quitar el role CONNECT al usuario y probar a conectarse


REVOKE CONNECT FROM nombre_usuario;
Probamos a conectarnos y nos dar un error Oracle de que el usuario no tiene el
permiso de CREATE SESSION
CONNECT nombre_usuario/password@cadena_conexion

Dar permisos a al usuario directamente para conectarse, sin


utilizar el role CONNECT.
GRANT CREATE SESSION TO nombre_usuario;

23 Obtener los privilegios de nuestro usuario en el Diccionario de


Datos
Tendremos que buscar primero los ROLES, PRIVILEGIOS DEL SISTEMA y PRIVILEGIOS
SOBRE OBJETOS, de mi usuario y posteriormente por cada uno de los roles que tenga
hacer lo mismo recursivamente hasta obtener todos los privilegios que tiene mi usuario
bien directamente o bien a travs roles.

Buscamos primero la vista del Diccionario de Datos donde se encuentra la


informacin de los ROLES.

SELECT TABLE_NAME
FROM DBA_CATALOG
WHERE TABLE_NAME LIKE 'V$%ROLE%PRIV%'
OR TABLE_NAME LIKE 'DBA%ROLE%PRIV';
Buscamos los campos de la vista que nos interesan
DESC DBA_ROLE_PRIVS
Obtenemos la informacin que buscamos
SELECT GRANTEE, GRANTED_ROLE
FROM DBA_ROLE_PRIVS
WHERE GRANTEE=nombre_usuario;

Buscamos primero la vista del Diccionario de Datos donde se encuentra la


informacin de los PRIVILEGIOS DEL SISTEMA.

SELECT TABLE_NAME
FROM DBA_CATALOG
WHERE TABLE_NAME LIKE 'V$%SYS%PRIV%'
OR TABLE_NAME LIKE 'DBA%SYS%PRIV';

Curso de Administracin de Base de Datos (ORACLE)

2011

Buscamos los campos de la vista que nos interesan


DESC DBA_SYS_PRIVS
Obtenemos la informacin que buscamos
SELECT GRANTEE, PRIVILEGE
FROM DBA_SYS_PRIVS
WHERE GRANTEE=nombre_usuario;

Buscamos primero la vista del Diccionario de Datos donde se encuentra la


informacin de los PRIVILEGIOS DEL SISTEMA.

SELECT TABLE_NAME
FROM DBA_CATALOG
WHERE TABLE_NAME LIKE 'V$%TAB%PRIV%'
OR TABLE_NAME LIKE 'DBA%TAB%PRIV';
Buscamos los campos de la vista que nos interesan
DESC DBA_TAB_PRIVS
Obtenemos la informacin que buscamos
SELECT GRANTEE,OWNER,TABLE_NAME, PRIVILEGE
FROM DBA_TAB_PRIVS
WHERE GRANTEE=nombre_usuario;
Ahora habra que hacer lo mismo con los ROLES, que hayamos obtenido en la primera
consulta, sustituyendo en las consultas la clausula WHERE, GRANTEE=nombre_usuario
GRANTEE=nombre_role
As mismo, si lo hiciramos desde el propio usuario, no podramos hacerlo desde las
tablas DBA_ sino que tendramos que hacerlo desde las USER_ que nos dan esos datos
ya filtrados para nuestro usuario.

24 Borrar el role y volverlo a crear en Enterprise Manager.


DROP ROLE nombre_r;

You might also like