Cause: There are two possible causes: Either an attempt was made to issue an ALTER SESSION statement with an invalid NLS parameter or value; or the NLS_LANG environment variable contains an invalid language, territory, or character set.Action: Check the syntax of the ALTER SESSION statement and the NLS parameter, correct the syntax and retry the statement, or specify correct values in the NLS_LANG environment variable. For more information about the syntax of the ALTER SESSION statement, see the Oracle9i SQL Reference.

解决方案 »

  1.   

    大哥?拜托!
    ALTER SESSION statement --怎样检查?
    NLS parameter--查看好exp的注册表,然后拷贝?
      

  2.   

    怎么样查看数据库字符集 
    [A]数据库服务器字符集select * from nls_database_parameters,其来源于props$,是表示数据库的字符集。 
      客户端字符集环境select * from nls_instance_parameter,其来源于v$parameter, 
    表示客户端的字符集的设置,可能是参数文件,环境变量或者是注册表 
      会话字符集环境 select * from nls_session_parameter,其来源于v$nls_parameters,表示会话自己的设置,可能是会话的环境变量或者是alter session完成,如果会话没有特殊的设置,将与nls_instance_parameter一致。 
      客户端的字符集要求与服务器一致,才能正确显示数据库的非Ascii字符。如果多个设置存在的时候,alter session>环境变量>注册表>参数文件 
      字符集要求一致,但是语言设置却可以不同,语言设置建议用英文。如字符集是zhs16gbk,则nls_lang可以是American_America.zhs16gbk。
    怎么样修改字符集 
    [A]8i以上版本可以通过alter database来修改字符集,但也只限于子集到超集,不建议修改props$表,将可能导致严重错误。 
    Startup nomount; 
    Alter database mount exclusive; 
    Alter system enable restricted session; 
    Alter system set job_queue_process=0; 
    Alter database open; 
    Alter database character set zhs16gbk; 
    UPDATE SYS.PROPS$ SET VALUE$='WE8ISO8859P1' WHERE NAME LIKE 'NLS_CHAR%';我现在有一个备份文件A.DMP,采用的字符集是AMERICAN_AMERICA.WE8ISO8859P1  我想在安装有SIMPLIFIED CHINESE_CHINA.ZHS16GBK字符集的数据库中恢复,请问怎样做?要注意什么?步骤。
        1。SQL>CONNECT SYSTEM/MANAGER      SQL>UPDATE SYS.PROPS$ SET VALUE$='WE8ISO8859P1' WHERE NAME LIKE 'NLS_CHAR%';
        2.修改注册表,NLS_LANG的值为AMERICAN_AMERICA.WE8ISO8859P1
        3。重新启动数据库。
       IMP USER/PA WD FILE=A。DMP FULL=Y LOG = A.TXT
       ok!