冷备份

备份

直接拷贝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 '<dir>' [reuse];          --控制文件的完整备份

    alter database backup controlfile to trace as '<dir>'  --用于创建控制文件的语句,丢失了部分信息,可以直接查看

 

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

DBeaver postgresql数据库备份_数据库View Code

 

4. 参数文件的热备

create pfile from spfile ;
      create pfile = '<dir>' 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;