Diferència entre revisions de la pàgina «M2 - Bases de dades / Continguts UF3: Perfils»
(Es crea la pàgina amb «Aquest material s'ha elaborat a partir de la pàgina [https://orlandoolguin.wordpress.com/2009/09/20/manejo-de-perfiles/] ==Introducción== La forma en que funciona...».) |
|||
Línia 16: | Línia 16: | ||
==Creación, borrado y alteración de perfiles== | ==Creación, borrado y alteración de perfiles== | ||
− | Para '''crear''' un perfil, se requiere tener el privilegio CREATE PROFILE asignado en el usuario que lo quiere crear, y se usa el siguiente comando: | + | Para '''crear''' un perfil, se requiere tener el privilegio ''CREATE PROFILE'' asignado en el usuario que lo quiere crear, y se usa el siguiente comando: |
− | + | <pre> | |
create profile nombre_perfil limit | create profile nombre_perfil limit | ||
nombre_limite_1 [valor entero | unlimited | default ] | nombre_limite_1 [valor entero | unlimited | default ] | ||
Línia 23: | Línia 23: | ||
... | ... | ||
nombre_limite_n [valor entero | unlimited | default ]; | nombre_limite_n [valor entero | unlimited | default ]; | ||
− | + | </pre> | |
Por default, cada perfil creado tiene todos los límites posibles del mismo de acuerdo a la versión de la base de datos. Existe un perfil llamado default el cual, regirá a todos los usuarios de la base de datos, mientras no sea creado uno nuevo y asignado a un usuario en especial. En el perfil creado, los límites que no sean asignados con un valor predefinido, tendrán el valor del perfil default de la base de datos, como se ve en el siguiente ejemplo: | Por default, cada perfil creado tiene todos los límites posibles del mismo de acuerdo a la versión de la base de datos. Existe un perfil llamado default el cual, regirá a todos los usuarios de la base de datos, mientras no sea creado uno nuevo y asignado a un usuario en especial. En el perfil creado, los límites que no sean asignados con un valor predefinido, tendrán el valor del perfil default de la base de datos, como se ve en el siguiente ejemplo: | ||
− | + | <pre> | |
SQL> create profile lim_prueba limit connect_time 45; | SQL> create profile lim_prueba limit connect_time 45; | ||
Línia 54: | Línia 54: | ||
LIM_PRUEBA SESSIONS_PER_USER KERNEL DEFAULT | LIM_PRUEBA SESSIONS_PER_USER KERNEL DEFAULT | ||
16 rows selected. | 16 rows selected. | ||
+ | </pre> | ||
− | Este perfil, lo podemos modificar si nuestro usuario tiene el privilegio ALTER PROFILE. Gracias a éste, podemos asignar o desasignar valores a los distintos límites del perfil. | + | Este perfil, lo podemos '''modificar''' si nuestro usuario tiene el privilegio ''ALTER PROFILE''. Gracias a éste, podemos asignar o desasignar valores a los distintos límites del perfil. |
− | + | <pre> | |
SQL> alter profile lim_prueba limit password_life_time 30; | SQL> alter profile lim_prueba limit password_life_time 30; | ||
Profile altered. | Profile altered. | ||
Línia 85: | Línia 86: | ||
16 rows selected. | 16 rows selected. | ||
− | + | </pre> | |
− | Nota. Si se desea regresar un valor al default, se tendrá que poner dicho valor en vez de un número propiamente. | + | '''Nota.''' Si se desea regresar un valor al default, se tendrá que poner dicho valor en vez de un número propiamente. |
Para borrar un perfil, nada más tenemos que aplicar el comando drop como en muchos tipos de objetos en Oracle. | Para borrar un perfil, nada más tenemos que aplicar el comando drop como en muchos tipos de objetos en Oracle. | ||
− | + | <pre> | |
SQL> drop profile lim_prueba; | SQL> drop profile lim_prueba; | ||
Profile dropped. | Profile dropped. | ||
Línia 97: | Línia 98: | ||
4 order by resource_name; | 4 order by resource_name; | ||
no rows selected | no rows selected | ||
+ | </pre> | ||
+ | Ok, entonces ya sabemos crear un perfil y que le podemos asignar un límite con algún valor que nos sea de utilidad. Ahora, ¿cuáles son los límites que podemos asignar a un perfil? A continuación, muestro una lista de los valores y lo que afectan. | ||
− | + | ==Límites aplicables a perfiles== | |
− | Límites aplicables a perfiles | ||
COMPOSITE_LIMIT | COMPOSITE_LIMIT | ||
Línia 148: | Línia 150: | ||
PASSWORD_VERIFY_FUNCTION | PASSWORD_VERIFY_FUNCTION | ||
En este parámetro, se puede especificar un script para validar el password. Por ejemplo, que tenga una determinada cantidad de caracteres, que tenga letras y números, etcétera. | En este parámetro, se puede especificar un script para validar el password. Por ejemplo, que tenga una determinada cantidad de caracteres, que tenga letras y números, etcétera. | ||
− | Asignando el perfil a un usuario | + | |
+ | |||
+ | ==Asignando el perfil a un usuario== | ||
Cuando ya tenemos creado nuestro perfil, podemos asignarlo a los distintos usuarios por medio de un alter user, o al momento de crearlos con create user. | Cuando ya tenemos creado nuestro perfil, podemos asignarlo a los distintos usuarios por medio de un alter user, o al momento de crearlos con create user. | ||
− | + | <pre> | |
alter user nombre_usuario profile nombre_perfil; | alter user nombre_usuario profile nombre_perfil; | ||
Línia 159: | Línia 163: | ||
temporary tablespace nombre_tbs | temporary tablespace nombre_tbs | ||
profile nombre_perfil; | profile nombre_perfil; | ||
− | + | </pre> | |
por ejemplo, | por ejemplo, | ||
− | + | <pre> | |
SQL> alter user curso profile lim_prueba; | SQL> alter user curso profile lim_prueba; | ||
Línia 189: | Línia 193: | ||
-------------------- ------------------------- ------------------------- -------------------- | -------------------- ------------------------- ------------------------- -------------------- | ||
USR_PRUEBA DATOS TEMP LIM_PRUEBA | USR_PRUEBA DATOS TEMP LIM_PRUEBA | ||
− | + | </pre> | |
de esta forma, ya el usuario curso y el usuario usr_prueba, tienen asignado el perfil lim_prueba. | de esta forma, ya el usuario curso y el usuario usr_prueba, tienen asignado el perfil lim_prueba. | ||
Para quitar la desasignación del perfil, se tendrá que asignar el perfil default al usuario. Por ejemplo: | Para quitar la desasignación del perfil, se tendrá que asignar el perfil default al usuario. Por ejemplo: | ||
− | + | <pre> | |
SQL> alter user curso profile default; | SQL> alter user curso profile default; | ||
User altered. | User altered. | ||
Línia 202: | Línia 206: | ||
-------------------- ------------------------- ------------------------- -------------------- | -------------------- ------------------------- ------------------------- -------------------- | ||
CURSO DATOS TEMP DEFAULT | CURSO DATOS TEMP DEFAULT | ||
+ | </pre> | ||
− | Viendo el perfil en acción | + | ==Viendo el perfil en acción== |
Ahora vamos a probar un perfil como el que mostramos en este post a manera de ejemplo. Tendrá un tiempo de inactividad de 1 minuto y un límite de intentos fallidos de 3: | Ahora vamos a probar un perfil como el que mostramos en este post a manera de ejemplo. Tendrá un tiempo de inactividad de 1 minuto y un límite de intentos fallidos de 3: | ||
− | + | <pre> | |
SQL> create profile lim_prueba limit | SQL> create profile lim_prueba limit | ||
2 idle_time 1 | 2 idle_time 1 | ||
Línia 259: | Línia 264: | ||
ORA-01017: invalid username/password; logon denied | ORA-01017: invalid username/password; logon denied | ||
SP2-0157: unable to CONNECT to ORACLE after 3 attempts, exiting SQL*Plus | SP2-0157: unable to CONNECT to ORACLE after 3 attempts, exiting SQL*Plus | ||
+ | </pre> |
Revisió del 13:52, 4 feb 2018
Aquest material s'ha elaborat a partir de la pàgina [1]
Contingut
Introducción
La forma en que funciona un perfil, es que al mismo, se le asignan valores que serán los límites para modelar el comportamiento del usuario o esquema al que será asignado. Un límite, puede ser la cantidad de segundos que el usuario estará sin realizar actividades en la base de datos antes de ser desconectado. Otro límite, puede ser la cantidad de intentos fallidos de conexión por contraseña incorrecta. Estos límites, los detallo más adelante. Los profiles existen desde la versión 7 de la base de datos, prácticamente con la misma estructura.
Para que los perfiles funcionen, el parámetro de la base de datos resource_limit, deberá tener el valor a true.
SQL> show parameter resource_limit NAME TYPE VALUE ------------------------------------ ----------- ------------------------------ resource_limit boolean TRUE
Creación, borrado y alteración de perfiles
Para crear un perfil, se requiere tener el privilegio CREATE PROFILE asignado en el usuario que lo quiere crear, y se usa el siguiente comando:
create profile nombre_perfil limit nombre_limite_1 [valor entero | unlimited | default ] nombre_limite_2 [valor entero | unlimited | default ] ... nombre_limite_n [valor entero | unlimited | default ];
Por default, cada perfil creado tiene todos los límites posibles del mismo de acuerdo a la versión de la base de datos. Existe un perfil llamado default el cual, regirá a todos los usuarios de la base de datos, mientras no sea creado uno nuevo y asignado a un usuario en especial. En el perfil creado, los límites que no sean asignados con un valor predefinido, tendrán el valor del perfil default de la base de datos, como se ve en el siguiente ejemplo:
SQL> create profile lim_prueba limit connect_time 45; Profile created. SQL> select * 2 from dba_profiles 3 where profile = 'LIM_PRUEBA' 4 order by resource_name; PROFILE RESOURCE_NAME RESOURCE LIMIT -------------------- ------------------------- -------- --------------- LIM_PRUEBA COMPOSITE_LIMIT KERNEL DEFAULT LIM_PRUEBA CONNECT_TIME KERNEL 45 LIM_PRUEBA CPU_PER_CALL KERNEL DEFAULT LIM_PRUEBA CPU_PER_SESSION KERNEL DEFAULT LIM_PRUEBA FAILED_LOGIN_ATTEMPTS PASSWORD DEFAULT LIM_PRUEBA IDLE_TIME KERNEL DEFAULT LIM_PRUEBA LOGICAL_READS_PER_CALL KERNEL DEFAULT LIM_PRUEBA LOGICAL_READS_PER_SESSION KERNEL DEFAULT LIM_PRUEBA PASSWORD_GRACE_TIME PASSWORD DEFAULT LIM_PRUEBA PASSWORD_LIFE_TIME PASSWORD DEFAULT LIM_PRUEBA PASSWORD_LOCK_TIME PASSWORD DEFAULT LIM_PRUEBA PASSWORD_REUSE_MAX PASSWORD DEFAULT LIM_PRUEBA PASSWORD_REUSE_TIME PASSWORD DEFAULT LIM_PRUEBA PASSWORD_VERIFY_FUNCTION PASSWORD DEFAULT LIM_PRUEBA PRIVATE_SGA KERNEL DEFAULT LIM_PRUEBA SESSIONS_PER_USER KERNEL DEFAULT 16 rows selected.
Este perfil, lo podemos modificar si nuestro usuario tiene el privilegio ALTER PROFILE. Gracias a éste, podemos asignar o desasignar valores a los distintos límites del perfil.
SQL> alter profile lim_prueba limit password_life_time 30; Profile altered. SQL> select * 2 from dba_profiles 3 where profile = 'LIM_PRUEBA' 4 order by resource_name; PROFILE RESOURCE_NAME RESOURCE LIMIT -------------------- ------------------------- -------- --------------- LIM_PRUEBA COMPOSITE_LIMIT KERNEL DEFAULT LIM_PRUEBA CONNECT_TIME KERNEL 45 LIM_PRUEBA CPU_PER_CALL KERNEL DEFAULT LIM_PRUEBA CPU_PER_SESSION KERNEL DEFAULT LIM_PRUEBA FAILED_LOGIN_ATTEMPTS PASSWORD DEFAULT LIM_PRUEBA IDLE_TIME KERNEL DEFAULT LIM_PRUEBA LOGICAL_READS_PER_CALL KERNEL DEFAULT LIM_PRUEBA LOGICAL_READS_PER_SESSION KERNEL DEFAULT LIM_PRUEBA PASSWORD_GRACE_TIME PASSWORD DEFAULT LIM_PRUEBA PASSWORD_LIFE_TIME PASSWORD 30 LIM_PRUEBA PASSWORD_LOCK_TIME PASSWORD DEFAULT LIM_PRUEBA PASSWORD_REUSE_MAX PASSWORD DEFAULT LIM_PRUEBA PASSWORD_REUSE_TIME PASSWORD DEFAULT LIM_PRUEBA PASSWORD_VERIFY_FUNCTION PASSWORD DEFAULT LIM_PRUEBA PRIVATE_SGA KERNEL DEFAULT LIM_PRUEBA SESSIONS_PER_USER KERNEL DEFAULT 16 rows selected.
Nota. Si se desea regresar un valor al default, se tendrá que poner dicho valor en vez de un número propiamente.
Para borrar un perfil, nada más tenemos que aplicar el comando drop como en muchos tipos de objetos en Oracle.
SQL> drop profile lim_prueba; Profile dropped. SQL> select * 2 from dba_profiles 3 where profile = 'LIM_PRUEBA' 4 order by resource_name; no rows selected
Ok, entonces ya sabemos crear un perfil y que le podemos asignar un límite con algún valor que nos sea de utilidad. Ahora, ¿cuáles son los límites que podemos asignar a un perfil? A continuación, muestro una lista de los valores y lo que afectan.
Límites aplicables a perfiles
COMPOSITE_LIMIT Suma del máximo de CPU_PER_SESSION, CONNECT_TIME, LOGICAL_READS_PER_SESSION y PRIVATE_SGA. Si este limite es excedido, Oracle aborta la sesión y regresa un error.
CONNECT_TIME Tiempo permitido de conexión por sesión en minutos.
CPU_PER_CALL Máximo tiempo de CPU por llamada en centésimas de segundo.
CPU_PER_SESSION Máximo tiempo de CPU por sesión en centésimas de segundo.
IDLE_TIME Tiempo máximo permitido sin actividad por el usuario antes de ser desconectado. Se expresa en minutos.
LOGICAL_READS_PER_CALL Máximo número de bloques de base de datos leídos por llamada.
LOGICAL_READS_PER_SESSION Máximo numero de bloques de base de datos leídos por sesión.
PRIVATE_SGA Máxima cantidad de bytes de espacio privado reservado en la SGA. Se puede expresar en el formato enteroK para kilobytes o enteroM para megabytes.
SESSIONS_PER_USER Máximo número de sesiones concurrentes permitidas por usuario.
FAILED_LOGIN_ATTEMPTS Número de intentos fallidos de conexión de un usuario, antes de que Oracle ponga la cuenta bloqueada.
PASSWORD_GRACE_TIME Número de días de gracia para realizar un cambio de password de nuestra cuenta. Si en el periodo de tiempo delimitado no fue cambiado el password, el password expira.
PASSWORD_LIFE_TIME Número de días de vida de un password.
PASSWORD_LOCK_TIME Número de días que permanecerá bloqueado un usuario después de rebasar el límite FAILED_LOGIN_ATTEMPTS.
PASSWORD_REUSE_MAX Número de veces que debe cambiar una contraseña antes de poder ser re-usada la original.
PASSWORD_REUSE_TIME Número de días que tienen que pasar para poder re-usar un password.
PASSWORD_VERIFY_FUNCTION En este parámetro, se puede especificar un script para validar el password. Por ejemplo, que tenga una determinada cantidad de caracteres, que tenga letras y números, etcétera.
Asignando el perfil a un usuario
Cuando ya tenemos creado nuestro perfil, podemos asignarlo a los distintos usuarios por medio de un alter user, o al momento de crearlos con create user.
alter user nombre_usuario profile nombre_perfil; create user nombre_usuario identified by password_usuario default tablespace nombre_tbs temporary tablespace nombre_tbs profile nombre_perfil;
por ejemplo,
SQL> alter user curso profile lim_prueba; User altered. SQL> select username, default_tablespace, temporary_tablespace, profile 2 from dba_users 3 where username = 'CURSO'; USERNAME DEFAULT_TABLESPACE TEMPORARY_TABLESPACE PROFILE -------------------- ------------------------- ------------------------- -------------------- CURSO DATOS TEMP LIM_PRUEBA SQL> create user usr_prueba 2 identified by pwdprueba 3 default tablespace datos 4 temporary tablespace temp 5 profile lim_prueba; User created. SQL> select username, default_tablespace, temporary_tablespace, profile 2 from dba_users 3 where username = 'USR_PRUEBA'; USERNAME DEFAULT_TABLESPACE TEMPORARY_TABLESPACE PROFILE -------------------- ------------------------- ------------------------- -------------------- USR_PRUEBA DATOS TEMP LIM_PRUEBA
de esta forma, ya el usuario curso y el usuario usr_prueba, tienen asignado el perfil lim_prueba.
Para quitar la desasignación del perfil, se tendrá que asignar el perfil default al usuario. Por ejemplo:
SQL> alter user curso profile default; User altered. SQL> select username, default_tablespace, temporary_tablespace, profile 2 from dba_users 3 where username = 'CURSO'; USERNAME DEFAULT_TABLESPACE TEMPORARY_TABLESPACE PROFILE -------------------- ------------------------- ------------------------- -------------------- CURSO DATOS TEMP DEFAULT
Viendo el perfil en acción
Ahora vamos a probar un perfil como el que mostramos en este post a manera de ejemplo. Tendrá un tiempo de inactividad de 1 minuto y un límite de intentos fallidos de 3:
SQL> create profile lim_prueba limit 2 idle_time 1 3 failed_login_attempts 3; Profile created. SQL> select * 2 from dba_profiles 3 where profile = 'LIM_PRUEBA' 4 order by resource_name; PROFILE RESOURCE_NAME RESOURCE LIMIT -------------------- ------------------------- -------- --------------- LIM_PRUEBA COMPOSITE_LIMIT KERNEL DEFAULT LIM_PRUEBA CONNECT_TIME KERNEL DEFAULT LIM_PRUEBA CPU_PER_CALL KERNEL DEFAULT LIM_PRUEBA CPU_PER_SESSION KERNEL DEFAULT LIM_PRUEBA FAILED_LOGIN_ATTEMPTS PASSWORD 3 LIM_PRUEBA IDLE_TIME KERNEL 1 LIM_PRUEBA LOGICAL_READS_PER_CALL KERNEL DEFAULT LIM_PRUEBA LOGICAL_READS_PER_SESSION KERNEL DEFAULT LIM_PRUEBA PASSWORD_GRACE_TIME PASSWORD DEFAULT LIM_PRUEBA PASSWORD_LIFE_TIME PASSWORD DEFAULT LIM_PRUEBA PASSWORD_LOCK_TIME PASSWORD DEFAULT LIM_PRUEBA PASSWORD_REUSE_MAX PASSWORD DEFAULT LIM_PRUEBA PASSWORD_REUSE_TIME PASSWORD DEFAULT LIM_PRUEBA PASSWORD_VERIFY_FUNCTION PASSWORD DEFAULT LIM_PRUEBA PRIVATE_SGA KERNEL DEFAULT LIM_PRUEBA SESSIONS_PER_USER KERNEL DEFAULT SQL> create user usr_prueba 2 identified by pwdprueba 3 default tablespace datos 4 temporary tablespace temp 5 profile lim_prueba; User created. SQL> select username, default_tablespace, temporary_tablespace, profile 2 from dba_users 3 where username = 'USR_PRUEBA'; USERNAME DEFAULT_TABLESPACE TEMPORARY_TABLESPACE PROFILE -------------------- ------------------------- ------------------------- -------------------- USR_PRUEBA DATOS TEMP LIM_PRUEBA SQL> grant connect to usr_prueba; Grant succeeded. E:\Oracle\Product\10.2.0\BIN>sqlplus usr_prueba/intento1 SQL*Plus: Release 10.2.0.4.0 - Production on Sßb Sep 19 19:56:46 2009 Copyright (c) 1982, 2007, Oracle. All Rights Reserved. ERROR: ORA-01017: invalid username/password; logon denied Enter user-name: usr_prueba/intento2 ERROR: ORA-01017: invalid username/password; logon denied Enter user-name: usr_prueba/intento3 ERROR: ORA-01017: invalid username/password; logon denied SP2-0157: unable to CONNECT to ORACLE after 3 attempts, exiting SQL*Plus