您的位置:首页 > 数据库 > Oracle

Oracle用户管理的备份与恢复

2018-03-12 14:16 513 查看

用户管理的备份与恢复也称OS物理备份,
是指通过数据库命令设置数据库为备份状态,然后用操作系统命令,
拷贝需要备份或恢复的文件。这种备份与恢复需要用户的参与手工或自动完成。
一、归档与非归档
(一)、NONARCHIVELOG模式
1

脱机冷备与恢复
冷备份发生在数据库已经正常关闭的情况下,当正常关闭时会提供给我们一个完整的数
据库。冷备份是将关键性文件拷贝到另外位置的一种说法。
对于备份Oracle
信息而言,冷备份是最快和最安全的方法。
2
冷备份的优点:
1.是非常快速的备份方法(只需拷贝文件)
2.容易归档(简单拷贝即可)
3.容易恢复到某个时间点上(只需将文件再拷贝回去)
4.能与归档方法相结合,作数据库“
最新状态” 的恢复。
5.低度维护,高度安全。
3
冷备份的不足:
1.单独使用时,只能提供到“
某一时间点上” 的恢复。
2.在实施备份的全过程中,数据库必须要作备份而不能作其它工作。也就是说,在
冷备份过程中,数据库必须是关闭状态。
3.若磁盘空间有限,只能拷贝到磁带等其它外部存储设备上,速度会很慢。
4.不能按表或按用户恢复。
如果可能的话(主要看效率),应将信息备份到磁盘上,然后启动数据库(使用户可以
工作)并将所备份的信息拷贝到磁带上(拷贝的同时,数据库也可以工作)。冷备份中必须
拷贝的文件包括:
1.所有数据文件
2.所有控制文件
3.所有联机REDOLOG文件
4.参数化参数Init.ora文件(可选)。 

、ARCHIVELOG模式
1

脱机冷备与恢复
同NONARCHIVELOG模式
2
联机热备
联机热备是在数据库运行的情况下进行备份的方法。热备份要求数据库在Archivelog
方式下操作,并需要大量的档案空间。
3
热备份的优点:
1.可在表空间或数据文件级备份,备份时间短。
2.备份时数据库仍可使用,支持24*7
不间断运行。
3.可达到秒级恢复(恢复到某一时间点上)。
4.可对几乎所有数据库实体作恢复。
5.恢复是快速的,在大多数情况下在数据库仍工作时恢复。
4
热备份的不足是:
1.不能出错,否则后果严重。
2.若热备份不成功,所得结果不可用于时间点的恢复。
3.因难于维护,所以要特别仔细小心,不允许“
以失败而告终”。
注意:
在热备过程中系统会生成更多的重做日志和回滚数据。所以必须在数据库较
空闲时才进行备份。 

非归档模式
(一)、丢失控制文件
1

单个控制文件丢失
这种情况解决方法很简单,只要把多路复用的控制文件拷贝到相应路径就行了。
2
所有控制文件丢失
( 1) 重建控制文件(略)
( 2) 使用备份的控制文件进行恢复
Lastlogin:SatAug 322:58:592013from192.168.21.1
//登录oracle用户
[root@oracle~]#su-oracle
//修改环境变量的实例名
[oracle@oracle~]$exportORACLE_SID=emrep
//连接到数据库
[oracle@oracle~]$sqlplus/as sysdba
SQL*Plus:Release10.2.0.1.0-ProductiononSatAug323:01:582013
Copyright(c)1982,2005,Oracle. Allrightsreserved.
Connectedto:
OracleDatabase10gEnterpriseEditionRelease10.2.0.1.0-Production
WiththePartitioning,OLAPandDataMiningoptions
//备份控制文件(二进制)
SQL>alter database backup controlfile to
'/u01/app/oracle/backup/emrep/ctl/2013-8-4/control01.ctl';
Databasealtered.
//删除正在使用的控制文件(制造故障)
SQL>rm-rf /u01/app/oracle/oradata/emrep/*.ctl
//重启数据库
SQL>startup force;
ORACLEinstancestarted.
TotalSystemGlobalArea 444596224bytes
FixedSize 1219904bytes
VariableSize 138412736bytes
DatabaseBuffers 301989888bytes
RedoBuffers 2973696bytes
//观察错误信息
ORA-00205:errorinidentifyingcontrolfile,checkalertlogformoreinfo 

//从备份复原控制文件
SQL>cp/u01/app/oracle/backup/emrep/ctl/2013-8-4/control01.ctl
/u01/app/oracle/oradata/emrep/.
SQL>cp/u01/app/oracle/backup/emrep/ctl/2013-8-4/control01.ctl
/u01/app/oracle/oradata/emrep/control02.ctl
SQL>cp/u01/app/oracle/backup/emrep/ctl/2013-8-4/control01.ctl
/u01/app/oracle/oradata/emrep/control03.ctl
//将数据库开到mount模式
SQL>alter database mount;
Databasealtered.
//打开数据库
SQL>alter database open;
alterdatabaseopen
*
ERRORatline1:
ORA-01589:mustuseRESETLOGSorNORESETLOGSoptionfordatabaseopen
//要求以RESETLOGS或者NORESETLOGS选项打开数据库
SQL>alter database open resetlogs;
alterdatabaseopenresetlogs
*
ERRORatline1:
ORA-01194:file1needsmorerecoverytobeconsistent
ORA-01110:datafile1:'/u01/app/oracle/oradata/emrep/system01.dbf'
//需要进行介质恢复
SQL>recover database using backup controlfile;
ORA-00279:change720303generatedat08/03/201322:55:38neededforthread1
ORA-00289:suggestion:
/u01/app/oracle/product/10.2.0/db_1/dbs/arch1_11_822517966.dbf
ORA-00280:change720303forthread1isinsequence#11
//查询可知当前的日志文件组
Specifylog:{<RET>=suggested|filename |AUTO|CANCEL}
/u01/app/oracle/oradata/emrep/redo01.log
Logapplied.
Mediarecoverycomplete.
//以RESETLOGS的方式启动数据库
SQL>alter database open resetlogs;
Databasealtered.
//及时进行全库备份 

修改数据库结构后丢失所有控制文件
//备份控制文件
SQL>alter database backup control file to
'/u01/app/oracle/backup/emrep/ctl/2013-8-4/control01.ctl';
Database altered.
//创建新的表空间(数据文件)
SQL>create tablespace t1 datafile '/u01/app/oracle/oradata/emrep/t1.dbf' size 10m;
Table space created.
//在新的表空间上创建表a
SQL>create table a(id number) tablespace t1;
Table created.
//删除当前的控制文件
SQL>rm-rf /u01/app/oracle/oradata/emrep/*.ctl
//重启数据库
SQL>startupforce;
ORACLEinstancestarted.
TotalSystemGlobalArea 444596224bytes
FixedSize 1219904bytes
VariableSize 138412736bytes
DatabaseBuffers 301989888bytes
RedoBuffers 2973696bytes
//观察错误信息
ORA-00205:errorinidentifyingcontrolfile,checkalertlogformoreinfo
//还原控制文件
SQL>cp/u01/app/oracle/backup/emrep/ctl/2013-8-4/control01.ctl
/u01/app/oracle/oradata/emrep/.
SQL>cp/u01/app/oracle/backup/emrep/ctl/2013-8-4/control01.ctl
/u01/app/oracle/oradata/emrep/control02.ctl
SQL>cp/u01/app/oracle/backup/emrep/ctl/2013-8-4/control01.ctl
/u01/app/oracle/oradata/emrep/control03.ctl
//将数据库置为mount
SQL>alter database mount;
Database altered.
//要求以RESETLOGS或者NORESETLOGS选项打开数据库
SQL>alter database open;
alter database open
*
ERRORatline1:
ORA-01589:mustuseRESETLOGSorNORESETLOGSoptionfordatabaseopen 

 

//以RESETLOGS选项打开数据库
SQL>alter database open resetlogs;
alterdatabaseopenresetlogs
*
ERRORatline1:
ORA-01194:file1needsmorerecoverytobeconsistent
ORA-01110:datafile1:'/u01/app/oracle/oradata/emrep/system01.dbf'
//使用备份的控制文件进行恢复
SQL>recover database using backup controlfile;
ORA-00279:change720553generatedat08/03/201323:05:27neededforthread1
ORA-00289:suggestion:
/u01/app/oracle/product/10.2.0/db_1/dbs/arch1_1_822524687.dbf
ORA-00280:change720553forthread1isinsequence#1
//应用在线日志
Specifylog:{<RET>=suggested|filename |AUTO|CANCEL}
/u01/app/oracle/oradata/emrep/redo01.log
ORA-00283:recoverysessioncanceledduetoerrors
//数据文件未命名
ORA-01244:unnameddatafile(s)addedtocontrolfilebymediarecovery
ORA-01110:datafile5:'/u01/app/oracle/oradata/emrep/t1.dbf'
ORA-01112:mediarecoverynotstarted
//查询数据文件信息
SQL>selectnamefromv$datafile;
NAME
--------------------------------------------------------------------------------
/u01/app/oracle/oradata/emrep/system01.dbf
/u01/app/oracle/oradata/emrep/undotbs01.dbf
/u01/app/oracle/oradata/emrep/sysaux01.dbf
/u01/app/oracle/oradata/emrep/users01.dbf
/u01/app/oracle/product/10.2.0/db_1/dbs/UNNAMED00005
//更名数据文件
SQL>alter database create datafile
'/u01/app/oracle/product/10.2.0/db_1/dbs/UNNAMED00005'as
'/u01/app/oracle/oradata/emrep/t1.dbf';
Databasealtered.
//恢复数据库
SQL>recover database using backup controlfile;
ORA-00279:change721446generatedat08/03/201323:07:44neededforthread1
ORA-00289:suggestion:
/u01/app/oracle/product/10.2.0/db_1/dbs/arch1_1_822524687.dbf
ORA-00280:change721446forthread1isinsequence#1 
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: