服务器 频道

Oracle 数据库备份

【IT168 服务器学院】
   恢复文件:
  以下是对"/etc/passwd"文件的恢复
 (、放入正确的磁带
 (、运行以下命令恢复"/etc/passwd"文件
 # rsh www mt -f /dev/rmt/0 rew
  ( 找到最近的磁带,向前进带到最近的"/etc/passwd",比如要找星期三的"
 #rsh www mt -f /dev/rmt/0n fsf 2
 # ufsrestore if www:/dev/rmt/0n   ufsrestore > ls
  .:
  etc/   ufsrestore > cd etc
  ufsrestore > ls
  ./etc:
  passwd   ufsrestore > add passwd
  Warnign :./etc:File exists   ufsrestore > verbose
  verbose mode on   ufsrestore > extract
  Extract requested files
  You have not read any volumes yet .
  Unless you know which volume your file(s) are on you should start witch the
  Specify next volume #:1
  extract file ./etc/passwd
  Add links
  Set directory mode ,ower,and times.
  set owner /mode for ''.''?(yn)n
  Directories already exit , set mode anyway?(yn)y
  ufsrestore >quit
热备份可以在数据库打开打情况下进行,一般通过使用Alter命令改变表空间的状态
来开始进行备份的,备份完成后,要恢其原来状态,否则redo log 会错配,引起数据库下次
启动时对受影响的表空间进行完全覆盖。热备份的要求是:
  1.热备份工作必需要求数据库在Archivelog 方式下操作,在SQLDBA状态下用alter
database archivelog|noarchivelog命令可改变备份的模式。
  2.热备份只能在数据库不使用或使用率低的情况下进行。
  3.热备份需要大量的档案空间。
  一般情况,Oracle 以循环的方式写入Online redo log 文件,当填满第一个redo log文
件后写第二个,直至最后一个,最后一个被填满后,后台进程LGWR就覆盖第一个,在
Archivelog方式下,后台进程ARCH在每一个redo log 文件被覆盖前,给它作一个拷贝,一般
,这些文档的redo log 文件被写入磁盘或磁带中。如果磁盘空间够用,建议使用磁盘,这样
  在作热备份之前,要将config.ora文件中的log_archive_start 设为true 将
  规定archive redo log 文件的位置:
  log_archive_dest=/wwwdg/oracle/arch/arch

  log_archive_start=true
  一旦数据库运行在archivelog状态下,就可以作备份了。热备份的命令文件由三部分组成
  1、数据文件一个表空间一个空间地备份:
  a.设置表空间为备份状态。
  b.备份表空间的数据文件。
  c.恢复表空间为正常状态。
  2、备份归档要作log 文件:
  a.临时停止归档进程
  b.log下那些在archive redo log目标目录中的文件
  c.重新启动archive进程
  d.备份归档的redo log 文件
  3、用alter database backup controlfile命令来备份拷贝文件
  在热备份运行之前log_archive_dest目录可能已满,这时就要备份目录,然后删除文件,
  1、暂时停止archive进程。
  2、记录在log_archive_dest目录下的文件。
  3、重新启动archive 进程。
  4、备份archive redo log 文件。
  5、删除目录中的文件。   sqldba lmode=y <  archive log stop;
  exit
  EOF arch1
  FILES=''ls /wwwdg/oracle/arch/arch*.dbf'';

  connect internal
  archive log start;
  exit
  EOF arch2
  tar -rvf /dev/rmt/0 FILES
  rm -f $FILES
  逻辑备份与物理备份的结合。
  前面介绍了三种备份的方法,在数据库做备份时,应该将数据这三种备份的特点灵活运用
  方 法
  类 型
  恢 复 特 性
  EXPORT导出
  逻辑型
  可以将任何数据库对象恢复到它被导出时的状态
  ?hutdown
  ?将最近copyes of datafile,拷贝到$oracle_home/dbs目录。
  ?%svrmgrl   ?svrmgrl>connect internal
  …svrmgrl>startup mount pfile=filename exclusive
  ?svrmgrl>alter database recover;
  注:将自动恢复数据到the point of failure;   ? svrmgrl>alter database open;
  ?当archive log文件过多时,在 做过部分备份后,可将current log sequence 之前的
  #su - oracle
  %svrmgrl   svrmgrl>connect internal;
  svrmgrl>archive log list;
  #此处标有current log sequence.假设为360。   Svrmgrl>exit
  $cd /billdg/oracle/app/oracle/product/7.3.2/dbs/arch
  $ rm ......... #将log360.arc之前的文件如log359.arc,log358.arc.............删除
  冷 备 份
  物理型
  可将数据库到它被关闭的状态
  热 备 份
  物理型
  可将数据库恢复到任一时间点的状态
  当数据库比较小时,处理业务也小时,冷备份导出就可以了。如果只对一两个表备份导出
就够了。一般来说一个好,备份最终执行总包括逻辑和物理,导出确认数据库在逻辑的正确性
  另外,在进行备份时需要一些存储介质,对于这些介质应该对其作好管理
  1:根据备份的内容,日期将介质统一编号,以免备份和恢复时弄错介质,造成原有的备
  2:介质应存放在与计算机设备不同的地点,以免机房发生意外时,备份与计算机设备一
  附录:
  tar命令
  tar option [arguments] filename...
  option:
  c:创建一个由命令行指定的新的tarfile
  t:列出tarfile中的内容
  x:打开tarfile;
  f:使用其后的filename 或/dev/rmt/0|1
  v:列出被恢复的文件名;
  p:恢复文件
  example:
  #tar cvf /dev/rmt/0 /oracle
  备份/root 下的所有内容
  #tar tvf /dev/rmt/0
  列出磁带上的所有内容
  #tar xvf /dev/rmt/0 /oracle
  将磁带上的/oracle目录中的内容恢复到当前目录中
  导出选项
  关键字 内 容
  USERID 运行导出命令的帐号的用户名/口令。
  BUFFEER 用来取数据行的缓冲区的大小。
  FILE 导出转储文件的名字
  COMPRESS 导出是否应该压缩有碎片的段成一个范围,这将会影响STORAGE
  子句,
  GRANTS 导出时否要导出数据库对象上的授权
  INDEXES 是否要导出表上的索引
  ROWS 是否应导出行。如它为‘N’,那么在导出文件中仅生成数据库
  对象的DDL
  CONSSTRAINTS 是否导出表旧的约定条件
  FULL 如设为‘Y’,那么将执行一个整个数据库导出操作
  OWNER 要导出的一系列数据库帐号,然后执行这些帐号的USER导出操
  作
  TABLES 要导出的一系列表;执行这些表的TABLE导出操作
  RECORDLENGTH 转储导出文件日志的长度(以字节为单位),通常都使用缺省,除
  非要在两个不同操作系统中传递导出文件
  INCTYPE 正在执行的导出操作的类型(有效值有”COMPLETE“(缺省值),
  CUMULATIVE”和“IVCREMENTAL”)
  RECORD 在增量导出类型中的一个标记,标明是否将日志存储到数据字典
  中日志导出的表中
  PARFILE 要传递给导出的参数文件的名字。这个文件将包含所有参数的入
  口项
  ANALYZE 标明是否将移对象的统计信息写入导出转储文件中
  CONSISTENT 标明是否保留所有导出对象的读取一致复制。
  LOG 导出日志将要写入的文件的名字
  MLS 标明是否要导出MLS 标号
  MLS_LABEL_ 规定了MLS标号的格式
  导入选择项
  USERID 运行导入命令的帐号的用户名/口令。
  BUFFEER 用来取数据行的缓冲区的大小。
  FILE 导入转储文件的名字
  SHOW 规定文件内容是否被显示,而不是被执行。
  EGORE 标明在执行‘CREATE’命令时,是否忽略遇到的错误。如果正
  在导入的对象已经存在时,应使用这个参数。
  FULL 如设为‘Y’,那么将执行一个整个数据库导入操作
  FROMUSER 在FULL=N的情况下,才有参数。它是一系列的数据库帐号,其
  对象应从导出转储文件中读取。
  TOUSER 一系列数据库帐号,导出转储文件扣的对象将要导入这些帐号。
  GRANTS 导入时否要导入数据库对象上的授权
  INDEXES 是否要导入表上的索引
  ROWS 是否应导入行。如它为‘N’,那么在导入文件中执行数据库对
  象的DDL
  FULL 如设为‘Y’,那么将执行一个整个数据库导出操作
  TABLES 要导入的一系列表
  RECORDLENGTH 转储导入文件日志的长度(以字节为单位),通常都使用缺省,除
  非要在两个不同操作系统中传递导入文件
  INCTYPE 正在执行的导入操作的类型(有效值有”COMPLETE“(缺省值),
  CUMULATIVE”和“IVCREMENTAL”)
  PARFILE 要传递给导入的参数文件的名字。这个文件将包含所有参数的入
  口项
  ANALYZE 标明是否将移对象的统计信息写入导入转储文件中
  LOG 导入日志将要写入的文件的名字
  MLS 标明是否要导入MLS 标号
  热备份的命令文件:
  ORACLE_SID=oracle7
  ORACLE_HOME=/wwwdg/oracle   sqldba lmode=y<  connect internal
  alter tablespace SYSTEM begin backup;
  !tar -cvf /dev/rmt/0 /wwwdg/oracle/dbms/sys01.dbf
  alter tablespace SYSTEM end backup;
  alter tablespace BWT begin backup;
  !tar -cvf /dev/rmt/0 /wwwdg/oracle/dbms/BWT1.dbf
  alter tablespace BWT end backup;
  archive log stop
  exit
  EOF arch1
  FILES=''ls /wwwdg/oracle/arch/arch*.dbf'';

  connect internal
  archive log start;
  exit
  EOF arch2
  tar -rvf /dev/rmt/0 $FILES
  rm -f $files
  sqldba lmode=y<  alter database backup controlfile to
  ''/wwwdg/oracle/dbms/bwtcontrfile.backup'';

  exit
  EOF arch3
  tar -rvf /dev/rmt/0 /wwwdg/oracle/bwt/bwtcontrofile.backup

0
相关文章