CREACION DE PARTICIONES
Enviado por Joel Rs • 22 de Abril de 2019 • Apuntes • 1.030 Palabras (5 Páginas) • 101 Visitas
CREACION DE PARTICIONES
El paquete soporta generar nuevas particiones por Hash, Lista y Rango, soportando particiones compuestas. Además que puede generar particiones intermedias para el caso de las particiones por Rango realizando la detección automática del las partición superior para la operación de split.
Especificaciones
procedure add_partition(
ownname in varchar2,
tabname in varchar2,
newparname in varchar2,
newvalues in part_values,
update_indexes in boolean default true);
procedure add_partition(
tabname in varchar2,
newparname in varchar2,
newvalues in part_values,
update_indexes in boolean default true);
procedure add_partition(
ownname in varchar2,
tabname in varchar2,
newvalues in part_values,
update_indexes in boolean default true);
procedure add_partition(
tabname in varchar2,
newvalues in part_values,
update_indexes in boolean default true);
- ownname: Nombre del esquema, si se omite utiliza el propietario del paquete o el configurado en la sesión con: alter session set current_schema
- tabname: Nombre de la tabla sobre la cual se creará la nueva partición.
- newparname: Nombre de la partición que será generada. Si el parámetro se omite se genera un nombre basado en los valores de la llave de partición
- newvalues: Arreglo PL-SQL para definir el criterio de particionamiento, para particiones por HASH el atributo debe ser nulo.
- update_indexes: Permite actualizar los índices durante la creación de la partición para que no quede invalida.
Particionamiento por Hash
Genera la tabla tabla_hash con particionamiento por HASH
create table tabla_hash (
f1 number not null,
f2 varchar2(20) not null
) partition by hash (f1) (
partition hash1,
partition hash2
);
create index idx_tabla_hash on tabla_hash (f1) local;
Generar nueva particion HASH3 para la tabla tabla_hash, para el caso especifico de este tipo de particionamiento es necesario siempre especificar el nombre de la partición.
begin
partmgr.add_partition(
tabname => 'TABLA_HASH',
newparname => 'HASH3');
end;
/
Particionamiento por Lista
Se soporta particionamiento por lista y lista compuesta. Como ejemplo se genera la siguiente tabla particionada por lista.
create table tabla_lista_1 (
f1 char(1) not null,
f2 varchar2(30) not null
) partition by list (f1) (
partition p_A values ('A'),
partition p_B values ('B')
);
Para agregar otra partición es muy similar al particionamiento por HASH solo que se tiene que especificar el criterio de particionamiento. A través del parámetro newvalues que es del tipo de dato de part_values.
begin
partmgr.add_partition(
tabname => 'TABLA_LISTA_1',
newparname => 'P_C',
newvalues => part_values(
partmgr.val('C'))
);
end;
/
El tipo de dato part_values permite asignar un criterio de particionamiento respetando el tipo de dato que se utilizará para evaluar y comparar con otras particiones existentes, es muy importante que el criterio de particionamiento respete el tipo de datos de la partición, como se ve en el ejemplo anterior, el criterio de particionamiento es de tipo CHAR y el valor introducido en el procedimiento PARTMGR.ADD_PARTITION es de tipo CHAR/VARCHAR2 partmgr.val('C')
En el siguiente ejemplo se crea una partición un tipo de dato NUMBER.
...