??xml version="1.0" encoding="utf-8" standalone="yes"?>色噜噜综合亚洲av中文无码,亚洲avav天堂av在线网毛片,67194在线午夜亚洲http://www.tkk7.com/brock/archive/2014/04/30/413091.htmlbrockbrockWed, 30 Apr 2014 06:38:00 GMThttp://www.tkk7.com/brock/archive/2014/04/30/413091.htmlhttp://www.tkk7.com/brock/comments/413091.htmlhttp://www.tkk7.com/brock/archive/2014/04/30/413091.html#Feedback0http://www.tkk7.com/brock/comments/commentRss/413091.htmlhttp://www.tkk7.com/brock/services/trackbacks/413091.html今天研究Oracle遇到了这个问题ora-01033:oracle initializationor shutdown in progress

ORA-01033:ORACLEinitialization or shutdown in progress

解决Ҏ

1)开?q行-cmd

2)命o行中输入SQLPLUS SYS/SYS AS SYSDBA

3)输入SHUTDOWN

4)输入STARTUP.注意q里是最重要的地?在显C相x据后,它还会显CZؓ什么不能启动的错误所?

 

C:\Users\lenovo>SQLPLUSSYS/SYS AS SYSDBA

SQL*Plus: Release 10.2.0.3.0 - Production on星期?7?3 11:43:32 2013

Copyright (c) 1982, 2006, Oracle.  All Rights Reserved.

q接?

Oracle Database 10g Enterprise Edition Release 10.2.0.3.0 -Production

With the Partitioning, OLAPand Data Mining options

SQL> SHUTDOWN

ORA-01109:数据库未打开

已经卸蝲数据库?/p>

ORACLE例程已经关闭?/p>

SQL> STARTUP

ORACLE例程已经启动?/p>

Total System Global Area 293601280 bytes

Fixed Size                 1290208 bytes

Variable Size            234881056 bytes

Database Buffers           50331648 bytes

Redo Buffers               7098368 bytes

数据库装载完毕?/p>

ORA-01157:无法标识/锁定数据文g 6 - 请参?DBWR 跟踪文g

ORA-01110:数据文g 6: 'F:\DC\DB\SDRS\TS_SDRS.DBF'

SQL> alter databasedatafile'F:\DC\DB\SDRS\TS_SDRS.DBF'offline drop;

 

数据库已更改?/p>

 

SQL> alter database open;

 

数据库已更改?/p>

 

SQL> drop tablespaceTS_SDRS including contents;

 

表空间已删除?/p>

SQL> create undo tablespace TS_SDRS

  2  datafile'CracleoradatasmsdbUNDOTBS01.DBF'size 2048M extent management local;

 

表空间已创徏?/p>

 

SQL> alter system setundo_tablespace=TS_SDRS;

 

pȝ已更攏V?/p>

 

SQL> shutdown

数据库已l关闭?/p>

已经卸蝲数据库?/p>

ORACLE例程已经关闭?/p>

SQL> startup

ORACLE例程已经启动?/p>

 

Total System Global Area  293601280 bytes

Fixed Size                 1290208 bytes

Variable Size            243269664 bytes

Database Buffers          41943040 bytes

Redo Buffers               7098368 bytes

数据库装载完毕?/p>

数据库已l打开?/p>

SQL>


------------------
ORA-01245、ORA-01547错误的解?/a>            

数据库rman restore database 之后Q执行recover database的时候,报告ORA-01245错误Q详l的错误信息如下Q?


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>

 

[@more@]

查ORA-01245那一行,发现是datafile 2状态ؓofflineQ解决的Ҏ是首先datafile 2 onlineQ然后再recover database?

SQL> alter database datafile 2 online;

Database altered.

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'

SQL> recover database
using backup controlfile;
ORA-00279: 更改 1670743 (?04/17/2008 14:13:16 生成)
对于U程 1 是必需?br />ORA-00289: : E:\ORACLE\ORA92\RDBMS\ARC00030.001
ORA-00280:
更改 1670743 对于U程 1 是按序列 # 30 q行?br />
指定日志: {<RET>=suggested | filename |
AUTO | CANCEL}
E:\oracle\oradata\EYGLE\REDO01.LOG
ORA-00310: 存档日志包含序列
29Q要求序?30
ORA-00334: 归档日志:
'E:\ORACLE\ORADATA\EYGLE\REDO01.LOG'

SQL> recover database using
backup controlfile;
ORA-00279: 更改 1670743 (?04/17/2008 14:13:16 生成) 对于U程 1
是必需?br />ORA-00289: : E:\ORACLE\ORA92\RDBMS\ARC00030.001
ORA-00280: 更改
1670743 对于U程 1 是按序列 # 30 q行?br />
指定日志: {<RET>=suggested | filename |
AUTO |
CANCEL}
E:\oracle\oradata\EYGLE\REDO02.LOG
已应用的日志?br />完成介质恢复?br />SQL>
alter database open resetlogs;
数据库已更改?br />

OK,搞定?



brock 2014-04-30 14:38 发表评论
]]>
底层q接资源的访问问?http://www.tkk7.com/brock/archive/2013/05/29/399902.htmlbrockbrockWed, 29 May 2013 01:53:00 GMThttp://www.tkk7.com/brock/archive/2013/05/29/399902.htmlhttp://www.tkk7.com/brock/comments/399902.htmlhttp://www.tkk7.com/brock/archive/2013/05/29/399902.html#Feedback0http://www.tkk7.com/brock/comments/commentRss/399902.htmlhttp://www.tkk7.com/brock/services/trackbacks/399902.html阅读全文

brock 2013-05-29 09:53 发表评论
]]>
ORA-01000: 出打开游标的最大数 问题的分析和解决http://www.tkk7.com/brock/archive/2013/05/29/399903.htmlbrockbrockWed, 29 May 2013 01:53:00 GMThttp://www.tkk7.com/brock/archive/2013/05/29/399903.htmlhttp://www.tkk7.com/brock/comments/399903.htmlhttp://www.tkk7.com/brock/archive/2013/05/29/399903.html#Feedback0http://www.tkk7.com/brock/comments/commentRss/399903.htmlhttp://www.tkk7.com/brock/services/trackbacks/399903.html

症状:pȝq行了一D|间报错:java.sql.SQLException: ORA-01000: 出打开游标的最大数

step 1:
    查看数据库当前的游标数配|slqplus:show parameter open_cursors;

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;
    
    补充:在java代码?执行conn.createStatement()和conn.prepareStatement()的时候,实际上都是相当与在数据库中打开了一个cursor。尤其是Q如果你的createStatement和prepareStatement是在一个@环里面的话,׃非常Ҏ出现q个问题。因为游标一直在不停的打开Q而且没有关闭?br />     一般来_我们在写Java代码的时候,createStatement和prepareStatement都应该要攑֜循环外面Q而且使用了这些Statment后,及时关闭。最好是在执行了一ơexecuteQuery、executeUpdate{之后,如果不需要用结果集QResultSetQ的数据Q就马上Statment关闭Q调用close()Ҏ?/p>



brock 2013-05-29 09:53 发表评论
]]>
Oracle 语法?OVER (PARTITION BY ..) 及开H函?转蝲 http://www.tkk7.com/brock/archive/2007/11/26/163101.htmlbrockbrockMon, 26 Nov 2007 02:54:00 GMThttp://www.tkk7.com/brock/archive/2007/11/26/163101.htmlhttp://www.tkk7.com/brock/comments/163101.htmlhttp://www.tkk7.com/brock/archive/2007/11/26/163101.html#Feedback0http://www.tkk7.com/brock/comments/commentRss/163101.htmlhttp://www.tkk7.com/brock/services/trackbacks/163101.html
oracle的分析函数over 及开H函?/div>
一Q分析函?strong style="color: black; background-color: #a0ffff">over
Oracle?.1.6开始提供分析函敎ͼ分析函数用于计算Zl的某种聚合|它和聚合函数的不同之处是
对于每个l返回多行,而聚合函数对于每个组只返回一行?
下面通过几个例子来说明其应用?nbsp;                                      
1Q统计某商店的营业额?nbsp;       
     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          
   
    注意Q?br />     1.在求W一名成l的时候,不能用row_number()Q因为如果同班有两个q列W一Qrow_number()只返回一个结?nbsp;         
    2.rank()和dense_rank()的区别是Q?br />       --rank()是蟩跃排序,有两个第二名时接下来是W四?br />       --dense_rank()l是连l排序,有两个第二名时仍然跟着W三?br />      
     
3.分类l计 (q显CZ?
    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)


brock 2007-11-26 10:54 发表评论
]]>
高手指教Q我惛_某一个字D늚值ƈ成一个字W串Q该怎么做呢Q?(?http://www.tkk7.com/brock/archive/2007/09/13/144732.htmlbrockbrockThu, 13 Sep 2007 02:14:00 GMThttp://www.tkk7.com/brock/archive/2007/09/13/144732.htmlhttp://www.tkk7.com/brock/comments/144732.htmlhttp://www.tkk7.com/brock/archive/2007/09/13/144732.html#Feedback0http://www.tkk7.com/brock/comments/commentRss/144732.htmlhttp://www.tkk7.com/brock/services/trackbacks/144732.html 

问?Q?nbsp;
表:
col1 col2 col3
1.5 a
1.5 b
2.5 c
2.5 d
5.5 e
5.5 f
1.2 g
1.2 h
1.2 i
1.1 j

我想取得q样的结果:
1.5 a,b
2.5 c,d
1.1 J
1.2 i
5.5 e,f
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-22 11: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 1 2
001 n4 2 3
001 n3 3 4
001 n2 4 5
001 n1 5 
002 m1 6 
003 t6 7 8
003 t5 8 9
003 t4 9 10
003 t3 10 11
003 t2 11 12
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 


brock 2007-09-13 10:14 发表评论
]]>
oracle imp/exp 说明http://www.tkk7.com/brock/archive/2007/07/03/127930.htmlbrockbrockTue, 03 Jul 2007 10:09:00 GMThttp://www.tkk7.com/brock/archive/2007/07/03/127930.htmlhttp://www.tkk7.com/brock/comments/127930.htmlhttp://www.tkk7.com/brock/archive/2007/07/03/127930.html#Feedback0http://www.tkk7.com/brock/comments/commentRss/127930.htmlhttp://www.tkk7.com/brock/services/trackbacks/127930.htmlexp/imp命o详解

exp/imp两个命o可以说是oracle中最常用的命令了.
ORACLE数据库有两类备䆾Ҏ。第一cMؓ物理备䆾Q该Ҏ实现数据库的完整恢复Q但
数据库必运行在归挡模式下(业务数据库在非归挡模式下q行Q,且需要极大的外部
存储讑֤Q例如磁带库Q第二类备䆾方式为逻辑备䆾Q业务数据库采用此种方式Q此?br>法不需要数据库q行在归挡模式下Q不但备份简单,而且可以不需要外部存储设备?br>数据库逻辑备䆾Ҏ
ORACLE数据库的逻辑备䆾分ؓ三种模式Q表备䆾、用户备份和完全备䆾?br>表模?br>备䆾某个用户模式下指定的对象Q表Q。业务数据库通常采用q种备䆾方式?br>若备份到本地文gQ用如下命令:
exp icdmain/icd rows=y indexes=n compress=n buffer=65536
feedback=100000 volsize=0
file=exp_icdmain_csd_yyyymmdd.dmp
log=exp_icdmain_csd_yyyymmdd.log
tables=icdmain.commoninformation,icdmain.serviceinfo,icdmain.dealinfo
若直接备份到带讑֤Q用如下命令:
exp icdmain/icd rows=y indexes=n compress=n buffer=65536
feedback=100000 volsize=0
file=/dev/rmt0
log=exp_icdmain_csd_yyyymmdd.log
tables=icdmain.commoninformation,icdmain.serviceinfo,icdmain.dealinfo
注:在磁盘空间允许的情况下,应先备䆾到本地服务器Q然后再拯到磁带。出于速度
斚w的考虑Q尽量不要直接备份到带讑֤?br>用户模式
备䆾某个用户模式下的所有对象。业务数据库通常采用q种备䆾方式?br>若备份到本地文gQ用如下命令:
exp icdmain/icd owner=icdmain rows=y indexes=n compress=n buffer=65536
feedback=100000 volsize=0
file=exp_icdmain_yyyymmdd.dmp
log=exp_icdmain_yyyymmdd.log
若直接备份到带讑֤Q用如下命令:
exp icdmain/icd owner=icdmain rows=y indexes=n compress=n buffer=65536
feedback=100000 volsize=0
file=/dev/rmt0
log=exp_icdmain_yyyymmdd.log
注:如果盘有空_备䆾到磁盘,然后再拷贝到带。如果数据库数据量较,
可采用这U办法备份?br>完全模式
备䆾完整的数据库。业务数据库不采用这U备份方式。备份命令ؓQ?br>exp icdmain/icd rows=y indexes=n compress=n buffer=65536
feedback=100000 volsize=0 full=y
file=exp_fulldb_yyyymmdd.dmp(带讑֤则ؓ/dev/rmt0)
log=exp_fulldb_yyyymmdd.log
对于数据库备份,采用增量备䆾Q即只备份上一ơ备份以来更改的数据。增量备?br>命oQ?br>exp icdmain/icd rows=y indexes=n compress=n buffer=65536
feedback=100000 volsize=0 full=y inctype=incremental
file=exp_fulldb_yyyymmdd.dmp(带讑֤则ؓ/dev/rmt0)
log=exp_fulldb_yyyymmdd.log
注:关于增量备䆾必须满下列条gQ?br>1.
只对完整数据库备份有效,且第一ơ需要full=y参数Q以后需要inctype=increment
al参数?br>2. 用户必须有EXP_FULL_DATABASE的系l角艌Ӏ?br>3. 话务量较时方可采用数据库备份?br>4. 如果盘有空_备䆾到磁盘,然后再备份到带?br>业务数据库备份方法及周期
用EXPq行备䆾前,先在SYS用户下运行CATEXP.SQL文gQ如果以前已q行该文Ӟ则不
要执行这个脚本)?br>没有Ҏ说明Q不允许在客L执行备䆾命o?br>备䆾命o参照表模式下的备份命令?br>从磁盘文件备份到带
如果首先备䆾到本地磁盘文Ӟ则需要{储到带讑֤上?br>1. 若需查看L上配|的带讑֤Q用如下命令:
lsdev -Cc tape
昄的结果如下例所C:
rmt0 Available 30-58-00-2,0 SCSI 4mm Tape Drive
rmt1 Defined  30-58-00-0,0 SCSI 4mm Tape Drive
标明Available的设备是可用的磁带设备?br>2. 若需查看带存储的内容,使用如下命oQ?br>tar -tvf /dev/rmt0
昄的结果如下例所C:
-rw-r--r-- 300 400 8089600 Jan 11 14:33:57 2001 exp_icdmain_20010111.dmp
如果昄cM如下内容Q则表示该磁带存储的备䆾数据是从数据库直接备份到带上,
而非从本地磁盘{储到带的备份文Ӟ因此操作pȝ无法识别?br>tar: 0511-193 An error occurred while reading from the media.
There is an input or output error.
?br>tar: 0511-169 A directory checksum error on media; -267331077 not equal to
2
5626.
3. 对于新磁带或无需保留现存数据的磁带,使用如下命oQ?br>tar -cvf /dev/rmt0 exp_icdmain_yyyymmdd.dmp
注:A. 该命令将无条件覆盖磁带上的现存数据?br>  B. 文g名不允许包含路径信息Q如Q?backup/exp_icdmain_yyyymmdd.dmp?br>4. 对于需要保留现存数据的带Q用如下命令:
tar -rvf /dev/rmt0 exp_icdmain_yyyymmdd.dmp
注:该命令将文gexp_icdmain_yyyymmdd.dmpq加到磁带的末端Q不会覆盖现存的数据
?br>特别Q如果备份时是从数据库直接备份到带上,则不可再向该带上追加复制Q
何其他文Ӟ否则该备份数据失效?br>5. 若需{储到带上的备䆾文g复制到本地硬盘,使用如下命oQ?br>A. 磁带上的全部文件复制到本地盘的当前目?br>tar -xvf /dev/rmt0
B. 磁带上的指定文件复制到本地盘的当前目?br>tar -xvf /dev/rmt0 exp_icdmain_yyyymmdd.dmp
备䆾旉安排
׃备䆾时对pȝI/O有较大媄响,所以,在晚?1点以后进行备份工作?br>业务数据库Oracle版本的恢?br>恢复Ҏ需Ҏ备䆾Ҏ定。由于业务数据库采用表备份和用户备䆾相结合的ҎQ?br>所以业务数据库的恢复需Ҏ实际情况采用表恢复和用户恢复相结合的Ҏ?br>恢复Ҏ
数据库的逻辑恢复分ؓ表恢复、用h复、完全恢复三U模式?br>表模?br>此方式将Ҏ按照表模式备份的数据q行恢复?br>A. 恢复备䆾数据的全部内?br>若从本地文g恢复Q用如下命令:
imp icdmain/icd fromuser=icdmain touser=icdmain rows=y indexes=n
commit=y buffer=65536 feedback=100000 ignore=n volsize=0
file=exp_icdmain_cs
d_yyyymmdd.dmp
log=imp_icdmain_csd_yyyymmdd.log
若从带讑֤恢复Q用如下命令:
imp icdmain/icd fromuser=icdmain touser=icdmain rows=y indexes=n
commit=y buffer=65536 feedback=100000 ignore=n volsize=0 file=/dev/rmt0
log=imp_icdmain_csd_yyyymmdd.log
B. 恢复备䆾数据中的指定?br>若从本地文g恢复Q用如下命令:
imp icdmain/icd fromuser=icdmain touser=icdmain rows=y indexes=n
commit=y buffer=65536 feedback=100000 ignore=n volsize=0
file=exp_icdmain_cs
d_yyyymmdd.dmp
log=imp_icdmain_csd_yyyymmdd.log
tables=commoninformation,serviceinfo
若从带讑֤恢复Q用如下命令:
imp icdmain/icd fromuser=icdmain touser=icdmain rows=y indexes=n
commit=y buffer=65536 feedback=100000 ignore=n volsize=0
file=/dev/rmt0
log=imp_icdmain_csd_yyyymmdd.log
tables=commoninformation,serviceinfo
用户模式
此方式将Ҏ按照用户模式备䆾的数据进行恢复?br>A. 恢复备䆾数据的全部内?br>若从本地文g恢复Q用如下命令:
imp icdmain/icd fromuser=icdmain touser=icdmain rows=y indexes=n
commit=y buffer=65536 feedback=100000 ignore=n volsize=0
file=exp_icdmain_yy
yymmdd.dmp
log=imp_icdmain_yyyymmdd.log
若从带讑֤恢复Q用如下命令:
imp icdmain/icd fromuser=icdmain touser=icdmain rows=y indexes=n
commit=y buffer=65536 feedback=100000 ignore=n volsize=0 file=/dev/rmt0
log=imp_icdmain_yyyymmdd.log
B. 恢复备䆾数据中的指定?br>若从本地文g恢复Q用如下命令:
imp icdmain/icd fromuser=icdmain touser=icdmain rows=y indexes=n
commit=y buffer=65536 feedback=100000 ignore=n volsize=0
file=exp_icdmain_yy
yymmdd.dmp
log=imp_icdmain_yyyymmdd.log
tables=commoninformation,serviceinfo
若从带讑֤恢复Q用如下命令:
imp icdmain/icd fromuser=icdmain touser=icdmain rows=y indexes=n
commit=y buffer=65536 feedback=100000 ignore=n volsize=0 file=/dev/rmt0
log=imp_icdmain_yyyymmdd.log
tables=commoninformation,serviceinfo
完全模式
如果备䆾方式为完全模式,采用下列恢复ҎQ?br>若从本地文g恢复Q用如下命令:
imp system/manager rows=y indexes=n commit=y buffer=65536
feedback=100000 ignore=y volsize=0 full=y
file=exp_icdmain_yyyymmdd.dmp
log=imp_icdmain_yyyymmdd.log
若从带讑֤恢复Q用如下命令:
imp system/manager rows=y indexes=n commit=y buffer=65536
feedback=100000 ignore=y volsize=0 full=y
file=/dev/rmt0
log=imp_icdmain_yyyymmdd.log
参数说明
1. ignore参数
Oracle在恢复数据的q程中,当恢复某个表Ӟ该表已经存在Q?br>pҎignore参数的设|来军_如何操作?br>若ignore=yQOracle不执行CREATE TABLE语句Q直接将数据
插入到表中,如果插入的记录违背了U束条gQ比如主键约束,
则出错的记录不会插入Q但合法的记录会d到表中?br>若ignore=nQOracle不执行CREATE TABLE语句Q同时也不会
数据插入到表中Q而是忽略该表的错误,l箋恢复下一个表?br>2. indexes参数
在恢复数据的q程中,若indexes=nQ则表上的烦引不会被恢复
Q但是主键对应的唯一索引无条g恢复Q这是ؓ了保证数?br>的完整性?br>字符集{?br>对于单字节字W集Q例如US7ASCIIQ,恢复Ӟ数据库自动{
换ؓ该会话的字符集(NLS_LANG参数Q;对于多字节字W集
Q例如ZHS16CGB231280Q,恢复Ӟ应尽量字符集相?br>Q避免{换)Q如果要转换Q目标数据库的字W集应是输出?br>据库字符集的集?br>恢复Ҏ
业务数据库采用表恢复Ҏ。在用IMPq行恢复前,先在SYS
用户下运行CATEXP.SQL文gQ如果以前已q行该文Ӟ?br>不要执行q个脚本Q,然后执行下列命oQ?br>IMP ICDMAIN/ICD FILE=文g?LOG=LOG文g?ROWS=Y
COMMIT=Y BUFFER=Y IGNORE=Y TABLES=表名
注:要恢复的表名参照备䆾的表?br>  。恢复是在原表基上篏加数?br>  。没有特D说明,不允许在客户端执行恢复命?br>
一个数据库的某用户的所有表导到另外数据库的一个用户下面的例子  
exp userid=system/manager owner=username1 file=expfile.dmp
imp userid=system/manager fromuser=username1 touser=username2 ignore=y file=expfile.dmp



一个数据库的某用户的所有表导到另外数据库的一个用户下面的例子  

exp userid=system/manager owner=username1 file=expfile.dmp
imp userid=system/manager fromuser=username1 touser=username2 ignore=y file=expfile.dmp

ORACLE数据库有两类备䆾Ҏ。第一cMؓ物理备䆾Q该Ҏ实现数据库的完整恢复Q但
数据库必运行在归挡模式下(业务数据库在非归挡模式下q行Q,且需要极大的外部
存储讑֤Q例如磁带库Q第二类备䆾方式为逻辑备䆾Q业务数据库采用此种方式Q此?br>法不需要数据库q行在归挡模式下Q不但备份简单,而且可以不需要外部存储设备?br>数据库逻辑备䆾Ҏ
ORACLE数据库的逻辑备䆾分ؓ三种模式Q表备䆾、用户备份和完全备䆾?br>表模?br>备䆾某个用户模式下指定的对象Q表Q。业务数据库通常采用q种备䆾方式?br>若备份到本地文gQ用如下命令:
exp icdmain/icd rows=y indexes=n compress=n buffer=65536
feedback=100000 volsize=0
file=exp_icdmain_csd_yyyymmdd.dmp
log=exp_icdmain_csd_yyyymmdd.log
tables=icdmain.commoninformation,icdmain.serviceinfo,icdmain.dealinfo
若直接备份到带讑֤Q用如下命令:
exp icdmain/icd rows=y indexes=n compress=n buffer=65536
feedback=100000 volsize=0
file=/dev/rmt0
log=exp_icdmain_csd_yyyymmdd.log
tables=icdmain.commoninformation,icdmain.serviceinfo,icdmain.dealinfo
注:在磁盘空间允许的情况下,应先备䆾到本地服务器Q然后再拯到磁带。出于速度
斚w的考虑Q尽量不要直接备份到带讑֤?br>用户模式
备䆾某个用户模式下的所有对象。业务数据库通常采用q种备䆾方式?br>若备份到本地文gQ用如下命令:
exp icdmain/icd owner=icdmain rows=y indexes=n compress=n buffer=65536
feedback=100000 volsize=0
file=exp_icdmain_yyyymmdd.dmp
log=exp_icdmain_yyyymmdd.log
若直接备份到带讑֤Q用如下命令:
exp icdmain/icd owner=icdmain rows=y indexes=n compress=n buffer=65536
feedback=100000 volsize=0
file=/dev/rmt0
log=exp_icdmain_yyyymmdd.log
注:如果盘有空_备䆾到磁盘,然后再拷贝到带。如果数据库数据量较,
可采用这U办法备份?br>完全模式
备䆾完整的数据库。业务数据库不采用这U备份方式。备份命令ؓQ?br>exp icdmain/icd rows=y indexes=n compress=n buffer=65536
feedback=100000 volsize=0 full=y
file=exp_fulldb_yyyymmdd.dmp(带讑֤则ؓ/dev/rmt0)
log=exp_fulldb_yyyymmdd.log
对于数据库备份,采用增量备䆾Q即只备份上一ơ备份以来更改的数据。增量备?br>命oQ?br>exp icdmain/icd rows=y indexes=n compress=n buffer=65536
feedback=100000 volsize=0 full=y inctype=incremental
file=exp_fulldb_yyyymmdd.dmp(带讑֤则ؓ/dev/rmt0)
log=exp_fulldb_yyyymmdd.log
注:关于增量备䆾必须满下列条gQ?br>1.
只对完整数据库备份有效,且第一ơ需要full=y参数Q以后需要inctype=increment
al参数?br>2. 用户必须有EXP_FULL_DATABASE的系l角艌Ӏ?br>3. 话务量较时方可采用数据库备份?br>4. 如果盘有空_备䆾到磁盘,然后再备份到带?br>业务数据库备份方法及周期
用EXPq行备䆾前,先在SYS用户下运行CATEXP.SQL文gQ如果以前已q行该文Ӟ则不
要执行这个脚本)?br>没有Ҏ说明Q不允许在客L执行备䆾命o?br>
备䆾命o参照表模式下的备份命令?br>从磁盘文件备份到带
如果首先备䆾到本地磁盘文Ӟ则需要{储到带讑֤上?br>1. 若需查看L上配|的带讑֤Q用如下命令:
lsdev -Cc tape
昄的结果如下例所C:
rmt0 Available 30-58-00-2,0 SCSI 4mm Tape Drive
rmt1 Defined  30-58-00-0,0 SCSI 4mm Tape Drive
标明Available的设备是可用的磁带设备?br>2. 若需查看带存储的内容,使用如下命oQ?br>tar -tvf /dev/rmt0
昄的结果如下例所C:
-rw-r--r-- 300 400 8089600 Jan 11 14:33:57 2001 exp_icdmain_20010111.dmp
如果昄cM如下内容Q则表示该磁带存储的备䆾数据是从数据库直接备份到带上,
而非从本地磁盘{储到带的备份文Ӟ因此操作pȝ无法识别?br>tar: 0511-193 An error occurred while reading from the media.
There is an input or output error.
?br>tar: 0511-169 A directory checksum error on media; -267331077 not equal to
2
5626.
3. 对于新磁带或无需保留现存数据的磁带,使用如下命oQ?br>tar -cvf /dev/rmt0 exp_icdmain_yyyymmdd.dmp
注:A. 该命令将无条件覆盖磁带上的现存数据?br>  B. 文g名不允许包含路径信息Q如Q?backup/exp_icdmain_yyyymmdd.dmp?br>4. 对于需要保留现存数据的带Q用如下命令:
tar -rvf /dev/rmt0 exp_icdmain_yyyymmdd.dmp
注:该命令将文gexp_icdmain_yyyymmdd.dmpq加到磁带的末端Q不会覆盖现存的数据
?br>特别Q如果备份时是从数据库直接备份到带上,则不可再向该带上追加复制Q
何其他文Ӟ否则该备份数据失效?br>5. 若需{储到带上的备䆾文g复制到本地硬盘,使用如下命oQ?br>A. 磁带上的全部文件复制到本地盘的当前目?br>tar -xvf /dev/rmt0
B. 磁带上的指定文件复制到本地盘的当前目?br>tar -xvf /dev/rmt0 exp_icdmain_yyyymmdd.dmp
备䆾旉安排
׃备䆾时对pȝI/O有较大媄响,所以,在晚?1点以后进行备份工作?br>业务数据库Oracle版本的恢?br>恢复Ҏ需Ҏ备䆾Ҏ定。由于业务数据库采用表备份和用户备䆾相结合的ҎQ?br>所以业务数据库的恢复需Ҏ实际情况采用表恢复和用户恢复相结合的Ҏ?br>恢复Ҏ
数据库的逻辑恢复分ؓ表恢复、用h复、完全恢复三U模式?br>表模?br>此方式将Ҏ按照表模式备份的数据q行恢复?br>A. 恢复备䆾数据的全部内?br>若从本地文g恢复Q用如下命令:
imp icdmain/icd fromuser=icdmain touser=icdmain rows=y indexes=n
commit=y buffer=65536 feedback=100000 ignore=n volsize=0
file=exp_icdmain_cs
d_yyyymmdd.dmp
log=imp_icdmain_csd_yyyymmdd.log
若从带讑֤恢复Q用如下命令:
imp icdmain/icd fromuser=icdmain touser=icdmain rows=y indexes=n
commit=y buffer=65536 feedback=100000 ignore=n volsize=0 file=/dev/rmt0
log=imp_icdmain_csd_yyyymmdd.log
B. 恢复备䆾数据中的指定?br>若从本地文g恢复Q用如下命令:
imp icdmain/icd fromuser=icdmain touser=icdmain rows=y indexes=n
commit=y buffer=65536 feedback=100000 ignore=n volsize=0
file=exp_icdmain_cs
d_yyyymmdd.dmp
log=imp_icdmain_csd_yyyymmdd.log
tables=commoninformation,serviceinfo
若从带讑֤恢复Q用如下命令:
imp icdmain/icd fromuser=icdmain touser=icdmain rows=y indexes=n
commit=y buffer=65536 feedback=100000 ignore=n volsize=0
file=/dev/rmt0
log=imp_icdmain_csd_yyyymmdd.log
tables=commoninformation,serviceinfo
用户模式
此方式将Ҏ按照用户模式备䆾的数据进行恢复?br>A. 恢复备䆾数据的全部内?br>若从本地文g恢复Q用如下命令:
imp icdmain/icd fromuser=icdmain touser=icdmain rows=y indexes=n
commit=y buffer=65536 feedback=100000 ignore=n volsize=0
file=exp_icdmain_yy
yymmdd.dmp
log=imp_icdmain_yyyymmdd.log
若从带讑֤恢复Q用如下命令:
imp icdmain/icd fromuser=icdmain touser=icdmain rows=y indexes=n
commit=y buffer=65536 feedback=100000 ignore=n volsize=0 file=/dev/rmt0
log=imp_icdmain_yyyymmdd.log
B. 恢复备䆾数据中的指定?br>若从本地文g恢复Q用如下命令:
imp icdmain/icd fromuser=icdmain touser=icdmain rows=y indexes=n
commit=y buffer=65536 feedback=100000 ignore=n volsize=0
file=exp_icdmain_yy
yymmdd.dmp
log=imp_icdmain_yyyymmdd.log
tables=commoninformation,serviceinfo
若从带讑֤恢复Q用如下命令:
imp icdmain/icd fromuser=icdmain touser=icdmain rows=y indexes=n
commit=y buffer=65536 feedback=100000 ignore=n volsize=0 file=/dev/rmt0
log=imp_icdmain_yyyymmdd.log
tables=commoninformation,serviceinfo
完全模式
如果备䆾方式为完全模式,采用下列恢复ҎQ?br>若从本地文g恢复Q用如下命令:
imp system/manager rows=y indexes=n commit=y buffer=65536
feedback=100000 ignore=y volsize=0 full=y
file=exp_icdmain_yyyymmdd.dmp
log=imp_icdmain_yyyymmdd.log
若从带讑֤恢复Q用如下命令:
imp system/manager rows=y indexes=n commit=y buffer=65536
feedback=100000 ignore=y volsize=0 full=y
file=/dev/rmt0
log=imp_icdmain_yyyymmdd.log
参数说明
1. ignore参数
Oracle在恢复数据的q程中,当恢复某个表Ӟ该表已经存在Q?br>pҎignore参数的设|来军_如何操作?br>若ignore=yQOracle不执行CREATE TABLE语句Q直接将数据
插入到表中,如果插入的记录违背了U束条gQ比如主键约束,
则出错的记录不会插入Q但合法的记录会d到表中?br>若ignore=nQOracle不执行CREATE TABLE语句Q同时也不会
数据插入到表中Q而是忽略该表的错误,l箋恢复下一个表?br>2. indexes参数
在恢复数据的q程中,若indexes=nQ则表上的烦引不会被恢复
Q但是主键对应的唯一索引无条g恢复Q这是ؓ了保证数?br>的完整性?br>字符集{?br>对于单字节字W集Q例如US7ASCIIQ,恢复Ӟ数据库自动{
换ؓ该会话的字符集(NLS_LANG参数Q;对于多字节字W集
Q例如ZHS16CGB231280Q,恢复Ӟ应尽量字符集相?br>Q避免{换)Q如果要转换Q目标数据库的字W集应是输出?br>据库字符集的集?br>恢复Ҏ
业务数据库采用表恢复Ҏ。在用IMPq行恢复前,先在SYS
用户下运行CATEXP.SQL文gQ如果以前已q行该文Ӟ?br>不要执行q个脚本Q,然后执行下列命oQ?br>IMP ICDMAIN/ICD FILE=文g?LOG=LOG文g?ROWS=Y
COMMIT=Y BUFFER=Y IGNORE=Y TABLES=表名
注:要恢复的表名参照备䆾的表?br>  。恢复是在原表基上篏加数?br>  。没有特D说明,不允许在客户端执行恢复命?



brock 2007-07-03 18:09 发表评论
]]>
վ֩ģ壺 Ѹ߲| þþþAVۺϲҰ | պ˳ۺձ| ҹƷ߹ۿ| ҳƷ˿| ߹ۿվ| òѸԴվ| ޳aƬ߹ۿ| Ʒ޲Ʒһ| 91Ʒֻ| ۺһۺͼ| ƷAò| ëƬѹۿƵȫ| avѸ߳ˮ | ˬִ̼վֱ| Ʒպ99޵߷| ޾Ʒ99߹ۿ | һƵ| ޹ҹӰ | ˾ҹƷƵ| ŷղۺ| Ƶһ| ҰĻƵ| ƷƵ| avרԭ| ղ2021| Ʒ߳| ŮƵվa | ɫþƷƵ| 2021߹ۿƵƷ| ŷһ| ѿavһ | þþƷվ| ɫwwwƷƵѿ| AVһӰƬ| ɾƷһ| Ļþۺ| Ƶ97| һĻ| ޹ƷƵ| aƬѿ|