Oracle数据库三种备份方式介绍

冷备份

备份

直接拷贝oracle目录下的admin、oradata(datafile, controlfile,redo)、flash_recovery_area三个文件夹,db_1目录下database(PWDfile、pfile)、dbs(spfile)、NETWORK/ADMIN(listener.ora、tnsnames.ora),到其他存储实现备份。

恢复

方法一:最简单的方法(需建库)

1.创建一个和原来一样的数据库。(安装路径和数据库名必须和原来一致)
2.停止数据库 shutdown immediate;
3. 复制安装目录下的admin、oradata、flash_recovery_area覆盖,复制database(PWDfile、pfile) 覆盖
4. 启动数据库 startup;

方法二:(不需建库,稍麻烦点)

(1):操作系统重装,如果做冷备恢复,要保证相同操作系统,相同的数据库版本。
(2):正常安装oracle软件,只需要安装软件,不用建实例。
(3):数据覆盖,包括数据文件、参数文件、控制文件、日志文件、pwd文件,放在与原系统相同的目录。如果目录有所改变,则需要另外建立控制文件,修改pfile。
(4):建立服务:使用oradim 命令 cmd下 oradim -new -sid gbicc ,表示建立一个服务,sid为gbicc。如果是在linux下,不需要此步。
(5):建立监听: net configuration assintant 来建立(建议将源系统的network下的文件拷过来,根据实际情况修改)。
(6):打开数据库: cmd
set oracle_sid=gbicc;
sqlplus /nolog;
Conn / as sysdba;
startup;

至此,冷备份恢复成功

1、 基于表空间的热备

  --查询表空间的名字和状态

 

SQL> select file_id,tablespace_name,status from dba_data_files;

 

   FILE_ID TABLESPACE_NAME          STATUS

---------- ------------------------------ ---------

     4 USERS              AVAILABLE

     3 UNDOTBS1              AVAILABLE

     2 SYSAUX              AVAILABLE

     1 SYSTEM              AVAILABLE

     5 COSTCTL_TBS              AVAILABLE

     6 DEV_DATA              AVAILABLE

     7 PDMS_DATA              AVAILABLE

 

已选择7行。

 

  --开始备份,将会

SQL> alter tablespace PDMS_DATA  begin backup;

 

表空间已更改。

  --拷贝数据文件到指定的备份磁盘上

SQL> host cp /opt/oracle/app/oradata/pdms/PDMS_DATA.dbf /u03/backup/hotbak

  --查看所有数据文件的备份状态

 

SQL> select * from v$backup;

 

     FILE# STATUS         CHANGE# TIME

---------- ------------------ ---------- --------------

     1 NOT ACTIVE               0

     2 NOT ACTIVE               0

     3 NOT ACTIVE               0

     4 NOT ACTIVE               0

     5 NOT ACTIVE               0

     6 NOT ACTIVE               0

         7 ACTIVE               12657642 15-12月-16

 

  --将表空间重新设置为非备份状态

SQL> alter tablespace PDMS_DATA end backup;

 

表空间已更改。

  --查看备份状态

 

SQL> select * from v$backup;

 

     FILE# STATUS         CHANGE# TIME

---------- ------------------ ---------- --------------

     1 NOT ACTIVE               0

     2 NOT ACTIVE               0

     3 NOT ACTIVE               0

     4 NOT ACTIVE               0

     5 NOT ACTIVE               0

     6 NOT ACTIVE               0

         7 NOT ACTIVE           12657642 15-12月-16

 

已选择7行。

 

 

2. 基于数据库的热备

  alter database begin backup;

      拷贝所有的datafile到备份目录

      alter database end backup;

 

3. 控制文件的热备

  alter database backup controlfile to '

' [reuse];          --控制文件的完整备份

    alter database backup controlfile to trace as '

'  --用于创建控制文件的语句,丢失了部分信息,可以直接查看

 

SQL> alter database backup controlfile to '/u03/backup/hotbak/control01.ctl';

 

数据库已更改。

 

SQL> alter database backup controlfile to trace as '/u03/backup/hotbak/control02.ctl';

 

数据库已更改。

 

查control02.ctl

https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gifView Code

 

4. 参数文件的热备

  create pfile from spfile ;

      create pfile = '

' from spfile;

SQL> create pfile = '/u03/backup/hotbak/initdbsrv1.ora' from spfile;

 

文件已创建。

 

5. 临时表空间的数据文件、日志文件不需要备份

 

五、热备脚本

基于表空间的热备(推荐使用这种方式)

vim hotbak.sql

 

set feedback off

set heading off

set verify off

set trimspool off

set pagesize 0

set linesize 200

define dir = '/u03/backup/hotbak'

define script = '/tmp/hotbak_tb.sql'

ho rm &script

ho rm &dir/*

spool &script

select 'alter tablespace '|| tablespace_name ||' begin backup ;' ||

 chr(10)||'ho cp ' || file_name || ' &dir ' ||

 chr(10)||'alter tablespace '|| tablespace_name || ' end backup;'

 from dba_data_files order by tablespace_name;

spool off

start &script

alter database backup controlfile to '&dir/controlbak.ctl';

create pfile = '&dir/initdbsrv1.ora' from spfile;

 

其中char(10)表示换行,红色部分需要自行修改

SQL> start hotbak.sql;  --执行该脚本即可对数据库基于表空间进行热备

 

基于数据库(数据文件)的热备

vim hotbak.sql

 

set feedback off

set heading off

set verify off

set trimspool off

set pagesize 0

set linesize 200

define dir = '/u03/backup/hotbak'

define script = '/tmp/hotbak_tb.sql'

ho rm &script

ho rm &dir/*

spool &script

select 'alter tablespace '|| tablespace_name ||' begin backup ;' ||

 chr(10)||'ho cp ' || file_name || ' &dir ' ||

 chr(10)||'alter tablespace '|| tablespace_name || ' end backup;'

 from dba_data_files order by tablespace_name;

spool off

start &script

alter database backup controlfile to '&dir/controlbak.ctl';

create pfile = '&dir/initdbsrv1.ora' from spfile;

你可能感兴趣的:(技术文章)