Oracle数据库冷备份与热备份操作梳理

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Oracle数据库冷备份与热备份操作梳理相关的知识,希望对你有一定的参考价值。

 

Oracle数据库的备份方式有冷备份和热备份两种,针对这两种备份的实施过程记录如下:

一、Oracle冷备份
概念
数据库在关闭状态下完成所有物理系统文件拷贝的过程,也称脱机备份
适合于非归档模式(noarchivelog)下,数据库处于一致性状态

步骤

  • 首先在运行的库中得到数据库运行的所有的物理文件位置,然后在计划内关闭数据库(shutdown)
  • 再执行拷贝物理文家到备份路径或备份设备
  • 备份完成后立即启动数据库让其提供正常的服务

冷备脚本的写法
首先应该在相关视图里查出数据库的数据文件,日志文件,控制文件,临时文件所在的位置
注意:不要直接在oradata下进行cp就行了,因为生产库里各个文件通常分布在不同的磁盘,不同的地方,所以在去视图里获得真实路径

冷备份操作

1)查看Oracle数据库的日志模式,如果是归档模式,将需要将数据库设置为noarchivelog模式(非归档模式),从而进行冷备份。

SQL> archive log list  
Database log mode              No Archive Mode  
Automatic archival             Enabled                     //Enabled表示为归档模式
Archive destination            /u01/admin/denver/archdest  
Oldest online log sequence     1  
Current log sequence           1 

SQL> startup mount  
ORACLE instance started.  
Total System Global Area  422670336 bytes  
Fixed Size                  1336960 bytes  
Variable Size             314575232 bytes  
Database Buffers          100663296 bytes  
Redo Buffers                6094848 bytes  
Database mounted.  

SQL>  alter database noarchivelog  
Database altered.  

SQL> archive log list  
Database log mode              No Archive Mode  
Automatic archival             Disabled                   //Disabled表示为归档模式
Archive destination            /u01/admin/denver/archdest  
Oldest online log sequence     1  
Current log sequence           1  

SQL> alter database open;  
Database altered.  

2)查看实例和数据库的相关信息

SQL> select instance_name,version,status,archiver,database_status from v$instance;
 
    INSTANCE_NAME    VERSION           STATUS       ARCHIVE DATABASE_STATUS
    ---------------- ----------------- ------------ ------- -----------------
    orcl             10.2.0.1.0        OPEN         STOPPED ACTIVE
 
SQL> select dbid,name,log_mode from v$database;
 
    DBID NAME      LOG_MODE
    ---------- --------- ------------
    1242732291 ORCL      NOARCHIVELOG

3)查看数据文件及状态信息

SQL> select file_name,tablespace_name,status,online_status from dba_data_files;
 
    FILE_NAME                                               TABLESPACE STATUS    ONLINE_
    ------------------------------------------------------- ---------- --------- -------
    /u01/app/oracle/oradata/orcl/undotbs01.dbf              UNDOTBS1   AVAILABLE ONLINE
    /u01/app/oracle/oradata/orcl/system01.dbf               SYSTEM     AVAILABLE SYSTEM
    /u01/app/oracle/oradata/orcl/sysaux01.dbf               SYSAUX     AVAILABLE ONLINE
    /u01/app/oracle/oradata/orcl/users01.dbf                USERS      AVAILABLE ONLINE
    /u01/app/oracle/oradata/orcl/example01.dbf              EXAMPLE    AVAILABLE ONLINE
    /u01/app/oracle/oradata/orcl/tbs1_1.dbf                 TBS1       AVAILABLE ONLINE
    /u01/app/oracle/oradata/orcl/tbs1_2.dbf                 TBS1       AVAILABLE ONLINE

 

4)查看数据文件

SQL> select name from v$datafile;
 
    NAME
    --------------------------------------------------------------------------------
    /u01/app/oracle/oradata/orcl/system01.dbf
    /u01/app/oracle/oradata/orcl/undotbs01.dbf
    /u01/app/oracle/oradata/orcl/sysaux01.dbf
    /u01/app/oracle/oradata/orcl/users01.dbf
    /u01/app/oracle/oradata/orcl/example01.dbf
    /u01/app/oracle/oradata/orcl/tbs1_1.dbf
    /u01/app/oracle/oradata/orcl/tbs1_2.dbf

 

5)查看临时文件

SQL> select name from v$tempfile;
 
    NAME
    --------------------------------------------------------------------------------
    /u01/app/oracle/oradata/orcl/temp01.dbf

 

6)查看日志文件

SQL> select member from v$logfile;
 
    MEMBER
    ------------------------------------------------------------
    /u01/app/oracle/oradata/orcl/redo2a.rdo
    /u01/app/oracle/oradata/orcl/redo2b.rdo
    /u01/app/oracle/oradata/orcl/redo1a.rdo
    /u01/app/oracle/oradata/orcl/redo3a.rdo
    /u01/app/oracle/oradata/orcl/redo3b.rdo
    /u01/app/oracle/oradata/orcl/redo1b.rdo

 

7)查看控制文件

SQL> select name from v$controlfile;
 
    NAME
    ------------------------------------------------------------
    /u01/app/oracle/oradata/orcl/control01.ctl
    /u01/app/oracle/oradata/orcl/control02.ctl

 

8)创建备份目录

SQL> ho mkdir /u01/app/oracle/coolbak

 

9)使用连接符生成复制文件命令

SQL> select ‘ho cp ‘ || name || ‘ /u01/app/oracle/coolbak‘ from v$controlfile;
 
    ‘HOCP‘||NAME||‘/U01/APP/ORACLE/COOLBAK‘
    ----------------------------------------------------------------------------------
    ho cp /u01/app/oracle/oradata/orcl/control01.ctl /u01/app/oracle/coolbak
    ho cp /u01/app/oracle/oradata/orcl/control02.ctl /u01/app/oracle/coolbak

将上面的输入保存为tmpbak.sql

SQL> save /tmp/tmpbak.sql;   
Created file /tmp/tmpbak.sql

 








以上是关于Oracle数据库冷备份与热备份操作梳理的主要内容,如果未能解决你的问题,请参考以下文章

Oracle冷备份脚本

oracle如何备份单表并在新数据库恢复?

oracle都有哪些备份方式?

将oracle冷备份恢复到另外一个数据库实例中

oracle10g冷备份和恢复过程记录

oracle冷备份需要创建数据库吗