You are on page 1of 8

CERTIFICACION ORACLE 10 FABIO ROJAS

PORQUE SIEMPRE SE CREAN LOS USUARIO SYS Y SYSTEM

Iniciamos con una pregunta poco usual cuando empezamos a estudiar oracle, los que
tienen ya un poco de estudio en oracle diran son los usuarios administradores y manejan y
llevan el control de todo lo que pasa en la base de datos y es cierto… pero será que
podemos crear un usuario darle los privilegios de super usuario y eliminar a system o a sys
un poco curioso para empezar pero bueno veamos algo de teorica básica y masticada para
entender algo simple de donde se guarda nuestra base de datos… que capacidad tiene …
que pasa si su capacidad esta por llegar al limite bueno esos conceptos creo que se debe
tener claros antes de iniciar el repaso de sql.

La unidad básica de almacenamiento de una base de datos Oracle es la Tabla, sin embargo,
para tener una mejor estructuración de la información dentro de la base de datos Oracle,
las tablas se agrupan a su vez dentro de los Usuarios, llamados también Esquemas. Por lo
tanto, un usuario puede tener cero o muchas tablas y se dice que es el propietario de
dichas tablas. Además, una tabla pertenece a un solo usuario o esquema.

Cada vez que se crea una base de datos nueva, hay una serie de elementos que no pueden
faltar en ella y siempre se crean. Los dos principales elementos que se crean son el usuario
SYS y el usuario SYSTEM. Toda base de datos Oracle tiene siempre estos dos usuarios.

¿Por qué se crean estos dos usuarios automáticamente? Para poder gestionar la base de
datos recién creada, el sistema Oracle necesita tener información sobre las tablas que
existen en la base de datos, los usuarios que existen, los índices que se van creando y
borrando, la cantidad de datos que hay en cada tabla, etc. Por lo tanto, necesita unas tablas
en las que ir almacenando toda esta información. A este conjunto de tablas se le llama
diccionario de la base de datos y, como hemos dicho, toda tabla de una base de datos
Oracle debe pertenecer a un usuario, por eso se crean siempre estos dos usuarios
especiales, SYS y SYSTEM que son los propietarios de las tablas del diccionario de la base
de datos y, por lo tanto, son lo más importante para que funcione correctamente la base de
datos. Si por algún error se borraran tablas de alguno de estos usuarios especiales, se
podría corromper toda la base de datos.

Lo normal en los proyectos informáticos es que, una vez que se crea una base de datos
Oracle vacía, es decir, solamente existen estos dos usuarios con sus tablas, se crean nuevos
usuarios y en cada uno de esos usuarios se van creando las tablas necesarias para cada
proyecto.

Para crear un nuevo usuario, se le debe indicar un nombre, una contraseña, un tablespace
por defecto en el que se crearán todas las tablas de dicho usuario y un tablespace temporal
en el que se ejecutarán las select que necesitan de ordenaciones.

La sentencia podría ser como la que sigue:

Create user nombre_de_usuario identified by pasword_de_usuario


default tablespace nombre_tablespace_default
temporary tablespace nombre_tablespace_temporal;

Si por cualquier motivo queremos borrar un usuario deberemos usar el comando drop,
pero si ya hemos creado tablas en este usuario, Oracle no nos dejará, nos indicará este
CERTIFICACION ORACLE 10 FABIO ROJAS

hecho y, si queremos borrar el usuario y todas sus tablas debemos añadir la coletilla
"cascade" a la sentencia.

Drop user nombre_de_usuario;

Que tablespaces tiene oracle al momento de instalarlo:

SELECT tablespace_name
FROM dba_data_files b
WHERE tablespace_name NOT LIKE 'TEMP%'
GROUP BY b.tablespace_name;

TABLESPACE_NAME
SYSAUX
UNDOTBS1
USERS
SYSTEM
EXAMPLE

SYSAUX:
Es un tablespace que nace en 9i para dar soporte a los diferentes features
de Oracle que necesitan crear segmentos dentro de la base de datos, por
ejemplo AWR en 10g.

UNDOTBS1: por ahora no lo necesitamos conocer

USERS:
se usa para trabajar en el aplicaciones en desarrollo

SYSTEM:
CERTIFICACION ORACLE 10 FABIO ROJAS

Cuando se crea una base de datos es obligatorio crear un Tablespace


inicial en el que se van a crear los usuarios Sys y system
automáticamente. Estos usuarios son los que tienen la información
necesaria para el buen funcionamiento y podamos hacer todo tipo de
operaciones como: crear nuevos usuario o nuevos tablespaces etc.En el
residen todos los objetos de Sys y System por eso es recomendable, mas
bien obligatorio que a nuestros usuarios le asignemos un tablespace
distinto a System para eso hay que crear un tablespace.

Primero aclaremos algunos conceptos:

TABLESPACE: Almacén lógico de los ficheros de la BD. La BD posee ficheros


(datafiles) donde almacena toda la información (objetos); estos ficheros deben
tener una estructura lógica, que es la que lo establece el tablespace.

USUARIO: Es el usuario propietario de los objetos, tiene asignado una cantidad de


espacio en un tablespace, o puede tener varios tablespace (compartidos o de uso
exclusivo).

ESQUEMA: Concepto en el cual se indica cual es el ámbito de un usuario, es decir,


el esquema es cuanto abarca un usuario, pj. cuantos objetos tiene, que permisos,
que tablespaces posee...

OBJETO: Cualquier cosa que se pueda crear/eliminar: Usuarios, tablas,


procedimientos, indices, tipos, tablespaces…

Al crear un usuario, generalmente se le asigna un tablespace por defecto (dicho


tablespace por defecto es system) y otro temporal (que también es system).
Cuando dicho usuario crea tablas, indices, paquetes... se van almacenando en el
tablespace indicado por defecto.

Cuando el usuario hace consultas, los resultados temporales se almacenan en el


tablespace temporal.

Algunos objetos permiten indicar en qué tablespace se quieren poner; pj. puedo
crear el usuario PRUEBA que tendría por defecto el tablespace temporal
TEMPORAL y por defecto un tablespace DATOS. luego puedo crear otro tablespace
llamado INDICES que sería usado sólamente por el usuario PRUEBA.

Creamos el tablespace datos:


CERTIFICACION ORACLE 10 FABIO ROJAS

CREATE TABLESPACE datos


DATAFILE ‘C:\oradata\orcl\datos1.dbf’
SIZE 100M
AUTOEXTEND off
ONLINE;

Creamos tablespace temporal:

CREATE TEMPORARY TABLESPACE temporal


TEMPFILE ‘C:\oradata\orcl\temporal01.dbf’
SIZE 1000 M
AUTOEXTEND on;

Comprobamos que se crearon :

select TABLESPACE_NAME from user_tablespaces;

TABLESPACE_NAME
SYSTEM
UNDOTBS1
SYSAUX
TEMP
USERS
EXAMPLE
DATOS
TEMPORAL

PD. Es una muy buena práctica tener separados en distintos tablespaces los
datos y los indices.

GESTION USUARIOS:
CERTIFICACION ORACLE 10 FABIO ROJAS

Sintaxis:

CREATE USER NOMBRE_USUARIO


IDENTIFIED BY CLAVE_ACCESO
[DEFAULT TABLESPACE ESPACIO_TABLA]
[TEMPORARY TABLESPACE ESPACIO_TABLA]
[QUOTA {ENTERO {K | M} | UNLIMITED } ON ESPACIO_TABLA]
[PROFILE PERFIL];

DEFAULT TABLESPACE= Asigna a un usuario el tablespace por defecto para almacenar los
objetos que cree. Si no se asigna ninguno, el tablespace por defecto es SYSTEM.

TEMPORARY TABLESPACE= Especifica el nombre del tablespace para trabajar temporales. Si no


se especifica ninguno, el tablespace por defecto es SYSTEM.

QUOTA= Asigna un espacio en megabites o kilobites en el tablespace asignado. Si no se


especifica esta cláusula, el usuario no tiene cuota asignada y no podrá crear objetos en el
tablespace. Para tener espacio y acceso ilimitad a un tablespace es:

GRANT UNLIMITED TABLESPACE NOMBRE_TABLESPACE;

El nombre de usuario no debe superar 30 caracteres no debe tener caracteres


especiales y debe iniciar con una letra.

Un método de autentificación. El mas común es una clave o password, pero


Oracle 10g soporta otros métodos (como biometric, certificado y
autentificación por medio de token).

Un Tablespace default, el cual es donde el usuario va a poder crear sus objetos


por defecto, sin embargo, esto no significa que pueda crear objetos, o que
tenga una cuota de espacio. Estos permisos se asignan de forma separada,
salvo si utiliza el privilegio RESOURCE el que asigna una quota unlimited,
incluso en el Tablespace SYSTEM! Sin embargo si esto ocurre, ud. puede
posteriormente mover los objetos creados en el SYSTEM a otro Tablespace.

Un Tablespace temporal, donde el usuario crea sus objetos temporales y


hace los sort u ordenamientos.

Un perfil o profile de usuario, que son las restricciones que puede tener
su cuenta (opcional).
CERTIFICACION ORACLE 10 FABIO ROJAS

CREATE USER Fabio IDENTIFIED BY Fabio

Veamos los tablespace asignados por oracle por defecto con referente al
usuario Fabio creado anteriormente:

Select * FROM dba_users


WHERE USERNAME = 'FABIO'

Bueno en este caso mi servidor de base de datos tiene por defecto el


tablespace para datos como USERS y el tablespace temporal como TEMP para
que usuario quede con los tablespace creados por nosotros debemos hacer:

ALTER USER Fabio


DEFAULT TABLESPACE datos
TEMPORARY TABLESPACE temporal;

Volvemos a verificar:

Select * FROM dba_users


WHERE USERNAME = 'FABIO'

Ahora si mi usuario Fabio ya tiene asignados los tablespaces que definí con
anterioridad… si para cada usuario quiero que automáticamente le asigne
dichos tablespace hacemos lo siguiente:

ALTER DATABASE DEFAULT TABLESPACE datos;


ALTER DATABASE DEFAULT TEMPORARY TABLESPACE temporal;
CERTIFICACION ORACLE 10 FABIO ROJAS

Creamos otro usuario nelima

CREATE USER nelima


IDENTIFIED BY nelima;

Verificamos con que tablespace se le asigno:

Select * FROM dba_users


WHERE USERNAME = 'NELIMA'

Ok cada vez que creemos un usuario le asigna automáticamente el tablespace


que le definimos.

Recordemos que el Tablespace temporal es donde se almacenan operaciones


de ordenamiento. Estas incluyen las cláusulas ORDER BY, GROUP BY, SELECT
DISTINCT, MERGE JOIN, o CREATE INDEX (también es utilizado cuando se
crean Tablas temporales).

CREATE USER fabio IDENTIFIED BY Fabio


DEFAULT TABLESPACE datos
TEMPORARY TABLESPACE temporal;

Que pasa si nuestro tablespace de datos de 100 Megas esta apunto de llenarse
:) para eso podemos hacer dos cosas:

1). redimensionar el tamaño del tablespace

2). Crear otro Datafile para ese tablespace


CERTIFICACION ORACLE 10 FABIO ROJAS

ALTER DATABASE
DATAFILE 'C:\oradata\orcl\datos1.dbf'
RESIZE 200 M

ALTER TABLESPACE DATOS


ADD DATAFILE 'C:\oradata\orcl\datos2.dbf'
SIZE 50M

You might also like