Oracle中冷备份

1.冷备份介绍

冷备份是备份操作中最简单的一种类型。由于冷备份是在数据库完全关闭的情况下进行的,因此数据文件是一致的,在备份时没有任何访问和修改。非归档模式下数据库只能进行冷备份。

为了进行冷备份,必须以一致的方式关闭数据库,应该以下面的某个命令关闭数据库:

lshutdown normal

lshutdown immediate

lshutdown transactionsal

shutdown abort之后,不要立即进行数据库冷备份。如果必须以这种方式关闭数据库,那么就要接着执行startup restrict(使用户不能访问数据库)启动数据库,是非正常关闭之前正在进行的事务恢复过程能完成。然后执行shutdown [immediatetransactionsalnormal]。这样就可以确信,对于现在的数据库,所有事务或会滚段都已经完成,数据库处于一致状态。在数据库关闭时,可以将文件复制到磁盘或磁带上。

应该备份的文件包括:

l所有数据库数据文件及表空间,包括系统表空间、临时表空间和回滚/撤销表空间

l控制文件、备份的二进制控制文件和文本控制文件

l如果有正在使用的归档日志,还应该包括归档日志

l警告日志

l如果存在oracle密码文件,还应包括oracle密码文件

l参数文件init<SID>.oraspfile

l重做日志---但是在任何还原重做日志的时候,都应该特别小心,因为还原重做日志会覆盖当前存在的重做日志,而当前重做日志包含重做流中的最后入口信息,这些信息是完成恢复所需的。正因为如此,oracle建议不要对重做日志今次那个备份。

2.利用SQL*Plus进行数据库冷备份的操作步骤如下

1)用数据库管理员帐号登录Oracle

SQL> conn sys/oracle as sysdba;

2)查看Oracle数据库的物理结构

Oracle数据库物理结构由控制文件、数据文件、联机重做日志文件组成,通过查询数据字典,可以获取控制文件、数据文件、联机重做日志文件的信息。

  • 控制文件的信息:SQL> select name from v$controlfile;

    NAME
    --------------------------------------------------------------------------------
    /u01/app/oracle/oradata/orcl/control01.ctl
    /u01/app/oracle/oradata/orcl/control02.ctl
    /u01/app/oracle/oradata/orcl/control03.ctl

  • 数据文件的信息:SQL> select file_name from dba_data_files;

    FILE_NAME
    --------------------------------------------------------------------------------
    /u01/app/oracle/oradata/orcl/users01.dbf
    /u01/app/oracle/oradata/orcl/sysaux01.dbf
    /u01/app/oracle/oradata/orcl/undotbs01.dbf
    /u01/app/oracle/oradata/orcl/system01.dbf
    /u01/app/oracle/oradata/orcl/example01.dbf
    /u01/app/oracle/oradata/orcl/my_undo01.dbf
    /u01/app/oracle/oradata/orcl/test01.dbf

  • 联机重做日志文件信息

    SQL> select group#,member from v$logfile;

     GROUP# MEMBER
    ---------- --------------------------------------------------
             3 /u01/app/oracle/oradata/orcl/redo03.log
             2 /u01/app/oracle/oradata/orcl/redo02.log
             1 /u01/app/oracle/oradata/orcl/redo01.log

  • 参数文件的信息:SQL> show parameter spfile;

    NAME                                 TYPE        VALUE
    ------------------------------------ ----------- ------------------------------
    spfile                               string      /u01/app/oracle/db_1/dbs/spfil
                                                     eorcl.ora

  • 临时表空间的信息:SQL> select file_name from dba_temp_files;

    FILE_NAME
    --------------------------------------------------------------------------------
    /u01/app/oracle/oradata/orcl/temp01.dbf

3)关闭Oracle数据库

SQL> shutdown immediate

4)创建备份目录

[oracle@myCentOS03 oracle]$ mkdir my_cold_backup
[oracle@myCentOS03 oracle]$ pwd
/u01/app/oracle
3)将需要备份的文件拷贝到备份目录

备份数据文件、控制文件和日志文件,如下:

[oracle@myCentOS03 orcl]$ ls
control01.ctl  example01.dbf  redo02.log    system01.dbf  undotbs01.dbf
control02.ctl  my_undo01.dbf  redo03.log    temp01.dbf    users01.dbf
control03.ctl  redo01.log     sysaux01.dbf  test01.dbf
[oracle@myCentOS03 orcl]$ cp * /u01/app/oracle/my_cold_backup/
[oracle@myCentOS03 orcl]$ pwd
/u01/app/oracle/oradata/orcl


备份参数文件,如下:

[oracle@myCentOS03 oracle]$ cp /u01/app/oracle/db_1/dbs/spfileorcl.ora /u01/app/oracle/my_cold_backup/


备份临时表空间,如下:

[oracle@myCentOS03 oracle]$ cp /u01/app/oracle/oradata/orcl/temp01.dbf /u01/app/oracle/my_cold_backup/

备份USERS表空间,如下:

SQL> select file_name from dba_data_files where tablespace_name='USERS';

FILE_NAME
--------------------------------------------------------------------------------
/u01/app/oracle/oradata/orcl/users01.dbf

将USERS表空间设置为脱机状态,如下:

SQL> alter tablespace users offline normal;
[oracle@myCentOS03 oracle]$ cp /u01/app/oracle/oradata/orcl/users01.dbf /u01/app/oracle/my_arch_backup/USERS
备份完成之后,
将USERS表空间设置为联机状态,如下:

SQL> alter tablespace users online;

4.对备份文件进行恢复
1)模拟数据库一些重要的文件的文件丢失,此处演示数据库文件、控制文件、日志文件丢失,如下:

[oracle@myCentOS03 orcl]$ ls
control01.ctl  example01.dbf  redo02.log    system01.dbf  undotbs01.dbf
control02.ctl  my_undo01.dbf  redo03.log    temp01.dbf    users01.dbf
control03.ctl  redo01.log     sysaux01.dbf  test01.dbf
[oracle@myCentOS03 orcl]$ rm -rf *
2)启动数据库,查看提示信息,如下:

SQL> startup

ORA-00205: error in identifying control file, check alert log for more info

SQL> select status from v$instance;

STATUS
------------
STARTED

将之前备份的控制文件拷贝到指定目录,如下:

[oracle@myCentOS03 orcl]$ cp /u01/app/oracle/my_cold_backup/*.ctl ./

SQL> startup
ORA-01157: cannot identify/lock data file 1 - see DBWR trace file
ORA-01110: data file 1: '/u01/app/oracle/oradata/orcl/system01.dbf'

将之前备份的数据文件拷贝到指定目录,如下:

[oracle@myCentOS03 orcl]$ cp /u01/app/oracle/my_cold_backup/*.dbf ./

SQL> startup

ORA-00313: open failed for members of log group 1 of thread 1
ORA-00312: online log 1 thread 1: '/u01/app/oracle/oradata/orcl/redo01.log'

SQL> select status from v$instance;

STATUS
------------
MOUNTED

将之前备份的日志文件拷贝到指定目录,如下:

[oracle@myCentOS03 orcl]$ cp /u01/app/oracle/my_cold_backup/*.log ./

SQL> startup
ORACLE instance started.

Total System Global Area  524288000 bytes
Fixed Size                  2022016 bytes
Variable Size             176162176 bytes
Database Buffers          339738624 bytes
Redo Buffers                6365184 bytes
Database mounted.
Database opened.


 

你可能感兴趣的:(oracle,冷备份)