一、命令没有正确的结束
(ORA-00933:SQL命令没有正确的结束)导致原因:
1:可能SQL语句中关键字前后缺少空格
2:Oracle 给表起别名时,直接在表名的后面空格别名就可以,不需要AS
3:SQL 语句中缺少关键字或者多了某个关键字,比如:AND
4:SQL 语句中缺少关键字或者多了某个标点符号,比如:,
二、指定升序降序
oracle order by 不指定 asc或者desc,默认是升序,即asc。
三、分页Limit
limit是mysql里的,select * from a order by b limit 6,1,取得按b排序的第6行第1个的值
而在oracle中想要实现是通过 rownum:select * from a where rownum<6 order by b
四、连接数问题
-- 查看当前系统有多少连接数
select count(*) from v$process
-- 查看当前设置的连接数
select value from v$parameter where name = 'processes'
-- 修改当前设置的连接数
alter system set processes = 300 scope = spfile;
-- 查看当前数据库连接的消耗情况
select b.MACHINE, b.PROGRAM, b.USERNAME, count(*) from v$process a, v$session b where a.ADDR = b.PADDR and b.USERNAME is not null
group by b.MACHINE, b.PROGRAM, b.USERNAME order by count(*) desc
五、闪回恢复区
问题
ORA-03113:end-of-file on communication channel 报错
解决
alter system set db_recovery_file_dest_size=1G;
六、无法串行访问事务错误
问题
ORA-08177: can't serialize access for this transaction
解决
当事务隔离级别为serializable,两个事务并发修改同一个对象,当前一个事务提交或回滚时,第二个事务会收到该错误。
七、SQL语句太长
问题
ORA-01745: invalid host/bind variable name
解决
原因是由于sql语句包含了太多的“?”(占位符),超出了Oracle的限制。经过验证,当占位符数量超过65536时,就会报出异常。
八、ORA-00911多了冒号
去掉mybaties语句的分号。