sexta-feira, setembro 08, 2006

Oracle XE: ORA-12899: Valor muito grande para a coluna...

*******************************************************************
Estou com o seguinte problema: Instalei o Oracle 10g XE e criei
uma
> tabela com um campo que suporta 30 caracteres - varchar2(30) - e
estou
> tentando inserir a seguinte linha mas dá um erro que segue abaixo:
>
> este comando funciona normal
> CREATE TABLE operacao_nota
> (
> codigo NUMERIC(8) NOT NULL,
> descricao VARCHAR2(30) NOT NULL,
> CONSTRAINT pk_operacao_nota_codigo PRIMARY KEY (codigo)
> );
*******************************************************************

Este erro ocorreu pq o valor de NLS_CHARACTERSET está como AL32UTF8.

Se alterar o valor para WE8MSWIN252 o erro deixa de ocorrer.

No charset "AL32UTF8", o 32 significa qua a base de dados ao armazenar caracteres acima de ASCII-127 (ie, caracteres acentuados, e especiais como o sinal de euro - NÃO É só "vogais e consoantes"!! ), vai poder usar até 32 bits (4 bytes) para esses
caracteres, e o datatype VARCHAR2(30) está reservando apenas 30
bytes.

Fonte

sexta-feira, setembro 01, 2006

Orace 9i: How to recover from error ORA-27041: unable to open file

The error:


*** 2006-05-29 17:41:40.000
*** SESSION ID:(2.1) 2006-05-29 17:41:40.000
ORA-01157: cannot identify/lock data file 11 - see DBWR trace file
ORA-01110: data file 11: 'O:\ORACLE\ORA921\DATABASE\HISTORICO1'
ORA-27041: unable to open file
OSD-04002: incapaz de abrir o ficheiro
O/S-Error: (OS 2) The system cannot find the file specified.


1)
SQL> ALTER DATABASE BACKUP CONTROLFILE TO TRACE;

The trace file is created in the location specified by the USER DUMP DEST initialization parameter.


2)
SHUTDOWN DATABASE;

STARTUP NOMOUNT
CREATE CONTROLFILE REUSE DATABASE "DBMRK" NORESETLOGS NOARCHIVELOG
-- SET STANDBY TO MAXIMIZE PERFORMANCE
MAXLOGFILES 50
MAXLOGMEMBERS 5
MAXDATAFILES 100
MAXINSTANCES 1
MAXLOGHISTORY 226
LOGFILE
GROUP 1 'O:\ORACLE\ORADATA\DBMRK\REDO01.LOG' SIZE 100M,
GROUP 2 'O:\ORACLE\ORADATA\DBMRK\REDO02.LOG' SIZE 100M,
GROUP 3 'O:\ORACLE\ORADATA\DBMRK\REDO03.LOG' SIZE 100M
-- STANDBY LOGFILE
DATAFILE
'O:\ORACLE\ORADATA\DBMRK\SYSTEM01.DBF',
'O:\ORACLE\ORADATA\DBMRK\UNDOTBS01.DBF',
'O:\ORACLE\ORADATA\DBMRK\CWMLITE01.DBF',
'O:\ORACLE\ORADATA\DBMRK\DRSYS01.DBF',
'O:\ORACLE\ORADATA\DBMRK\INDX01.DBF',
'O:\ORACLE\ORADATA\DBMRK\ODM01.DBF',
'O:\ORACLE\ORADATA\DBMRK\TOOLS01.DBF',
'O:\ORACLE\ORADATA\DBMRK\USERS01.DBF',
'O:\ORACLE\ORADATA\DBMRK\XDB01.DBF',
'O:\ORACLE\ORA921\DATABASE\HISTORICO1',
'O:\ORACLE\ORA921\DATABASE\DF_HISTORICO'
CHARACTER SET WE8MSWIN1252
;
# Take files offline to match current control file.
ALTER DATABASE DATAFILE 'O:\ORACLE\ORADATA\DBMRK\.ORA' OFFLINE DROP;
# Recovery is required if any of the datafiles are restored backups,
# or if the last shutdown was not normal or immediate.
RECOVER DATABASE
# Database can now be opened normally.
ALTER DATABASE OPEN;