当前位置:  数据库>oracle
本页文章导读:
    ▪【ora-err】ORA-03113: end-of-file on communication channel - 我的博客园      oracle 版本 11.2.0 SQL> startupORACLE instance started.Total System Global Area 422670336 bytesFixed Size 1336960 bytesVariable Size 356518272 bytesDatabase Buffers 58720256 bytesRedo Buffers .........
    ▪Oracle Sql基础 - 傅心词      1、nvl('A','B') 如果a为null,则显示B2、DECODE(value, if1, then1, if2,then2, if3,then3, . . . else )3、grouping函数用法,带一个参数,参数为字段名,结果是根据该字段得出来的就返回1,反之返回04、Overover不.........
    ▪一个关于Oracle更新语句引发的时间字段类型的问题 - 轻吻你的发香      想当初我在做一个ASP.NET网站的时候,用的是Oracle数据库更新数据。表里面的字段有int类型的,string类型的,还有date类型的,在和asp.NET前台控件绑定更新的时候总是出现问题,我当时上网查了.........

[1]【ora-err】ORA-03113: end-of-file on communication channel - 我的博客园
    来源:    发布时间: 2013-10-29

oracle 版本 11.2.0

SQL> startup

ORACLE instance started.
Total System Global Area 422670336 bytes
Fixed Size 1336960 bytes
Variable Size 356518272 bytes
Database Buffers 58720256 bytes
Redo Buffers 6094848 bytes
Database mounted.
ORA-03113: end-of-file on communication channel
Process ID: 4545
Session ID: 1 Serial number: 5

----------------------------------------------------------------
1:查看trace文件 (位置:http://blog.csdn.net/yfb8530/article/details/8997374)

/u01/app/oracle/diag/rdbms/orcl/ORCL


2:按trace记录的原因操作

[oracle@rhel flashback]$ rman target /

Recovery Manager: Release 11.2.0.1.0 - Production on Fri May 31 00:12:52 2013
Copyright (c) 1982, 2009, Oracle and/or its affiliates. All rights reserved.
connected to target database (not started)

RMAN> startup mount
Oracle instance started
database mounted
Total System Global Area 422670336 bytes
Fixed Size 1336960 bytes
Variable Size 356518272 bytes
Database Buffers 58720256 bytes
Redo Buffers 6094848 bytes

RMAN> crosscheck archivelog all;

RMAN> delete expired archivelog all;

RMAN> alter database open;

database opened

本文链接:http://www.cnblogs.com/yacob/archive/2013/06/12/3132552.html,转载请注明。


    
[2]Oracle Sql基础 - 傅心词
    来源:    发布时间: 2013-10-29

1、nvl('A','B') 如果a为null,则显示B

2、DECODE(value, if1, then1, if2,then2, if3,then3, . . . else )

3、grouping函数用法,带一个参数,参数为字段名,结果是根据该字段得出来的就返回1,反之返回0

4、Over

over不能单独使用,要和分析函数:rank(),dense_rank(),row_number()等一起使用。
其参数:over(partition by col1 order by col2)
含义:按col1指定的字段进行分组,然后再按照col2进行排序

4、开窗函数:rank() over ( partition by [col1],[col2]... by [col3]desc) 

rank,dense_rank,row_number的区别:
结果集中如果出现两个相同的数据,那么rank会进行跳跃式的排名,
比如两个第二,那么没有第三接下来就是第四;
但是dense_rank不会跳跃式的排名,两个第二接下来还是第三;
row_number最牛,即使两个数据相同,排名也不一样。

5、distinct 去重复

6、Lag和Lead函数可以在一次查询中取出某个字段的前N行和后N行的数据(可以是其他字段的数据,比如根据字段甲查询上一行或下两行的字段乙),原来没有分析函数的时候采用子查询方法,但是比较麻烦,惭愧,我用子查询有的还查不出来呢。


语法如下:
lag(value_expression [,offset] [,default]) over ([query_partition_clase] order_by_clause);
lead(value_expression [,offset] [,default]) over ([query_partition_clase] order_by_clause);
其中:
value_expression:可以是一个字段或一个内建函数。
offset是正整数,默认为1,指往前或往后几点记录.因组内第一个条记录没有之前的行,最后一行没有之后的行,
default就是用于处理这样的信息,默认为空。

求出每个打工者上个月和下个月有没有赚钱(personincome大于零即为赚钱)

select distinct earnmonth,sname,
lag(decode(nvl(personincome,0),0,'No','Yes'),1,0) over(partition by sname order by earnmonth) PerMonth,
lead(decode(nvl(personincome,0),0,'No','Yes'),1,0) over(partition by sname order by earnmonth) NextMonth
from earnings;

详细内容:http://love-flying-snow.iteye.com/blog/573083

7、两种CASE

简单case:

CASE search_expression
  WHEN expression1 THEN result1
  WHEN expression2 THEN result2
  ...
  WHEN expressionN THEN resultN
  ELSE default_result

如果search_expression 是null,则会走ELSE,不会进行其他匹配,而decode无此问题。

搜索case:
直接使用case when +比较条件 到end为返回的结果,end之后可以做运算。
语法:

case when Boolean then returnvalue
when Boolean then return value
...
Else
Returnvalue
End

简单case和searched case之间的区别:
一、 简单case只能是when后面的表达式完全匹配case后的表达式,相当于 =,所以也不
能匹配null。
二、 searched case可以作为比较条件,那么可以使用like,!=,between ..and,<,=,
is null,is not null等,比简单case的使用更加广泛,完全可以替代简单case。

8、存储过程基本结构

CREATE OR REPLACE PROCEDURE 存储过程名字
(
参数1 IN NUMBER,
参数2 IN NUMBER
) IS
变量1 INTEGER :=0;
变量2 DATE;
BEGIN
...
END 存储过程名字

9、触发器基本结构

CREATE [OR REPLACE] TRIGGER trigger_name
{BEFORE | AFTER }
{INSERT | DELETE | UPDATE [OF column [, column …]]}
[OR {INSERT | DELETE | UPDATE [OF column [, column …]]}...]
ON [schema.]table_name | [schema.]view_name
[REFERENCING {OLD [AS] old | NEW [AS] new| PARENT as parent}]
[FOR EACH ROW ]
[WHEN condition]
PL/SQL_BLOCK | CALL procedure_name;

 

本文链接:http://www.cnblogs.com/fuxinci/archive/2013/06/11/3131766.html,转载请注明。


    
[3]一个关于Oracle更新语句引发的时间字段类型的问题 - 轻吻你的发香
    来源:    发布时间: 2013-10-29

想当初我在做一个ASP.NET网站的时候,用的是Oracle数据库更新数据。表里面的字段有int类型的,string类型的,还有date类型的,在和asp.NET前台控件绑定更新的时候总是出现问题,我当时上网查了好多东西,总是看的模棱两可,毕竟也是头一次接触操作Oracle。我把我最初写的更新贴出来(现在这个问题已经解决了),你们看看:

更新语句如下:
sql = string.Format("update xxt_registration r set r.name='{0}',r.ip='{1}',r.port='{2}',r.time='{3}',r.location='{4}',r.installtime='{5}',r.type=(select d.id from xxt_devicetype d where d.name='{6}') where r.id='{7}'",

this.txtname.Text.Trim(), this.txtip.Text.Trim(), this.txtport.Text.Trim(), this.txttime.Text.Trim(), this.txtlocation.Text.Trim(), this.txtinstalltime.Text.Trim(), this.DropDownList_tname.Text.Trim(), this.txtid.Text.Trim());

首先,出现的问题就是“类型”与“单引号”的问题,报的错误是,如下图:

这个错误是,ORA-01861: 文字与格式字符串不匹配。

可能是因为你那个表里面的time这一列,数据类型是date类型的。

你传递一个字符格式的内容进去以后,数据库不知道如何格式化这个字符信息为日期。

下面是一个网友提供的,错误重现的例子与解决的办法。在这里非常感谢他的热心帮助(链接地址是http://zhidao.baidu.com/question/551220541?quesup2&oldq=1)

SQL> create table test_time( time date );
表已创建。
SQL> insert into test_time values('2013-05-17 16:55');
insert into test_time values('2013-05-17 16:55')
*
ERROR 位于第 1 行:
ORA-01861: 文字与格式字符串不匹配
SQL> insert into test_time values('2013-05-17 16:55:30');
insert into test_time values('2013-05-17 16:55:30')
*
ERROR 位于第 1 行:
ORA-01861: 文字与格式字符串不匹配
SQL> insert into test_time values( TO_DATE('2013-05-17 16:55:30', 'YYYY-MM-DD HH24:MI:SS') );
已创建 1 行。

对于上面的更新语句,我总结如下:

string类型的可以加单引号,像r.name='{0}',r.ip='{1}',r.port='{2}'等等都是可以的;

int类型的在Oracle数据库更新语句中是不能加单引号的,像id='{7}'是不行的,应该去掉单引号改为id={7};

date类型可以加单引号,但不是像r.time='{3}'这样的,应该应用TO_DATE()来转换格式,如:r.time=to_date('{3}','yyyy-mm-dd')。asp.net前台控件中输入的是字符串类型的数据,更新的时候当然要转换成时间类型格式的,修改后的更新语句如下:

sql = string.Format("update xxt_registration r set r.name='{0}',r.ip='{1}',r.port='{2}',r.location='{3}',r.installtime=to_date('{4}','yyyy-mm-dd'),r.type=(select d.id from xxt_devicetype d where d.name='{5}') where r.id={6}",
this.txtname.Text.Trim(), this.txtip.Text.Trim(), this.txtport.Text.Trim(), this.txtlocation.Text.Trim(), this.Calendarinstalltime.SelectedDate.ToString("yyyy-MM-dd"), this.DropDownList_tname.Text.Trim(), this.txtid.Text.Trim());

最后,如果您还需要Oracle中TO_DATE格式的其它解答,下面的链接地址有详细的解说,相信一定能帮助您的。

   http://www.cnblogs.com/ajian/archive/2009/03/25/1421063.html

本文链接:http://www.cnblogs.com/litao4047/archive/2013/06/08/3127237.html,转载请注明。


    
最新技术文章:
▪current online redo log缺失后的恢复
▪ORA-600 2662错误解决实例
▪ORA-00600 2662错误解决方法
▪Oracle Hidden Parameter:_allow_resetlogs_corruption
▪Oracle诊断事件列表
▪Oracle 隐含参数 _disable_logging 详解
▪ORA-00600 [2662]错误解决过程
▪Oracle里常见的执行计划
▪Oracle里另外一些典型的执行计划
▪Oracle服务器自动备份
▪Oracle固定SQL的执行计划(一)---SQL Profile
▪Oracle固定SQL的执行计划(二)---SPM
▪同一环境下新建Standby RAC库
▪Oracle快速克隆安装
▪Oracle单实例启动多个实例
▪Oracle的PLSQL别名中文出现乱码解决方法
php iis7站长之家
▪RMAN-06023: no backup or copy of datafile 16 found to restor...
▪RMAN还原数据库报错问题解决案例
▪OEL6.8_X86平台部署Oracle 10gR2检测失败问题
▪Oracle 性能优化建议
▪Oracle SQL语句优化心得
▪Oracle慢SQL监控脚本实现
▪Oracle dblink 查询 tns:无法解析指定的连接标识...
▪Red Hat Enterprise Linux 6使用udev配置Oracle ASM总结...
▪Linux6.6及以上版本配置Oracle ASM共享储存-UDEV
▪Oracle 12C 开启数据库归档模式
▪Solairs系统中配置Oracle 12c 开机启动
▪重建DBMS_STATS解决ORA-31626 ORA-21633以及ORA-04063 ORA...
▪Oracle ASMM 与AMM之间相互切换
 


站内导航:


特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

©2012-2021,,E-mail:www_#163.com(请将#改为@)

浙ICP备11055608号-3