欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 财经 > 产业 > 详细介绍下oracle冷备(coolbackup)

详细介绍下oracle冷备(coolbackup)

2025/5/10 22:05:58 来源:https://blog.csdn.net/tpc4289/article/details/143955074  浏览:    关键词:详细介绍下oracle冷备(coolbackup)

    冷备,也就说数据库不是运行(热的状态)的备份。有些时候我们的数据库比较小,进行同操作系统数据迁移和恢复的时候就比较好用。下面我们详细介绍下oracle数据库的冷备(我们使用最简单的拷贝数据文件方式进行冷备,暂时不介绍rman下的copy)。

一、适用模式

    不管oracle是在归档模式下还是在非归档模式下,都可以使用冷备。本次我们测试在归档模式下的数据库:

SQL> archive log list;
Database log mode              Archive Mode
Automatic archival             Enabled
Archive destination            USE_DB_RECOVERY_FILE_DEST
Oldest online log sequence     31
Next log sequence to archive   33
Current log sequence           33
SQL> 

二、冷备流程

2.1,工作流程

    首先在运行的库中得到数据库运行的所有的物理文件,然后再计划内关闭数据库。再执行物理文件到备份路径,备份完成后立即启动数据库让其提供正常服务。

2.2,基础信息查询

    查询v$database

SQL> select name,log_mode,open_mode from v$database;NAME                                               LOG_MODE     OPEN_MODE
-------------------------------------------------- ------------ --------------------
ORCL                                               ARCHIVELOG   READ WRITESQL> 

    查询数据文件


SQL> select file#,ts#,name from v$datafile;FILE#        TS# NAME
---------- ---------- --------------------------------------------------1          0 /oracle/app/data/ORCL/system01.dbf2          1 /oracle/app/data/ORCL/sysaux01.dbf3          2 /oracle/app/data/ORCL/undotbs01.dbf4          4 /oracle/app/data/ORCL/users01.dbf5          5 /oracle/app/data/ORCL/DT_TPC_DAT.DBF6          6 /oracle/app/data/ORCL/DT_CAT_DAT.DBF7          8 /oracle/app/data/ORCL/DT_TEST_DAT.DBF7 rows selected.

    查询控制文件


SQL> select name,status from v$controlfile;NAME                                               STATUS
-------------------------------------------------- -------
/oracle/app/data/ORCL/control01.ctl
/oracle/app/oracle/flash_recovery_area/ORCL/contro
l02.ctl

    查询redo文件


SQL> select * from v$logfile;GROUP# STATUS  TYPE    MEMBER                                                       IS_
---------- ------- ------- ------------------------------------------------------------ ---1         ONLINE  /oracle/app/data/ORCL/redo01.log                             NO3         ONLINE  /oracle/app/data/ORCL/redo03.log                             NO2         ONLINE  /oracle/app/data/ORCL/redo02.log                             NO

    查询临时数据文件

SQL> select file#,ts#,name from v$tempfile;FILE#        TS# NAME
---------- ---------- --------------------------------------------------1          3 /oracle/app/data/ORCL/temp01.dbfSQL> 

    查询参数文件(我本地使用的是spfile)

SQL> show parameter spfile;NAME                                 TYPE        VALUE
------------------------------------ ----------- ------------------------------
spfile                               string      /oracle/app/oracle/db11g/product/dbs/spfileORCL.ora
SQL> 

2.3,制作备份脚本

    制作查询语句,查询出所有备份数据文件的脚本(大家可以把后续控制文件和日志文件的弄成一个语句,我这里为了分类,就没有合并了):


SQL> select 'cp '||name||' /colbackup/' backname from v$datafile;BACKNAME
------------------------------------------------------------
cp /oracle/app/data/ORCL/system01.dbf /colbackup/
cp /oracle/app/data/ORCL/sysaux01.dbf /colbackup/
cp /oracle/app/data/ORCL/undotbs01.dbf /colbackup/
cp /oracle/app/data/ORCL/users01.dbf /colbackup/
cp /oracle/app/data/ORCL/DT_TPC_DAT.DBF /colbackup/
cp /oracle/app/data/ORCL/DT_CAT_DAT.DBF /colbackup/
cp /oracle/app/data/ORCL/DT_TEST_DAT.DBF /colbackup/7 rows selected.SQL> 

    查询出备份控制文件的脚本


SQL> select 'cp '||name||' /colbackup/' backname from v$controlfile;BACKNAME
------------------------------------------------------------
cp /oracle/app/data/ORCL/control01.ctl /colbackup/
cp /oracle/app/oracle/flash_recovery_area/ORCL/control02.ctl/colbackup/SQL> 

    查询出备份redo文件的脚本

SQL> select 'cp '||member||' /colbackup/' backname from v$logfile;BACKNAME
------------------------------------------------------------
cp /oracle/app/data/ORCL/redo01.log /colbackup/
cp /oracle/app/data/ORCL/redo03.log /colbackup/
cp /oracle/app/data/ORCL/redo02.log /colbackup/SQL> 

    查询备份临时数据文件的脚本

SQL> select 'cp '||name||' /colbackup/' backname from v$tempfile;BACKNAME
------------------------------------------------------------
cp /oracle/app/data/ORCL/temp01.dbf /colbackup/SQL> 

    参数文件我采取生成pfile的形式进行备份:


SQL> create pfile='/colbackup/pfile20241121.ora' from spfile;File created.SQL> 

2.4,停止数据库

    我们开始冷备份前,先停止数据库,确保备份后的数据文件保持一致性。

SQL> shutdown immediate
Database closed.
Database dismounted.
ORACLE instance shut down.
SQL> 

2.5,开始备份

    我们在colbackup目录下面新建立一个bak.sh文件,把之前生成的所有脚本放入其中,然后执行脚本开始备份

[root@oracle11g colbackup]# pwd
/colbackup
[root@oracle11g colbackup]# cat bak.sh
cp /oracle/app/data/ORCL/system01.dbf /colbackup/
cp /oracle/app/data/ORCL/sysaux01.dbf /colbackup/
cp /oracle/app/data/ORCL/undotbs01.dbf /colbackup/
cp /oracle/app/data/ORCL/users01.dbf /colbackup/
cp /oracle/app/data/ORCL/DT_TPC_DAT.DBF /colbackup/
cp /oracle/app/data/ORCL/DT_CAT_DAT.DBF /colbackup/
cp /oracle/app/data/ORCL/DT_TEST_DAT.DBF /colbackup/
cp /oracle/app/data/ORCL/control01.ctl /colbackup/
cp /oracle/app/oracle/flash_recovery_area/ORCL/control02.ctl /colbackup/
cp /oracle/app/data/ORCL/redo01.log /colbackup/
cp /oracle/app/data/ORCL/redo03.log /colbackup/
cp /oracle/app/data/ORCL/redo02.log /colbackup/
cp /oracle/app/data/ORCL/temp01.dbf /colbackup/
[root@oracle11g colbackup]# 

三、说明

    至此我们整个库的冷备就完成了,冷备一般情况下用得比较少,毕竟oracle一般采用rman等热备的形式进行库的备份。但是在一些情况下冷备还是很有用的,例如库小(数据容量大小)的时候,不想通过新建立库的时候完成整库的迁移 ;又或者是库出现故障的时候,需要进行不完全恢复,也可以通过冷备先保护下原始文件,再进行不完全恢复。

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

热搜词