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. >