0% encontró este documento útil (0 votos)
393 vistas29 páginas

AdministracionBD Ejercicios

Este documento describe los conceptos de usuarios, perfiles, privilegios y roles en una base de datos Oracle. Explica cómo crear usuarios y asignarles privilegios y roles para controlar su acceso. También detalla la creación de tablespaces y tablespaces temporales para alojar los datos de los usuarios.
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como DOCX, PDF, TXT o lee en línea desde Scribd
0% encontró este documento útil (0 votos)
393 vistas29 páginas

AdministracionBD Ejercicios

Este documento describe los conceptos de usuarios, perfiles, privilegios y roles en una base de datos Oracle. Explica cómo crear usuarios y asignarles privilegios y roles para controlar su acceso. También detalla la creación de tablespaces y tablespaces temporales para alojar los datos de los usuarios.
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como DOCX, PDF, TXT o lee en línea desde Scribd
Está en la página 1/ 29

USUARIOS, PERFILES, PRIVILEGIOS Y ROLES.

1. Buscar en la documentación en línea y en bd el contenido de las vistas:

• dba_profiles: Describe dba_profiles;


Nos indica todos los perfiles existentes y sus limitaciones (privilegios)
• dba_roles: Enumera todos los roles que existen en la base de datos.
• dba_users: Describe a todos los usuarios de la base de datos
• dba_role_privs: Describe los roles otorgados a todos los usuarios y roles en la base de datos.

• dba_tab_privs: Describe las concesiones de objetos para las cuales el usuario actual es el propietario, otorgante o
concesionario del objeto.
• dba_sys_privs: Describe los privilegios del sistema otorgados a usuarios y roles.

2. Conectarse como usuario SYSTEM a la base y crear un usuario llamado “administrador”autentificadoporlabasededatos.Indicar


como"tablespace"por defectoUSERS y como "tablespace" temporal TEMP;asignaruna cuotade 500Ken el "tablespace" USERS.

CONNECT
User-name:system Password: Marco.199722

CREATE USER ADMINISTRADOR IDENTIFIED BY ADMIN DEFAULT TABLESPACE USERS


TEMPORARY TABLESPACE TEMP QUOTA 500K
ON USERS;

3. Abrir una sesión sqlplus e intentar conectarse como usuario “administrador” ¿qué sucede?
¿por qué?

CONNECT
User-name: ADMINISTRADOR Password: ADMIN

Respuesta: No se logra conectar debido a que el usuario ADMINISTRADOR no tiene privilegio de SESSION

4. Averiguar qué privilegios de sistema, rolesy privilegios sobreobjetostiene concedidos el usuario “administrador”.
ROLES
-select * from dba_role_privs where grantee=’ADMINISTRADOR’;

Respuesta: “No rows selected” ya que no se le asignó roles al usuario ADMINISTRADOR.

PRIVILEGIOS SOBRE OBJETOS

1
-select * from dba_tab_privs where grantee=’ADMINISTRADOR’;

Respuesta: “No rows selected” ya que no se asignó privilegios sobre objetos al usuario ADMINISTRADOR.
PRIVILEGIOS DE SISTEMA
-select * from dba_sys_privs where grantee=’ADMINISTRADOR’;

Rrespuesta: “No rows selected” ya que no se asignó privilegios de sistema al usuario ADMINISTRADOR.

5. Otorgarel privilegio “CREATESESSION”al usuario“administrador” eintentardenuevola conexión sqlplus.

GRANT CREATE SESSION TO ADMINISTRADOR;

CONNECT ADMINISTRADOR; PASSWORD: ADMIN

Respuesta: Se logra conectar debido a que el usuario ADMINISTRADOR tiene privilegio de SESSION.

6. Conectarse como usuario “administrador” y crear un usuario llamado


“prueba00” que tenga como "tablespace" por defecto USERS y como "tablespace" temporal TEMP; asignar una cuota de 0K en el
"tablespace" USERS. ¿Es possible hacerlo?

CONNECT ADMINISTRADOR; PASSWORD: ADMIN

CREATE USER prueba00 IDENTIFIED BY prueba00 DEFAULT TABLESPACE USERS


TEMPORARY TABLESPACE TEMP QUOTA 0K
ON USERS;

Respuesta: No es posible debido a que el usuario ADMINISTRADOR no tiene privilegios de CREATE USER.

7. Conectado como usuario SYSTEM, otorgar el privilegio “create user” alusuario “administrador” y repetir el ejercicio anterior.
CONNECT system; PASSWORD: Marco.199722

GRANT CREATE USER TO ADMINISTRADOR; DISCONNECT;

CONNECT ADMINISTRADOR;

CREATE USER prueba00 IDENTIFIED BY prueba00 DEFAULT TABLESPACE USERS

2
TEMPORARY TABLESPACE TEMP QUOTA 0K
ON USERS;

Resultado: Es posible debido a que el usuario ADMINISTRADOR tiene privilegios de CREATE USER.

8. Averiguarqué usuariosdelabasededatos tienen asignadoel privilegio“create user”de forma directa, ¿qué vista debe ser consultada?.
CONNECT system;
PASSWORD: Marco.199722

-select * from dba_sys_privs where privilege=’CREATE USER’;

9. Hacer lo mismo para el privilegio “create session”.

CONNECT system;
PASSWORD: Marco.199722
-select * from dba_sys_privs where privilege=’CREATE SESSION’;

10. Crear dos "tablespace" llamados NOMINA y ACADEMO, que contendrán datos relativos a las aplicaciones de nómina y datos académicos de los
empleadosdeunaempresa,según las siguientes características:

ACADEMO NOMINA

Tamaño inicial 1M 1M

Autoextensible SI SI

Extensión 200K 100K

Tamaño máximo 1400K 1500K

3
Parámetros almacenamiento Initial 16K 16K

Next 16K 16K

Minextents 1 1

Maxextents 3 3

Localización /u02/oradata/<bd> /u02/oradata/<bd>

Consulte la ayuda en línea si no recuerda la sintaxis exacta de la sentencia.

CREATE TABLESPACE ACADEMO DATAFILE


‘C:\Users\jhofr\Desktop\octavo\academo.dbf’ SIZE 1M AUTOEXTEND ON NEXT 200K
MAXSIZE 1400K DEFAULT STORAGE(INITIAL 16K NEXT 16K MINEXTENTS 1 MAXEXTENTS
3);

CREATE TABLESPACE NOMINA


DATAFILE ‘C:\Users\jhofr\Desktop\octavo\nomina.dbf’ SIZE 1M AUTOEXTEND ON NEXT 100K MAXSIZE
1500K
DEFAULT STORAGE(INITIAL 16K NEXT 16K MINEXTENTS 1 MAXEXTENTS 3);

11. Crear dos "tablespace" temporales, manejados deforma local, llamados TEMP_NOMINA y TEMP_ACADEMO con las siguientes características:

TEMP_ACADEMO TEMP_NOMINA

Tamaño inicial 500K 600K

Autoextensible SI SI

Extensión 50K 50K

Tamaño máximo 600K 700K

Localización /u04/oradata/<bd> /u04/oradata/<bd>

CREATE TEMPORARY TABLESPACE TEMP_NOMINA


TEMPFILE ‘C:\Users\jhofr\Desktop\octavo\temp_nomina.dbf’ SIZE 600K AUTOEXTEND ON NEXT 50K MAXSIZE 700K

EXTENT MANAGEMENT LOCAL UNIFORM SIZE 100K;


CREATE TEMPORARY TABLESPACE TEMP_ACADEMO
TEMPFILE ‘C:\Users\jhofr\Desktop\octavo\temp_academo.dbf’ SIZE 500K AUTOEXTEND ON NEXT 50K MAXSIZE 600K
EXTENT MANAGEMENT LOCAL UNIFORM SIZE 100K;

12. Estando conectado como usuario “administrador” probar a crear un rol llamado “administrador”, ¿qué ocurre?
CONNECT ADMINISTRADOR; PASSWORD: ADMIN

CREATE ROLE ADMINISTRADOR;

4
Respuesta: No se puede crear el rol ADMINISTRADOR porque el usuario no posee los privilegios suficientes

13. Idemestandoconectadocomo usuarioSYSTEM, ¿quésucede?, ¿porqué?

CONNECT system; PASSWORD: Marco.199722


CREATE ROLE ADMINISTRADOR;

Respuesta: No se puede crear el rol ADMINISTRADOR porque existe un usuario con el mismo nombre.

14. Comprobar en el diccionario de datos los usuarios o roles que poseen el privilegio “CREATE ROLE”.
-select * from dba_sys_privs where privilege=’CREATE ROLE’;

15. Crearunrolllamado“ADMIN1”,asignarlelosprivilegios“créatesession”,“createuser” y “CREATE ROLE”. Asignarlo al usuario administrador.


CREATE ROLE ADMIN1;

GRANT CREATE SESSION TO ADMIN1; GRANT CREATE USER TO


ADMIN1;
GRANT CREATE ROLE TO ADMIN1;

GRANT ADMIN1 TO ADMINISTRADOR;

5
16. Consultar los privilegios de sistema que tiene asignados de forma directa el usuario “administrador”, revocarlos y asignarle el rol
“admin1.”.
- select * from dba_sys_privs where grantee=’ADMINISTRADOR’;

REVOKE CREATE SESSION FROM ADMINISTRADOR; REVOKE CREATE USER FROM


ADMINISTRADOR; REVOKE CREATE ROLE FROM ADMINISTRADOR;

GRANT ADMIN1 TO ADMINISTRADOR;

17. Crear,conectado comoSYSTEM, unusuariollamado “prueba01”autenticado porbasede datos al que no se le asigne "tablespace" por defecto ni
temporal.
CONNECT system; PASSWORD: Marco.199722
CREATE USER prueba01 IDENTIFIED BY prueba01;

18. Consultar en las vistas correspondientes los "tablespaces" y la quota en cada uno de ellos que tiene los usuarios SYS, SYSTEM, “administrador”,
“prueba00”y“prueba01”.¿Quéha ocurrido con el usuario “prueba01”?.

-select substr(username,1,15) usuario, DEFAULT_TABLESPACE,TEMPORARY_TABLESPACE from dba_users where username


in(‘SYS’,’SYSTEM’,’ADMINISTRADOR’,’PRUEBA00’,’PRUEBA01’);

-select substr(username,1,15) usuario, tablespace_name, max_bytes from dba_ts_quotas where username


in(‘SYS’,’SYSTEM’,’ADMINISTRADOR’,’PRUEBA00’,’PRUEBA01’);

6
19. Crear un usuario llamado “prueba02” autenticado por base de datos, asignando como "tablespace" por defecto NOMINA y como "tablespace"
temporal TEMP_NOMINA (nose le asignara cuota en NOMINA).
CREATE USER prueba02 IDENTIFIED BY prueba02 DEFAULT TABLESPACE
NOMINA

TEMPORARY TABLESPACE TEMP_NOMINA;

20. Asignar al usuario “prueba01” los "tablespace" ACADEMO y TEMP_ACADEMO como "tablespace" de trabajoy temporal respectivamente (sin
especificar cuota).
ALTER USER prueba01 DEFAULT TABLESPACE ACADEMO;

ALTER USER prueba01 TEMPORARY TABLESPACE TEMP_ACADEMO;

21. Consultar en las vistas correspondientes los "tablespace" y la cuota en cada uno de ellos que tiene los usuarios “prueba01” y “prueba02”.
-select * from dba_ts_quotas where username in (‘PRUEBA01’,’PRUEBA02’);

Respuesta: No existe filas seleccionadas debido a que no encuentra asignado el tamaño del tablespace.

22. Crearunrolllamado“CONEXIÓN”y asignarleel permiso“CREATESESSION”.


CREATE ROLE CONEXION;
GRANT CREATE SESSION TO CONEXION;

23. Asignarelrol“CONEXIÓN” alos usuarios “prueba00”, “prueba01” y“prueba02”.


GRANT CONEXION TO prueba00,prueba01,prueba02;

7
24. Comprobar en la vista correspondiente cuales son los roles asignados a los usuarios “prueba00”, “prueba01” y“prueba02”.
-select * from dba_role_privs where grantee in (‘PRUEBA00’,’PRUEBA01’,’PRUEBA02’);

25. Conectarse como usuario “prueba01” y crear la tabla siguiente en el "tablespace"


ACADEMO:

CREATE TABLE CODIGOS

(CODIGO varchar2(3),

DESCRIPCION varchar2(20))

TABLESPACE ACADEMO STORAGE

(INITIAL 64K

NEXT 64K

MINEXTENTS 5

MAXEXTENTS 10);

¿Es posible hacerlo?, ¿falta algún permiso?.

CONNECT prueba01;
PASSWORD prueba01;

Respuesta: No se puede crear la table códigos debido que no tiene los suficientes privilegios

26.
Crear un rol llamado “DESARROLLO” y asignarle los permisos "CREATE SEQUENCE","CREATESESSION","CREATESYNONYM","CREATETABLE"y
"CREATEVIEW". Asignarelrol“DESARROLLO”alosusuarios“prueba00”,“prueba01”y“prueba02”.
CONNECT: system
8
PASSWORD: Marco.1997722
CREATE ROLE DESARROLLO;
GRANT CREATE SEQUENCE, CREATE SESSION, CREATE SYNONYM, CREATE TABLE, CREATE VIEW TO DESARROLLO;
GRANT DESARROLLO TO prueba00, prueba01, prueba02;

27. Volver a conectarse como usuario “prueba01” y crear la tabla anterior en el "tablespace" ACADEMO.

CONNECT prueba01; PASSWORD prueba01;


CREATE TABLE CODIGOS

(CODIGO varchar2(3), DESCRIPCION


varchar2(20))

TABLESPACE ACADEMO STORAGE (INITIAL 64K

NEXT 64K MINEXTENTS 5

MAXEXTENTS 10);

Respuesta: No se puede crear ya que no está asignado un espacio al tablespace ACADEMO.

28. Asignar cuota ilimitada al usuario “prueba01” en el "tablespace" ACADEMO. Volvera repetir el ejercicio26.
CONNECT system;
PASSWORD: Marco.199722

ALTER USER prueba01 QUOTA UNLIMITED ON ACADEMO;

CONNECT prueba01; PASSWORD prueba01;

CREATE TABLE CODIGOS

(CODIGO varchar2(3), DESCRIPCION


varchar2(20))

TABLESPACE ACADEMO STORAGE (INITIAL 64K

NEXT 64K MINEXTENTS 5

9
MAXEXTENTS 10);

29. Asignar cuotailimitada al usuario“prueba02” en el"tablespace" NOMINA. CONNECT system;


PASSWORD: Marco.199722
ALTER USER prueba02 QUOTA UNLIMITED ON NOMINA;

30. Obtener información sobre roles, privilegios de sistema, "tablespace" y cuotas para los usuarios “prueba00”, “prueba01” y “prueba02”.
-select * from dba_role_privs where grantee in (‘PRUEBA00’,’PRUEBA01’,’PRUEBA02’);

-select * from dba_sys_privs where grantee in (‘PRUEBA00’,’PRUEBA01’,’PRUEBA02’);

-select USERNAME, TABLESPACE_NAME,BYTES from dba_ts_quotas where username in (‘PRUEBA00’,’PRUEBA01’,’PRUEBA02’);

31. Asignarcuotaceroenel"tablespace"pordefectoparaelusuario“prueba01”, ¿siguen estandosusobjetos?, ¿esposiblecrear algún otro?


(probadacrearuna tabla).

CONNECT system;
PASSWORD: Marco.199722
ALTER USER prueba01 QUOTA 0K ON ACADEMO;

10
-select owner, table_name from dba_tables where owner=’PRUEBA01’;

CONNECT prueba01; PASSWORD: prueba01

CREATE TABLE CODIGOS2

(CODIGO varchar2(3), DESCRIPCION


varchar2(20))

TABLESPACE ACADEMO STORAGE (INITIAL 64K

NEXT 64K MINEXTENTS 5

MAXEXTENTS 10);

Respuesta: Se encuentra los objetos creados con anterioridad, pero para la creación a futurode tablas no excede el espacio del tablespace

32. Conectarse como usuario “prueba01” e intentar modificar su cuota en el "tablespace" ACADEMO, ¿esposible?
CONNECT prueba01; PASSWORD: prueba01
ALTER USER prueba01 QUOTA UNLIMITED ON ACADEMO;

Respuesta: No se puede modificar el quota debido a que el usuario prueba01 no tiene los privilegios suficientes

33. Conectarse como usuario “prueba01” y modificar su clave, ¿es posible?

CONNECT prueba01; PASSWORD: prueba01


ALTER USER prueba01 IDENTIFIED BY prueba;

Respuesta: Si es posible cambiar su propia clave

34. Averiguarque usuarios o roles de base de datos tienen asignado el privilegio ALTERUSER. CONNECT system;
PASSWORD: Marco.199722
-select * from dba_sys_privs where privilege=’ALTER USER’;

11
35.Abrirunasesiónconelusuario“administrador”y otra conelusuario“prueba02”.Siendo el usuario “administrador”, intentar borrar el usuario
“prueba02”.
CONNECT ADMINISTRADOR; PASSWORD: ADMIN
DROP USER prueba02;

Respuesta: no se puede borrar un usuario conectado

36. Asignar el permiso DROP USER al rol ADMIN1.


CONNECT system; PASSWORD: Marco.199722
GRANT DROP USER TO ADMIN1;

37. Averiguarquéusuariosorolesdebase de datostienenasignadoelprivilegioDROP USER.


-select * from dba_sys_privs where privilege=’DROP USER’;

38. Conectado como usuario "administrador", crear el usuario “prueba03” autentificado por base de datos y asignando cuotas en el "tablespace"
ACADEMO(500K) y NOMINA (200K). Su "tablespace" temporal será TEMP.
CONNECT ADMINISTRADOR; PASSWORD: ADMIN
CREATE USER prueba03 IDENTIFIED BY prueba03 DEFAULT TABLESPACE ACADEMO
TEMPORARY TABLESPACE TEMP QUOTA 500K ON
ACADEMO QUOTA 200K ON NOMINA;

39. Comprobaren el fichero deinicializaciónsiestáactivadoelmododelimitaciónderecursos.

Editar con el editor vi, por ejemplo, el fichero de inicializacion. o


show paremeter //tots els paràmetres show
paremeter resource_limit

40. Averiguarque usuarios de base de datos o que roles tienenasignadoel privilegio“CREATE PROFILE”.
-select * from dba_sys_privs where privilege=’CREATE PROFILE’;

12
41. Asignar el permiso “CREATE PROFILE” al rol ADMIN. GRANT CREATE PROFILE TO

ADMIN1;

42. Averiguarqueperfilesestándefinidosenlabasededatosyquelímitesderecursosfija cada uno de ellos.


select substr(profile,1,12) perfil, substr(resource_name,1,25) recurso, resource_type, substr(limit,1,10) limite from dba_profiles
order by profile, resource_name;

43. Consultar que perfiles tiene asignados cada usuario de la base dedatos.

-select username, profile from dba_users order by username;

44. Crearunperfilllamado“DESARROLLO”conlassiguientesespecificaciones:
Sessions_per_user 2

Cpu_per_session unlimited

Cpu_per_call 6000

Connect_time 480

Idle_time 2

Failed_login_attempts 2

Password_life_time 120

13
-create profile DESARROLLO limit sessions_per_user 2 cpu_per_session unlimited cpu_per_call 6000 connect_time 480 idle_time 2
failed_login_attempts 2
password_life_time 120;

45. Asignarelperfilanterior alos usuarios “prueba00”, “prueba01”, “prueba02” y“prueba03”.

ALTER USER prueba00 profile DESARROLLO; ALTER USER prueba01


profile DESARROLLO; ALTER USER prueba02 profile DESARROLLO; ALTER
USER prueba03 profile DESARROLLO;

46. Intentar laconexióndos veces comousuario“prueba01” fallando la contraseña, ¿qué sucede? Comprobar si la cuenta ha sido bloqueada en
la vista de base de datos correspondiente.
Ingresar dos veces y poner mal la contraseña

- select username, lock_date from dba_users where username like 'PRUEBA%';

47. Crear un usuario “prueba04” con el parámetro “password expire”, sus "tablespace" por defecto y temporal serán USERS (cuota 0k) y TEMP.
Asignar los roles CONEXIÓN y DESARROLLO. Conectarsecomousuario“prueba04”, ¿quésucede?.

create user prueba04 identified by prueba04 default tablespace


USERS

temporary tablespace TEMP quota 0k on


USERS password expire;

14
GRANT CONEXION, DESARROLLO to prueba04;

Respuesta: La contraseña ha expirado, hay que cambiarla para poder ingresar

15
48. Bloquearlacuentadelusuario“prueba04”,¿quésucedealconectarsedenuevo?

CONNECT system;
PASSWORD: Marco.199722
ALTER USER prueba04 ACCOUNT LOCK;

CONNECT prueba004;

Respuesta: Cuenta bloqueada no permite el ingreso

49. Modificarel"tablespace"pordefectoyeltemporaldelusuario“prueba01”deforma que sean NOMINA y TEMP_NOMINA.


CONNECT system;
PASSWORD: Marco.199722
ALTER USER prueba01 DEFAULT TABLESPACE NOMINA;
ALTER USER prueba01 TEMPORARY TABLESPACE TEMP_NOMINA;

50. ComprobarcuáleselvalordelparámetroOS_AUTHENT_PREFIXenlabasededatos. Editar con vi o ejecutar la sentencia pg sobre el fichero de


parametros deinicializacion (init<SID>.ora).

51. Cambia la identificación del usuario “prueba01” de forma que sea identificado por el sistema operativo.
alter user prueba01 identified externally; set head off;

select * from dba_users where username='PRUEBA01';

52. ModificarelparámetroOS_AUTHENT_PREFIXdeformaque,enadelante,lacadenaque identifique a un usuario externo sea “” (cadena vacía).

Editar con vi o ejecutar la sentencia pg sobre el fichero de parametros de inicializacion (init<SID>.ora). Indicar:

alter system set os_authent_prefix = '' scope=spfile;

53. Desbloquear la cuenta del usuario “prueba04”.


-alter user prueba04 account unlock;

54. Modificarlos valoresdelperfilDEFAULTsegún seindica en la siguiente tabla:

16
Sessions_per_user 5

Cpu_per_session unlimited

Cpu_per_call 6000

Connect_time 480

Idle_time 60

Failed_login_attempts 3

Password_life_time 180

alter profile DEFAULT limit


sessions_per_user 5
cpu_per_session unlimited cpu_per_call 6000
connect_time 480
idle_time 60
failed_login_attempts 3
password_life_time 180;

55. Averiguar quéusuarios o roles tienen asignadoel privilegio“ALTER PROFILE”.


- select * from dba_sys_privs where privilege='ALTER PROFILE';

56. Asignar el privilegio anterior al rol ADMIN1.


GRANT ALTER PROFILE TO ADMIN1;

57. Comprobar los valores asignados al perfil “DESARROLLO”. Modificar el perfil “DESARROLLO”, desdeelusuario“administrador”, segúnla

siguientetabla:

Sessions_per_user 5

Connect_time DEFAULT

Idle_time 30

¿Qué ha sucedido con el resto de los parámetros? ¿Coincide el valor de “Connect_time” en este perfil con el que tiene en el perfil
DEFAULT?
CONNECT system;
PASSWORD: Marco.199722
select profile, substr(resource_name,1,25) nombre_recurso, substr(limit,1,20) limite from dba_profiles where profile = 'DESARROLLO';

17
alter profile DESARROLLO limit
SESSIONS_PER_USER 5 connect_time default
idle_time 30;

58. Averiguarlosprivilegiosdesistemay sobre objetos,asícomo los roles,que tiene asignados los roles por defecto “CONNECT”, “RESOURCE”, “DBA”,
“EXP_FULL_DATABASE” e “IMP_FULL_DATABASE”.
¿Consideraunabuenapolíticadeseguridadasignarelrol“CONNECT”atodoslos usuarios que precisan conectarse a la base de datos?

-select *
from dba_role_privs where grantee
in
('CONNECT','RESOURCE','DBA','EXP_FULL_DATABASE','IMP_FULL_DATABASE')
order by grantee, granted_role;

- select *
from dba_sys_privs where grantee in
('CONNECT','RESOURCE','DBA','EXP_FULL_DATABASE','IMP_FULL_DATABASE')
order by grantee,privilege;

-select grantee, table_name, privilege from dba_tab_privs


where grantee in ('CONNECT','RESOURCE','DBA','EXP_FULL_DATABASE','IMP_FULL_DATABASE')
order by grantee, table_name, privilege;

18
59. ¿Puedeasignarseelperfil“DESARROLLO”alrol“CONNECT”?.¿Yelperfil“DEFAULT”al perfil “DESARROLLO”?:
Respuesta: No se puede realizar dichas operaciones

60. Averiguarqueusuariosorolesdelabasededatostienenasignadoelprivilegio“DROP PROFILE”.

-select * from dba_sys_privs where privilege='DROP PROFILE';

61. Asignar el privilegio “DROP PROFILE” al rol “ADMIN1.”.

- grant drop profile to ADMIN1;

62. Conectarse como usuario “administrador” e intentar eliminar el perfil “DEFAULT”, ¿qué ocurre?.
CONNECT ADMINISTRADOR; PASSWORD ADMIN;
DROP PROFILE DEFAULT;
DROP PROFILE DEFAULT CASCADE;

Respuesta: No se puede borrar el perfil por defecto

19
63. Comousuario“administrador”crearelrol“SECRETO”identificadoporla contraseña “total” y asignarlo al usuario “prueba04”.

-create role SECRETO identified by total;

-grant SECRETO to prueba04;

64. Averiguar que usuarios poseen el privilegio “ALTERANYROLE” (de forma directa o a través de roles).
CONNECT system;
select * from dba_sys_privs where privilege='ALTER ANY ROLE';

65. ¿Qué valor tiene en la base de datos el parámetro MAX_ENABLED_ROLES? Modificar su valor para que, en adelante, valga 40. Comprobar
esta modificación.

- show parameters max_enabled_roles;


-alter system set max_enabled_roles = 40 scope=spfile;

66. Averiguar que usuarios poseen el privilegio “GRANTAN Y ROLE”(de forma directa o a través de roles).
-select * from dba_sys_privs where privilege='GRANT ANY ROLE';

67. Comousuario“administrador”,de asignarelrol“SECRETO”alusuario“prueba04”.


Connect system;
REVOKE SECRETO FROM prueba04;

68. Asignar el privilegio “GRANT ANY ROLE” al rol “ADMIN1.”. CONNECT system;
grant grant any role to ADMIN1;

20
69. Averiguar de nuevo que usuarios poseen el privilegio “GRANT ANY ROLE”(de forma directa o a través de roles).

-select * from dba_sys_privs where privilege='GRANT ANY ROLE';

70. Averiguar que usuarios poseen el privilegio “DROP AYROLE” (de forma directa o a través de roles).
-select * from dba_sys_privs where privilege='DROP ANY ROLE';

71. Asignar permiso de conexión al usuario "prueba03", asignar el rol “SECRETO” al mismo usuario. Conectarse como este usuario e intentar borrar
el rol.
CONNECT system;
grant CONEXION to prueba03; grant SECRETO to
prueba03;

CONNECT prueba03;
Drop role SECRETO;

Respuesta: no se puede realizar esta operación por falta de privilegios suficientes


21
72. En caso de que no lo tenga asignado, asignar el rol “CONEXION” y el rol “DESARROLLO” al usuario“prueba04”. Hacer quesolo elrol
“CONEXIÓN” esteactivocuando se conecte.

-select * from dba_role_privs where grantee=’PRUEBA04’;

-alter user prueba04 default role conexion;

73. Comprobarenlavistaapropiadadeldiccionariodedatoslosrolesactivosenlasesión.

-select * from dba_role_privs where grantee='PRUEBA04';

74. Conectadocomousuario“prueba04”,activarelrol“DESARROLLO”y comprobar de nuevo en lavista apropiada del diccionario de datos los roles
activos en la sesión.
CONNECT prueba04;
-select * from session_roles;

-set role all;


-select * from session_roles;

75. Asignar el rol "CONNECT" al usuario "ADMIN". ¿Es preciso asignarle los permisos "CREATE PROCEDURE", "CREATE PUBLIC SYNONYM", "CREATE ROLE", "CREATE
TRIGGER"?, ¿Los tiene ya asignados?

-grant connect to ADMIN;


-select * from dba_sys_privs where grantee='CONNECT';

Respuesta: ya se encuentra asignado los ciertos privilegios

22
76. Conectarse como usuario SYSTEM y otorgar al usuario "prueba02" el permiso para seleccionar datos de latabla códigos (pertenece al usuario
"prueba01").

¿Qué sucede?, ¿por qué?.


CONNECT system; Show
user;

grant select on prueba01.codigos to prueba02;

Respuesta: no se puede debido a falta de privilegios

23
77. Conectarse como usuario "prueba01" y otorgar al usuario "prueba02" el permiso para seleccionar datos de
la tabla códigos; hacerlo de forma que "prueba02" también pueda otorgar el permiso a otros usuarios
(opción ADMIN).

Connect prueba01;
-grant select on prueba01.codigos to prueba02 with grant option;

78. Conectarsecomousuario"prueba02" y otorgaral usuario "prueba03" elpermisopara seleccionar datos


de la tabla códigos.
Connect prueba02;
-grant select on prueba01.codigos to prueba03;

Connect prueba03;
-Select * from prueba03.codigos;

79.Conectarsecomousuario"prueba01"yrevocaralusuario"prueba02"elpermisopara seleccionar datos de


la tabla códigos.
Connect prueba01;
- revoke select on prueba01.codigos from prueba02;

80. Conectarse comousuario"prueba03"eintentarconsultarlatablacódigos.¿Quéocurre? ¿Por qué?


Connect prueba03;
- Select from
prueba01.codigos

Respuesta: no se puede debido a que ya se revocó los permisos al usuario2

24
CREATE TABLESPACE TS_ESCUELA2 DATAFILE -------------------------------------
'D:\tabspace\escuela2.dbf' SIZE 20M AUTOEXTEND ON;
CREATE PROFILE Perfil_Admin LIMIT
------------------------------------------------
SESSIONS_PER_USER 1
alter system set resource_limit=true;
CPU_PER_SESSION 3000
***************
CONNECT_TIME 10
Usuario
IDLE_TIME 2
***************
LOGICAL_READS_PER_SESSION 1000
CREATE USER usuario_admin IDENTIFIED BY sbix04w
PRIVATE_SGA 15K
DEFAULT TABLESPACE Practica
FAILED_LOGIN_ATTEMPTS 5
QUOTA 5M ON Practica
PASSWORD_LIFE_TIME 30
TEMPORARY TABLESPACE temp
PASSWORD_REUSE_TIME 60
PASSWORD EXPIRE
PASSWORD_REUSE_MAX 5
ACCOUNT UNLOCK;
PASSWORD_LOCK_TIME 1/24;
CREATE USER usuario_profesor IDENTIFIED BY sbix04w
----------------------------------------
DEFAULT TABLESPACE Practica
CREATE PROFILE Perfil_Estudiante LIMIT
QUOTA 5M ON Practica
SESSIONS_PER_USER DEFAULT
TEMPORARY TABLESPACE temp
CPU_PER_SESSION 3000
ACCOUNT UNLOCK;
CONNECT_TIME 2
CREATE USER usuario_alumno IDENTIFIED BY sbix04w
IDLE_TIME 2
DEFAULT TABLESPACE Practica
LOGICAL_READS_PER_SESSION 1000
QUOTA 5M ON Practica
PRIVATE_SGA 15K
TEMPORARY TABLESPACE temp
FAILED_LOGIN_ATTEMPTS DEFAULT
ACCOUNT UNLOCK;
PASSWORD_LIFE_TIME 30
---------------------------------------------------
PASSWORD_REUSE_TIME 60
----------------------------------------------------------
PASSWORD_REUSE_MAX 5
ALTER USER jonathan2
PASSWORD_LOCK_TIME 1/24;
ACCOUNT UNLOCK;
---------------------------------------
----------------------------------------------------------
CREATE PROFILE Perfil_Profesor LIMIT
*********
SESSIONS_PER_USER DEFAULT
PERFILES
CPU_PER_SESSION 3000
*******
CONNECT_TIME 5
CREATE PROFILE Perfil1
IDLE_TIME 2
LIMIT
LOGICAL_READS_PER_SESSION 1000
PASSWORD_REUSE_MAX 10
PRIVATE_SGA 15K
PASSWORD_REUSE_TIME 30
FAILED_LOGIN_ATTEMPTS DEFAULT
---------------------------------
PASSWORD_LIFE_TIME 30
CREATE PROFILE Perfil1
PASSWORD_REUSE_TIME 60
LIMIT
PASSWORD_REUSE_MAX 5
PASSWORD_REUSE_MAX UNLIMITED
PASSWORD_LOCK_TIME 1/24;

***************************************

25
ROL INSERT INTO usuario_admin.notas(materia,nota,estudiante)
VALUES('Matematica',8,'Karla Lopez');
*********
CREATE SEQUENCE customers_seq
CREATE ROLE rol_profesor;
START WITH 1000
GRANT CREATE SESSION TO rol_profesor;
INCREMENT BY 1
GRANT CREATE SESSION TO rol_profesor;
NOCACHE
GRANT SELECT, INSERT, DELETE, UPDATE ON usuario_admin.notas
TO rol_profesor; NOCYCLE;

----------------------------------------------------- SELECT * FROM usuario_admin.notas;

CREATE ROLE rol_estudiante; -------------------------------------------------------------------------------


-------------------------------------------------------------------------------
GRANT CREATE SESSION TO rol_estudiante;

GRANT SELECT ON usuario_admin.notas TO rol_estudiante; Indices y fragmentacion

---------------------------------------------------------- CREATE TABLESPACE ADMINISTRACION DATAFILE


'C:\Users\jhofr\Desktop\admin.dbf' size 20M AUTOEXTEND
*** ON;
USUARIO ADMIN
CREATE USER ADMIN IDENTIFIED BY ADMIN DEFAULT
****** TABLESPACE ADMINISTRACION;

GRANT CREATE SESSION, CREATE TABLE TO usuario_admin; GRANT DBA TO ADMIN;

*************GRANT CREATE TABLE TO usuario_admin WITH CREATE TABLE ESTUDIANTES


ADMIN OPTIONS;
(
-------------------------------------
ID_EST VARCHAR(10) NOT NULL,
ALTER PROFILE PERFIL2 LIMIT IDLE_TIME 1/2;
CED_EST VARCHAR(10) NOT NULL,
-------------------------------------
NOM_EST VARCHAR(20) NOT NULL,
DROP PROFILE Perfil1 CASCADE;

------------------------------------------- APE_EST VARCHAR(20) NOT NULL,

ALTER USER usuario_admin PROFILE Perfil_Admin; DIR_EST VARCHAR(15) NOT NULL,

ALTER USER usuario_profesor PROFILE Perfil_Profesor; TEL_EST VARCHAR(10) NOT NULL,

ALTER USER usuario_alumno PROFILE Perfil_Estudiante; SUE_EST NUMBER(7,2) NOT NULL

GRANT rol_profesor TO usuario_profesor; );


ALTER USER usuario_profesor DEFAULT ROLE rol_profesor; INSERT INTO ESTUDIANTES
GRANT rol_estudiante TO usuario_alumno;
VALUES ('01','1801','ANA','RIOS','AMBATO','09901', 815);
ALTER USER usuario_alumno DEFAULT ROLE rol_estudiante;
INSERT INTO ESTUDIANTES
------------------------------------------
VALUES ('02','1802','PAUL','RAMOS','FICOA','09902', 890);
SELECT * FROM DBA_ROLE_PRIVS WHERE
GRANTEE='USUARIO_PROFESOR'; INSERT INTO ESTUDIANTES

CREATE TABLE notas( VALUES ('03','1803','FERNANDA','CASTRO','HUACHI


GRANDE','09903', 1500);
materia VARCHAR(100),
INSERT INTO ESTUDIANTES
nota NUMBER,

estudiante VARCHAR(100) VALUES ('04','1804','MARIA','SOLIS','PELILEO','09904',


2356);
);
INSERT INTO ESTUDIANTES
INSERT INTO usuario_admin.notas(materia,nota,estudiante)
VALUES('Fisica',10,'Juan Perez'); VALUES ('05','1805','CARLOS','CHILUISA','MOCHA','09905',
1800);
INSERT INTO usuario_admin.notas(materia,nota,estudiante)
VALUES('Quimica',7,'Ana Lopez'); INSERT INTO ESTUDIANTES

26
VALUES ('06','1806','JUAN','MORA','PICAIHUA','09906', INSERT INTO ESTUDIANTES1VALUES
1500); ('07','1807','MANUELA','ORTIZ','LOS QUINDES','09907',
2000);
INSERT INTO ESTUDIANTES
INSERT INTO ESTUDIANTES1
VALUES ('07','1807','MANUELA','ORTIZ','LOS
QUINDES','09907', 2000); VALUES
('08','1808','JOHANA','PALATE','MAYORISTA','09908', 500);
INSERT INTO ESTUDIANTES
INSERT INTO ESTUDIANTES1
VALUES
('08','1808','JOHANA','PALATE','MAYORISTA','09908', 500); VALUES ('09','1809','JEISON','JIMENEZ','ATOCHA','09909',
750);
INSERT INTO ESTUDIANTES
INSERT INTO ESTUDIANTES1
VALUES ('09','1809','JEISON','JIMENEZ','ATOCHA','09909',
750); VALUES ('010','18010','FELIPE','CASTRO','FICOA','099010',
650);
INSERT INTO ESTUDIANTES
--------------------------------------
VALUES ('010','18010','FELIPE','CASTRO','FICOA','099010',
650); ACTIVAR TIEMPOS DE RESPUESTA

CREATE TABLE ESTUDIANTES1 set timing on;

( SELECT * FROM ESTUDIANTES;

ID_EST VARCHAR(10) NOT NULL, select count(ID_EST) from ESTUDIANTES;

CED_EST VARCHAR(10) NOT NULL, select count(DIR_EST) from ESTUDIANTES;

NOM_EST VARCHAR(20) NOT NULL, SET AUTOTRACE ON EXPLAIN

APE_EST VARCHAR(20) NOT NULL, SET AUTOTRACE OFF EXPLAIN

DIR_EST VARCHAR(15) NOT NULL, ---------------------------------------

TEL_EST VARCHAR(10) NOT NULL, 1. B-TREE:

SUE_EST NUMBER(7,2) NOT NULL - CREACIÓN:

); CREATE INDEX IN_ESTUDIANTES_CED

INSERT INTO ESTUDIANTES1 ON ESTUDIANTES(CED_EST);

VALUES ('01','1801','ANA','RIOS','AMBATO','09901', 815); - VISUALIZACIÓN:

INSERT INTO ESTUDIANTES1 SELECT index_name NOMBRE, index_type TIPO

VALUES ('02','1802','PAUL','RAMOS','FICOA','09902', 890); FROM all_indexes

INSERT INTO ESTUDIANTES1 WHERE table_name = ‘ESTUDIANTES’;

VALUES ('03','1803','FERNANDA','CASTRO','HUACHI - MODIFICACIÓN:


GRANDE','09903', 1500);
// Monitorización del uso de indice
INSERT INTO ESTUDIANTES1
alter index (NombreIndice) monitoring usage;
VALUES
('04','1804','MARIA','SOLIS','PELILEO','09904', 2356); alter index IN_ESTUDIANTES_CED monitoring usage;

INSERT INTO ESTUDIANTES1 select *

VALUES ('05','1805','CARLOS','CHILUISA','MOCHA','09905', from v$object_usage


1800);
where table_name = 'ESTUDIANTES';
INSERT INTO ESTUDIANTES
alter index IN_ESTUDIANTES_CED nomonitoring usage;
VALUES ('06','1806','JUAN','MORA','PICAIHUA','09906',
ALTER INDEX index1 ON table1 REBUILD;
1500);

- ELIMINACIÓN:

27
DROP INDEX IN_ESTUDIANTES_CED; - MODIFICACIÓN:

------------------------------- // Monitorización del uso de indice

ON ESTUDIANTES; alter index IN_UNI_ESTUDIANTES_NOM monitoring usage;

//ON Purchasing.ProductVendor; select *

GO from v$object_usage

2. BIT-MAP: where table_name = 'ESTUDIANTES1';

- CREACIÓN: alter index IN_UNI_ESTUDIANTES_NOM nomonitoring


usage;
create BITMAP index IN_BIT_ESTUDIANTES_DIR_SUE
ALTER INDEX index1 ON table1 REBUILD;
on ESTUDIANTES(DIR_EST,SUE_EST);
- ELIMINACIÓN:
- VISUALIZACIÓN:
DROP INDEX IN_UNI_ESTUDIANTES_NOM;
SELECT index_name NOMBRE, index_type TIPO
ON ESTUDIANTES1;
FROM all_indexes
//ON Purchasing.ProductVendor;
WHERE table_name = ‘ESTUDIANTES’;
GO
- MODIFICACIÓN:
====================================
// Monitorización del uso de indice
FRAGMENTACION HORIZONTAL
alter index IN_BIT_ESTUDIANTES_DIR_SUE monitoring
usage; ===================================

select * CREATE TABLE PERSONAS

from v$object_usage (

where table_name = 'ESTUDIANTES'; ID_PERSONA NUMBER(5),

alter index IN_BIT_ESTUDIANTES_DIR_SUE nomonitoring NOM_PERSONA VARCHAR(20),


usage;
APE_PERSONA VARCHAR(20),
ALTER INDEX index1 ON table1 REBUILD;
EDAD_PERSONA NUMBER(2))
- ELIMINACIÓN:
PARTITION BY LIST(EDAD_PERSONA)
DROP INDEX IN_BIT_ESTUDIANTES_DIR_SUE
(
ON ESTUDIANTES;
PARTITION EDAD_18_19 VALUES('18','19'),
//ON Purchasing.ProductVendor;
PARTITION EDAD_20_21 VALUES('20','21'),
GO
PARTITION EDAD_OTROS VALUES(DEFAULT)
3. UNIQUE
);
- CREACIÓN:
INSERT INTO PERSONAS
create UNIQUE index IN_UNI_ESTUDIANTES_NOM
VALUES(1801,'MARCO','PINTAG',22);
on ESTUDIANTES(NOM_EST);
INSERT INTO PERSONAS
- VISUALIZACIÓN:
VALUES(1802,'MARIA','VELEZ',18);
select index_name Nombre, index_type Tipo,
INSERT INTO PERSONAS
table_name Tabla, tablespace_name Tablespace,
VALUES(1803,'JUAN','SEGUNDO',19);
secondary Secundario
INSERT INTO PERSONAS
from all_indexes
VALUES(1804,'LUIS','NARANJO',20);
where table_name = 'ESTUDIANTES';

28
INSERT INTO ESTUDIANTES
VALUES(3,'ANA','ROSADO',19,'COMENAJERO',1);
SELECT * FROM PERSONAS PARTITION(EDAD_18_19);
INSERT INTO ESTUDIANTES
SELECT * FROM PERSONAS PARTITION(EDAD_20_21); VALUES(4,'BENITO','SANCHEZ',25,'GETAFE',3);
SELECT * FROM PERSONAS PARTITION(EDAD_OTROS); SELECT * FROM ESTUDIANTES;
====================================== SELECT * FROM ESTUDIANTES_DATOS_PERSONALES;
Fragmentación vertical SELECT * FROM ESTUDIANTES_DATOS_ACADEMICOS;
====================================== MIXTA
CREATE TABLESPACE EXPO DATAFILE DROP TABLE ESTUDIANTES_DATOS_ACADEMICOS;
'C:\tablespace\expo01.dbf' SIZE 20M AUTOEXTEND ON;
CREATE TABLE ESTUDIANTES_DATOS_ACADEMICOS_VH
CREATE USER EXPO_USER IDENTIFIED BY EXPO123
DEFAULT TABLESPACE EXPO; (ID NUMBER,

GRANT CREATE SESSION TO EXPO_USER; CAMPUS VARCHAR(20),

GRANT DBA TO EXPO_USER; CURSO NUMBER)

CREATE TABLE ESTUDIANTES(ID NUMBER, NOMBRE PARTITION BY LIST (CAMPUS)


VARCHAR(20), APELLIDOS VARCHAR(20), EDAD NUMBER,
CAMPUS VARCHAR(20), CURSO NUMBER); (PARTITION C_NORTE VALUES ('LEGANES',
'COMENAJERO'),
CREATE TABLE ESTUDIANTES_DATOS_PERSONALES(ID
NUMBER, NOMBRE VARCHAR(20), APELLIDOS PARTITION C_SUR VALUES ('GETAFE'));
VARCHAR(20), EDAD NUMBER);
CREATE TABLE ESTUDIANTES_DATOS_PERSONALES_VH
CREATE TABLE ESTUDIANTES_DATOS_ACADEMICOS(ID
( ID NUMBER,
NUMBER, CAMPUS VARCHAR(20), CURSO NUMBER);
NOMBRE VARCHAR(20),
CREATE OR REPLACE TRIGGER INSERTAR_VF
APELLIDOS VARCHAR(20),
AFTER INSERT ON ESTUDIANTES
EDAD NUMBER)
FOR EACH ROW
PARTITION BY RANGE (EDAD) (
BEGIN
PARTITION P20 VALUES LESS THAN (20),
INSERT INTO ESTUDIANTES_DATOS_PERSONALES
VALUES(:NEW.ID,:NEW.NOMBRE,:NEW.APELLIDOS,:NEW.E PARTITION P30 VALUES LESS THAN (30)
DAD);
);
INSERT INTO ESTUDIANTES_DATOS_ACADEMICOS
VALUES(:NEW.ID,:NEW.CAMPUS,:NEW.CURSO); SELECT * FROM ESTUDIANTES_DATOS_ACADEMICOS
PARTITION(C_NORTE);
END;
SELECT * FROM ESTUDIANTES_DATOS_ACADEMICOS
/ PARTITION(C_SUR);
INSERT INTO ESTUDIANTES
VALUES(1,'MARIA','RUIZ',20,'LEGANES',2);
SELECT * FROM ESTUDIANTES_DATOS_PERSONALES_VH
INSERT INTO ESTUDIANTES PARTITION(P20);
VALUES(2,'LUIS','ALVAREZ',21,'GETAFE',2);
SELECT * FROM ESTUDIANTES_DATOS_PERSONALES_VH
PARTITION(P30);

29

También podría gustarte