a我考网

 找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 139|回复: 2

[考试辅导] Oracle技术:利用dbmsbackuprestore恢复数据库

[复制链接]
发表于 2012-8-4 14:06:19 | 显示全部楼层 |阅读模式
 进行测试之前先将数据库做全备:   引用
9 i: D7 N+ W  i' F* |$ R- ?  RMAN> run {
0 v( Q% U! V% f/ ~# b. Q  2> allocate channel ch00 device type disk;
8 B5 V! i, _5 p- A" r0 \  3> backup database include current controlfile format ‘/backup/full%t’ tag=’FULLDB’;; Q1 |; W) s- {! u5 m% L, t  Y5 e
  4> sql ‘alter system archive log current’;
" u) }# M- H9 y- `* k; t$ V  5> backup archivelog all format ‘/backup/arch%t’ tag=’ARCHIVELOG’;9 e, o7 k! ]- {: p7 n" r& N8 t7 o
  6> release channel ch00;
) C7 H0 l( L& v6 @# M1 W  7> }
0 u+ ]/ G, h  ?, ~. z4 X: P& g0 M  allocated channel: ch00
& G' x5 B  c. [$ q" }6 S, G  channel ch00: sid=17 devtype=DISK
: J, u3 f3 X7 t# o* w% |; {  Starting backup at 20-JAN-10
6 {; F3 \- U) o  channel ch00: starting full datafile backupset
+ S/ a, A1 _# O" ^$ j$ `; [8 D" i  channel ch00: specifying datafile(s) in backupset
1 Z* e+ g/ Z' u8 z  including current controlfile in backupset
% L1 \5 _, M+ V$ f  input datafile fno=00001 name=/app/oracle/oradata/ora9i/system01.dbf
. F5 w$ {) {2 T+ f& c  input datafile fno=00002 name=/app/oracle/oradata/ora9i/undotbs01.dbf$ b& W$ O( }1 O6 t
  input datafile fno=00005 name=/app/oracle/oradata/ora9i/example01.dbf- _' b8 b) |% s  T3 ]
  input datafile fno=00011 name=/app/oracle/oradata/ora9i/STREAM01.dbf/ P8 z, U) t" W- Z; p, f: L
  input datafile fno=00010 name=/app/oracle/oradata/ora9i/xdb01.dbf
# N" D6 M+ E6 O; I' u  input datafile fno=00006 name=/app/oracle/oradata/ora9i/indx01.dbf7 b4 T  A* R4 C, P: z
  input datafile fno=00009 name=/app/oracle/oradata/ora9i/users01.dbf0 d" A8 p2 q6 f# c7 o$ I. h, A
  input datafile fno=00003 name=/app/oracle/oradata/ora9i/cwmlite01.dbf
: K/ g- {) E+ I+ t9 O* V  input datafile fno=00004 name=/app/oracle/oradata/ora9i/drsys01.dbf% z7 t9 G, P: d: i- Y$ u4 F
  input datafile fno=00007 name=/app/oracle/oradata/ora9i/odm01.dbf
9 _  @% `: ^- j$ e  input datafile fno=00008 name=/app/oracle/oradata/ora9i/tools01.dbf
$ V* g; ^7 }; ~/ D/ j0 ]3 g  channel ch00: starting piece 1 at 20-JAN-10* Q9 Q5 Y! T& R  }
  channel ch00: finished piece 1 at 20-JAN-10$ I( _7 j8 Y  n
  piece handle=/backup/full708756233 comment=NONE. Q( E5 D5 Y( i  X3 d
  channel ch00: backup set complete, elapsed time: 00:02:26
7 E( k; Z5 a1 i- E4 y& E2 K  Finished backup at 20-JAN-10
8 O2 M! W9 |2 P  Starting Control File and SPFILE Autobackup at 20-JAN-10: K: K, X+ o; D# u* }/ E' U+ l7 ~' x) ?
  piece handle=/app/oracle/product/9.0.2/dbs/c-2494723682-20100120-00 comment=NONE4 C; p4 L6 l+ ~
  Finished Control File and SPFILE Autobackup at 20-JAN-10" q; G3 {- X1 H/ A" ?6 _
  sql statement: alter system archive log current! X, T9 F" S* U8 Z5 \8 y
  Starting backup at 20-JAN-10
1 z& E) O5 f, p  current log archived
3 |/ K8 W7 C6 L  channel ch00: starting archive log backupset( b- Y7 t6 W5 c
  channel ch00: specifying archive log(s) in backup set
2 R- p. o- `3 w8 Z4 p$ _8 H  input archive log thread=1 sequence=1 recid=254 stamp=708756150" q+ G1 a. E& a. Z; ]9 z' i" W* R
  input archive log thread=1 sequence=2 recid=255 stamp=708756383* @* }' \/ T8 H/ \9 ]! A8 D

8 }+ Z7 I/ X( ]  input archive log thread=1 sequence=3 recid=256 stamp=708756383
回复

使用道具 举报

 楼主| 发表于 2012-8-4 14:06:20 | 显示全部楼层

Oracle技术:利用dbmsbackuprestore恢复数据库

</p>  channel ch00: starting piece 1 at 20-JAN-109 M0 h/ L) l; X% q
  channel ch00: finished piece 1 at 20-JAN-109 g% d  r% k) R! y4 B
  piece handle=/backup/arch708756383 comment=NONE
# q# D9 z- N1 Z! @8 F8 u# ~. |  channel ch00: backup set complete, elapsed time: 00:00:02$ q9 R8 O* ]3 m1 l* @
  Finished backup at 20-JAN-10
0 T% s; G+ }: j) _  Starting Control File and SPFILE Autobackup at 20-JAN-101 r! Z9 \" {0 v$ H# |
  piece handle=/app/oracle/product/9.0.2/dbs/c-2494723682-20100120-01 comment=NONE; M: \9 y5 G5 A% x
  Finished Control File and SPFILE Autobackup at 20-JAN-10
) s# Q, W! d+ M, m; G5 N  released channel: ch00
4 Q! ]2 ^5 p1 S) G  假设现在数据库异常宕机5 k: |9 b+ Q* X$ J! L* f. W  a
  引用
' i& [+ u" R1 `" ?3 I/ V* `  SQL> shutdown abort
& i6 M( Y7 W" X3 i  ORACLE instance shut down8 D) S, _  B2 m
  启动数据库至nomount状态
; M1 V6 V- r) s  引用
- D, R5 B* ^! Y& }* H: D; I9 ?- B  SQL> startup nomount! q+ \# V9 C$ l6 C% D# F$ D
  ORACLE instance started.% I' D0 L6 ?: [1 u
  Total System Global Area 1125193868 bytes' w1 z+ C# w2 n
  Fixed Size                   452748 bytes
( A6 D# ^$ ]' Z; I% u  Variable Size             335544320 bytes( `( j% i3 Q& X8 x9 ?
  Database Buffers          788529152 bytes
2 o$ l, U" n- i7 y- B! P& p+ N  Redo Buffers                 667648 bytes
回复 支持 反对

使用道具 举报

 楼主| 发表于 2012-8-4 14:06:21 | 显示全部楼层

Oracle技术:利用dbmsbackuprestore恢复数据库

假设你的存储过程名为PROC_RAIN_JM   再写一个存储过程名为PROC_JOB_RAIN_JM
8 J$ [- O) g6 R" S5 X  内容是:7 m9 k+ M' k- t* v5 ~: m9 }
  ///////////////////////////////////////////////////////////////////. o" W3 k8 E- U  d
  Create Or Replace Procedure PROC_JOB_RAIN_JM* W& S$ i% [! y: \+ R. ]% q
  Is' f5 M$ u: b9 J% C
  li_jobno         Number;
6 m9 v" _$ b+ q$ W* v& T5 Y  Begin
+ A, l1 [9 E" t/ i& O5 G- j- s8 M1 Z  DBMS_JOB.SUBMIT(li_jobno,'PROC_RAIN_JM;',SYSDATE,'TRUNC(SYSDATE + 1)');
2 _6 `+ G5 Q1 u8 z8 W- M  End;
; I1 P, x5 w- r' \: n) _  ///////////////////////////////////////////////////////////////////
2 U8 [# v% }  Q6 p  最后那一项可以参考如下:5 K2 L/ Z0 S1 Y, F
  每天午夜12点 'TRUNC(SYSDATE + 1)'5 A4 p% I) B, c2 t) O4 ~7 k
  每天早上8点30分 'TRUNC(SYSDATE + 1) + (8*60+30)/(24*60)'
; ]0 d+ W& Q: Q7 f0 F6 t% E: h  每星期二中午12点 'NEXT_DAY(TRUNC(SYSDATE ), ''TUESDAY'' ) + 12/24'$ O9 p  K8 x4 h# z% `) l
  每个月第一天的午夜12点 'TRUNC(LAST_DAY(SYSDATE ) + 1)'* T# U$ q& I) G% ]% _
  每个季度最后一天的晚上11点 'TRUNC(ADD_MONTHS(SYSDATE + 2/24, 3 ), 'Q' ) -1/24'
% V* t$ J  ~3 \/ \% w7 W  每星期六和日早上6点10分 'TRUNC(LEAST(NEXT_DAY(SYSDATE, ''SATURDAY"), NEXT_DAY(SYSDATE, "SUNDAY"))) + (6*60+10)/(24*60)'
; q! h3 G  ?* K& P  其中li_jobno是它的ID,可以通过这个ID停掉这个任务,最后想说的是不要执行多次,你可以在里面管理起来,发现已经运行了就不SUBMIT8 W' U, S1 c( Z) E
  每天运行一次 'SYSDATE + 1'3 {3 \$ {/ ^6 v! U
  每小时运行一次 'SYSDATE + 1/24'1 G# k7 w' }! b6 D7 x' O
  每10分钟运行一次 'SYSDATE + 10/(60*24)'
& |8 I# v: u+ r+ C- f  每30秒运行一次 'SYSDATE + 30/(60*24*60)'/ m, U' _* m8 A9 r/ U" D+ Q/ K8 |7 t3 V
  每隔一星期运行一次 'SYSDATE + 7'
3 F- e( G/ A0 m2 E2 M, w8 C  不再运行该任务并删除它 NULL1 T2 \: `& x+ J. ]7 I2 J/ q
  每年1月1号零时    trunc(last_day(to_date(extract(year from sysdate)||'12'||'01','yyyy-mm-dd'))+1)
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|小黑屋|Woexam.Com ( 湘ICP备18023104号 )

GMT+8, 2024-5-5 03:58 , Processed in 0.186862 second(s), 25 queries .

Powered by Discuz! X3.4 Licensed

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表