3.1. Definición de espacio de almacenamiento
Las bases de datos
suelen ser creadas para almacenar grandes cantidades de datos de forma
permanente. Por lo general, los datos almacenados en éstas suelen ser
consultados y actualizados constantemente.
La mayoría de las bases
de datos se almacenan en las llamadas memorias secundarias, especialmente
discos duros, aunque, en principio, pueden emplearse también discos ópticos,
memorias flash, etc.
Las razones por las
cuales las bases de datos se almacenan en memorias secundarias son:
· En general, las bases de datos son demasiado grandes para entrar en la memoria primaria.
- La memoria secundaria suele ser más barata que la memoria primaria (aunque esta última tiene mayor velocidad).
- La memoria secundaria es más útil para el almacenamiento de datos permanente, puesto que la memoria primaria es volátil.
Una vez instalado un gestor de base datos, sigue ver la
forma en cómo se almacenan las bases de datos:
Estructuras lógicas de
almacenamiento (sector)
Conceptos:
- Bloque
- Extensión
- Segmento
- Espacio
de tablas
- Bloques
Bloque
Se tratan de la unidad
más pequeña. Generalmente debe ser múltiple del tamaño de bloque del sistema
operativo, ya que es la unidad mínima que va a pedir Oracle al sistema
operativo. Si no fuera múltiple del bloque del sistema se añadiría un trabajo
extra ya que el sistema debería obtener más datos de los estrictamente
necesarios.
Se especifica mediante DB_BLOCK_SIZE
Extensiones
Se forma con uno o más
bloques. Cuando se aumenta tamaño de un objeto se usa una extensión para
incrementar el espacio
Segmentos
Grupo de extensiones
que forman un objeto de la base de datos, como por ejemplo una tabla o un
índice
Espacio de tablas
Formado por uno o más
data files, cada data file solo puede pertenecer a una determinada tablestaca.
En general, el almacenamiento de los objetos de la base de datos (tablas e
índices fundamentalmente) se realiza a través de estructuras lógicas de
almacenamiento que tienen por debajo los archivos físicos (.mdf,.ndf), y que
independizan por tanto las sentencias de creación de objetos de las estructuras
físicas de almacenamiento. Esto es útil porque permite que a esos
"espacios de objetos " les sean asociados nuevos dispositivos físicos
(es decir, más espacio en disco) de forma dinámica cuando la base de datos
crece de tamaño más de lo previsto.
Posibilita además otra serie de operaciones como las
siguientes:
Asignar cuotas
específicas de espacio a usuarios de la base de datos.
Realizar copias de
seguridad o recuperaciones parciales de la base de datos.
El administrador de la
base de datos puede crear o borrar nuevos espacios lógicos de objetos, añadir o
eliminar ficheros físicos de soporte, utilizados como espacio temporal de
trabajo, definir parámetros de almacenamiento para objetos destinados a ese
espacio de datos. En el caso de Oracle,
sobre los ficheros físicos de datos (datafiles) se definen los tablespaces.
Ejemplo de creación:
CREATE TABLESPACE
usuarios DATAFILE `datal.ora' SIZE 50M
Ejemplo añadir:
ALTER TABLESPACE
usuarios ADD DATAFILE 'data2.ora' SIZE 25M
Las bases de datos
suelen ser creadas para almacenar grandes cantidades de datos de forma
permanente. Por lo general, los datos almacenados en éstas suelen ser consultados
y actualizados constantemente.
La mayoría de las bases
de datos se almacenan en las llamadas memorias secundarias, especialmente
discos duros, aunque, en principio, pueden emplearse también discos ópticos,
memorias flash, etc.
Las razones por las
cuales las bases de datos se almacenan en memorias secundarias son:
·
En general, las bases de
datos son demasiado grandes para entrar en la memoria primaria.
- La memoria secundaria suele ser más barata que la memoria primaria (aunque esta última tiene mayor velocidad).
- La memoria secundaria es más útil para el almacenamiento de datos permanente, puesto que la memoria primaria es volátil.
- En cuanto al respaldo de las bases de datos (backup), suelen emplearse tanto discos duros, como cintas magnéticas, discos ópticos o similares.
- Las técnicas empleadas para almacenar bases de datos son sumamente importantes para la velocidad de acceso y recuperación de datos.
- Las técnicas dependen del tipo de almacenamiento, el uso que se le da o se le dará a la base de datos, la estructura de la misma, el SGBD empleado, etc.
- Esta dependencia no significa necesariamente que haya que cambiar la estructura de la base de datos si se cambian las técnicas empleadas.
- Las técnicas de almacenamiento son independientes de la base de datos, pero, de todas maneras, las mejores técnicas muchas veces pueden determinarse viendo la estructura de la base de datos, entre otras características.
3.2 Definición y Creación del Espacio Asignado para
cada Base de Datos
Las bases de datos se almacenan
en ficheros o archivos. Existen diferentes formas de organizaciones primarias
de archivos que determinan la forma en que los registros de un archivo se
colocan físicamente en el disco y, por lo tanto, cómo se accede a éstos. Las
distintas formas de organizaciones primarias de archivos son:
Existe una segunda
forma de acceder a los datos llamada organización secundaria o estructura de
acceso auxiliar. Estas permiten que los accesos a los registros de un archivo
basado en campos alternativos, sean más eficientes que los que han sido
utilizados para la organización primaria de archivos.
En el SGBD asigna
espacio de almacenamiento a las bases de datos cuando los usuarios introducen
create database o alter database. El primero de los comandos puede especificar
uno o más dispositivos de base de datos, junto con la cantidad de espacio en
cada uno de ellos que será asignado a la nueva base de datos.
Las bases de datos se
almacenan en ficheros o archivos. Existen diferentes formas de organizaciones
primarias de archivos que determinan la forma en que los registros de un
archivo se colocan físicamente en el disco y, por lo tanto, cómo se accede a
éstos.
Las distintas formas de organizaciones primarias de archivos son:
- Archivos de Montículos (o no Ordenados): esta técnica coloca los registros en el disco sin un orden específico, añadiendo nuevos registros al final del archivo.
- Archivos Ordenados: mantiene el orden de los registros con respecto a algún valor de algún campo (clave de ordenación).
- Archivos de Direccionamiento Calculado: utilizan una función de direccionamiento calculado aplicada a un campo específico para determinar la colocación de los registros en disco.
Árboles B: se
vale de la estructura de árbol para las colocaciones de registros.
Organización
Secundaria o Estructura de Acceso Auxiliar: Estas permiten que los accesos
a los registros de un archivo basado en campos alternativos, sean más
eficientes que los que han sido utilizados para la organización primaria de
archivos.
Espacio de almacenamiento
El DBMS asigna espacio de
almacenamiento a las bases de datos cuando los usuarios introducen create
database o alter database. El primero de los comandos puede especificar uno o
más dispositivos de base de datos, junto con la cantidad de espacio en cada uno
de ellos que será asignado a la nueva base de datos.
Si se utiliza la palabra clave
default o se omite completamente la cláusula on, el DBMS pone la base de datos
en uno o más de los dispositivos predeterminados de base de datos especificados
en master.sysdevices.
Para especificar un tamaño
(por ejemplo, 4MB) para una base de datos que se va a almacenar en una
ubicación predeterminada, se utiliza on default = size de esta forma:
create database newpubs on default = 4
Dispositivos específicos
Para situar la base de datos
en dispositivos específicos, se debe indicar el nombre del dispositivo o
dispositivos en que se desea almacenar. Como la sintaxis indica, se puede
solicitar que se almacene en más de un dispositivo de base de datos, con una
cantidad de espacio diferente en cada uno. Todos los dispositivos mencionados
en create database deben estar enumerados en sysdevices.
create
database newdb on mydata = 3, newdata = 2
3.3 Asignación de cuotas de espacio para usuarios
Por defecto ningún usuario tiene cuota en los Tablespaces y se tienen tres opciones para poder proveer a un usuario de una cuota Sin límite, que permite al usuario usar todo el espacio disponible de un Tablespace.
Por medio de un valor, que puede ser en kilobytes o megabytes que el usuario puede usar. Este valor puede ser mayor o menor que el tamaño del Tablespace asignado a él.
Por medio del privilegio UNLIMITED TABLESPACE, se tiene prioridad sobre cualquier cuota dada en un Tablespace por lo que tienen disponibilidad de todo el espacio incluyendo en SYSTEM y SYSAUX.
No se recomienda dar cuotas a los usuarios en los Tablespaces SYSTEM y SYSAUX, pues tipicamente sólo los usuarios SYS y SYSTEM pueden crear objetos en éstos. Tampoco dar cuotas en los Tablespaces Temporal o del tipo Undo.
Ejemplo de la creación de usuario
CREATE USER nombre
IDENTIFIED BY contraseña
[DEFAULT TABLESPACE nombreTableSpace]
[TEMPORARY TABLESPACE nombreTemp]
[QUOTA INT {K|M} | UNLIMITED ON nombreTableSpace]
[PROFILE perfil]
[PASSWORD
EXPIRE]
[ACCOUNT
{LOCK | UNLOCK}]
CREATE USER: Nos permite especificar el nombre del usuario
IDENTIFIED BY: Nos permite especificar su contraseña
DEFAULT TABLESPACE: Definimos el tablespace por defecto. Si
no se especifica se asigna USERS. Para crear un nuevo tablespace.
TEMPORARY TABLESPACE: Definimos el tablespace temporal. Si
no especificamos ninguno se asigna TEMP.
QUOTA: Espacio que el usuario podrá utilizar en el sistema.
Si no se especifica el espacio por defecto es 0 con lo cual el usuario no podrá
crear nada.
PROFILE: Permite especificar el perfil por defecto. Si no se
especifica se asigna
DEFAULT. Es utilizado para controlar el acceso a los
recursos, por ejemplo, el número de sesiones concurrentes, uso de CPU, etc.
PASSWORD EXPIRE: Específica que la contraseña asignada al
usuario expirará, de esta forma, el propio usuario o el DBA deberá asignar una
nueva antes de acceder al sistema.
ACCOUNT LOCK/UNLOCK: Podemos decidir si el usuario tendrá la
cuenta bloqueada o no de forma inicial.
3.4 Espacios para objetos de la base de datos
Los DBMS se basan en archivos para almacenar datos, y estos
archivos, o conjuntos de datos, residen en medios de almacenamiento, o
dispositivos. Una buena parte del trabajo del DBA implicará la planificación
para el almacenamiento real de la base de datos.
Algunas tecnologías de almacenamiento son más adecuadas que otras. Sin embargo, la naturaleza mecánica de la unidad de disco los hace más vulnerables al fracaso de los componentes de otro equipo. Además, las formas en que las unidades de disco son utilizados por las bases de datos pueden hacer que la gestión del almacenamiento impredecibles, como la barra lateral "Modern DBMS de uso de disco“ Puede usarse RAID para mejorar la seguridad de los datos.
Para aplicaciones de misión crítica la integridad de los datos puede ser más importante que la disponibilidad de datos. Si el soporte es poco fiable y un fallo de las causas de corrupción de datos, los datos perdidos puede ser más de un problema que el tiempo de inactividad. Es imperativo, por tanto, que las soluciones de almacenamiento de base de datos para protegerlos a toda costa.
La recuperación de datos desde medios de almacenamiento lleva mucho más tiempo en completarse que la recuperación de datos desde la memoria caché o la memoria.
El rendimiento de la
base de datos depende de la entrada y salida a disco. La cantidad de datos
almacenados es mayor que nunca antes, y los datos se almacenados por más
tiempo.
Algunos DBMS permiten al tamaño de los archivos temporales de expandirse y contraerse de forma automática. Dependiendo del tipo y la naturaleza de las operaciones de base de datos en proceso, esta fluctuación puede provocar picos de uso del disco.
El crecimiento de la capacidad de almacenamiento aumenta aún más la complejidad de la gestión de datos y bases de datos. Muchas organizaciones están implementando nuevas tecnologías de almacenamiento, tales como almacenamiento en red (NAS) y redes de área de almacenamiento (SAN), para ayudar a controlar la cantidad cada vez mayor de almacenamiento necesario para los usos modernos. La gestión del almacenamiento en el entorno dinámico de hoy es una tarea difícil DBA.
Hay muchos problemas de
almacenamiento que deben ser resueltos antes de que un DBA pueda crear una base
de datos. Uno de los temas más importantes es la cantidad de espacio para
permitir la base de datos. El cálculo espacial debe tener en cuenta no sólo
tablas, índices, sino también, y dependiendo del DBMS, el registro de
transacciones. Cada una de estas entidades probablemente requerirá un archivo
separado o conjunto de datos, para el almacenamiento persistente.
3.5 Roles
Por default cuando creamos un usuario desde el Enterprise Manager se le
asigna el permiso de connect, lo que permite al usuario conectarse a la BD y
crear sus propios objetos en su propio esquema. De otra manera, debemos
asignarlos en forma manual.
Para crear un Rol y asignarlo a un usuario se hace de la siguiente manera:
SQL> CREATE ROLE appl_dba;
Opcionalmente, se puede asignar una clave al Rol:
SQL> SET ROLE appl_dba
IDENTIFIED BY app_pwd;
Para asignar este Rol a un usuario:
SQL> GRANT appl_dba TO jperez;
Otro uso común de los roles es asignarle privilegios a nivel de Objetos, por ejemplo, en una Tabla de Facturas en donde sólo queremos que se puedan hacer Querys e Inserts:
SQL> CREATE ROLE consulta;
SQL> GRANT SELECT,INSERT on
analista.factura TO consulta;
Y finalmente asignamos ese rol con este “perfil” a distintos usuarios finales:
SQL> GRANT consulta TO ahernandez;
Nota: Existen algunos roles predefinidos, tales como:
CONNECT, CREATE SESSION, CREATE TABLE, CREATE VIEW, CREATE SYNONYM, CREATE SEQUENCE, CREATE DATABASE LINK, CREATE CLUSTER,
ALTER SESSION, RESOURCE, CREATE
PROCEDURE, CREATE SEQUENCE, CREATE TRIGGER, CREATE TYPE, CREATE CLUSTER, CREATE
INDEXTYPE, CREATE OPERATOR SCHEDULER, CREATE ANY JOB, CREATE JOB, EXECUTE ANY
CLASS, EXECUTE ANY PROGRAM, MANAGE SCHEDULER, etc.
DBA: Tiene la mayoría de los privilegios, no es recomendable asignarlo a usuarios que no son administradores.
SELECT_CATALOG_ROLE: No tiene privilegios de sistema, pero tiene cerca de 1600 privilegios de objeto.
Para consultar los roles definidos y los privilegios otorgados a través
de ellos, utilice las vistas:
SQL> select * from DBA_ROLES;
SQL> select * from
DBA_ROLE_PRIVS order by GRANTEE;
Importancia al momento de crear una base de datos:
Es importante que a la hora de crear una BD el DBA configure y asigne el
espacio de disco que ocupara la BD para que así no haya complicaciones en caso
de que la cantidad de información almacenada sea en volumen muy grande y
llegara a faltar espacio en el disco para ese volumen de información, así como
la importancia de tener bien administrada la BD ya que de no ser así pueden
existir errores que causarían el colapso de dicha BD.
Porque el administrador debe contemplar la configuración y administración del espacio:
El DBA debe de contemplar estos aspectos ya que de lo contrario no
estaría bien el BD ya que no se tiene considerado el espacio de disco que se
ocupara y en dado caso que se requiera más espacio no se podría tener más
espacio ya que en un principio no se consideró ni la configuración ni la
administración del espacio en disco, se tendría que volver a generar un BD con
las especificaciones necesarios para empresa causando pérdidas de dinero y
tiempo para dicha empresa
Roles de usuarios de bases de datos MySQL
En Plesk con MySQL, un usuario puede seleccionar roles para los usuarios
de bases de datos, así como añadir o eliminar privilegios de forma
independiente
A continuación los privilegios de MySQL asignados por omisión a cada
rol.
A continuación se enumeran los privilegios de MySQL asignados por omisión a cada rol.
.
Para modificar el grupo predeterminado de privilegios, edite el
archivo panel.ini y liste los nombres de los privilegios
para cada uno de los roles que desee modificar.
Recuerde que los clientes de Plesk seguirán pudiendo seleccionar más
privilegios que los que usted haya especificado en panel.ini de no
ser que usted lo prohíba de forma expresa (ver información más adelante).
Por ejemplo:
[databaseManagement]
features.roles.mysql.readWrite =
Select,Update,Insert
features.roles.mysql.readOnly =
Select
features.roles.mysql.writeOnly =
Update
Nota: al cambiar los conjuntos de privilegios de un rol (por ejemplo, Lectura y escritura), no se alterarán en modo alguno los privilegios de los usuarios de la base de datos MySQL ya existentes en ese rol. El rol de dichos usuarios pasará automáticamente a ser Personalizado.
Cómo denegar un privilegio a todos los usuarios
Puede darse el caso de que necesite denegar un privilegio determinado
(por ejemplo, el privilegio Delete) a todos los usuarios de bases de datos.
Para denegar un privilegio, especifique la lista de privilegios MySQL del
archivo panel.ini, omitiendo el privilegio que desea denegar.
Por ejemplo:
[databaseManagement]
features.privileges.mysql.dataAccess
= Select, Insert, Update, Delete
features.privileges.mysql.structureAccess = Create,
Drop, Alter, Index, Create Temporary Tables, Lock Tables, Create View, Show
View
Los privilegios especificados se muestran en la IU de Plesk (Sitios web
y dominios > Bases de datos > Administración de
usuarios). Los usuarios podrán conceder o denegar únicamente los privilegios
especificados. Si un privilegio no se encuentra en la lista, Plesk considerará
que su uso por parte de los usuarios de bases de datos está denegado.
Nota: un privilegio pasará a estar denegado únicamente cuando un
usuario de Plesk guarde cambios efectuados en la configuración del usuario de
bases de datos (Sitios web y dominios > Bases de
datos > Administración de usuarios> haga clic en un nombre de
usuario > haga clic en ACEPTAR).
Roles de usuarios de bases de datos de Microsoft SQL Server
A continuación los permisos predeterminados para cada rol en Microsoft
SQL Server
Para modificar el grupo predeterminado de permisos para cada rol, edite
el archivo panel.ini y liste los nombres de los permisos.
Por ejemplo:
[databaseManagement]
features.roles.mssql.readWrite =
db_datareader,db_backupoperator,db_ddladmin
features.roles.mssql.readOnly =
db_datareader,db_backupoperator
features.roles.mssql.writeOnly =
db_datawriter
Nota: Los cambios que realice en el conjunto de permisos de un rol
también afectarán a los usuarios de bases de datos ya existentes. Tanto los
usuarios recién creados como los ya existentes que posean ese rol dispondrán de
los permisos especificados en el archivo panel.ini.
Cómo recuperar los permisos predeterminados de los usuarios de Microsoft
SQL Server
Cada rol de usuario de bases de datos tiene un conjunto de permisos
predeterminado (roles de usuario a nivel de base de datos de SQL Server). Para
restablecer los permisos de los usuarios de bases de datos ya existentes a sus
valores predeterminados (en función de su rol), ejecute el siguiente comando:
%plesk_dir%bin\repair.exe --update-mssql-users-permissions [-database-server <name>] [-database-name <name>]
Nota: Si ha modificado los permisos de un rol (por ejemplo, el
rol Lectura y escritura) en panel.ini, el
comando --update-mssql-users-permissions utilizará el conjunto de
permisos que haya especificado en el archivo, en lugar de restaurar los valores
predeterminados (por ejemplo, el conjunto predeterminado para Lectura y
escritura es db_datareader,db_datawriter,db_backupoperator,db_ddladmin).
Hola
ResponderEliminar