创建分区表的时候出现ORA-01843

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/xxzhaobb/article/details/82753488

RDBMS 12.2.0.1 , OS Windows 。

在创建分区表的时候,提示ORA-01843错误。

[email protected]/nocdb>CREATE TABLE time_range_sales
  2  ( prod_id NUMBER(6)
  3  , cust_id NUMBER
  4  , time_id DATE
  5  , channel_id CHAR(1)
  6  , promo_id NUMBER(6)
  7  , quantity_sold NUMBER(3)
  8  , amount_sold NUMBER(10,2)
  9  )
 10  PARTITION BY RANGE (time_id)
 11  (PARTITION SALES_1998 VALUES LESS THAN (TO_DATE('01-JAN-1999','DD-MON-YYYY')),
 12  PARTITION SALES_1999 VALUES LESS THAN (TO_DATE('01-JAN-2000','DD-MON-YYYY')),
 13  PARTITION SALES_2000 VALUES LESS THAN (TO_DATE('01-JAN-2001','DD-MON-YYYY')),
 14  PARTITION SALES_2001 VALUES LESS THAN (MAXVALUE)
 15  );
(PARTITION SALES_1998 VALUES LESS THAN (TO_DATE('01-JAN-1999','DD-MON-YYYY')),
                                                              *
第 11 行出现错误:
ORA-01843: 无效的月份


[email protected]/nocdb>host

方法1 ,修改NLS_DATE_LANAUAGE为american

ALTER SESSION SET NLS_DATE_LANGUAGE='AMERICAN';

[email protected]/nocdb>show parameter nls_date_language

NAME                                 TYPE                   VALUE
------------------------------------ ---------------------- ------------------------------
nls_date_language                    string                 SIMPLIFIED CHINESE
[email protected]/nocdb>

[email protected]/nocdb>CREATE TABLE time_range_sales
  2  ( prod_id NUMBER(6)
  3  , cust_id NUMBER
  4  , time_id DATE
  5  , channel_id CHAR(1)
  6  , promo_id NUMBER(6)
  7  , quantity_sold NUMBER(3)
  8  , amount_sold NUMBER(10,2)
  9  )
 10  PARTITION BY RANGE (time_id)
 11  (PARTITION SALES_1998 VALUES LESS THAN (TO_DATE('01-JAN-1999','DD-MON-YYYY')),
 12  PARTITION SALES_1999 VALUES LESS THAN (TO_DATE('01-JAN-2000','DD-MON-YYYY')),
 13  PARTITION SALES_2000 VALUES LESS THAN (TO_DATE('01-JAN-2001','DD-MON-YYYY')),
 14  PARTITION SALES_2001 VALUES LESS THAN (MAXVALUE)
 15  );

表已创建。

[email protected]/nocdb>

方法2 。在OS层面设置set NLS_LANG=AMERICAN_AMERICA.ZHS16GBK

C:\Users\zhao-pc>set NLS_LANG=AMERICAN_AMERICA.ZHS16GBK

C:\Users\zhao-pc>echo %NLS_LANG%
AMERICAN_AMERICA.ZHS16GBK

@>conn sys/[email protected]/nocdb as sysdba
Connected.
[email protected]/nocdb>CREATE TABLE time_range_sales
  2  ( prod_id NUMBER(6)
  3  , cust_id NUMBER
  4  , time_id DATE
  5  , channel_id CHAR(1)
  6  , promo_id NUMBER(6)
  7  , quantity_sold NUMBER(3)
  8  , amount_sold NUMBER(10,2)
  9  )
 10  PARTITION BY RANGE (time_id)
 11  (PARTITION SALES_1998 VALUES LESS THAN (TO_DATE('01-JAN-1999','DD-MON-YYYY')),
 12  PARTITION SALES_1999 VALUES LESS THAN (TO_DATE('01-JAN-2000','DD-MON-YYYY')),
 13  PARTITION SALES_2000 VALUES LESS THAN (TO_DATE('01-JAN-2001','DD-MON-YYYY')),
 14  PARTITION SALES_2001 VALUES LESS THAN (MAXVALUE)
 15  );

Table created.

[email protected]/nocdb>

之前在Linux上的时候,设置过NLS_LANG=en_US . 手头上没有环境,暂时未测试。

BTW:在考OCM的时候,当时也出现过这个错误的提示。还好当时处理了,今天又发现这个问题了。

END

猜你喜欢

转载自blog.csdn.net/xxzhaobb/article/details/82753488