linux下对oracle的冷备份和热备份脚本

Oracle冷热备份实践
本文详细介绍了Oracle数据库的冷备份和热备份操作流程,并提供了具体的SQL脚本示例。包括了如何备份数据文件、控制文件及重做日志等关键步骤。

在itpub上看到,然后修改的~~~

 

测试环境:
1      操作系统

[oracle@localhost ORCL]$ cat /proc/version
Linux version 2.6.27.5-117.fc10.i686 (mockbuild@x86-7.fedora.phx.redhat.com) (gcc version 4.3.2

20081105 (Red Hat 4.3.2-7) (GCC) ) #1 SMP Tue Nov 18 12:19:59 EST 2008

 

2     数据库版本

SQL> select * from v$version;

BANNER
----------------------------------------------------------------
Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 - Prod
PL/SQL Release 10.2.0.1.0 - Production
CORE 10.2.0.1.0 Production
TNS for Linux: Version 10.2.0.1.0 - Production
NLSRTL Version 10.2.0.1.0 - Production

 

3     数据库的名字

SQL> show parameter db_name;

NAME         TYPE  VALUE
------------------------------------ ----------- ------------------------------
db_name         string  ORCL

4    数据库的所有数据文件所在位置
SQL> select file#,status,enabled,name from v$datafile;

     FILE# STATUS  ENABLED    NAME
---------- ------- ---------- ------------------------------
  1 SYSTEM  READ WRITE /opt/oracle/product/10.2.1/ora
         data/ORCL/system01.dbf

  2 ONLINE  READ WRITE /opt/oracle/product/10.2.1/ora
         data/ORCL/undotbs01.dbf

  3 ONLINE  READ WRITE /opt/oracle/product/10.2.1/ora
         data/ORCL/sysaux01.dbf

  4 ONLINE  READ WRITE /opt/oracle/product/10.2.1/ora
         data/ORCL/users01.dbf

     FILE# STATUS  ENABLED    NAME
---------- ------- ---------- ------------------------------

  5 ONLINE  READ WRITE /opt/oracle/product/10.2.1/ora
         data/ORCL/example01.dbf

  6 ONLINE  READ WRITE /opt/oracle/product/10.2.1/ora
         data/ORCL/testtablespace

  7 ONLINE  READ WRITE /opt/oracle/product/10.2.1/ora
         data/ORCL/test

  8 ONLINE  READ WRITE /opt/oracle/product/10.2.1/ora

     FILE# STATUS  ENABLED    NAME
---------- ------- ---------- ------------------------------
         data/ORCL/testaaaa

  9 ONLINE  READ WRITE /opt/oracle/product/10.2.1/ora
         data/ORCL/t2m.dbf


9 rows selected.

 

5   控制文件的所在位置
SQL> select * from v$controlfile;

STATUS NAME          IS_ BLOCK_SIZE FILE_SIZE_BLKS
------- ------------------------------ --- ---------- --------------
 /opt/oracle/product/10.2.1/ora NO 16384   430
 data/ORCL/control01.ctl

 /opt/oracle/product/10.2.1/ora NO 16384   430
 data/ORCL/control02.ctl

 /opt/oracle/product/10.2.1/ora NO 16384   430
 data/ORCL/control03.ctl

 

6    重做日志文件位置

SQL> select * from v$logfile;

    GROUP# STATUS  TYPE    MEMBER        IS_
---------- ------- ------- ---------------------------------------- ---
  3 STALE   ONLINE  /opt/oracle/product/10.2.1/oradata/ORCL/ NO
      redo03.log

  2    ONLINE  /opt/oracle/product/10.2.1/oradata/ORCL/ NO
      redo02.log

  1    ONLINE  /opt/oracle/product/10.2.1/oradata/ORCL/ NO
      redo01.log

  4    ONLINE  /opt/oracle/product/10.2.1/oradata/ORCL/ NO
      redo4.log

    GROUP# STATUS  TYPE    MEMBER        IS_
---------- ------- ------- ---------------------------------------- ---

  5    ONLINE  /opt/oracle/product/10.2.1/oradata/ORCL/ NO
      redo05.log

 

7      在/home/oracle/test/目录下写个coldbak.sql脚本

[oracle@localhost ~]$ vi /home/test/coldbak.sql

 

#rem script.:coldbak.sql
#rem desc:offline full backup database
#enter database
$ORACLE_HOME/bin/sqlplus "/as sysdba" <<EOF
#--shutdown database
shutdown immediate
#--Copy  file
!cp /opt/oracle/product/10.2.1/oradata/ORCL/*.dbf /home/oracle/test/
!cp /opt/oracle/product/10.2.1/oradata/ORCL/*.ctl /home/oracle/test/
!cp /opt/oracle/product/10.2.1/oradata/ORCL/*.log /home/oracle/test/
#--startup database
startup

 

8      在linux启动一个终端执行该coldbak.sql脚本
[oracle@localhost test]$ . colbak.sql

(提示过程略)

 

附上piner的说明:
1、以上脚本在数据库关闭状态下备份数据库所有的数据文件,联机日志,控制文件(在一个目录下),如果成功备份,所有文件是一致的。
2、没有备份参数文件,参数文件可以另外备份,没有必要每次都备份,只需要在改变设置后备份一次。
3、如果以上命令没有成功依次执行,那么备份将是无效的,如连接数据库不成功,那么肯定关闭数据库也不成功,那么备份则无效。
4、冷备份建议下人工干预下执行。

9      在/home/oracle/test/目录下写个hotbak.sql脚本

#rem script.:hotbak.sql
#rem desc:backup all database datafile in archive
#enter database
$ORACLE_HOME/bin/sqlplus "/as sysdba" <<EOF
alter system archive log current;
#start
alter tablespace system begin backup;
!cp /opt/oracle/product/10.2.1/oradata/ORCL/system01.dbf /home/oracle/test/;
alter tablespace system end backup;

alter tablespace system begin backup;
!cp /opt/oracle/product/10.2.1/oradata/ORCL/undotbs01.dbf /home/oracle/test/;
alter tablespace system end backup;

alter tablespace system begin backup;
!cp /opt/oracle/product/10.2.1/oradata/ORCL/users01.dbf /home/oracle/test/;
alter tablespace system end backup;

alter tablespace system begin backup;
!cp /opt/oracle/product/10.2.1/oradata/ORCL/sysaux01.dbf /home/oracle/test/;
alter tablespace system end backup;

alter tablespace system begin backup;
!cp /opt/oracle/product/10.2.1/oradata/ORCL/example01.dbf /home/oracle/test/;
alter tablespace system end backup;

#backup control file
#binary

#热备份将当前的控制文件备份到文件
alter database backup controlfile to '/home/oracle/test/controlbinarybackup';

#ascii

#热备份建立控制文件的脚本到udump目录
alter database backup controlfile to trace;

alter system archive log current;

<<EOF

 

10      在linux启动一个终端执行该hotbak.sql脚本
[oracle@localhost test]$ . hotbak.sql

(提示过程略)

 

附上piner的说明:
1、热备份必须在数据库归档方式下才可以运行
2、以上脚本可以在数据库运行状态下备份数据库所有的数据文件(除了临时数据文件),没有必要备份联机日志。
3、归档日志至少需要一次完整备份之后的所有日志。
4、如果以上命令没有成功依次执行,那么备份也是无效的,如连接数据库不成功,那么备份则无效。

 

注意:如果热备份过程中出现错误:

alter system archive log current
*
ERROR at line 1:
ORA-00258: manual archiving in NOARCHIVELOG mode must identify log

问题处理1)第一种处理方法
问题原因是数据库没有处于归档模式,最根本的解决方法是修改数据库为归档模式,具体操作步骤请参见文章

2)第二种处理方法(意义不大)
既然错误提示“ORA-00258: manual archiving in NOARCHIVELOG mode must identify log”,那我们就可以

使用带有指定日志组的SQL命令完成归档操作。

第一种方法的步骤为:

1.查看系统的归档模式
SQL> archive log list;
Database log mode        No Archive Mode
Automatic archival        Disabled
Archive destination        USE_DB_RECOVERY_FILE_DEST
Oldest online log sequence     49
Current log sequence        53

2.彻底关闭数据库
SQL> shutdown immediate
3.启动数据状态到mount
SQL> startup mount;
4.修改数据库的归档模式
SQL> alter database archivelog;

5.开启数据库
SQL> alter database open;

6.查看数据库已经为归档模式
SQL> archive log list;
Automatic archival        Enabled
Archive destination        USE_DB_RECOVERY_FILE_DEST
Oldest online log sequence     52
Next log sequence to archive   56
Current log sequence        56

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值