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...);
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;
1 comentario
Hola, tengo una duda. Por qué es aconsejable crear un tablespace para los datos y otro para los índices? Es decir, qué beneficios aporta? o incluso he leído que sería conveniente crear otro para los blob.Gracias. Saludos. - Alexis García
Hola, tengo una duda. Por qué es aconsejable crear un tablespace para los datos y otro para los índices? Es decir, qué beneficios aporta? o incluso he leído que sería conveniente crear otro para los blob.Gracias. Saludos. - Alexis García