ORA-00900

java.sql.SQLException: ORA-00900: 无效 SQL 语句
ORA-00900: 无效 SQL 语句
GENERAL,,BOEING,2014-12-01,ALL,OVER
给你个建议:
1、用System.out.println 把你拼装的sql打印出来。
2、把打印出的sql考到sqlplus中执行,确认一下是什么原因。

※一般这个原因是拼装时候的拼装问题。
比如:
拼出了【where xxx=xxxand xxx=xxx】and前面没有空格。
字符型的字段后面没有’’如a=’asdasd’拼成了a=asdasd等等。
我曾经在拼装的sql中把半角[‘]写成全角的了,在程序中看不出来,但是考到sqlplus中一眼就看出来了

ORA-01843

造成ORA-01843 无效的月份 的一些原因
1)当我们在一个中文环境的客户端使用如下sql语句
INSERT INTO “temptable” ( DELIVER_DATE ) VALUES (TO_DATE(‘27-Jun-2007 15:57:30’, ‘DD-MON-YYYY HH24:MI:SS’) )
Runtime error occurred: 1843 (ORA-01843: 无效的月份)
数据库会报告一个ORA-01843的错误,这是因为客户端是中文环境,格式mon就不能用英文的月份写法,必须用中文的“六月”
如果不想修改sql语句运行的话,就需要在执行该语句之前,使用alter session 命令将nls_date_language修改为american,如下:
alter session set nls_date_language=’american’ —以英语显示日期
2)
今天出现了ORA-01843的错误.这个错误代表无效的月份一般在日期转化的时候会提示。
解决方法
alter session set NLS_DATE_FORMAT=’DD-MON-YY’;

可是今天我这样做还是不管用。实际上问题出在这里:

Microsoft Windows XP [版本 5.1.2600]
(C) 版权所有 1985-2001 Microsoft Corp.
O:>sqlplus greatfinish/finish
SQLPlus: Release 9.2.0.1.0 - Production on 星期三 6月 21 19:18:00 2006
Copyright (c) 1982, 2002, Oracle Corporation. All rights reserved.
连接到:
Oracle9i Enterprise Edition Release 9.2.0.1.0 - Production
With the Partitioning, OLAP and Oracle Data Mining options
JServer Release 9.2.0.1.0 - Production
greatfinish@ORA920> select to_date(‘JAN 01 1988’,’MON DD YYYY’) from dual;
select to_date(‘JAN 01 1988’,’MON DD YYYY’) from dual

ERROR 位于第 1 行:
ORA-01843: 无效的月份

greatfinish@ORA920> alter session set NLS_DATE_FORMAT=’MON DD YYYY’;
会话已更改。
—修改了NLS_DATE_FORMAT问题依然存在
greatfinish@ORA920> select to_date(‘JAN 01 1988’,’MON DD YYYY’) from dual;
select to_date(‘JAN 01 1988’,’MON DD YYYY’) from dual
*
ERROR 位于第 1 行:
ORA-01843: 无效的月份
—查了一下sysdate发现原因了是客户端字符集问题
greatfinish@ORA920> select sysdate from dual;
SYSDATE

6月 21 2006
greatfinish@ORA920> exit
从Oracle9i Enterprise Edition Release 9.2.0.1.0 - Production
With the Partitioning, OLAP and Oracle Data Mining options
JServer Release 9.2.0.1.0 - Production中断开
O:>set NLS_LANG=AMERICAN_AMERICA.ZHS16GBK
O:>sqlplus greatfinish/finish
SQL*Plus: Release 9.2.0.1.0 - Production on Wed Jun 21 19:20:22 2006
Copyright (c) 1982, 2002, Oracle Corporation. All rights reserved.

Connected to:
Oracle9i Enterprise Edition Release 9.2.0.1.0 - Production
With the Partitioning, OLAP and Oracle Data Mining options
JServer Release 9.2.0.1.0 - Production
—修改完毕成功select
greatfinish@ORA920> select to_date(‘JAN 01 1988’,’MON DD YYYY’) from dual;
TO_DATE(‘

01-JAN-88
greatfinish@ORA920>

ORA-01843

ORA-01843: 无效的月份
表:
create table emp_hiloo(
empno number(4),
ename varchar2(20),
job varchar2(20),
salary number(7,2),
bonus number(7,2),
hiredate date,
mgr number(4),
deptno number(10)
);
insert into emp_hiloo values(1001,’zhangwuji’,’Manager’,10000,2000,’12-MAR-10’,1005,10);
在Oracle11g中运行以上插入语句时出错如下:
错误报告:
SQL 错误: ORA-01843: 无效的月份
01843. 00000 - “not a valid month”
解决方案:
数据库会报告一个ORA-01843的错误,这是因为客户端是中文环境,格式mon就不能用英文的月份写法,必须用中文的“六月”
如果不想修改sql语句运行的话,就需要在执行该语句之前,使用alter session 命令将nls_date_language修改为american,如下:
alter session set nls_date_language=’american’ —以英语显示日期

ORA-02298:

2014-01-08 10:54:33[ERROR]-org.hibernate.tool.hbm2ddl.SchemaUpdate-Unsuccessful:
alter table GTJKM_P_SUPPLYSERVICES add constraint FK79BE533CDFD20E67 foreign key (supplier_id)
references GTJKM_P_SUPPLIER
2014-01-08 10:54:33[ERROR]-org.hibernate.tool.hbm2ddl.SchemaUpdate-ORA-02298: 无法验证 (GTJKM.FK79BE533CDFD20E67) - 未找到父项关键字
解决分析 :
在运行以下语句的时候,报错如下:
ALTER TABLE PN_POST
ADD CONSTRAINT POST_CLOB_FK
FOREIGN KEY (POST_BODY_ID)
REFERENCES PN_POST_BODY_CLOB (OBJECT_ID);
Error at line 1
ORA-02298: 无法验证 (PNET.POST_CLOB_FK) - 未找到父项关键字

主要原因是:
[@more@]
主要原因是:
在添加CONSTRAINT的时候,默认是需要VALIDATE表中的已有数据的。
你要插入的表A里,有外键连接到另一个表B的主键,你在表A的外键列插入的值,在表B的主键列找不到就不能插入。主要看两表中的数据是否一致,从表中要关联外键的字段中的数据必须包含在主表相关字段的数据内。
处理的方法有:
1> 先不验证已有数据的CONSTRANT,加上参数NOVALIDATE.
SQL > ALTER TABLE PN_POST
ADD CONSTRAINT POST_CLOB_FK
FOREIGN KEY (POST_BODY_ID)
REFERENCES PN_POST_BODY_CLOB (OBJECT_ID)
NOVALIDATE;
2> 按照子表的外键查看一下不存在的副本记录,将不存在的父表记录补全
分析原因:
从错误信息看是因为违反了外键约束所至,但为什么出现这种情况呢?
—检查数据
SQL> Select TKT_ID From NTICKET.TK_ITINERARY_PRN_DT
2 Minus
3 Select ID From NTICKET.TK_ORDER_TICKET_DT;
TKT_ID

8a81858c384b801701384d3b4af90a3b
8a81858c384b801701384d3b4afb0a3d
8a81858c384b801701384d3bf1550a46
发现主表中有外键表中不存在的外键值。
因为数据从生产环境导过来的,导入时间用了近1小时,而数据表的导入顺序是按表的由大到小导入的。在这过程中如果先导入外键表数据,再经过一段时间 后,再导入主表数据。如果这段时间经过的时间比较长,就会有可能出现主表和外键表数据不一致的情况。就像前面所说的主表中有外键表中不存在的外键值。
解决办法:
1.如果允许,在导入前先把生产环境用户进行锁定。
Alter User nticket Account Lock;
2.或是在导入时加上FLASHBACK_SCN参数,保证数据导入的一致性。

ORA-28001ORA-28001: the password has expired 登陆:


11g问题解决。

ORA-00928

ORA-00928: 缺失 SELECT 关键字

错误报告:
SQL 错误: ORA-00928: 缺失 SELECT 关键字
00928. 00000 - “missing SELECT keyword”
原因:在执行insert into dept_hiloo (10,’developer’,’beijing’);没有写values。

ORA-00845

ORA-00845: MEMORY_TARGET not supported on this system*【解决】

解决:
今天晚上新装一台Oracle 11g的数据库,打算将SGA设大一点,知道 11g 中有一个新特新 MEMORY_TARGET,于是尝一下鲜,谁知报了个 ORA-00845,报错比较容易迷惑人,不借助Google真得想半天:
SQL> alter system set memory_max_target=3G scope=spfile ;
System altered.
SQL> alter system set memory_target=2G scope=spfile ;
System altered.
SQL>
SQL> shutdown immediate
Database closed.
Database dismounted.
ORACLE instance shut down.
SQL> startup ;
ORA-00845: MEMORY_TARGET not supported on this system

参考:
实例启动时报ORA-00845的解决方法
idle> startup
ORA-00845: MEMORY_TARGET not supported on this system
因为我一个库里有两个实例,启动时/dev/shm就不够用了。
在Oracle 11g中如果采用AMM内存管理,那么当MEMORY_TARGET的值大于/dev/shm的时候,就会报ORA-00845: MEMORY_TARGET not supported on this system错误,解决办法增加/dev/shm大小,在redhat系列系统中,/dev/shm的默认值是系统总内存的一半

1、修改/dev/shm大小
[oracle@rtest ~]$ df -h
Filesystem Size Used Avail Use% Mounted on
/dev/sda3 140G 57G 76G 43% /
/dev/sda1 99M 12M 82M 13% /boot
tmpfs 3.9G 995M 3.0G 25% /dev/shm
[oracle@rtest ~]$ mount -o size=8G -o nr_inodes=1000000 -o noatime,nodiratime -o remount /dev/shm
mount: only root can do that
[oracle@rtest ~]$ su -
Password:
[root@rtest ~]# mount -o size=8G -o nr_inodes=1000000 -o noatime,nodiratime -o remount /dev/shm
[root@rtest ~]# df -h
Filesystem Size Used Avail Use% Mounted on
/dev/sda3 140G 57G 76G 43% /
/dev/sda1 99M 12M 82M 13% /boot
tmpfs 8.0G 995M 7.1G 13% /dev/shm

2、 vi /etc/fstab
LABEL=/ / ext3 defaults 1 1
LABEL=/boot /boot ext3 defaults 1 2
tmpfs /dev/shm tmpfs defaults,size=8G 0 0
devpts /dev/pts devpts gid=5,mode=620 0 0
sysfs /sys sysfs defaults 0 0
proc /proc proc defaults 0 0
LABEL=SWAP-sda2 swap swap defaults 0 0

3、启动数据库验证:
[oracle@rtest ~]$ export ORACLE_SID=test0924
[oracle@rtest ~]$ sqlplus / as sysdba
SQL*Plus: Release 11.2.0.3.0 Production on Mon Oct 28 14:41:13 2013
Copyright (c) 1982, 2011, Oracle. All rights reserved.
Connected to an idle instance.

idle> idle>
idle> conn /as sysdba
Connected to an idle instance.
idle> startup
ORACLE instance started.
Total System Global Area 3340451840 bytes
Fixed Size 2232960 bytes
Variable Size 3204451712 bytes
Database Buffers 117440512 bytes
Redo Buffers 16326656 bytes
Database mounted.
Database opened.
idle> conn /as sysdba
Connected.
sys@TEST0924> show parameter mem

NAME TYPE VALUE


hi_shared_memory_address integer 0
memory_max_target big integer 3200M
memory_target big integer 0
shared_memory_address integer 0

4、官方解析
Starting with Oracle Database 11g, the Automatic Memory Management feature requires more shared memory (/dev/shm)and file descriptors. The size of the shared memory should be at least the greater of MEMORY_MAX_TARGET and MEMORY_TARGET for each Oracle instance on the computer. If MEMORY_MAX_TARGET or MEMORY_TARGET is set to a non zero value, and an incorrect size is assigned to the shared memory, it will result in an ORA-00845 error at startup.
5、解决问题建议

5.1. If you are installing Oracle 11g on a Linux system, note that Memory Size (SGA and PGA), which sets the initialization parameter MEMORY_TARGET or MEMORY_MAX_TARGET, cannot be greater than the shared memory filesystem (/dev/shm) on your operating system. To resolve the current error, increase the /dev/shm file size.
5.2. If configuring AMM is not possible due to lack of space on /dev/shm mount point, you can configure ASMM instead of AMM, i.e. set SGA_TARGET, SGA_MAX_SIZE and PGA_AGGREGATE_TARGET instead of MEMORY_TARGET.

参考二:
默认系统就会加载/dev/shm ,它就是所谓的tmpfs,有人说跟ramdisk(虚拟磁盘),但不一样。象虚拟磁盘一样,tmpfs 可以使用您的 RAM,但它也可以使用您的交换分区来存储。而且传统的虚拟磁盘是个块设备,并需要一个 mkfs 之类的命令才能真正地使用它,tmpfs 是一个文件系统,而不是块设备;您只是安装它,它就可以使用了。

tmpfs有以下优势:
1.动态文件系统的大小。
2.tmpfs 的另一个主要的好处是它闪电般的速度。因为典型的 tmpfs 文件系统会完全驻留在 RAM 中,读写几乎可以是瞬间的。
3.tmpfs 数据在重新启动之后不会保留,因为虚拟内存本质上就是易失的。所以有必要做一些脚本做诸如加载,绑定的操作。

通常使用/dev/shm作共享内存(shm_open,shm_unlink)。 /dev/shm是个临时文档系统(tmpfs),能够从/etc/fstab中mount。因此,支持标准的参数例如”size”,能够用来增加或减少在/dev/shm上的tmpfs大小.(默认的,他的大小是系统RAM的一半)

调整/dev/shm的大小
1)查看大小
df -h /dev/shm

2)修改大小
vi /etc/fstab
tmpfs /dev/shm tmpfs defaults,size=4096M 0 0

3)重新挂载
umount /dev/shm
mount /dev/shm

4)查看修改后的大小
df -h /dev/shm

  1. 来自Oracle的官方解析是:

Starting with Oracle Database 11g, the Automatic Memory Management feature requires more shared memory (/dev/shm)and file descriptors. The size of the shared memory should be at least the greater of MEMORY_MAX_TARGET and MEMORY_TARGET for each Oracle instance on the computer. If MEMORY_MAX_TARGET or MEMORY_TARGET is set to a non zero value, and an incorrect size is assigned to the shared memory, it will result in an ORA-00845 error at startup.

  1. 简单来说就是 MEMORY_MAX_TARGET 的设置不能超过/dev/shm 的大小:

[oracle@FWDB FWDB]$ df -h | grep shm
tmpfs 2.0G 0 2.0G 0% /dev/shm
还真是撞到这个枪口上了:
马上把它加大:
[root@FWDB ~]# cat /etc/fstab | grep tmpfs
tmpfs /dev/shm tmpfs defaults,size=4G 0 0
现在可以通过重启使这个配置生效,也可以通过重新挂载来修改其大小:
[root@FWDB ~]# mount -o remount,size=4G /dev/shm
[root@FWDB ~]# df -h | grep shm
tmpfs 4.0G 0 4.0G 0% /dev/shm
再次启动数据库,没有报错了。

ORA-01078

ORA-01078: 和 LRM-00109:解决方法*【解决】

启动数据库的时候
SQL> startup mount;
ORA-01078: failure in processing system parameters
LRM-00109: could not open parameter file ‘/u01/app/oracle/product/11.2.0/db_1/dbs/initORCL.ora’
解决方法
[oracle@dbserver dbs]$ cd /u01/app/oracle/admin/orcl/pfile/
[oracle@dbserver pfile]$ ls
init.ora.6242012174552
[oracle@dbserver pfile]$ cp init.ora.6242012174552 /u01/app/oracle/product/11.2.0/db_1/dbs/
更改名字格式为:initORACLE_SID.ora
[oracle@dbserver dbs]$ mv init.ora.6242012174552 initORCL.ora
重启数据库
SQL> conn /as sysdba
Connected to an idle instance.
SQL> startup mount;
ORACLE instance started.

Total System Global Area 609624064 bytes
Fixed Size 2215784 bytes
Variable Size 364904600 bytes
Database Buffers 234881024 bytes
Redo Buffers 7622656 bytes
Database mounted.ORA-01078
ORA-01078: 和 LRM-00109:解决方法*【解决】

启动数据库的时候
SQL> startup mount;
ORA-01078: failure in processing system parameters
LRM-00109: could not open parameter file ‘/u01/app/oracle/product/11.2.0/db_1/dbs/initORCL.ora’
解决方法
[oracle@dbserver dbs]$ cd /u01/app/oracle/admin/orcl/pfile/
[oracle@dbserver pfile]$ ls
init.ora.6242012174552
[oracle@dbserver pfile]$ cp init.ora.6242012174552 /u01/app/oracle/product/11.2.0/db_1/dbs/
更改名字格式为:initORACLE_SID.ora
[oracle@dbserver dbs]$ mv init.ora.6242012174552 initORCL.ora
重启数据库
SQL> conn /as sysdba
Connected to an idle instance.
SQL> startup mount;
ORACLE instance started.

Total System Global Area 609624064 bytes
Fixed Size 2215784 bytes
Variable Size 364904600 bytes
Database Buffers 234881024 bytes
Redo Buffers 7622656 bytes
Database mounted.

ORA-00205

ORA-00205: error in identifying control file, check alert log for more info*[解决]

环境:oracle10gR2 solaris10
操作:在没有创建pfile的情况下,直接执行了以下命令
1 SQL>create pfile from spfile;
2 SQL>shutdown immediate
3 SQL>startup
4 ORA-00205: error in identifying control file, check alert logfor more info
查看alter_TEST.log文件
Tue Jul 03 13:37:49 CST 2012
Starting ORACLE instance (normal)
Tue Jul 03 13:37:49 CST 2012
System parameter db_block_buffers enabled without VLM on.
LICENSE_MAX_SESSION = 0
LICENSE_SESSIONS_WARNING = 0
Picked latch-free SCN scheme 3
Using LOG_ARCHIVE_DEST_1 parameter default value as /oradb/oracle/102/dbs/arch
Autotune of undo retention is turned off.
LICENSE_MAX_USERS = 0
SYS auditing is disabled
ksdpec: called for event 13740 prior to event group initialization
Starting up ORACLE RDBMS Version: 10.2.0.5.0.
System parameters with non-default values:
processes = 50
shared_pool_size = 117440512
control_files = /oradb/oracle/102/dbs/control1, /oradb/oracle/102/dbs/control2
db_block_buffers = 1024
log_buffer = 2032640
log_checkpoint_interval = 10000
db_files = 80
db_file_multiblock_read_count= 8
global_names = TRUE
parallel_max_servers = 5
max_dump_file_size = 10240
db_name = TEST
PMON started with pid=2, OS id=1406
PSP0 started with pid=3, OS id=1408
MMAN started with pid=4, OS id=1410
DBW0 started with pid=5, OS id=1412
LGWR started with pid=6, OS id=1414
CKPT started with pid=7, OS id=1416
SMON started with pid=8, OS id=1418
RECO started with pid=9, OS id=1420
MMON started with pid=10, OS id=1422
MMNL started with pid=11, OS id=1424
Tue Jul 03 13:37:52 CST 2012
ALTER DATABASE MOUNT
Tue Jul 03 13:37:52 CST 2012 ORA-00210: cannot open the specified control file
ORA-00202: control file: ‘/oradb/oracle/102/dbs/control1’
ORA-27037: unable to obtain file status
Solaris-AMD64 Error: 2: No such file or directory
Additional information: 3
Tue Jul 03 13:37:55 CST 2012
ORA-205 signalled during: ALTER DATABASE MOUNT…

原因是因为启动数据库时未找到spfile则调用了数据库默认的init.ora,但是其默认值与现有数据库信息不匹配导致数据库不能启动。
解决方案:

1 bash#vi /oradb/oracle/102/dbs/initTEST.ora 2 .audit_file_dest=’/oradb/oracle/admin/TEST/adump’
3
.backgrounddump_dest=’/oradb/oracle/admin/TEST/bdump’
4 .compatible=’10.2.0.5.0’
5
.control_files=’/oradb/oracle/oradata/TEST/control01.ctl’,’/oradb/oracle/oradata/TEST/control02.ctl’,’/oradb/oracle/oradata/TEST/control03.ctl’
6 *.core_dump_dest=’/oradb/oracle/admin/TEST/cdump’
7
.dbblock_buffers=100# SMALL 8 .dbblock_size=8192
9 *.db_file_multiblock_read_count=16
10
.dbfiles=80# SMALL 11 .dbname=’TEST’
12 *.dispatchers=’(PROTOCOL=TCP) (SERVICE=orclXDB)’
13
.globalnames=TRUE14 .logarchive_dest_1=’location=/oradb/oracle/arch’
15 *.log_archive_dest_state_2=’DEFER’
16
.logbuffer=32768# SMALL17 .logcheckpoint_interval=10000
18
.maxdump_file_size=’10240’# limit trace file size to 5 Meg each19 .opencursors=300
20
.parallelmax_servers=5# SMALL 21 .pga_aggregate_target=81788928
22 .processes=150
23
.shared_pool_size=113500000# SMALL2425:wq
26 bash#sqlplus / as sysdba

1 SQL>create spfile from pfile;
2 3File created.
4 5 SQL> startup
6ORACLE instance started.
7 8 Total System Global Area 155189248 bytes
9 Fixed Size 2094672 bytes
10 Variable Size 142608816 bytes
11Database Buffers 8388608 bytes
12 Redo Buffers 2097152 bytes
13Database mounted.
14Database opened.

注:再做数据库应用pfile启动数据库时要注意是否已经通过spfile生成pfile。
深入oracle,去透析oracle每个角落。 DBA、SQL开发技术人的集市,QQ高级群群号35448096

ora-00132

ora-00132 ora-00119 rac11G RAC 建库时报错【解决】

2014年08月02日 ⁄ 综合 ⁄ 共 826字 ⁄ 字号 小 中 大 ⁄ 评论关闭
今日一例:有一位童鞋在安装完grid 库软件也建好的情况下
创建库时报如下错误
ORA-00119:Invalid specification for system parameter REMOTE_LISTENER
ORA-00132:syntax error or unresolved network name ‘ora-scan:1521’
通过报错即可得知是参数文件的REMOTE_LISTENER有问题
解决方法有两种
1、添加相应的解析名
进入oracle 输入netca
[oracle@rac01 ~]$ netca
选择Cluster configuration






ORA-00119:Invalid specification for system parameter REMOTE_LISTENER
ORA-00132:syntax error or unresolved network name ‘ora-scan:1521’

后面的图就没什么好列的了。一步一步然后 finish
这时再安装数据库,就不会报错了
2、修改init.ora中的REMOTE_LISTENER参数
在oracle用户下查看发现没有init相关的参数文件(库还没建呢)
进入grid用户的 $ORACLE_HOME/dbs
打开init.ora 发现REMOTE_LISTENER参数没有显视指定
追加一条 REMOTE_LISTENER=(ADDRESS_LIST=(Address=(Protocol=tcp) (Host=your_hostname)(Port=1521)))
同样执行就好了。第二种方法是理论上的,我没有进行测过,如果哪位遇到过 测过,请留言回复我一下,以解我惑。。谢谢啊~~
ORA-00119:Invalid specification for system parameter REMOTE_LISTENER
ORA-00132:syntax error or unresolved network name ‘ora-scan:1521’

ORA-14400:

插入的分区关键字未映射到任何分区】,ora-14400关键字
问题描述:
工作中使用kettle将原始库中的数据抽取到标准库中,在抽取过程中报错:【ORA-14400: 插入的分区关键字未映射到任何分区】
解决过程:
经过百度,发现出现ORA-14400是表分区出现问题。
1.确定该表是否已经添加了表分区。
select partition_name,high_value from user_tab_partitions t where table_name=’table_name’;
2.查询表分区绑定的字段名称。
select from user_part_key_columns t where name=’table_name’;
3.查看当前表分区的具体情况
select
from user_tab_partitions t where table_name=’table_name’;
4.查询表分区绑定的字段的最大值。注:此处的table_name应为当前表对应的原始库中的源表。
select max(key_column) from table_name t;
5.将查询到的表分区绑定字段的最大值插入到当前表中进行测试,发现报错。
insert into table_name(table_column1,table_column2,……,key_column) values(value1,value2,……,key_value);
6.经过以上环节确定源表中出现错误数据,并且由于错误数据的时间跨度大于当前分区的范围,导致ORA-14400错误的出现,但是由于该数据必须保留,因此对表分区进行扩展。
7.扩展当前表分区以保证范围大于绑定字段的最大值。
alter table table_name add partition part_key_column_029 values less than (to_date(‘2029-01-01 00:00:00’,’YYYY-MM-DD HH24:MI:SS’,’NLS_CALENDAR=GREGORIAN’))
tablespace tablespace_name
pctfree 10
initrans 1
maxtrans255,
……,
alter table table_name add partition part_key_column_049 values less than (to_date(‘2049-01-01 00:00:00’,’YYYY-MM-DD HH24:MI:SS’,’NLS_CALENDAR=GREGORIAN’))
tablespace tablespace_name
pctfree 10
initrans 1
maxtrans255,
8.结束。再次使用kettle进行抽取时顺利抽取。

CRS-2529,ORA-15097:

关闭Clusterware 遇到CRS-2529,ORA-15097:
http://blog.csdn.net/cyxlxp8411/article/details/7599918
applicationoracle服务器集群database64bit

需要关闭整个集群,遇到CRS-2529,ORA-15097 错误 ~!

grid@rac1:/home/grid/Opatch>srvctl stop asm -n rac1 -o immediate

PRCR-1014 : 无法停止资源 ora.asm

PRCR-1065 : 无法停止资源 ora.asm

CRS-2529: 无法对 ‘ora.asm’ 执行操作, 因为这样做需要停止或重新定位’ora.DATA1.dg’, 但未指定强制选项

grid@rac1:/home/grid/Opatch>crs_stop -all
CRS-2500: 由于资源 ‘ora.gsd’ 未运行, 无法停止该资源

CRS-2500: 由于资源 ‘ora.oc4j’ 未运行, 无法停止该资源

CRS-2500: 由于资源 ‘ora.rac.db’ 未运行, 无法停止该资源

尝试停止 ora.LISTENER.lsnr (在成员 rac2 上)

尝试停止 ora.LISTENER_LOCAL.lsnr (在成员 rac2 上)

CRS-2789: 由于资源 ‘ora.gsd’ 未在服务器 ‘rac2’ 上运行, 无法停止该资源

尝试停止 ora.ons (在成员 rac2 上)

尝试停止 ora.ons (在成员 rac1 上)

尝试停止 ora.LISTENER_SCAN1.lsnr (在成员 rac1 上)

尝试停止 ora.LISTENER.lsnr (在成员 rac1 上)

尝试停止 ora.LISTENER_LOCAL.lsnr (在成员 rac1 上)

尝试停止 ora.DATA1.dg (在成员 rac2 上)

尝试停止 ora.DATA2.dg (在成员 rac2 上)

尝试停止 ora.eons (在成员 rac2 上)

尝试停止 ora.eons (在成员 rac1 上)

尝试停止 ora.DATA1.dg (在成员 rac1 上)

尝试停止 ora.DATA2.dg (在成员 rac1 上)

CRS-2789: 由于资源 ‘ora.gsd’ 未在服务器 ‘rac1’ 上运行, 无法停止该资源

停止 ora.LISTENER_LOCAL.lsnr (在成员 rac2 上) 成功。

停止 ora.LISTENER.lsnr (在成员 rac2 上) 成功。

停止 ora.LISTENER_SCAN1.lsnr (在成员 rac1 上) 成功。

尝试停止 ora.scan1.vip (在成员 rac1 上)

停止 ora.LISTENER.lsnr (在成员 rac1 上) 成功。

CRS-2789: 由于资源 ‘ora.LISTENER.lsnr’ 未在服务器 ‘rac1’ 上运行, 无法停止该资源

停止 ora.LISTENER_LOCAL.lsnr (在成员 rac1 上) 成功。

CRS-2789: 由于资源 ‘ora.LISTENER_LOCAL.lsnr’ 未在服务器 ‘rac1’ 上运行, 无法停止该资源

尝试停止 ora.rac1.vip (在成员 rac1 上)

停止 ora.scan1.vip (在成员 rac1 上) 成功。

停止 ora.rac1.vip (在成员 rac1 上) 成功。

停止 ora.ons (在成员 rac2 上) 成功。

尝试停止 ora.rac2.vip (在成员 rac2 上)

停止 ora.rac2.vip (在成员 rac2 上) 成功。

尝试停止 ora.net1.network (在成员 rac2 上)

停止 ora.net1.network (在成员 rac2 上) 成功。

停止 ora.ons (在成员 rac1 上) 成功。

CRS-2789: 由于资源 ‘ora.ons’ 未在服务器 ‘rac1’ 上运行, 无法停止该资源

尝试停止 ora.net1.network (在成员 rac1 上)

停止 ora.net1.network (在成员 rac1 上) 成功。

停止 ora.eons (在成员 rac2 上) 成功。

停止 ora.eons (在成员 rac1 上) 成功。

停止 ora.DATA1.dg (在成员 rac2 上) 成功。

停止 ora.DATA2.dg (在成员 rac2 上) 成功。

尝试停止 ora.asm (在成员 rac2 上)

CRS-2673: 尝试停止 ‘ora.asm’ (在 ‘rac2’ 上)

ORA-15097: 无法对连接有客户机的 ASM 实例执行 SHUTDOWN

CRS-2675: 未能停止 ‘ora.asm’ (在 ‘rac2’ 上)

停止 ora.DATA1.dg (在成员 rac1 上) 成功。

停止 ora.DATA2.dg (在成员 rac1 上) 成功。

尝试停止 ora.asm (在成员 rac1 上)

CRS-2673: 尝试停止 ‘ora.asm’ (在 ‘rac1’ 上)

ORA-15097: 无法对连接有客户机的 ASM 实例执行 SHUTDOWN

CRS-2675: 未能停止 ‘ora.asm’ (在 ‘rac1’ 上)

CRS-0216: Could not stop resource ‘ora.LISTENER.lsnr rac1 1’.

CRS-0216: Could not stop resource ‘ora.LISTENER_LOCAL.lsnr rac1 1’.

CRS-0216: Could not stop resource ‘ora.asm rac1 1’.

CRS-0216: Could not stop resource ‘ora.asm rac2 1’.

CRS-0216: Could not stop resource ‘ora.gsd’.

CRS-0216: Could not stop resource ‘ora.gsd rac1 1’.

CRS-0216: Could not stop resource ‘ora.gsd rac2 1’.

CRS-0216: Could not stop resource ‘ora.oc4j’.

CRS-0216: Could not stop resource ‘ora.ons rac1 1’.

CRS-0216: Could not stop resource ‘ora.rac.db’.

grid@rac1:/home/grid/Opatch>crs_stat -t

Name Type Target State Host


ora.DATA1.dg ora….up.type OFFLINE OFFLINE

ora.DATA2.dg ora….up.type OFFLINE OFFLINE

ora….ER.lsnr ora….er.type OFFLINE OFFLINE

ora….AL.lsnr ora….er.type OFFLINE OFFLINE

ora….N1.lsnr ora….er.type OFFLINE OFFLINE

ora.asm ora.asm.type OFFLINE ONLINE rac2

ora.eons ora.eons.type OFFLINE OFFLINE

ora.gsd ora.gsd.type OFFLINE OFFLINE

ora….network ora….rk.type OFFLINE OFFLINE

ora.oc4j ora.oc4j.type OFFLINE OFFLINE

ora.ons ora.ons.type OFFLINE OFFLINE

ora.rac.db ora….se.type OFFLINE OFFLINE

ora….SM1.asm application OFFLINE ONLINE rac1

ora….C1.lsnr application OFFLINE OFFLINE

ora….C1.lsnr application OFFLINE OFFLINE

ora.rac1.gsd application OFFLINE OFFLINE

ora.rac1.ons application OFFLINE OFFLINE

ora.rac1.vip ora….t1.type OFFLINE OFFLINE

ora….SM2.asm application OFFLINE ONLINE rac2

ora….C2.lsnr application OFFLINE OFFLINE

ora….C2.lsnr application OFFLINE OFFLINE

ora.rac2.gsd application OFFLINE OFFLINE

ora.rac2.ons application OFFLINE OFFLINE

ora.rac2.vip ora….t1.type OFFLINE OFFLINE

ora.scan1.vip ora….ip.type OFFLINE OFFLINE

grid@rac1:/home/grid/Opatch>crs_stat -t | grep ONLINE
ora.asm ora.asm.type OFFLINE ONLINE rac2

ora….SM1.asm application OFFLINE ONLINE rac1

ora….SM2.asm application OFFLINE ONLINE rac2

grid@rac1:/home/grid/Opatch>export ORACLE_SID=+ASM1
grid@rac1:/home/grid/Opatch>ps -ef | grep smon

grid 9669 1 0 16:24 ? 00:00:00 asmsmon+ASM1

grid@rac1:/home/grid>sqlplus “/as sysasm”

SQL*Plus: Release 11.2.0.1.0 Production on Thu Sep 1 22:08:55 2011

Copyright (c) 1982, 2009, Oracle. All rights reserved.

Connected to:

Oracle Database 11g Enterprise Edition Release 11.2.0.1.0 - 64bit Production

With the Real Application Clusters and Automatic Storage Management options

SQL> shutdown immediate

ORA-15097: cannot SHUTDOWN ASM instance with connected client

SQL> exit

grid@rac1:/home/grid>srvctl stop asm -n rac1
PRCR-1014 : 无法停止资源 ora.asm

PRCR-1065 : 无法停止资源 ora.asm

CRS-2673: 尝试停止 ‘ora.asm’ (在 ‘rac1’ 上)

ORA-15097: 无法对连接有客户机的 ASM 实例执行 SHUTDOWN

CRS-2675: 未能停止 ‘ora.asm’ (在 ‘rac1’ 上)

CRS-2675: 未能停止 ‘ora.asm’ (在 ‘rac1’ 上)

11gr2下,asm是cssd下面管理的要把cssd关掉查,才能关闭asm,在root用户下,执行crs命令,关闭整个crs服务。

[root@rac1 init.d]# find / -name crsctl

/opt/rac/11.2.0/grid/bin/crsctl

[root@rac1 init.d]#/opt/rac/11.2.0/grid/bin/crsctl stop crs

CRS-2791: 正在启动用于关闭 ‘rac1’ 上 Oracle High Availability Services 管理的资源的操作

CRS-2673: 尝试停止 ‘ora.crsd’ (在 ‘rac1’ 上)

CRS-2790: 正在启动关闭 ‘rac1’ 上集群就绪服务管理的资源的操作

CRS-2673: 尝试停止 ‘ora.asm’ (在 ‘rac1’ 上)

CRS-2677: 成功停止 ‘ora.asm’ (在 ‘rac1’ 上)

CRS-2792: 关闭 ‘rac1’ 上集群就绪服务管理的资源的操作已完成

CRS-2677: 成功停止 ‘ora.crsd’ (在 ‘rac1’ 上)

CRS-2673: 尝试停止 ‘ora.cssdmonitor’ (在 ‘rac1’ 上)

CRS-2673: 尝试停止 ‘ora.ctssd’ (在 ‘rac1’ 上)

CRS-2673: 尝试停止 ‘ora.evmd’ (在 ‘rac1’ 上)

CRS-2673: 尝试停止 ‘ora.asm’ (在 ‘rac1’ 上)

CRS-2673: 尝试停止 ‘ora.mdnsd’ (在 ‘rac1’ 上)

CRS-2677: 成功停止 ‘ora.cssdmonitor’ (在 ‘rac1’ 上)

CRS-2677: 成功停止 ‘ora.evmd’ (在 ‘rac1’ 上)

CRS-2677: 成功停止 ‘ora.mdnsd’ (在 ‘rac1’ 上)

CRS-2677: 成功停止 ‘ora.ctssd’ (在 ‘rac1’ 上)

CRS-2677: 成功停止 ‘ora.asm’ (在 ‘rac1’ 上)

CRS-2673: 尝试停止 ‘ora.cssd’ (在 ‘rac1’ 上)

CRS-2677: 成功停止 ‘ora.cssd’ (在 ‘rac1’ 上)

CRS-2673: 尝试停止 ‘ora.gpnpd’ (在 ‘rac1’ 上)

CRS-2673: 尝试停止 ‘ora.diskmon’ (在 ‘rac1’ 上)

CRS-2677: 成功停止 ‘ora.gpnpd’ (在 ‘rac1’ 上)

CRS-2673: 尝试停止 ‘ora.gipcd’ (在 ‘rac1’ 上)

CRS-2677: 成功停止 ‘ora.gipcd’ (在 ‘rac1’ 上)

CRS-2677: 成功停止 ‘ora.diskmon’ (在 ‘rac1’ 上)

CRS-2793: 关闭 ‘rac1’ 上 Oracle High Availability Services 管理的资源的操作已完成

CRS-4133: Oracle High Availability Services has been stopped.

ORA-01286

ORA-01286: 要求开始时间间隔
ORA-06512: 在 “SYS.DBMS_LOGMNR”, line 58
ORA-06512: 在 line 1
ORA-01286:start intervel required
ORA-06512: at “SYS.DBMS_LOGMNR”,line 58
ORA-06512: at line 1

原因是:LogMinerExtractSource.java中的数据库级别返回0,所以要设置数据库日志记录级别为数据库级。
系统启动级别,当第一次加载系统时使用的方式:0.数据全量同步;1.从当前时间点开始同步;2.按照给定的SCN进行同步
如果为0,查找的是当前最早的SCN进行处理。
select min(FIRST_CHANGE#) EARLIEST_SCN from VOracle | ORA异常 - 图1%0A%2F%20%E6%95%B0%E6%8D%AE%E5%BA%93%E7%BA%A7%E5%88%AB%E5%A4%84%E7%90%86%20%2F%0A%20int%20startLevel%20%3D%20config.getStartLevel()%3B%E3%80%81%0A%E8%A7%A3%E5%86%B3%EF%BC%9A%E6%B2%A1%E6%9C%89%E5%88%87%E6%8D%A2%E9%87%8D%E5%81%9A%E6%97%A5%E5%BF%97%E5%AF%BC%E8%87%B4%0ASQL%3E%20select%20min(FIRST_CHANGE%23)%20EARLIEST_SCN%20from%20V#card=math&code=ARCHIVED_LOG%20where%20NAME%20is%20not%20null%0Acall%20sys.dbms_logmnr.START_LOGMNR%28STARTSCN%20%3D%3E%200%2C%20ENDSCN%20%3D%3E%201361835%2C%20OPTIONS%20%3D%3E%203088%29%0A%2F%2A%20%E6%95%B0%E6%8D%AE%E5%BA%93%E7%BA%A7%E5%88%AB%E5%A4%84%E7%90%86%20%2A%2F%0A%20int%20startLevel%20%3D%20config.getStartLevel%28%29%3B%E3%80%81%0A%E8%A7%A3%E5%86%B3%EF%BC%9A%E6%B2%A1%E6%9C%89%E5%88%87%E6%8D%A2%E9%87%8D%E5%81%9A%E6%97%A5%E5%BF%97%E5%AF%BC%E8%87%B4%0ASQL%3E%20select%20min%28FIRST_CHANGE%23%29%20EARLIEST_SCN%20from%20V&id=duOZH)ARCHIVED_LOG where NAME is not null;查找到的数据为空。
联机重做日志的切换
如果不切换重做日志,查找select name,sequence#,first_change# from v$archived_log;时为空。
手动切换
执行如下语句可以使LGWR强制切换日志文件:
ALTER SYSTEM SWITCH LOGFILE;
定时切换
ARCHIVE_LAG_TARGET参数可以设置一个时间,通过时间限制,指定数据库强制进行重做日志切换,该参数单位为秒,缺省值为0不定时强制切换,有效范围为[60, 7200],推荐值为1800 (30分钟)。
显示时间:
show parameter archive_lag
修改时间:
alter system set archive_lag_target=1800;

ORA-01017

ORA-01017: 用户名/口令无效; 登录被拒绝
通过客户端访问没问题,spring jdbc不可以。处理办法是在@后面添加//,转义一下。
如:jdbc:oracle:thin:@//172.16.133.246:1521/yace
另外对于oracle12c版本与之前的版本方式也不同
oracle
url = “jdbc:oracle:thin:@” + hostname + “:” + port + “:” + dbname ;
12c
url = “jdbc:oracle:thin:@” + hostname + “:” + port + “/“ + dbname ;

ORA-01194

书《Oracle Database 11g数据库管理艺术》16.11节

ORA-00376

书《Oracle Database 11g数据库管理艺术》16.11节

0RA-01152

书《Oracle Database 11g数据库管理艺术》16.11节

ORA-00936

SQLException: - java.sql.BatchUpdateException: ORA-00936: 缺失表达式

解决:
SQL语句错误。

ORA-12541

ora-12541:tns:no listener

解决:
使用命令行连接提示如下:去找ORA-01034的处理。
[oracle@test1 ~]$ sqlplus etltest/etltest

SQL*Plus: Release 11.2.0.1.0 Production on Mon Aug 15 10:51:58 2016

Copyright (c) 1982, 2009, Oracle. All rights reserved.

ERROR:
ORA-01034: ORACLE not available
ORA-27101: shared memory realm does not exist
Linux-x86_64 Error: 2: No such file or directory
Process ID: 0
Session ID: 0 Serial number: 0

Enter user-name:

ORA-00904

ORA-00904: : 标识符无效
Caused by: java.sql.SQLException: ORA-00904: : 标识符无效
java.sql.SQLException: ORA-00904: : 标识符无效
at oracle.jdbc.driver.DatabaseError.throwSqlException(DatabaseError.java:112) ~[ojdbc-14.jar:Oracle JDBC Driver version - “10.2.0.1.0”]

分析:执行select dbms_flashback.get_system_change_number as current_scn from dual时出现的问题
方案:原因当前用户没有权限,给他EXECUTE_CATALOG_ROLE角色,grant execute on dbms_flashback to tong;就可以了。

ORA-01306

SQL> SELECT OPERATION, STATUS, SQL_REDO FROM VOracle | ORA异常 - 图2LOGMNR_CONTENTS
*
ERROR at line 1:
ORA-01306: dbms_logmnr.start_logmnr() must be invoked before selecting from
v$logmnr_contents

官方解释:
ORA-01306: dbms_logmnr.start_logmnr() must be invoked before selecting from vOracle | ORA异常 - 图3logmnr_contents without first invoking the dbms_logmnr.start_logmnr() procedure.
Action: Invoke the dbms_logmnr.start_logmnr() procedure before issuing a select from the v$logmnr_contents view.

解决:
SQL> EXECUTE DBMS_LOGMNR.START_LOGMNR(OPTIONS =>DBMS_LOGMNR.DICT_FROM_REDO_LOGS +DBMS_LOGMNR.DDL_DICT_TRACKING);
PL/SQL 过程已成功完成。
SQL

ORA-01013

Error:
ORA-01013: user requested cancel of current operation
Cause:
You interrupted an Oracle operation by pressing Ctrl-C or by canceling the operation through another method (ie: front-end application).
Action:
The options to resolve this Oracle error are:
1.The current operation has been terminated by the user. There is no course of action to take. This message is informational only.
2.This error may also have been caused by a timeout in a sql pass-through query. To resolve this error, properties of the timeout parameter need to be changed to a higher value.

在测试一个通过ODBC连接ORACLE数据库的vc程序时,总是出现该错误,估计应该是数据量比较大,导致的超时。 查到解决方法如下:
1。修改 $ORACLE_HOME/network/admin/sqlnet.ora . 添加或修改成:
sqlnet.expire_time = 0
这将关闭oracle的连接状态检测。
2。在ODBC管理中去掉 ‘Enable Query Timeout’复选框。
3。在程序中的连接数据库的字符串中添加
QTO=F,成为这样的连接字符串:“;DSN=DB;UID=a;PWD=b;QTO=F”
4。在Connection对象上设置SetQueryTimeout(0)。--这个很方便好用

ORA-01830: 日期格式图片在转换整个输入字符串之前结束

事件
今天做项目的时候,编写plsql脚本时遇到一个日期转换的问题,如果在plsql调试时,脚本可以正常执行,但是程序调用时,就会报错ORA-01830: 日期格式图片在转换整个输入字符串之前结束

to_date函数
to_date函数用于字符串转日期,与to_char函数刚好相反。to_date形如

—oracle 为了区分分钟和月份,月份以mi表示
to_date(‘2004-05-07 13:23:44’,’yyyy-mm-dd hh24:mi:ss’)
to_date(‘2004-05-07’,’yyyy-mm-dd’)

参数1是源字符串,参数2是要转换成的日期形式。但是to_date限制两者精确度须一致,比如to_date(‘2004-05-07 13:23:44’,’yyyy-mm-dd’)这个就无法转换。

我手工执行时传入的是’yyyy-mm-dd’这种形式的,而程序调用时传入值精确到秒,就报错了,解决办法就是用substr截取参数的年月日部分。

示例代码
—plsql 定义变量this_date
—start_date为varchar2类型
select to_date(start_date,’yyyy-mm-dd’)
into this_date
from dual

以上脚本start_date长度为10(即形式为年-月-日),则可以成功执行,如果精确到时分秒甚至更长,则无法转换为’yyyy-mm-dd’的形式,报出如题错误,解决办法如下

  1. --截取start_date年月日部分使用
  2. select to_date(substr(start_date,1,10),'yyyy-mm-dd')
  3. into this_date
  4. from dual

————————————————
版权声明:本文为CSDN博主「木木守护神」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/sinat_19435069/article/details/47022121