SQL> recover database until cancel; ORA-00279: change 575876 generated at 12/01/2009 08:19:49 needed for thread 1 ORA-00289: suggestion : /oracle/flash_recovery_area/ORCL/archivelog/2009_12_01/o1_mf_1_2_%u_.arc ORA-00280: change 575876 for thread 1 is in sequence #2
Specify log: {=suggested | filename | AUTO | CANCEL} auto ORA-00308: cannot open archived log '/oracle/flash_recovery_area/ORCL/archivelog/2009_12_01/o1_mf_1_2_%u_.arc' ORA-27037: unable to obtain file status Linux Error: 2: No such file or directory Additional information: 3
ORA-00308: cannot open archived log '/oracle/flash_recovery_area/ORCL/archivelog/2009_12_01/o1_mf_1_2_%u_.arc' ORA-27037: unable to obtain file status Linux Error: 2: No such file or directory Additional information: 3
ORA-01547: warning: RECOVER succeeded but OPEN RESETLOGS would get error below ORA-01245: offline file 2 will be lost if RESETLOGS is done ORA-01110: data file 2: '/oracle/oradata/orcl/undotbs01.dbf'
SQL> recover database until cancel; ORA-00279: change 575876 generated at 12/01/2009 08:19:49 needed for thread 1 ORA-00289: suggestion : /oracle/flash_recovery_area/ORCL/archivelog/2009_12_01/o1_mf_1_2_%u_.arc ORA-00280: change 575876 for thread 1 is in sequence #2
Specify log: {=suggested | filename | AUTO | CANCEL} cancel Media recovery cancelled. SQL> alter database open resetlogs;
Database altered.
SQL>
--------------------
ORA-01589: 要打开数据库则必须使用 RESETLOGS ?nbsp;NOR
ORA-01589: 要打开数据库则必须使用 RESETLOGS ?NORESETLOGS 选项
SQL> alter database open ORA-01589: 要打开数据库则必须使用 RESETLOGS ? NORESETLOGS 选项
SQL> alter database open resetlogs; alter database open resetlogs * ERROR 位于W?1 ? ORA-01113: 文g 1 需要介质恢?br />ORA-01110: 数据文g 1: 'E:\ORACLE\ORADATA\EYGLE\SYSTEM01.DBF'
step 2: 查看游标使用情况Q?br />select o.sid, osuser, machine, count(*) num_curs from v$open_cursor o, v$session s where user_name = 'user' and o.sid=s.sid group by o.sid, osuser, machine order by num_curs desc; 此处的user_name='user'?user代表占用数据库资源的数据库用户名.
step 3: 查看游标执行的sql情况Q?/p>
select o.sid q.sql_text from v$open_cursor o, v$sql q where q.hash_value=o.hash_value and o.sid = 123;
step 4: Ҏ游标占用情况分析讉K数据库的E序在资源释放上是否正常,如果E序释放资源没有问题Q则加大游标数?br /> alter system set open_cursors=2000 scope=both;
date sale
1 20
2 15
3 14
4 18
5 30
规则Q按天统计:每天都统计前面几天的总额
得到的结果:
DATE SALE SUM
----- -------- ------
1 20 20 --1?nbsp;
2 15 35 --1天+2?nbsp;
3 14 49 --1天+2天+3?nbsp;
4 18 67 .
5 30 97 .
2:l计各班成WW一名的同学信息
NAME CLASS S
----- ----- ----------------------
fda 1 80
ffd 1 78
dss 1 95
cfe 2 74
gds 2 92
gf 3 99
ddd 3 99
adf 3 45
asdf 3 55
3dd 3 78
通过Q?nbsp;
--
select * from
(
select name,class,s,rank()over(partition by class order by s desc) mm from t2
)
where mm=1
--
得到l果Q?br />
NAME CLASS S MM
----- ----- ---------------------- ----------------------
dss 1 95 1
gds 2 92 1
gf 3 99 1
ddd 3 99 1
A B C
-- -- ----------------------
m a 2
n a 3
m a 2
n b 2
n b 1
x b 3
x b 2
x b 4
h b 3
select a,c,sum(c)over(partition by a) from t2
得到l果Q?br />
A B C SUM(C)OVER(PARTITIONBYA)
-- -- ------- ------------------------
h b 3 3
m a 2 4
m a 2 4
n a 3 6
n b 2 6
n b 1 6
x b 3 9
x b 2 9
x b 4 9
如果用sumQgroup by 则只能得?br />
A SUM(C)
-- ----------------------
h 3
m 4
n 6
x 9
无法得到B列?nbsp;
Q=Q=Q?/font>
select * from test
数据:
A B C
1 1 1
1 2 2
1 3 3
2 2 5
3 4 6
---B栏位值相同的对应的C 栏位值加?br />
select a,b,c, SUM(C) OVER (PARTITION BY B) C_Sum
from test
A B C C_SUM
1 1 1 1
1 2 2 7
2 2 5 7
1 3 3 3
3 4 6 6
---如果不需要已某个栏位的值分?那就要用 null
eg: 是C的栏位值summary 攑֜每行后面
select a,b,c, SUM(C) OVER (PARTITION BY null) C_Sum
from test
A B C C_SUM
1 1 1 17
1 2 2 17
1 3 3 17
2 2 5 17
3 4 6 17
求个人工资占部门工资的百分比
SQL> select * from salary;
NAME DEPT SAL
---------- ---- -----
a 10 2000
b 10 3000
c 10 5000
d 20 4000
SQL> select name,dept,sal,sal*100/sum(sal) over(partition by dept) percent from salary;
NAME DEPT SAL PERCENT
---------- ---- ----- ----------
a 10 2000 20
b 10 3000 30
c 10 5000 50
d 20 4000 100
二:开H函?nbsp;
开H函数指定了分析函数工作的数据窗口大,q个数据H口大小可能会随着行的变化而变化,举例如下Q?
1Q?nbsp; overQorder by salaryQ?按照salary排序q行累计Qorder by是个默认的开H函?br />
overQpartition by deptnoQ按照部门分?br />
2Q?br />
overQorder by salary range between 5 preceding and 5 followingQ?br />
每行对应的数据窗口是之前行幅度g过5Q之后行q度g过5
例如:对于以下?br />
aa
1
2
2
2
3
4
5
6
7
9
sum(aa)overQorder by aa range between 2 preceding and 2 followingQ?br />
得出的结果是
AA SUM
---------------------- -------------------------------------------------------
1 10
2 14
2 14
2 14
3 18
4 18
5 22
6 18
7 22
9 9
是_对于aa=5的一?Qsum?nbsp; 5-1<=aa<=5+2 的和
对于aa=2来说 Qsum=1+2+2+2+3+4=14 Q?br />
又如 对于aa=9 Q?-1<=aa<=9+2 只有9一个数Q所以sum=9 Q?br />
3Q其它: overQorder by salary rows between 2 preceding and 4 followingQ?br />
每行对应的数据窗口是之前2行,之后4?
4Q下面三条语句等效: overQorder by salary rows between unbounded preceding and unbounded followingQ?br />
每行对应的数据窗口是从第一行到最后一行,{效Q?br />
overQorder by salary range between unbounded preceding and unbounded followingQ?br />
{效 over(partition by null)
问?Q?nbsp; 表: col1 col2 col3 A 1.5 a A 1.5 b A 2.5 c A 2.5 d B 5.5 e B 5.5 f B 1.2 g C 1.2 h A 1.2 i A 1.1 j 我想取得q样的结果: A 1.5 a,b A 2.5 c,d A 1.1 J A 1.2 i B 5.5 e,f C 1.2 h 也就是按col1、col2分组l计Q将col3的值用“,”q接h?br />
其中col1 ?nbsp;字符?nbsp;col2是数字型。这两个字段的唯一值的个数是未知的 不知该如何才能做刎ͼ请各位高手帮忙?br />
{!Q?nbsp;1: id name 1 aa 2 bb 3 cc 4 dd 1 ee 1 xxx ID相同的行只显CZ条记录ƈ把相同ID的NAME加v来用,隔开 怎么?/span>??? 我需要的l果集是: id name 1 aa,ee,xxx 2 bb 3 cc 4 dd --------------------------------- 假设你的table ?nbsp;tmp_1; -------------------------------------------- create table tmp_2 as select * from tmp_1 where 1=2; insert into tmp_2 select distinct id,null from tmp_1; declare i number(4); cursor c_v is select * from ttmp_1; begin for v_n in c loop select count(*) into i from ttmp_2 b where b.name is not null and b.id=v_n.id; if i=0 then update ttmp_2 a set name = v_n.name where a.id=v_n.id; else update ttmp_2 a set name = name||','||v_n.name where a.id=v_n.id; end if; end loop; end; / ------------------------------------ 或许以下的更有帮?br />
l你看看duanzilin (?的文章吧,一个强?地址忘记?q好有保?br />
丅R 题: 原创Q突发奇惻I分nQ散分-Q-Q-关于分组后字D|接的问题 作 者: duanzilin (? ?nbsp;?nbsp;| 120 所属论坛: Oracle 基础和管?nbsp; 问题ҎQ?nbsp;200 回复ơ数Q?nbsp;29 发表旉Q?nbsp;2005-7-2211:52:56 最q在论坛上,l常会看到关于分l后字段拼接的问题, 大概是类g列的情ŞQ?br />
SQL> select no,q from test 2/ NO Q ---------------------------------------- 001 n1 001 n2 001 n3 001 n4 001 n5 002 m1 003 t1 003 t2 003 t3 003 t4 003 t5 003 t6 12 rows selected 最后要得到cM于如下的l果Q?br />
001 n1;n2;n3;n4;n5 002 m1 003 t1;t2;t3;t4;t5;t6 通常大家都认c问题无法用一句SQL解决Q本来我也这么认为,可是今天无意中突然有了灵感,原来是可以这么做的: 前几天有人提到过sys_connect_by_path的用法,我想q里是不是也能用到这个方法,如果能做到的话,不用函数或存贮过E也可以做到了;要用到sys_connect_by_pathQ首先要自己构徏树型的结构,q且树的每个分支都是单根的,例如1-?/span>2-?/span>3-?/span>4Q不会存?-?/span>2Q?/span>1-?的情况; 我是q么构徏树,很简单的Q看下面的结果就会知道了Q?br />
SQL> select no,q,rn,lead(rn) over(partition by no order by rn) rn1 2 from (select no,q,row_number() over(order by no,q desc) rn from test) 3/ NO Q RN RN1 ------------------------------------------------------------ 001 n5 12 001 n4 23 001 n3 34 001 n2 45 001 n1 5 002 m1 6 003 t6 78 003 t5 89 003 t4 910 003 t3 1011 003 t2 1112 003 t1 12 12 rows selected 有了q个树型的结构,接下来的事就好办了,只要取出拥有全\径的那个pathQ问题就解决了,先看no=‘001’的分l: select no,sys_connect_by_path(q,';') result from (select no,q,rn,lead(rn) over(partition by no order by rn) rn1 from (select no,q,row_number() over(order by no,q desc) rn from test) ) start with no ='001' and rn1 is null connect by rn1 = prior rn SQL> 6/ NO RESULT ------------------------------------------------------------------------------------------ 001 ;n1 001 ;n1;n2 001 ;n1;n2;n3 001 ;n1;n2;n3;n4 001 ;n1;n2;n3;n4;n5 上面l果的最?条就是我们要得结果了 要得到每l的l果Q可以下面这?br />
select t.*, ( select max(sys_connect_by_path(q,';')) result from (select no,q,rn,lead(rn) over(partition by no order by rn) rn1 from (select no,q,row_number() over(order by no,q desc) rn from test) ) start with no = t.no and rn1 is null connect by rn1 = prior rn ) value from (select distinct no from test) t SQL> 10/ NO VALUE ------------------------------------------------------------------------------------------ 001 ;n1;n2;n3;n4;n5 002 ;m1 003 ;t1;t2;t3;t4;t5;t6 对上面结果稍加处理就可以了,希望对大家有帮助Q) {!Q?nbsp;2: 注意注意 sys_connect_by_path有长度限Ӟ不能过4K