jueves, 2 de febrero de 2012

Cómo activar el particionado en Oracle

Digamos que exportaste algunos datos con exp sin mensajes de error o advertencias de una base de datos, y cuando estás importándolos en otra base de datos sale un error ORA-00439:

Connected to: Oracle Database 11g Enterprise Edition Release 11.1.0.7.0 - 64bit Production

Export file created by EXPORT:V10.02.01 via direct path
import done in WE8ISO8859P1 character set and AL16UTF16 NCHAR character set
export client uses US7ASCII character set (possible charset conversion)
. importing MYUSER's objects into MYUSER
. . importing table "MYTABLE"
0 rows imported
. . importing table "ATABLE"
0 rows imported
. . importing table "ONETABLE"
22 rows imported
IMP-00017: following statement failed with ORACLE error 439:
"CREATE TABLE "BADTABLE" ("LOGDATE" CHAR(8), "SOMEINFO" CHAR(6)
"ENABLE) PCTFREE 10 PCTUSED 40 INITRANS 1 MAXTRANS 255 TABLESPACE "MYTABLES"
"PACE" LOGGING PARTITION BY RANGE ("LOGDATE" ) (PARTITION "ONE""
" VALUES LESS THAN ('20050301') PCTFREE 10 PCTUSED 40 INITRANS 1 MAXTRANS 2"
"55 STORAGE(INITIAL 655360 FREELISTS 1 FREELIST GROUPS 1 BUFFER_POOL DEFAULT"
") TABLESPACE "MYTABLESPACE" LOGGING NOCOMPRESS, PARTITION "TWO" VALUE"
"S LESS THAN ('20040301') PCTFREE 10 PCTUSED 40 INITRANS 1 MAXTRANS 255 STO"
"RAGE(INITIAL 655360 FREELISTS 1 FREELIST GROUPS 1 BUFFER_POOL DEFAULT) TABL"
"ESPACE "MYTABLESPACE" LOGGING NOCOMPRESS )"
IMP-00003: ORACLE error 439 encountered
ORA-00439: feature not enabled: Partitioning

Este error significa que tienes que activar el particionado en el software de bases de datos de Oracle para usar esta característica, y si no lo hiciste al momento de instalarlo puedes activarlo con estos comandos:

cd $ORACLE_HOME/rdbms/lib
make -f ins_rdbms.mk part_on
make -f ins_rdbms.mk ioracle

Sería mejor dar de baja todas las instancias de Oracle antes de hacer esto; a continuación hay un ejemplo de activar y revisar el particionado en el software de bases de datos Oracle 11g:

$ cd $ORACLE_HOME/rdbms/lib
$ make -f ins_rdbms.mk part_on
/usr/bin/ar d /oracle_11g/product/11.1.0/rdbms/lib/libknlopt.a ksnkkpo.o
/usr/bin/ar cr /oracle_11g/product/11.1.0/rdbms/lib/libknlopt.a /oracle_11g/product/11.1.0/rdbms/lib/kkpoban.o
$ make -f ins_rdbms.mk ioracle
chmod 755 /oracle_11g/product/11.1.0/bin

- Linking Oracle
rm -f /oracle_11g/product/11.1.0/rdbms/lib/oracle
gcc -o /oracle_11g/product/11.1.0/rdbms/lib/oracle -L/oracle_11g/product/11.1.0/rdbms/lib/ -L/oracle_11g/product/11.1.0/lib/ -L/oracle_11g/product/11.1.0/lib/stubs/ -Wl,-E /oracle_11g/product/11.1.0/rdbms/lib/opimai.o /oracle_11g/product/11.1.0/rdbms/lib/ssoraed.o /oracle_11g/product/11.1.0/rdbms/lib/ttcsoi.o -Wl,--whole-archive -lperfsrv11 -Wl,--no-whole-archive /oracle_11g/product/11.1.0/lib/nautab.o /oracle_11g/product/11.1.0/lib/naeet.o /oracle_11g/product/11.1.0/lib/naect.o /oracle_11g/product/11.1.0/lib/naedhs.o /oracle_11g/product/11.1.0/rdbms/lib/config.o -lserver11 -lodm11 -lcell11 -lnnet11 -lskgxp11 -lsnls11 -lnls11 -lcore11 -lsnls11 -lnls11 -lcore11 -lsnls11 -lnls11 -lxml11 -lcore11 -lunls11 -lsnls11 -lnls11 -lcore11 -lnls11 -lclient11 -lvsn11 -lcommon11 -lgeneric11 -lknlopt `if /usr/bin/ar tv /oracle_11g/product/11.1.0/rdbms/lib/libknlopt.a | grep xsyeolap.o > /dev/null 2>&1 ; then echo "-loraolap11" ; fi` -lslax11 -lpls11 -lrt -lplp11 -lserver11 -lclient11 -lvsn11 -lcommon11 -lgeneric11 `if [ -f /oracle_11g/product/11.1.0/lib/libavserver11.a ] ; then echo "-lavserver11" ; else echo "-lavstub11"; fi` `if [ -f /oracle_11g/product/11.1.0/lib/libavclient11.a ] ; then echo "-lavclient11" ; fi` -lknlopt -lslax11 -lpls11 -lrt -lplp11 -ljavavm11 -lserver11 -lwwg `cat /oracle_11g/product/11.1.0/lib/ldflags` -lncrypt11 -lnsgr11 -lnzjs11 -ln11 -lnl11 -lnro11 `cat /oracle_11g/product/11.1.0/lib/ldflags` -lncrypt11 -lnsgr11 -lnzjs11 -ln11 -lnl11 -lnnz11 -lzt11 -lztkg11 -lmm -lsnls11 -lnls11 -lcore11 -lsnls11 -lnls11 -lcore11 -lsnls11 -lnls11 -lxml11 -lcore11 -lunls11 -lsnls11 -lnls11 -lcore11 -lnls11 -lztkg11 `cat /oracle_11g/product/11.1.0/lib/ldflags` -lncrypt11 -lnsgr11 -lnzjs11 -ln11 -lnl11 -lnro11 `cat /oracle_11g/product/11.1.0/lib/ldflags` -lncrypt11 -lnsgr11 -lnzjs11 -ln11 -lnl11 -lnnz11 -lzt11 -lztkg11 -lsnls11 -lnls11 -lcore11 -lsnls11 -lnls11 -lcore11 -lsnls11 -lnls11 -lxml11 -lcore11 -lunls11 -lsnls11 -lnls11 -lcore11 -lnls11 `if /usr/bin/ar tv /oracle_11g/product/11.1.0/rdbms/lib/libknlopt.a | grep "kxmnsd.o" > /dev/null 2>&1 ; then echo " " ; else echo "-lordsdo11"; fi` -L/oracle_11g/product/11.1.0/ctx/lib/ -lctxc11 -lctx11 -lzx11 -lgx11 -lctx11 -lzx11 -lgx11 -lordimt11 -lclsra11 -ldbcfg11 -lhasgen11 -lcore11 -lskgxn2 -locr11 -locrb11 -locrutl11 -lhasgen11 -lcore11 -lskgxn2 -loraz -lsnls11 -lnls11 -lcore11 -lsnls11 -lnls11 -lcore11 -lsnls11 -lnls11 -lxml11 -lcore11 -lunls11 -lsnls11 -lnls11 -lcore11 -lnls11 -lsnls11 -lunls11 -lsnls11 -lnls11 -lcore11 -lsnls11 -lnls11 -lcore11 -lsnls11 -lnls11 -lxml11 -lcore11 -lunls11 -lsnls11 -lnls11 -lcore11 -lnls11 -laio `cat /oracle_11g/product/11.1.0/lib/sysliblist` -Wl,-rpath,/oracle_11g/product/11.1.0/lib -lm `cat /oracle_11g/product/11.1.0/lib/sysliblist` -ldl -lm -L/oracle_11g/product/11.1.0/lib
test ! -f /oracle_11g/product/11.1.0/bin/oracle ||\
mv -f /oracle_11g/product/11.1.0/bin/oracle /oracle_11g/product/11.1.0/bin/oracleO
mv /oracle_11g/product/11.1.0/rdbms/lib/oracle /oracle_11g/product/11.1.0/bin/oracle
chmod 6751 /oracle_11g/product/11.1.0/bin/oracle
$ sqlplus / as sysdba

SQL*Plus: Release 11.1.0.7.0 - Production on Thu Jun 9 17:33:48 2011

Copyright (c) 1982, 2008, Oracle. All rights reserved.


Connected to:
Oracle Database 11g Enterprise Edition Release 11.1.0.7.0 - 64bit Production
With the Partitioning option

SQL> column PARAMETER format a30
SQL> column VALUE format a30
SQL> select * from v$option where parameter = 'Partitioning';

PARAMETER VALUE
------------------------------ ------------------------------
Partitioning TRUE

Más información:

ORA-00439: feature not enabled: Partitioning

2 comentarios:

  1. Como lo hago si tengo instalado oracle en windows?

    ResponderBorrar
    Respuestas
    1. Lo siento pero la verdad es que no tengo idea, yo no uso Windows ya que mi especialidad es UNIX, ni siquiera en mi casa lo uso. =)

      Borrar