Dudas sobre tablespace

Y buenos días a todos, soy nuevo en esto de oracle 10g; quisiera que me brinden algo de información sobre las tablespace. Si las tablespace son los esquemas (base de datos), como puedo insertar o agregar dentro de una tablespace mis objectos (table, wien, store procedure...);

1 respuesta

Respuesta
1
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 y otro temporal. 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 solamente por el usuario PRUEBA.
Este usuario PRUEBA puede crear una tabla llamada CLIENTES, y si no se especifica el tablespace a usar, oracle pondrá el tablespace por defecto, en este caso DATOS.
Luego se puede crear un índice sobre dicha tabla llamado I_CLIENTES y se puede especificar que en vez de usar el tablespace por defecto, use el tablespace INDICES.
Después se puede crear un procedimiento P_ALTA, el cual se crearía en el tablespace por defecto DATOS.
Al final tendríamos el siguiente esquema: Usuario PRUEBA con 3 tablespaces (TEMPORAL, DATOS, INDICES), con una tabla CLIENTES en DATOS y un indice I_CLIENTES en INDICES, un procedimiento P_ALTA en DATOS.
PD. Es una muy buena práctica tener separados en distintos tablespaces los datos y los indices.
Gracias anubina, seria mucho mejor si la aclaración seria con algunos ejemplos... si no fuera mucho pedir...
Por supuesto, el ejemplo anterior implementado en ORACLE. Para ello tendrás que conectarte como administrador: sqlplus.exe sys/password@sid_bd AS SYSDBA
Primeramente crearemos los datafileS, es decir, los ficheros físicos que almacenarán en el disco duro la información:
Create file
Tablespace datos
Datafile 'datos.DBF' size 100M
Autoextend on
online;
--
Create file
Tablespace indices
Datafile 'indices.DBF' SIZE 10M
Autoextend on
online;
--
Create bigfile temporary
Tablespace TEMPORAL
Tempfile 'TEMPORAL.DBF' size 1G
autoextend on;
?
Posteriormente creamos el usuario y le asignamos dos roles para que dicho usuario pueda hacer lo básico:
?
Create USER PRUEBA
Identified BY PRUEBA
default tablespace datos
Quota unlimited on datos
Temporary tablespace TEMPORAL
account unlock;
--
grant connect to PRUEBA;
grant resource to PRUEBA;
Nos conectamos como el usuario PRUEBA/PRUEBA@sid_bd, y creamos la tabla con su indice (observa para la clave principal también se pone en indices, ya que es propiamente un indice, adicionalmente se crea otro indice):
create table CLIENTES (
DNI char(3) not null,
NOMBRE varchar2(30) not null
) tablespace datos;
--
alter table CLIENTES add constraint PK_CLIENTES primary key (DNI) using index tablespace indices;
create index I_CLIENTES on CLIENTES (NOMBRE) tablespace indices;
Creamos un procedimiento, en este caso no se puede especificar tablespace, por lo que lo pone en el tablespace por defecto del usuario, en este caso datos.
create or replace procedure alta is
begin
null;
end alta;

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas