AdministracionBD Ejercicios
AdministracionBD Ejercicios
• 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.
CONNECT
User-name:system Password: Marco.199722
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’;
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.
Respuesta: Se logra conectar debido a que el usuario ADMINISTRADOR tiene privilegio de SESSION.
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
CONNECT ADMINISTRADOR;
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
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
3
Parámetros almacenamiento Initial 16K 16K
Minextents 1 1
Maxextents 3 3
11. Crear dos "tablespace" temporales, manejados deforma local, llamados TEMP_NOMINA y TEMP_ACADEMO con las siguientes características:
TEMP_ACADEMO TEMP_NOMINA
Autoextensible SI SI
12. Estando conectado como usuario “administrador” probar a crear un rol llamado “administrador”, ¿qué ocurre?
CONNECT ADMINISTRADOR; PASSWORD: ADMIN
4
Respuesta: No se puede crear el rol ADMINISTRADOR porque el usuario no posee los privilegios suficientes
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’;
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’;
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”?.
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
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;
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.
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’);
(CODIGO varchar2(3),
DESCRIPCION varchar2(20))
(INITIAL 64K
NEXT 64K
MINEXTENTS 5
MAXEXTENTS 10);
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.
MAXEXTENTS 10);
28. Asignar cuota ilimitada al usuario “prueba01” en el "tablespace" ACADEMO. Volvera repetir el ejercicio26.
CONNECT system;
PASSWORD: Marco.199722
9
MAXEXTENTS 10);
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’);
CONNECT system;
PASSWORD: Marco.199722
ALTER USER prueba01 QUOTA 0K ON ACADEMO;
10
-select owner, table_name from dba_tables where owner=’PRUEBA01’;
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
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;
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;
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;
43. Consultar que perfiles tiene asignados cada usuario de la base dedatos.
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;
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
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?.
14
GRANT CONEXION, DESARROLLO to prueba04;
15
48. Bloquearlacuentadelusuario“prueba04”,¿quésucedealconectarsedenuevo?
CONNECT system;
PASSWORD: Marco.199722
ALTER USER prueba04 ACCOUNT LOCK;
CONNECT prueba004;
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;
Editar con vi o ejecutar la sentencia pg sobre el fichero de parametros de inicializacion (init<SID>.ora). Indicar:
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
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;
18
59. ¿Puedeasignarseelperfil“DESARROLLO”alrol“CONNECT”?.¿Yelperfil“DEFAULT”al perfil “DESARROLLO”?:
Respuesta: No se puede realizar dichas operaciones
62. Conectarse como usuario “administrador” e intentar eliminar el perfil “DEFAULT”, ¿qué ocurre?.
CONNECT ADMINISTRADOR; PASSWORD ADMIN;
DROP PROFILE DEFAULT;
DROP PROFILE DEFAULT CASCADE;
19
63. Comousuario“administrador”crearelrol“SECRETO”identificadoporla contraseña “total” y asignarlo al usuario “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.
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';
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).
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;
73. Comprobarenlavistaapropiadadeldiccionariodedatoslosrolesactivosenlasesión.
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;
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?
22
76. Conectarse como usuario SYSTEM y otorgar al usuario "prueba02" el permiso para seleccionar datos de latabla códigos (pertenece al usuario
"prueba01").
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;
Connect prueba03;
-Select * from prueba03.codigos;
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;
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
- ELIMINACIÓN:
27
DROP INDEX IN_ESTUDIANTES_CED; - MODIFICACIÓN:
GO from v$object_usage
from v$object_usage (
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,
29