jueves, 29 de octubre de 2009

Configurar Oracle XE para que conecte correctamente Forms 6i

Por defecto Oracle XE se instala con el juego de caracteres AL32UTF8, con ese juego de caracteres el cliente de Oracle Forms 6i no conecta con la base de datos, para migrar ese juego de caracteres a UTF8 puro debemos de ejecutar lo siguiente:

sqlplus /nolog
SQL> connect / as sysdba
Conectado.
SQL> shutdown immediate
SQL> startup restrict
SQL> alter database character set internal_use UTF8;
SQL> shutdown immediate
SQL> startup

Hay ciertos índices que Oracle si existen no puede realizarse la conversión ya que dará el siguiente error:


ORA-00604: error occurred at recursive SQL level 1
ORA-54028: cannot change the HIDDEN/VISIBLE property of a virtual column

Podemos ver los índices incompatibles mediante esta SELECT:

SELECT owner, index_name, index_type, table_owner, table_name, status, funcidx_status
  FROM all_indexes
 WHERE index_type NOT IN ('NORMAL', 'BITMAP', 'IOT - TOP')
   AND table_name IN (SELECT UNIQUE (table_name)
                        FROM dba_tab_columns
                       WHERE char_used = 'C');

Hay que borrarlos y luego volver a crearlos una vez convertido a UTF8.

1 comentario:

Unknown dijo...

Muy buen aporte, Me sirvió muchísimo. Muchas gracias. !!