第一章:手工备份

1.手工备份
2.rman
3.异构平台exp
4.相同平台数据迁移
                主机  存储  都换
                主机 不换,换存储
                存储不换,换主机  直接挂上去
               
5.dul强行打开

ora-00060 死锁,
alert.log  里面有子trace,里面有sql


数据库瘫痪
 1.db起不来        ①.nomount起不来: 参数文件,内核参数;
                   ②.mount 起不来: 存储mount (df -g), 控制文件 cp ,都坏了create
                   ③.open   某文件需要recover,做实例恢复
                       如果半小时没 打开,可能是redo,或undo损坏 
                        ipcs 共享内存段 shmmax>=sga 没回收
                     如果遇到文件需要恢复:不要立刻恢复, 有两种
     redo:  每组redo2个成员,最少3组,放到raid10上  v$logfile
                      current :当前正在往redo里面写的
                       active:所有脏数据还没写到,数据文件中
                                 checkpoint检测的是数据文件
                       inactive :可以删掉,使用过的
                       unused:未被使用过的,一般是刚建库时
                      
                       当前redo不能归档,如果存储丢了,就会丢数据
                      
                       dataguard:只能备份归档
 2.改归档:
    归档之前一定要把数据库关掉
    监听停掉
    kill -9 ' ps -ef|grep local=no|awk '{print $2}' '  杀掉所有不是本地连接
    shutdown immediate

   log_archive_dest_1=location=/oracle/arch'
   log_archive_start=true   --10g之前必须改为true  自动备份,否则是手动,会导致经常挂起
   log_archive_format=dbname_%T_%S
  

 步骤:
 mount状态:alert database noarchivelog/archivelog;--改为非归档/归档
            alter system set log_archive_dest_1='location=/oradata/arch/' scope=spfile;  路径
            alter system set log_archive_format='arch_%s_%t_%r' scope=spfile;              格式
            show parameters log_archive_start
               
            alert system archive log current;切归档,手动归档
   归档路径改错了:  create pfile ='/tmp/initten' from spfile;
 %r 重置标识符
 %s  sequence
 
 *********************************************************************************************************************
 
 备份中,未结束
 alter tablespace zw begin backup;
 shutdown abort;
 starup
 ORA-01113: file 5 needs media recovery
 ORA-01110: data file 5: '/oradata/orcl/zw.dbf'
  先不要recover  
 select * from v$backup;
 FILE# STATUS   CHANGE# TIME
---------- ------------------ ---------- ------------
  1 NOT ACTIVE         0
  2 NOT ACTIVE         0
  3 NOT ACTIVE         0
  4 NOT ACTIVE         0
  5 ACTIVE    276614 09-JUL-14
有一个active 说明 没有结束;
 alter tablespace zw end backup;
 alter database open;
 
 2.recover
  starup
 ORA-01113: file 5 needs media recovery
 ORA-01110: data file 5: '/oradata/orcl/zw.dbf'
 select * from v$backup;
 recover datafile 5;
*************************************************************************************************************************

 dba_extents --各个文件存放哪些表


 生成控制文件脚本,所有控制文件损坏情况下
 alter datbase backup controlfile to trace; noresetlogs;    不完全后恢复 ?????
 noresetlogs
 resetlogs:redo重新格式化了
 alter database backup controlfile to ''
 
 select distinct sid from v$mystat;
 select spid from  v$process a, v$session b where a.addr=b.paddr and b.sid=160;
 select sid from  v$process a, v$session b where a.addr=b.paddr and a.spid=5636;
 
 
  create table aa(id number);
  insert into test values(1);
  desc dba_tables;
  select num_rows from dba_tables where table_name='AA' and owner='SYS';
  analyze table aa compute statistics;--分析  很耗资源 记录不超过%10 不分析
  select num_rows from dba_tables where table_name='AA' and owner='SYS';  --查操作系统进程
  如果某个进程很久不释放,不能alter system kill ''            kill -9
  cd udump
  ls *5636*
 
**********************************************************************************************************************
全库备份
 1. select 'alter tablespace '||tablespace_name||' begin backup;' from dba_tablespaces;
 2. cp -r oradata1 oradata
 3. select 'alter tablespace '|| tablespace_name ||' end backup ;' from dba_tablespaces;
 切归档 alter system archive log current;  全被之后一定要切归档,把当前redo的数据写到归档
 /
***********************************************************************************************************************
   
  缺点:redo多,找业务不忙的时候做
 
  参数文件 备不备都行
  ①.cd bdump
  ②.直接vi一个
 
  控制文件全坏
  备份没?
  物理还是逻辑?
  备到哪?
  数据文件不能跟备份放一个存储
 
  **********************************************************************************************************************
  恢复
  提交scn:
     检查点scn 
   检测   控制文件
  v$archived_log;
   select name,first_change#,next_change# from v$archived_log;--查看当前scn,和下一个scn
   select file#,checkpoint_change#,last_change# from v$datafile;  --数据文件scn号一致 数据库才能正常启动
    数据库正常关闭的时候,会把scn写入各个数据文件中
   select checkpoint_change# from v$datafile_header;
   三个值必须一样: checkpoint=stop=last
 
 
 
完全恢复:  不丢数据   control+redo 不能丢
完全全恢复的三个阶段:
数据库级别:
数据文件级别:
表空间级别:

1.只需要恢复受损的数据文件
2.如果不是system或者undo表空间损坏,那么可以在数据库打开的情况下进行恢复
全库完全恢复
***********************************************************************************************************************
删除system01表空间 
1. rm  system01.dbf
2. shutdown immediate;关不了
3. shutdown abort;
4. startup 会报错,需要恢复
ORA-01157: cannot identify/lock data file 1 - see DBWR trace file
ORA-01110: data file 1: '/oradata/orcl/system01.dbf'
5.把备份的文件cp过来:cp zw.dbf /oradata/orcl1/
6. alter database open;
ERROR at line 1:
ORA-01113: file 1 needs media recovery
ORA-01110: data file 1: '/oradata/orcl/system01.dbf'
7.查看scn是否一致,如果不一致需要恢复
select checkpoint_change#,last_change# from v$datafile;
select checkpoint_change# from v$datafile_header;
8.恢复
recover database;
auto;  --自动恢复
9.启动数据库:alter database open;
**********************************************************************************************************************
删除undo
1. rm  undo*
2. shutdown immediate;
3.startup
 Database mounted.
 ORA-01157: cannot identify/lock data file 2 - see DBWR trace file
 ORA-01110: data file 2: '/oradata/orcl/undotbs01.dbf'
4. cp undotbs01.dbf /oradata/orcl
5.alter database open;  --它说需要恢复
  ERROR at line 1:
 ORA-01113: file 2 needs media recovery
 ORA-01110: data file 2: '/oradata/orcl/undotbs01.dbf'
6.查看一下版本号
   select  checkpoint_change#,last_change# from v$datafile;
   select checkpoint_change# from v$datafile_header;
CHECKPOINT_CHANGE#
------------------
     347676
     273890
     347676
     347676
     347676
版本号不一致
7.恢复   recover database;
8.选 auto
9.  alter database open; 成功
*********************************************************************************************************************
应用文件损坏:  redo和ctl文件不丢失
1. rm zw.dbf
2. shutdown immediate;  --报错管不到
SQL> shutdown immeidate
SP2-0717: illegal SHUTDOWN option
3.shutdown abort;    --强制关
4.startup  --报错
Database mounted.
ORA-01157: cannot identify/lock data file 5 - see DBWR trace file
ORA-01110: data file 5: '/oradata/orcl/zw.dbf'
5.alter database datafile 5 offline; --先把这个文件offline,然后启动数据库,让应用先起来
6. alter database open;
7.cp zw.dbf /oradata/orcl
8.alter database datafile 5 online;
ERROR at line 1:
ORA-01113: file 5 needs media recovery
ORA-01110: data file 5: '/oradata/orcl/zw.dbf'
9.recover  datafile 5;
10.alter database datafile 5 online;

********************************************************************************************************************
不要再生产上,找个测试库,恢复之后,再倒入到生产
不完全恢复: 丢数据    control文件 或  redo 丢失
  归档如果误删了,立刻作全备
  场景:    1.丢失了一个或多个归档,日志文件,
            2.对视了redolog,而redolog未归档
            3.误删表里的数据,误删了表,truncate
            4.控制文件全部丢失,并使用了备份的控制文件进行恢复,
   前提:
          1.具有所有数据文件的备份
          2.备份完成的时间点开始,到恢复时间点之间的归档文件
 
  open resetlogs ;重置redo   10g以前 立刻全备份
 
*******************************************************************************************************************
控制文件   手工   ,恢复      手工原理:把redo,数据文件的scn生成出来
 ①手工:
1.生成重建控制文件和修复数据库的脚本,脚本会放在$ORACLE_BASE/admin/sid/udump路径下,其中sid是数据库实例名。
alter database backup controlfile to trace;
2.生成控制文件的镜像拷贝
alter database backup controlfile to '/home/oracle/c.bak'     ----引号部分是目录和备份文件名
******************************************************************************************************************
 1.rm control*
 2.alter database backup controlfile to trace;
 3. /u01/app/oracle/diag/rdbms/orcl/orcl/trace/alert_orcl.log
 4.startup nomount
 5.@/tmp/ctl.sql
 6. SQL> select status from v$instance; --查看当前实例状态
 7.SQL>alter database open resetlogs;

如果不一致性关闭,需要恢复
recover database;

*****************************************************************************************************************
 ② .恢复    旧文件恢复
    先检查数据文件的scn和控制文件的scn哪个新
    recover 更新控制文件跟数据文件一样新
  1.rm control*
  2.shutdown immediate
     SQL> shutdown immediate;
  ORA-00210: cannot open the specified control file
  ORA-00202: control file: '/oradata/orcl/control01.ctl'
  ORA-27041: unable to open file
  Linux-x86_64 Error: 2: No such file or directory
  Additional information: 3
3. shutdown abort
4. cp control01.ctl /oradata/orcl
      cp control02.ctl /oradata/orcl
      cp control03.ctl /oradata/orcl
5.startup
 ORA-01122: database file 1 failed verification check
 ORA-01110: data file 1: '/oradata/orcl/system01.dbf'
 ORA-01207: file is more recent than control file - old control file
6. SQL>alter database mount; --启动数据库到mount状态
   select  checkpoint_change#,last_change# from v$datafile;
   select checkpoint_change# from v$datafile_header;
 
7. recover database using backup controlfile until cancel ;
    auto;
    **********************************************************************************************************
SQL> select file#,status from v$datafile;
**************************************************************************************************************
    没找到报错
8.   recover database using backup controlfile until cancel ;
    用redo当归档用
   
    rm redo*
    alter database open  resetlogs; 重新生成redo文件,归档废了,重新生成 必须全被
 
2.redo
    
   3.  temp
     alter database tempfile '' drop ;
     alter database temp add tempfile '' size 100M resuse;
    
    
4.rm * 
  ctl文件新,数据文件旧
  alter session set nls_date_format='yyyy/mm/dd hh24:mi:ss';
   recover database until time '2014/07/09 17:40:00' using backup controlfile;
   alter database open resetlogs;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值