1. ORA-01843: 无效的月份

问题是这个:
oracle-遇到的问题

SELECT * FROM v$parameter WHERE name = ‘nls_date_language’;

ALTER SESSION SET NLS_DATE_LANGUAGE=‘AMERICAN’;

原因:
原因是这个TO_DATE的Format中的“MON”格式出现异常,但是这个格式完全符合Oracle的格式要求。
再查看nls_date_language参数,发现这个参数值为NULL

1.这是因为客户端是中文环境,格式mon就不能用英文的月份写法,必须用中文的“六月”
如果不想修改sql语句运行的话,就需要在执行该语句之前,使用alter session 命令将nls_date_language修改为american,如下:
alter session set nls_date_language='american’以英语显示日期。
2若你的客户端是英文环境,那就是你没有用oracle数据的时间函数查询数据,应在sql语句中使用oracle数据库中的时间函数。

  1. oracle:数据库中V$、GV$、X$、V_$、GV_$之间的关系说明: GV_$:是GV$的同义词。V_$:是V$的同义词。

经常会遇到查询语句select * from v$parameter等等

尤其是当需要给普通用户授予对SQL查询相关的几个重要的动态性能视图,需要了解:

v$parameter
v$session --当前session情况
v$sql     --所有已经执行过的sql记录
v$process ; --当前的数据库连接情况
v$sql_plan
v$sql_plan_statistics
v$sql_workarea

详细参数介绍参考:
https://www.cnblogs.com/notester/articles/5702395.html
https://blog.csdn.net/daf380/article/details/82982586

3.v$parameter介绍

  1. v$parameter是oracle数据库的动态字典表(视图),它保存了数据库参数的设置值
  2. 如果要修改其中的值有两种方式
    2.1 修改当前会话参数:alter session set sql_trace=true --开启trace
    2.2 修改数据库全局参数:alter system set 参数名称=参数值 scope=spfile/memory/both
    scope是可选参数,
    scope=spfile只修改启动文件,下次启动后生效
    scope=memory只修改当前实例运行参数,重启后恢复
    scope=both,既修改当前运行参数同时也修改spfile

参考:
1.
https://blog.csdn.net/dbagaoshou/article/details/52514343
http://www.cnblogs.com/xunfang123/p/4169909.html
2.
https://blog.csdn.net/seagal890/article/details/82832024
https://www.cnblogs.com/notester/articles/5702395.html
https://blog.csdn.net/haiross/article/details/41546289(借鉴)
https://blog.csdn.net/bisal/article/details/51171206(借鉴)
3.
https://zhidao.baidu.com/question/511226205.html

相关文章:

  • 2021-09-17
  • 2021-08-06
  • 2020-01-27
  • 2019-06-17
  • 2021-10-03
  • 2021-09-20
  • 2018-02-02
  • 2018-03-13
猜你喜欢
  • 2021-09-16
  • 2018-01-31
  • 2021-09-10
  • 2018-01-22
  • 2021-10-06
  • 2021-08-09
  • 2021-09-06
  • 2021-09-08
相关资源
相似解决方案