- 浏览: 568067 次
- 性别:
- 来自: 北京
文章分类
- 全部博客 (262)
- oracle (43)
- 打包 (3)
- linux (33)
- nginx (20)
- ftp (1)
- tomcat (8)
- mysql (22)
- plsql (4)
- jms (3)
- nosql (2)
- 运维监控 (5)
- 数据采集 (0)
- 测试 (2)
- jvm (5)
- 自动化数据库迁移 (2)
- 密码 (1)
- java代码 (7)
- java多线程,线程安全 (8)
- xml (1)
- spring (6)
- svn (2)
- oracle备份 (1)
- oracle 诊断 (3)
- oracle 归档 (4)
- java 虚拟机(JVM) (2)
- hibernate (5)
- activemq (2)
- http (2)
- linux_shell (9)
- python (3)
- ant (1)
- oracle rac (1)
- php (2)
- js (1)
- mongo (1)
- java 反射 (1)
- jira (1)
- 打包 maven (1)
- zabbix (2)
- lvs+keepalive (1)
- 防火墙 (1)
- memcache (2)
- redis (1)
最新评论
-
di1984HIT:
学习了~~~~
服务器大量TIME_WAIT -
springdata_spring:
可以参考最新的文档:如何在eclipse jee中检出项目并转 ...
maven常用命令 -
李小斌_2014:
我也遇到了,现在完美解决。
ORA-01422: 实际返回的行数超出请求的行数 -
啸风8023:
...
tomcat启动报错 -
fke153:
这个问题确实很坑人啊,学习了
ORA-01422: 实际返回的行数超出请求的行数
RMAN> recover tablespace users; (恢复表空间) RMAN> sql 'alter tablespace users online'; (将表空间联机) 增量备份与恢复: 第一天的增量基本备份: RMAN> backup incremental level=0 database plus archivelog delete input; 第二天的增量差异备份: RMAN> backup incremental level=2 database plus archivelog delete input; 第三天的增量差异备份: RMAN> backup incremental level=2 database plus archivelog delete input; 第四天的增量差异备份: RMAN> backup incremental level=1 database plus archivelog delete input; 第五天的增量差异备份: RMAN> backup incremental level=2 database plus archivelog delete input; 第六天的增量差异备份: RMAN> backup incremental level=2 database plus archivelog delete input; 第七天的增量差异备份: RMAN> backup incremental level=0 database plus archivelog delete input; 增量恢复: RMAN> shutdown immediate; RMAN> exit %mv /oracle/dbs/tbs_12.f /oracle/dbs/tbs_12.bak %mv /oracle/dbs/tbs_13.f /oracle/dbs/tbs_13.bak %mv /oracle/dbs/tbs_14.f /oracle/dbs/tbs_14.bak %mv /oracle/dbs/tbs_15.f /oracle/dbs/tbs_15.bak %rman target=rman/rman@mydb RMAN> startup pfile=/oracle/admin/mydb/pfile/initmydb.ora RMAN> restore database; RMAN> recover database; RMAN> alter database open。 查看都有哪些表空间和大小 select t.tablespace_name, round(sum(bytes/(1024*1024)),0) ts_size from dba_tablespaces t, dba_data_files d where t.tablespace_name = d.tablespace_name group by t.tablespace_name; archive log list 查看是否为归档模式。 RMAN查看配置、校验、备份记录和删除、改变状态备份 =================== 连接到目标数据库(不用恢复目录数据库) rman target / nocatalog 显示rman配置 RMAN> show all; ==================== 报告目标数据库的物理结构 RMAN> report schema; 报告陈旧备份 RMAN> report obsolete; 报告不可恢复的数据文件 RMAN> report unrecoverable; 列出备份信息 RMAN> list backup; RMAN> list backup of database; RMAN> list backup of tablespace table_name; RMAN> list backup of controlfile; RMAN> list backup of spfile; RMAN> list backupset id; ======================== 校验备份信息: RMAN> crosscheck backup; 核对所有的备份集 RMAN> crosscheck backup of database; 核对所有的数据文件备份集 RMAN> crosscheck backup of tablespace system; 核对表空间的备份集 RMAN> crosscheck backup of controlfile; 核对控制文件的备份集体。 RMAN> crosscheck backup of spfile; 核对spfile 的备份集 crosscheck archivelog all; 交叉检查 控制有,系统没有文件的。 delete noprompt expired copy; 删除过期的拷贝。 delete expired archivelog all; ======================== 删除备份 RMAN> delete obsolete; -- 删除陈旧备份 RMAN> delete expired backup; RMAN> delete backupset id; RMAN> delete backup; -- 删除所有备份 ========================= 改变备份集的状态 RMAN> change backupset id unavailable; --available 改为长期备份 RMAN> change backupset id keep forever logs; RMAN> change backupset id keep until time 'sysdate+60'logs; RMAN> change backupset id nokeep;
来源http://wenku.baidu.com/view/5f5ff08783d049649b665855.html
1. 检查数据库模式: sqlplus /nolog conn /as sysdba archive log list (查看数据库是否处于归档模式中) 若为非归档,则修改数据库归档模式。 startup mount alter database archivelog alter database open 2.连接到target数据库 命令: connect target / (connect target system/oracle@ora10g,如果数据库没有起来,也可要直接在rman命令下用startup进行启动数据库) 可以连接到target database.(rman 一边连接到target数据库,另外一边连接到control file(nocatalog mode),control file 中存储rman 的备份信息) 3.用list backupset 命令查看有没有备份的东西 4. 常用备份命令: 备份全库: RMAN> backup database plus archivelog delete input; (备份全库及控制文件、服务器参数文件与所有归档的重做日志,并删除旧的归档日志) 备份表空间: RMAN> backup tablespace system plus archivelog delete input; (备份指定表空间及归档的重做日志,并删除旧的归档日志)_ 备份归档日志: RMAN> backup archivelog all delete input; ======================对整个数据库进行备份================== 1.对整个数据库进行全备份(full backup)。 只要输入命令: backup database; 2.list backupset 查看备份的具体信息 List of Backup Sets =================== BS Key Type LV Size Device Type Elapsed Time Completion Time ------- ---- -- ---------- ----------- ------------ --------------- 1 Full 6.80M DISK 00:00:02 06-DEC-08 BP Key: 1 Status: AVAILABLE Compressed: NO Tag: TAG20081206T201041 Piece Name: /home/oracle/flash_recovery_area/ORA10G/backupset/2008_12_06/o1_mf_ncsnf_TAG20081206T201041_4mntz78s_.bkp Control File Included: Ckp SCN: 782019 Ckp time: 06-DEC-08 SPFILE Included: Modification time: 06-DEC-08 BS(backupset), piece是一个文件,一个BS包含多个piece. 3.rman中缺省的参数,可以通过 show all ; 来进行查看(RMAN configuration parameters),我们在使用backup database命令中,可以把这些default value 用固定的值来进行替代. 4.我们可以把备份的文件才备份的目录中拷贝到磁带上,然后删除备份目录下面的备份文件,如果下次需要恢复的话,只要把文件重新拷回到用来的备份目录就可以了 5.查看control file 文件中的备份信息(因为我们做的备份是在nocatalog模式下),control file 在/u01/oracle/oradata/ora10g目录下,由于control file 是个二进制文件,要查看control file 文件中的内容,用strings control03.ctl,发现control03.ctl中有rman备份的信息了 ====================0级增量备份=============== 概念:全备份和0级增量备份。全备份和0级增量备份几乎是一样的。唯一的区别,0级增量备份能作为增量备份的基础,而全备份不能作为增量备份的基础。其它方面完全一致 1.backup incremental level=0(leve 0) database;(增量为0的备份) 2.backup incremental level 1(level=1) database;(增量为1的备份) 在上面的备份中,我们备份了datafile,controlfile和parameter file.没有备份的文件有归档日志,重做日志和口令文件没有备份.口令文件不需要备份,我们用orapw来创建一个 新的口令文件.rman 在nocatalog模式下,不能够对redo log file 进行备份 ===================备份archivelog 在nocatalog模式下================= 命令:backup database plus archivelog delete input(delete input的意思在备份完成后,删除 archivelog文件,这个选项可要可不要,这个命令也可以用 backup incremental level=0(1,2...)来进行备份) =======================备份表空间==================== backup tablespace tablespacename 如果我们不知道tablespace的名字,在rman中,可要通过report schema命令,来查看表空间的名字 MAN> report schema; Report of database schema List of Permanent Datafiles =========================== File Size(MB) Tablespace RB segs Datafile Name ---- -------- -------------------- ------- ------------------------ 1 480 SYSTEM *** /home/oracle/oradata/ora10g/system01.dbf 2 25 UNDOTBS1 *** /home/oracle/oradata/ora10g/undotbs01.dbf 3 250 SYSAUX *** /home/oracle/oradata/ora10g/sysaux01.dbf 4 5 USERS *** /home/oracle/oradata/ora10g/users01.dbf 5 200 PERFSTAT *** /home/oracle/oradata/ora10g/perfstat.dbf List of Temporary Files ======================= File Size(MB) Tablespace Maxsize(MB) Tempfile Name ---- -------- -------------------- ----------- -------------------- 1 20 TEMP 32767 /home/oracle/oradata/ora10g/temp01.dbf ========================备份控制文件==================== backup current controlfile backup database include current controlfile ========================备份镜像======================== 在rman的备份中有两种方式:备份集(backupset)和备份镜像(image copies).镜像备份主要是文件的拷贝:copy datafile ... to ... 我们在rman>report schema; Report of database schema List of Permanent Datafiles =========================== File Size(MB) Tablespace RB segs Datafile Name ---- -------- -------------------- ------- ------------------------ 1 480 SYSTEM *** /home/oracle/oradata/ora10g/system01.dbf 2 25 UNDOTBS1 *** /home/oracle/oradata/ora10g/undotbs01.dbf 3 250 SYSAUX *** /home/oracle/oradata/ora10g/sysaux01.dbf 4 5 USERS *** /home/oracle/oradata/ora10g/users01.dbf 5 200 PERFSTAT *** /home/oracle/oradata/ora10g/perfstat.dbf List of Temporary Files ======================= File Size(MB) Tablespace Maxsize(MB) Tempfile Name ---- -------- -------------------- ----------- -------------------- 1 20 TEMP 32767 /home/oracle/oradata/ora10g/temp01.dbf rman>copy datafile 5 to '/u01/rmanbak/tbso1bak.dbf';(copy 5 对应的schme:perfstat.dbf) 它会把tbs作为一个拷贝。我们用list backupset来看,不能够查看我们刚备份的 tbs01bak.dbf',因为它不是backupset. 我们用list copy 就能够查看我们刚才刚刚备份的文件 =======================单命令与批命令================= 单命令: backup database; 批命令: rman> run{ 2> allocate channel cha1 type disk; 3> backup 4> format '/u01/rmanbak/full_%t' 5> tag full-backup //标签可以顺便起,没关系 6> database; 7> release channel cha1; 8>} 这个run中有3条命令,分别用分号来进行分割. format: %c:备份片的拷贝数(从1开始编号); %d:数据库名称; %D:位于该月中的天数(DD); %M:位于该年中的月份(MM); %F:一个基于DBID唯一的名称,这个格式的形式为c-xxx-YYYYMMDD-QQ,其中xxx位该数据库的DBID,YYYYMMDD为日期,QQ是一个1-256的序列; %n:数据库名称,并且会在右侧用x字符进行填充,使其保持长度为8; %u:是一个由备份集编号和建立时间压缩后组成的8字符名称。利用%u可以为每个备份集产生一个唯一的名称; %p:表示备份集中的备份片的编号,从1开始编号; %U:是%u_%p_%c的简写形式,利用它可以为每一个备份片段(既磁盘文件)生成一个唯一的名称,这是最常用的命名方式; %t:备份集时间戳; %T:年月日格式(YYYYMMDD); channel的概念:一个channel是rman于目标数据库之间的一个连接,"allocate channel"命令在目标数据库启动一个服务器进程,同时必须定义服务器进程执行备份和恢复操作使 用的I/O类型 通道控制命令可以用来: 控制rman使用的OS资源 影响并行度 指定I/O带宽的限制值(设置 limit read rate 参数) 指定备份片大小的限制(设置 limit kbytes) 指定当前打开文件的限制值(设置 limit maxopenfiles) =================================RMAN一周典型备份方案============================ 1.星期天晚上 -level 0 backup performed(全备份) 2.星期一晚上 -level 2 backup performed 3.星期二晚上 -level 2 backup performed 4.星期三晚上 -level 1 backup performed 5.星期四晚上 -level 2 backup performed 6.星期五晚上 -level 2 backup performed 7.星期六晚上 -level 2 backup performed 如果星期二需要恢复的话,只需要1+2, 如果星期四需要恢复的话,只需要1+4, 如果星期五需要恢复的话,只需要1+4+5, 如果星期六需要恢复的话,只需要1+4+5+6. 自动备份:备份脚本+crontab bakl0 bakl1 bakl2 执行脚本: rman target / msglog=bakl0.log cmdfile=bakl0 (/表示需要连接的目标数据库,msglog表示日志文件,cmdfile表示的是脚本文件) rman target / msglog=bakl1.log cmdfile=bakl1 rman target / msglog=bakl2.log cmdfile=bakl2 实例:rman target system/oracle@ora10g(/) msglog=/u01/rmanbak/bakl1.log cmdfile=/u01/rmanbak/bakl0 完整的命令:/u01/oracle/product/10.2.0/bin/rman target system/oracle@ora10g(/) msglog=/u01/rmanbak/bakl1.log cmdfile=/u01/rmanbak/bakl0 把备份脚本放到/u01/rmanbak/script目录下面,vi bakl0,bakl0的内容为: run{ allocate channel cha1 type disk; backup incremental level 0 format '/u01/rmanbak/inc0_%u_%T'(u表示唯一的ID,大T是日期,小t是时间) tag monday_inc0 //标签可以顺便起,没关系 database; release channel cha1; } ,类似就可以写出bakl1,bakl2相应的脚本. 自动备份 crontab crontab -e -u oracle(改命令的意思是编辑oracle用户的定时执行(-e,edit -u oracle,oracle用户)) 分 时 日 月 星期(0代表星期天) 45 23 * * 0 rman target / msglog=bakl0.log cmdfile=bakl0(星期天的23:45会以oracle用户的身份来执行命令) 45 23 * * 1 rman target / msglog=bakl2.log cmdfile=bakl2 45 23 * * 2 rman target / msglog=bakl2.log cmdfile=bakl2 45 23 * * 3 rman target / msglog=bakl1.log cmdfile=bakl1 45 23 * * 4 rman target / msglog=bakl2.log cmdfile=bakl2 45 23 * * 5 rman target / msglog=bakl2.log cmdfile=bakl2 45 23 * * 6 rman target / msglog=bakl2.log cmdfile=bakl2 然后启动crontab ,启动crontab的命令: root> service crond restart =======================RMAN恢复================ 在非catalog模式下,备份的信息存储在controlfile文件中,如果controlfile文件发生毁坏,那么就不能能够进行恢复, 使用在备份的时候需要把controlfile也进行自动备份 RMAN>show all; using target database control file instead of recovery catalog RMAN configuration parameters are: CONFIGURE RETENTION POLICY TO REDUNDANCY 1; # default CONFIGURE BACKUP OPTIMIZATION OFF; # default CONFIGURE DEFAULT DEVICE TYPE TO DISK; # default CONFIGURE CONTROLFILE AUTOBACKUP OFF; # default CONFIGURE CONTROLFILE AUTOBACKUP FORMAT FOR DEVICE TYPE DISK TO '%F'; # default CONFIGURE DEVICE TYPE DISK PARALLELISM 1 BACKUP TYPE TO BACKUPSET; # default CONFIGURE DATAFILE BACKUP COPIES FOR DEVICE TYPE DISK TO 1; # default CONFIGURE ARCHIVELOG BACKUP COPIES FOR DEVICE TYPE DISK TO 1; # default CONFIGURE MAXSETSIZE TO UNLIMITED; # default CONFIGURE ENCRYPTION FOR DATABASE OFF; # default CONFIGURE ENCRYPTION ALGORITHM 'AES128'; # default CONFIGURE ARCHIVELOG DELETION POLICY TO NONE; # default CONFIGURE SNAPSHOT CONTROLFILE NAME TO '/home/oracle/product/10.20/dbs/snapcf_ora10g.f'; # default 其中CONFIGURE CONTROLFILE AUTOBACKUP OFF; 没有对controlfile进行 autobackup,使用我们需要运行下面命令来对controlfile进行自动备份 RMAN> CONFIGURE CONTROLFILE AUTOBACKUP ON; RMAN> show all; 手动备份控制文件: backup current controlfile Dbid表示database的一个ID,将来用于恢复spfile和controlfile时候要用到. RMAN> connect target / connected to target database: ORA10G (DBID=3988862108) 这个Dbid=3988862108 RMAN> list backup;查看以前备份的信息 RMAN>delete backupset 24;//24代表backupset 的编号 RMAN>backup format '/u01/rmanbak/full_%T_%U.bak' database plus archivelog;(进行一次全备份) 验证备份: RMAN> validate backupset 3; //3代表backupset的编号 口令文件丢失(不属于rman备份的范畴),我们只需要用一个命令来重建这个文件就可以了: orapw file=orapwsid password=pass entries=5; //口令文件的路径:/u01/oracle/product/10.20/db_1/dbs目录下 oracle> cd /u01/oracle/product/10.20/db_1/dbs oracle> rm orapwora10g;(文件删除,模拟丢失) oracle> orapwd file=orapwora10g password=oracle entries=5;(重新建立一个文件),entries的意思(DBA的用户最多有5个) SPFILE丢失: startup nomount; set dbid 3988862108; restore spfile from autobackup; shutdown immediate; set dbid 3988862108; startup; 模拟操作: oracle> mv spfileora10g.ora spora10g.ora oracle>rman target /; rman> shutdown immediate; rman> startup nomount; startup failed: ORA-01078: failure in processing system parameters LRM-00109: could not open parameter file '/home/oracle/product/10.20/dbs/initora10g.ora' rman>set dbid 3988862108; rman>restore spfile from autobackup; 执行该命令,如果没有找到的话,那可能是文件的路径发生错误.可以通过直接赋予它的文件 rman>restore spfile from '/u01/oracle/flash_recovery_area/ORA10G/autobackup/2008_12_09/o1_mf_s_673025706_4mw7xc79_.bkp 在dbs/目录下产生spfileora10g.ora文件。证明spfile 已经恢复好 rman> shutdown immediate; rman> startup ;(如果该命令不能够启动数据库,那么需要set dbid 3988862108) controlfile 丢失: startup nomount; restore controlfile from autobackup; alter database mount; recover database; alter database open resetlogs; 注意:在做了alter database open resetlogs;会把online redelog file清空,数据文件丢失.所以这个时候要做一个全备份。 oracle>rm *.ctl oracle>rman target / ;//不能够连接到rman ,因为controlfile丢失 oracle>sqlplus /nolog; SQL>shutdown immediate; //因为controlfile丢失,不能够正常shutdown SQL>shutdown abort; oracle>rman target /; rman>startup nomount; rman>restore controlfile from autobackup; rman>alter database mount; rman>alter database open resetlogs; RMAN-00571: =========================================================== RMAN-00569: =============== ERROR MESSAGE STACK FOLLOWS =============== RMAN-00571: =========================================================== RMAN-03002: failure of alter db command at 12/09/2008 16:21:13 ORA-01194: file 1 needs more recovery to be consistent ORA-01110: data file 1: '/home/oracle/oradata/ora10g/system01.dbf //出错, redo log的scn记录在controlfile里面的,因为我们有新的controlfile,所以需要resetlogs; /* resetlogs命令表示一个数据库逻辑生存期的结束和另一个数据库逻辑生存期的开始,每次使用resetlogs命令的时候,SCN不会被重置,不过oracle会重置日志序列号,而且会重置 联机重做日志内容. 这样做是为了防止不完全恢复后日志序列会发生冲突(因为现有日志和数据文件间有了时间差)。 */ rman>recover database; rman>alter database open resetlogs; Redolog file丢失:(下面的这些语句一定要在sqlplus中执行,不是在rman中执行) (sqlplus/nolog) 1.shutdown immediate; 2.startup mount; 3.recover database until cancel;(media recovery) 4.alter database resetlogs; 数据文件丢失(在rman中执行sql语句,在sql后面用双引号括起来): 1. sql "alter database datafile 3 offline"; 2. restore datafile 3 3. recover datafile 3 4. sql "alter database datafile 3 online"; 表空间丢失: 1. sql "alter tablespace users offline";//如果文件不存在,则用 sql "alter tablespace users offline immeidate"; 2. restore tablespace users; 3. recover tablespace users; //与online redolog file 信息一致 4. sql "alter tablespace users online"; 非catalog方式完全恢复 数据库出现问题: 1.startup nomount; 2.restore controlfile from autobackup; 3.alter database mount; 4.restore database; 5.recover database; 6.alter database open resetlogs; 模拟操作: oracle ora10g> rm *; oracle ora10g> ls; oracle ora10g> //数据文件,控制文件全部删除 oracle ora10g> rman target /; //因为controlfile 丢失,不能够连接到rman oracle ora10g> sqlplus /nolog; oracle ora10g> connect / as sysdba; oracle ora10g> shutdown abort; oracle ora10g> rman target / rman> startup nomount; rman> restore controlfile from autabackup; rman> alter database mount; rman> restore database; rman> recover database; //online redolog 不存在 SQL>recover database until cancel; //当redo log丢失,数据库在缺省的方式下,是不容许进行recover操作的,那么如何在这种情况下操作呢 SQL>create pfile from spfile; vi /u01/product/10.20/dbs/initora10g.ora,在这个文件的最后一行添加 *.allow_resetlogs_corruption='TRUE'; //容许resetlog corruption SQL>shutdown immediate; SQL>startup pfile='/u01/product/10.20/dbs/initora10g.ora' mount; SQL>alter database open resetlogs; 基于时间点的恢复: run{ set until time "to_date(07/01/02 15:00:00','mm/dd/yy hh24:mi:ss')"; restore database; recover database; alter database open resetlogs; } ALTER SESSION SET NLS_DATE_FORMAT='YYYY-MM-DD HH24:MI:SS'; 1.startup mount; 2.restore database until time "to_date('2009-7-19 13:19:00','YYYY-MM-DD HH24:MI:SS')"; 3.recover database until time "to_date('2009-7-19 13:19:00','YYYY-MM-DD HH24:MI:SS')"; 4.alter database open resetlogs; 如果有open resetlogs,都是不完整恢复. 基于 SCN的恢复: 1.startup mount; 2.restore database until scn 10000; 3.recover database until scn 10000; 4.alter database open resetlogs; 基于日志序列的恢复: 1.startup mount; 2.restore database until SEQUENCE 100 thread 1; //100是日志序列 3.recover database until SEQUENCE 100 thread 1; 4.alter database open resetlogs; 日志序列查看命令: SQL>select * from v$log;其中有一个sequence字段.resetlogs就会把sequence 置为1 =================================RMAN catalog模式下的备份与恢复===================== 1.创建Catalog所需要的表空间 SQL>create tablespace rman_ts size datafile '/u01/oracle/oradata/ora10g/rmants.dbf' 20M; 2.创建RMAN用户并授权 SQL>create user rman identified by rman default tablespace rman_ts quota unlimited on rman_ts; SQL>grant recovery_catalog_owner to rman;(grant connect to rman) 查看角色所拥有的权限: select * from dba_sys_privs where grantee='RECOVERY_CATALOG_OWNER'; (RECOVER_CATALOG_OWNER,CONNECT,RESOURCE) 3.创建恢复目录 oracle>rman catalog rman/rman RMAN>create catalog tablespace rman_ts; RMAN>register database;(database是target database) database registered in recovery catalog starting full resync of recovery catalog full resync complete RMAN> connect target /; 以后要使用备份和恢复,需要连接到两个数据库中,命令: oracle>rman target / catalog rman/rman (第一斜杠表示target数据库,catalog表示catalog目录 rman/rman表示catalog用户名和密码) 命令执行后显示: Recovery Manager: Release 10.2.0.1.0 - Production on Wed Dec 10 15:00:42 2008 Copyright (c) 1982, 2005, Oracle. All rights reserved. connected to target database: ORA10G (DBID=3988862108) connected to recovery catalog database 命令解释: Report schema Report shema是指在数据库中需找schema List backup 从control读取信息 Crosscheck backup 看一下backup的文件,检查controlfile中的目录或文件是否真正在磁盘上 Delete backupset 24 24代表backupset 的编号, 既delete目录,也delete你的文件 注意:在做了alter database open resetlogs;会把online redelog file清空,数据文件丢失.所以这个时候要做一个全备份。 resetlogs命令表示一个数据库逻辑生存期的结束和另一个数据库逻辑生存期的开始,每次使用resetlogs命令的时候,SCN不会被重置,不过oracle会重置日志序列号,而且会重置 联机重做日志内容.这样做是为了防止不完全恢复后日志序列会发生冲突(因为现有日志和数据文件间有了时间差)。 Rman 归档文件丢失导致不能备份的,在备份前先执行以下两条命令 crosscheck archivelog all; delete expired archivelog all; 补充知识: RECOVER DATABASE UNTIL CANCEL 和 RECOVER DATABASE UNTIL CANCEL USING BACKUP CONTROLFILE 区别 RECOVER DATABASE UNTIL CANCEL ==> DATAFILE HEADER SCN一定会小于CONTROLFILE的DATAFILE SCN 如果你有进行RESTORE DATAFILE,则该RESTORE的DATAFILE HEADER SCN一定会小于目前CONTROLFILE的DATAFILE SCN,此时会无法开启数据库,必须进行media recovery。 重做archive log直到该datafile header的SCN=current scn RECOVER DATABASE UNTIL CANCEL USING BACKUP CONTROLFILE; ==> DATAFILE HEADER SCN一定会大于CONTROLFILE的DATAFILE SCN 如果只是某TABLE被DROP掉,没有破坏数据库整体数据结构,还可以用NCOMPLETE RECOVERY解决 如果是某个TABLESPACE OR DATAFILE被DROP掉,因为档案结构已经破坏,目前的CONTROL FILE内已经没有 该DATAFILE的信息,就算你只RESTORE DATAFILE然后进行INCOMPLETE RECOVERY也无法救回被DROP的DATA FILE。 只好RESOTRE 之前备份的CONTROL FILE(里头被DROP DATAFILE Metadata此时还存在),不过RESTOREC CONTROL FILE后 此时Oracle会发现CONTROL FILE内的SYSTEM SCN会小于目前的DATAFILE HEADER SCN,也不等于目前储存于LOG FILE内的SCN, 此时就必须使用RECOVER DATABASE UNTIL CANCEL USING BACKUP CONTROLFILE到DROP DATAFILE OR DROP TABLESPACE之前的SCN。 ************* Scrip of RMAN ********************* Full backup run { allocate channel oem_backup_disk1 type disk format 'G:\Full\%U'; backup incremental level 0 cumulative as BACKUPSET tag '%TAG' database include current controlfile; backup as BACKUPSET tag '%TAG' archivelog all not backed up; release channel oem_backup_disk1; } Partial for Data file backup run { allocate channel oem_backup_disk1 type disk format 'G:\partial\%U'; backup incremental level 0 cumulative as BACKUPSET tag '%TAG' datafile 'I:\ORACLE\PRODUCT\10.2.0\ORADATA\MSLTSD\SYSTEM01.DBF', 'I:\ORACLE\PRODUCT\10.2.0\ORADATA\MSLTSD\UNDOTBS01.DBF', 'I:\ORACLE\PRODUCT\10.2.0\ORADATA\MSLTSD\SYSAUX01.DBF', 'I:\ORACLE\PRODUCT\10.2.0\ORADATA\MSLTSD\USERS01.DBF' include current controlfile; backup as BACKUPSET tag '%TAG' archivelog all not backed up; release channel oem_backup_disk1; } allocate channel for maintenance type disk; delete noprompt obsolete device type disk; release channel; Archive log file backup run { allocate channel oem_backup_disk1 type disk format 'E:\OracleBackup\MSLTSD\ARCHIVELOG\%U'; backup as BACKUPSET tag '%TAG' archivelog all not backed up 2 times; delete noprompt archivelog until time 'sysdate - 2' backed up 2 times to device type disk; release channel oem_backup_disk1; }
发表评论
-
ORA-28001: the password has expired
2016-05-23 10:28 864来源 http://blog.csdn.net/jrq/art ... -
oracle 索引未生效
2016-05-06 12:17 1787不走索引大体有以下几个原因: • 你在Instance级 ... -
通过sid查找sql
2016-05-05 11:08 1555这是当前运行的sql语句 select sid, ... -
oracle 表空间满
2016-03-26 18:24 1471今天Oracle的表空间突然满了,建表的时候是自动扩展,但还是 ... -
ORA-00030: User session ID does not exist
2016-02-17 16:53 2720Oracle进程被KILL之后,状态被置为" ... -
Oracle 用户表空间查看、修改大小、设置自增长等
2016-01-22 15:58 1303首先登入某个用户,查看某个用户在哪个表空间下: ... -
oracle 各种授权
2015-12-07 10:57 646alter any cluster 修改任 ... -
打造上千万长连接及oracle调优
2014-02-23 20:29 1234... -
oracle uuid生成
2014-02-10 09:30 855CREATE TABLE TEST( ID VARCHA ... -
oracle 字符乱码
2013-11-27 09:42 1691文章来源http://blog.csdn.net/nini11 ... -
oracle 备份
2013-11-05 14:59 883全备份(0级备份) $ vi lev0_bak.sh # ... -
查看用户权限
2013-10-15 11:23 7531、查看所有用户 select * from d ... -
oracle 索引类型
2013-06-07 18:36 955附件是oracle索引的类型 -
oracle表空间利用率
2013-02-22 10:34 975SELECT * FROM ( SELECT D.TA ... -
aix系统cpu使用率过高
2012-10-29 14:11 6328今天发现oracle的cpu使用率过高,由于机器上只要orac ... -
oracle 索引监控
2012-10-24 13:51 1018oracle 索引监控 打开索引 alter in ... -
oracle修改字符集
2012-08-31 14:38 1053oracle修改字符集 查询oracle server端 ... -
oracle 触发器 new ,old
2012-08-27 11:28 1010特性 INSERT UPDATE DELE ... -
oracle PGA SGA
2012-08-03 22:54 1399PGA与SGA的分配 _________________ ... -
ORACLE查看并修改最大连接数
2012-07-25 09:43 2894文章来源http://hi.baidu.com ...
相关推荐
"手把手教你ORACLE RMAN异地备份" 该教程旨在教你如何使用ORACLE RMAN实现异地备份,解决了由于数据量急剧增加、备份和恢复的困难问题。通过使用RMAN和EXP/IMP工具,用户可以实现本地数据库的异地备份,避免服务器...
Oracle RMAN 备份与恢复概述 Oracle RMAN(Recovery Manager)是一种强大的备份和恢复工具,旨在帮助DBA管理员更好地管理和保护Oracle数据库。以下是Oracle RMAN备份与恢复的相关知识点: 备份恢复概述 备份恢复...
Oracle Recovery Manager (RMAN) 是Oracle数据库管理系统中的一个重要工具,主要负责数据库的备份、恢复以及相关的维护工作。在“Oracle RMAN 功能介绍 ppt”中,我们深入探讨了RMAN的关键特性和操作流程。 首先,...
oracle rman 的使用介绍,对rman一些场景恢复进行案例分析
### Oracle RMAN 备份与恢复详解 #### 一、为何选择 RMAN RMAN (Recovery Manager) 是 Oracle 数据库内置的一种强大的备份与恢复工具。相比于传统的用户管理备份方式,RMAN 提供了更多自动化功能及高级特性,极大...
### Oracle Rman命令详解 #### 一、RMAN命令类型及使用场景 ##### 1.1 独立命令(Standalone Command) 独立命令是指在RMAN中可以直接执行的命令,这类命令通常不依赖于其他命令,能够独立完成某个功能。例如备份表...
Oracle RMAN(Recovery Manager)是Oracle数据库管理系统中用于数据备份和恢复的重要工具。它提供了全面的数据保护功能,包括完整数据库备份、增量备份、表空间备份以及数据文件级别的备份。以下是一个详细的Oracle ...
教程名称:傻瓜式实战Oracle RMAN数据库备份和恢复视频课程目录:【】数据库备份和恢复系列].ITBOBA_RMAN_1【】数据库备份和恢复系列].ITBOBA_RMAN_10【】数据库备份和恢复系列].ITBOBA_RMAN_2【】数据库备份和恢复...
RMAN(Recovery Manager)是Oracle数据库提供的一个用于备份、恢复和迁移数据库的工具。增量备份是数据库备份的一种方式,它只备份自上一次备份(无论全备份还是增量备份)以来有变化的数据块,这样可以节省存储空间...
旧版Oracle Rman 备份!
Oracle Recovery Manager(RMAN)是Oracle数据库管理系统中的一个重要组件,专为数据库的备份、恢复和维护设计。RMAN 自从Oracle 8版本开始引入,并在后续版本中不断加强和完善,尤其在Oracle 9i中展现出更为强大的...
### ORACLE RMAN备份脚本知识点解析 #### 一、RMAN简介 RMAN(Recovery Manager)是Oracle数据库提供的一种强大的数据恢复管理工具。它主要用于执行物理备份、恢复操作及灾难恢复等任务。通过RMAN可以实现对数据库...
Oracle 数据库在线备份原理 Oracle 数据库在线备份原理是指在 Oracle 数据库中对数据库进行在线备份的基本原理和方法。该原理是基于 Oracle 数据库的基本概念和机制,包括表、数据查询语句、DML 语句和 DDL 语句等...
在Windows环境下,Oracle数据库的RMAN(Recovery Manager)备份是一项关键的任务,它能确保数据的安全性和可恢复性。RMAN是Oracle数据库提供的一种强大的工具,用于执行数据库备份、恢复和维护操作。以下是对...
window oracle rman 增量备份脚本
### Oracle RMAN 自动备份详解 #### 一、概述 Oracle RMAN(Recovery Manager)是一种功能强大的工具,用于管理数据库备份、恢复以及灾难恢复。本文档旨在介绍如何通过RMAN实现Oracle数据库的自动备份,并提供了...
Oracle Rman Active Database Duplicate 迁移方案 本文档主要介绍 Oracle Rman Active Database Duplicate 迁移方案,适用于 Oracle 11g/12c 版本。该方案旨在帮助数据库管理员快速迁移数据库,减少迁移时间和风险...