热备
属于归档模式(alter database archivelog ;)下的备份方式:
热备是控制sch号在备份时不变化,其他内容可以变----因为sch号在块头,所以热备时把块头冻结就可以了,然后进行物理拷贝
拷贝完了之后,让scn号可以变化,这叫解冻块头
以上的技术就叫做热备。
热备可以对数据库热备, 可以对表空间热备,可以对控制文件热备,日志文件不需要热备的,参数文件是可以互相转化的
所以热备主要针对是数据库的数据文件。
具体实施是:alter databse bagin backup ;------------------alter database end backup ;
也可以只针对表空间进行热备:alter tableapace 名字 again backup ;
数据库有哪些表空间:
SQL>select tablespace_name from dba_data_file ;
SQL>select name from v$datafile ;
SQL>alter database begine backup ;
命令执行完毕之后别忘了执行:alter database end backup ;
紧接着备份控制文件:alter database backup conteolfile to to ‘/u02/l
再去备份一个参数文件好了:create pfile=’/u02/a’ from spfile ;
备份临时表空间:
PS:在执行以上热备的过程中,是可以对数据库进行其他操作的。
Touch新建文件的命令!touch /tmp/hot.sql /tmp/hot1.sql /tmp/hotorcl.sql
怎样去写一个热备的脚本:
我在虚拟机中做的就是:首先新建一个/tmp/hot.sql并编辑它:$vi /tmp/hot.sql
然后执行这个脚本一下就好:SQL>@/tmp/hot.sql
SQL>@/tmp/hotorcl.sql
下面是表空间级别的备份:
首先你要知道库里面有哪些表空间:
SQL>Select tablespace_name ,file_name from dba_data_files ;
然后SQL>alter tabalespace 某个表空间名字 begin backup ;
然后SQL>ho cp 这个表空间文件到备份目录下
最后:SQL> alter tablespace tablespace_name end backup ;
怎么写这个脚本呢:
把刚才热备脚本改动一下:
然后:SQL>@/u02/hot2.sql后得到如下:$vi /tmp/hot.sql
然后再加上控制文件参数文件备份的语句:
SQL>@/u02/hot2.sql
基于热备的恢复与还原:
Controlfile全部丢失的话:
首先还原热备的控制文件------执行recover database using backup controlfile ;尽管备份是旧的控制文件,但是执行了这句之后,数据库会把恢复的这个旧的控制文件更新到到最新的状
态,也就是把其更新到系统表空间中定义的最新的scn和数据文件中的scn,这样三个文件的scn保持一致了,但前提是你没有在热备的时刻之后没有对数据库进行resetlog,也没有重建控制文件。否则的话,也可以采用冷备中讲的重建控制文件的那种方法来恢复!
具体实施是:(有热备+归档模式)
模拟删除控制文件的错误的时候,如果数据库正在启动的状态,rm控制文件之后 ,用shutdown immediate 关闭数据库,不要用shutdown abort关闭数据库 否则可能损坏你的系统表空间的数据,切记切忌!
此时数据库实例是启动的,是nomount阶段,然后启动到mount阶段
SQL>alter database mount ;
SQL>recover database using backup controlfile ;
先输入auto,让其自动所需要的归档日志文件,如果提示不到某个归档日志,则再次执行SQL>recover database using backup controlfile ;然后一个个输入系统中的日志文件的路径,一个一个的去试着恢复,直到恢复成功-------alter database open resetlog ;
然后重新全备数据库;
然后出现不到某个归档日志的提示,所以接着重新执行:
继续:
然后执行:
SQL>alter database open resetlogs ;
最后执行一次全备再,再次运行一下热备脚本就可以了。记住:凡是执行resetlog之后数据库要进行一次全备,resetlog这个操作就是把数据库开始一个全新的状态了,日志开始重新记录,以前的归档号就没有意义了,归档要重新开始归档了。
PS:
Filename:就是指定日志文件或者归档日志的路径
Auto:让数据库自己归档日志的所在
Cancel:执行一个不完全恢复,把数据库恢复到备份的日志文件中的之前的某个时刻的状态。
数据文件丢失用热备恢复的情况:
能脱机的,就可以在线还原恢复 ;
不能脱机的, 只能到mount阶段去恢复;
拿User表空间来说:
看一下我们的User表空间在哪是哪一个?slect tablespace_name ,file_name from dba_data_file ;
模拟错误:直接干掉user表空间:ho rm /u01/app/oracle/oradata/orcl/user01.dbf ;
然后Conn scott/tiger---selet * from tab ;可以执行成功,而此时是mount阶段,为啥为查成功呢,因为虽然这个用户使用的user表空间,但是这个结果是储存在数据字典里面但是要查询下面的某个表的行记录的时候就不能查出来了。
-
---》conn / as sysdba
-------desc v$datafile ;
-------select file# , status , enabled from v$datafile ;
数据库怎么备份数据
下面执行还原:
再次执行:SQL>alter datafile 4 online ;
这样就可以使用users表空间了。
而我们的系统system表空间和undo临时表空间是、是不能被脱机的,sysaux是可以被脱机。
模拟错误:
系统表空间丢了之后当然查询那些依靠视图的查询就会失败了
当然这个时候查询一些表里面的内容也是不能查询的。
这个时候数据库正常也是关闭不了的
还原system表空间:
还原恢复i了之后是不需要进再去全备了
如果:
自打备份之后你对数据库执行了,resetlog打开数据库或者重建了控制文件的话,恢复还原
之须再进行一次全备。
还有就是redolog日志文件丢失:详询日志文件管理的部分。
临时表空间丢失的情况:临时丢失不影响Oracle的启动,仅仅与排序和存放临时段有关,添加一个新的,改为默认;或者删除旧的,建立新的,并设置为默认。
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论