Colega, vc não diz claramente MAS supondo database Oracle 10g, a sua resposta 
está no manual "Oracle® Database Globalization Support Guide 10g", cap. 3 - 
Setting Up a Globalization Support Environment , aonde é dito :


"NLS Database Parameters

When a new database is created during the execution of the CREATE DATABASE 
statement, the NLS-related database configuration is established. The current 
NLS instance parameters are stored in the data dictionary along with the 
database and national character sets. The NLS instance parameters are read from 
the initialization parameter file at instance startup.
"

e também


"NLS Data Dictionary Views

Applications can check the session, instance, and database NLS parameters by 
querying the following data dictionary views:

    NLS_SESSION_PARAMETERS shows the NLS parameters and their values for the 
session that is querying the view. It does not show information about the 
character set.

    NLS_INSTANCE_PARAMETERS shows the current NLS instance parameters that have 
been explicitly set and the values of the NLS instance parameters.

    NLS_DATABASE_PARAMETERS shows the values of the NLS parameters for the 
database. The values are stored in the database.
"

==> OU SEJA:

 1. vc cria um database, existem valores-defaults para os parâmetros NLS (e na 
verdade para outras coisas), sendo que alguns desses vc pode alterar com ALTER 
DATABASE

 2. nós sabemos (do manual de Concepts) que com o ALTER SYSTEM (ou editando o 
initfile, se vc usa initfile) vc muda parâmetros DA INSTÂNCIA, não os defaults 
do database

 3. novamente do manual de Concepts, nós sabemos que podemos alterar diversos 
valores a nível de sessão

 aí ficou CLARA a sua situação , lendo o segundo paràgrafo : a 
NLS_DATABASE_PARAMETERS mostra o DEFAULT INTERNO, as 
"propriedades"/características de criação do database (que era BYTE no seu db), 
o que vc altereou com o ALTER SYSTEM foi o valor para a Instância , que é CHAR 
e que a V$PARAMETER mostra corretamente (e a NLS_INSTANCE_PARAMETERS mostraria 
também) ....   Só complementando, a SYS.PROP$ mostra as propriedades (os 
defaults) internos do database *** MAS *** absolutamente Não È Documentada, 
assim é Totalmente Contra-Recomendado vc a consultar, certo - na verdade ** 
todas ** as views/tabelas internas (do SYS) que terminam com $ no final (tipo 
TAB$, OBJ$, PROP$, OBJ$, todas elas) são não-documentadas, sempre que houver 
alternativa Plz use as NLS_xxx, DBA/ALL_USER/_xxx, V$/GV$xx ... Não sei quem te 
orientou a usar a PROP$ mas não é uma orientação segura....


 Blz ? Então , agora acho que está Claro que quando vc diz "estou precisando 
deixar as 03 consultas amostrando o valor como CHAR", vc ** NÂO ** 
" vai conseguir isso, as views em questão V$PARAMETER e NLS_DATABASE_PARAMETERS 
mostram coisas *** TOTALMENTE DIFERENTES *** , uma mostra os valores DA 
INSTÂNCIA (que podem ter sido alterados) e a outra mostra os defaults internos 
DO DATABASE, okok ? 

  []s

     Chiappa

 OBS : dois pontos que eu não sei se vc conhce mas importantes, que valem a 
pena citar : 

 a. no RDBMS Oracle, o DATABASE é o nível hierárquico mais alto na estrutura do 
RDBMS, ele é aberto por uma instância , e uma instância atende a n sessões, a 
sessão conecta a uma instãncia 

 b. no RDBMS Oracle um default entra em ação SE e APENAS SE não for informado 
um valor, o default atende à INEXISTÊNCIA de um valor, sempre obedecendo à 
hierarquia

 assim, se for (por exemplo) informado um valor para o formato de data para uma 
sessão (via ALTER SESSION, via variáveis NLS, não importa) , tanto o default da 
instância (setado  nos parâmetros), se houver um, quanto  o default 
interno/propriedade pré-programada do database são ignorados nessa sessão - as 
outras que não informarem, claro, assumem o default da instância OU, se não 
houver nenhum, aí sim o default interno do database é asumido... Isso vale pra 
praticamente TUDO o que é configurável no database, inclusive os NLS todos...

--- Em oracle_br@yahoogrupos.com.br, "Marco Antonio" <ortizvergara202012@...> 
escreveu
>
> boa tarde,
> hoje estou pegado no seguinte problema e esta complicado de entender, preciso 
> a ajuda de voces.
> 
> mudei o valor de parâmetro NLS_LENGTH_SEMANTICS para CHAR, mais estou 
> precisando deixar as 03 consultas amostrando o valor como CHAR.
> 
> será que alguém ja passou por isto?
> 
> As querys amostram o valor como BYTE ???
> 
> 
> SQL> alter system set nls_length_semantics=char scope=spfile;
> System altered.
> 
> --Restar database
> 
> SQL> 
> Select NAME,VALUE,ISDEFAULT,ISSES_MODIFIABLE, ISSYS_MODIFIABLE, 
> ISINSTANCE_MODIFIABLE, ISMODIFIED, ISADJUSTED   from v$parameter where NAME 
> like '%seman%';
> 
> NAME
> --------------------------------------------------------------------------------
> VALUE
> --------------------------------------------------------------------------------
> ISDEFAULT ISSES ISSYS_MOD ISINS ISMODIFIED ISADJ
> --------- ----- --------- ----- ---------- -----
> nls_length_semantics
> CHAR
> FALSE     TRUE  IMMEDIATE TRUE  SYSTEM_MOD FALSE
> 
> 
> SQL> select * from nls_database_parameters where 
> parameter='NLS_LENGTH_SEMANTICS';
> 
> PARAMETER
> ------------------------------
> VALUE
> --------------------------------------------------------------------------------
> NLS_LENGTH_SEMANTICS
> BYTE
> 
> 
> SQL> select * from sys.props$ where NAME like '%SEM%';
> 
> NAME
> ------------------------------
> VALUE$
> --------------------------------------------------------------------------------
> COMMENT$
> --------------------------------------------------------------------------------
> NLS_LENGTH_SEMANTICS
> BYTE
> NLS length semantics
> 
> obrigado
> Marco.
>


Responder a