如果执行:
   alter system set nls_date_format='yyyy-mm-dd hh24:mi:ss'
报错:
ORA-02096: 此选项的指定初始化参数不可修改如果执行
   alter system set nls_date_format='yyyy-mm-dd hh24:mi:ss' scope=spfile
正确执行 但是时间格式根本没有改变 为什么?scope这里牵扯到了spfile和pfile 之前没接触过 谁能通俗一点的讲讲spfile和pfile ?

解决方案 »

  1.   

    nls_date_format 是在会话级别进行修改的,也就是只是针对当前会话而言。
    例如:alter session set nls_date_format='yyyy-mm-dd';
    你再进行查询就是yyyy-mm-dd的格式显示了。
      

  2.   


    能说说spfile和pfile吗?通俗些
      

  3.   

    windows系统可以直接设置环境变量
    添加变量nls_date_format,值为YYYY-MM-DD HH24:MI:SS
      

  4.   

    spfile是二进制文件,看不懂;
    pfile是文本文件,可以打开,可以看;
    如果直接修改pfile,则需要Oracle重启后,才能生效。
      

  5.   

    如果执行:
      alter system set nls_date_format='yyyy-mm-dd hh24:mi:ss'
    报错:
    ORA-02096: 此选项的指定初始化参数不可修改如果执行
      alter system set nls_date_format='yyyy-mm-dd hh24:mi:ss' scope=spfile
    正确执行 但是时间格式根本没有改变 为什么?scope这里牵扯到了spfile和pfile 之前没接触过 谁能通俗一点的讲讲spfile和pfile ?-- 只能修改当前会话的 nls_date_format 参数值,
    alter session set nls_date_format='yyyy-mm-dd hh24:mi:ss';-- 要在系统级别修改的话,需要在注册表中添加字符串值,操作类似如下:在注册表中:
    HKEY_LOCAL_MACHINE\SOFTWARE\ORACLE\KEY_OraDb10g_home1添加一个字符串的值
    名称:NLS_DATE_FORMAT
    值 :YYYY-MM-DD HH24:MI:SS (你要的日期格式)
    修改后,无论用什么程序启动访问ORACLE,都会用这个设定显示格式,
      

  6.   


    alter session set nls_date_format='yyyy-mm-dd hh24:mi:ss';
      

  7.   


    alter session 我知道只是在一次会话中修改格式  我希望是长期的 网上不是说修改spfile,就是执行这句:
        alter system set nls_date_format='yyyy-mm-dd hh24:mi:ss' scope=spfile;
    就能改变 格式的  但是我重启了没效果啊  必须到注册表下改?
      

  8.   

    一般来说 scope 的选项有 spfile memory both  默认为both
    没有 pfile  
    oracle 的启动方式 分为 pfile 以及spfile 。pfile就是参数文件(明文),spfile是二进制格式
    oracle 9i以后推出的spfile方式启动。这样是为了便于管理参数。数据库在默认的情况下, 如果有spfile,以spfile方式启动,如果没有spfile文件,那么以pfile方式启动  
      

  9.   

    楼主用的是alter system 
    如果只要改变会话级的用alter session 就可以了。
    另外scope 配置过struts1的话就知道
    scope 是作用范围的意思。
    分为 spfile 、memory 和both
    spfile 是数据库启动时所要读取的参数。
      

  10.   

    我印像是要改格式需要进注册表,你可以查下,不过建议你还是用to_date和to_char来使用,你不能每装一台服务器都要改吧,万一忘一个就有乐子了