3.1 Definición de espacio de almacenamiento
definidos que deben ser conocidos para poder comprender la
forma en la que se almacenan los
datos. Vamos a ver la diferencia entre bloque, extensión, segmento y espacio
de tablas.
Bloque: Se tratan de la unidad
más pequeña. Generalmente debe 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.
El almacenamiento de los objetos
de la base de datos (tablas e índices fundamentalmente) no se realiza sobre el
archivo o archivos físicos de la base de datos, sino que se hace a través de estructuras lógicas
de almacenamiento que tienen por debajo a esos archivos físicos, 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.
·
Controlar la disponibilidad de los datos de la base de datos, poniendo
fuera de uso alguno de esos espacios de
tablas individualmente.
·
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. Por lo tanto, una base de datos
Oracle se compone lógicamente de tablespaces, y físicamente de datafiles. Su creación es sencilla, con la sentencia GREAT'', TABLESPACE: CREATE TABLESPACE usuarios DATAFILE
`datal.ora' SIZE 50M
También es sencillo
ampliar el espacio
destinado a un tablespace utilizando el comando ALTER TABLESPACE:
·
ALTER TABLESPACE usuarios ADD DATAFILE 'data2.ora' SIZE 25M
Para hacer más grande
una base de datos, las opciones disponibles son tres:
1. Añadir más ficheros de datos a tablespaces existentes, como acabamos de ver.
2.
Crear tablespaces nuevos con sus correspondientes ficheros de datos asociados.
3.
Permitir que el tablespace crezca dinámicamente en función de sus necesidades de espacio.
Para ello existe una sintaxis
asociada a las sentencias CREATE o ALTER DATABASE/TABLESPACE que permite añadir
ficheros con propiedades de extensión dinámica, como vemos en el siguiente ejemplo:
·
ALTER DATABASE: A1’AF1LE’clata2.ora’ AUTOEXTEND ON NEXT 20M MAXSIZE 1000M que
activa la propiedad
de a auto extensión (AUTO EXTEND
= ON) y hace que el fichero
pueda ir adquiriendo extensiones de 20M (20 megabytes) conforme va siendo
necesario, con un tamaño máximo
de 1000M.
Cada base de datos contiene
un tablespace llamado
SYSTEM que es creado
|
automáticamente al crear la base de datos. Contiene
las tablas del diccionario de datos
para la base de datos en cuestión. Es recomendable no
cargar datos de usuario en SYSTEM, para dejarlos
como espacio de objetos del sistema.
Si además los datos de usuario están en tablespaces sitos
en otros dispositivos, el rendimiento mejorará
porque las tablas del diccionario de datos se acceden frecuentemente y por lo tanto son un cuello
de botella potencial desde el punto de vista del acceso a
disco.
A la hora de estimar el espacio necesario para cl
tablespace sys-nsm hay que tener en
cuenta que las unidades de programación PL-SQL (entorno de programación SQL proporcionado por Oracle) almacenadas en la base de datos (procedimientos, paquetes,
disparos y funciones)
almacenan sus datos en SYSTEM.
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.
3.2.
Definición y creación del espacio asignado para cada base de datos.
Una base de datos se divide en unidades lógicas denominadas
TABLESPACES. Un tablespace no es un archivo físico
en el disco, simplemente es el nombre
que tiene un conjunto
de propiedades de almacenamiento que se aplican a los objetos (tablas, secuencias…) que se van a crear en la base
de datos bajo el tablespace indicado (tablas, secuencias…). Un espacio de tablas puede pertenecer sólo a una BD.
Un objeto en la base de datos debe estar almacenado
obligatoriamente dentro de un
tablespace.
Cuando se crea una tabla se debe indicar
el espacio de tablas (Tablespace) al que se destina. Por defecto se depositan en el
espacio de tablas SYSTEM.
Cuando se crea un nuevo Tablespace, la capacidad total del tablespace coincidirá con la suma
de los tamaños de los archivos
de datos (datafiles) asociados.
Por ejemplo:
create tablespace app_data
datafile
‘/u03/oradata/ userdata01. dbf ’ size 100m,
datafile ‘/u03/oradata/ userdata02. dbf ’ size 250m;
En este caso se crea un tablespace app_data
asociado a dos archivos con una capacidad total de 350M.
Si se quiere incrementar el tamaño de la base, se puede hacer incrementando el tamaño de un archivo de datos (data files) de un Tablespace en particular.
Por ejemplo:
alter database
datafile ‘/u03/oradata/ userdata02. dbf’ resize 200m;
Si no se tiene espacio libre en la partición del disco,
entonces se puede agregar otro archivo
de datos (data files) sobre otra partición de disco para un Tablespace en particular.
Por ejemplo:
alter tablespace app_data add datafile
‘/u01/oradata/ userdata03. dbf’ size 200m;
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 (o
Secuenciales): 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.
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.
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…
sysdevice.
Para especificar un tamaño (en este ejemplo,
4MB) para una base de datos que se va a almacenar
en una ubicación predeterminada, utilice
on default = size de esta forma:
create database newpubs
on default = 4
Para situar la base de datos en dispositivos específicos,
dé el nombre del dispositivo o
dispositivos en que desea almacenarla. Como la sintaxis indica, 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. En otras palabras, deben haberse inicializado con disk init.
La instrucción siguiente crea la base de datos newdb y
asigna 3MB en mydata y 2MB en newdata.
Como en el ejemplo anterior,
la base de datos y el diario de transacciones no se separan:
create database newdb on mydata
= 3, newdata = 2
Nota: A menos que cree una base de datos pequeña o que no
sea crucial, sitúe siempre el diario
en un dispositivo de base de
datos aparte.
Si la cantidad de espacio solicitada a un dispositivo
específico de base de datos no está disponible, el DBMS crea la
base de datos con tanto espacio como sea posible
en cada dispositivo y muestra un mensaje informando el
espacio asignado en cada uno (Esto
no se considera un error).
Si hay menos
espacio del mínimo necesario para una base de datos en el dispositivo
especificado (o en el predeterminado, si no se especifica un nombre), el comando create
database falla.
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 quota
PUNTOS
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.
Recomendación
No se recomienda dar cuotas a los usuarios
en los Tablespaces SYSTEM y SYSAUX, pues típicamente sólo los usuarios SYS y
SYSTEM pueden crear objetos en éstos. Tampoco dar cuotas en los Tablespaces Temporal o del tipo Undo.
Ejemplo 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: Especifica 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.
Tablespace
·
es una ubicación de almacenamiento
donde pueden ser guardados los datos correspondientes
a los objetos de una base de datos. Este provee una capa de abstracción entre
los datos físicos y lógicos y sirve
para asignar espacio
para todos los segmentos administrados del sistema
de gestión de base de
·
Un segmento es un objeto de la base
de datos el cual ocupa espacio físico, como
por ejemplo los datos de una tabla y los índices. Una vez creado, un tablespace puede ser referido por su
nombre cuando se crean segmentos de la base de
datos.
Características tablespace
·
Nombre: MiTablespace
·
Tamaño máximo 300MB
·
Creamos un nuevo usuario aitor con contraseña P@ssw0rd. Este usuario será el que
trabajará con este nuevo tablespace.
Ejemplo
·
CREATE TABLESPACE MiTablespace
DATAFILE 'D:\tabspace\mitablespace.DBF' SIZE 300M;
·
CREATE USER aitor IDENTIFIED BY
P@ssw0rd DEFAULT TABLESPACE MiTablespace;
·
GRANT dba, connect,
resource TO aitor;
·
GRANT CREATE ANY VIEW TO aitor WITH
ADMIN OPTION;
·
//Al acceder al sistema con el usuario
aitor y contraseña P@ssw0rd, ya
podremos trabajar con el nuevo tablespace creado.
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 utilizadas 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 pueden 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.
Un es un conjunto de privilegios que se asigna a un usuario o grupo de usuarios para permitir realizar
determinadas tareas y gestione
determinadas sesiones.
Los roles controlan a que secciones del panel del
administrador puedan acceder los distintos tipos de usuarios.
·
Puede usar los roles de sistema
para signar subconjuntos de privilegios administrativos a otros usuarios.
De este modo podrá delegar
tareas administrativas rutinarias a otros usuarios.
Por ejemplo:
Puede otorgar
a un profesor acceso a las páginas de administración de usuarios.
·
Solo un usuario con todos los privilegios de administrador puede asignar privilegios a los roles del sistema.
·
Los múltiples roles del sistema
conceden al usuario
la suma de sus privilegios.
ACERCA DE
LOS ROLES PREDETERMINADOS DEL SISTEMA
Cada rol de sistema tiene un grupo de privilegios
predefinidos. Se pueden agregar o eliminar privilegios en todos estos roles excepto
en los de administrador del sistema e invitado.
Los Roles, que son simplemente un conjunto de privilegios
que se pueden otorgar a un usuario
o a otro Rol. De esa forma
se simplifica el trabajo del DBA en esta tarea.
Por default cuando creamos un usuario desde el Enterprise
Manager se le asigna el permiso de
connect, lo que permite al usuario conectarse al 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
No hay comentarios.:
Publicar un comentario