Oracle用户管理的备份与恢复2

本文介绍如何在Oracle数据库打开状态下进行热备份,包括数据文件、控制文件及归档日志文件的备份过程。提供了详细的SQL脚本,展示了如何通过SQL*PLUS会话查询V$backup视图来检查备份状态。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

 

在打开状态下备份数据库

一、备份数据文件和控制文件

1、  创建热备份脚本open_backup.sql

set feedback off pagesize 0 heading off verify off linesize 100 trimspool on

define dir=’/oradata/practice/backup’

define fil=’/tmp/open_backup_commands.sql’

define spo=’&dir/open_backup_output.lst’

prompt *** Spooling to &fil

set serveroutput on

spool &fil

prompt spool &spo

prompt archive log list;;

prompt alter system switch logfile;;

declare

 cursor cur_tablespace is select tablespace_name from dba_tablespaces where status<>’READ ONLY’;

 cursor cur_datafile(tn varchar) is select file_name from dba_data_files where tablespace_name=tn;

begin

for ct in cur_tablesapce loop

  dbms_output.put_line(‘alter tablespace ’||ct.tablespace_name||’ begin backup;’);

   for cd in cur_datafile(ct.tablespace_name) loop

dbms_output.put_line(‘host cp ‘||cd.file_name||’ &dir’);

   end loop;

   dbms_output.put_line(‘alter tablespace’||ct.tablespace_name||’ end backup;’);

end loop;

end;

/

prompt alter system switch logfile;;

prompt ‘alter database backup controlfile to ‘’&dir/backup.ctl’’ reuse;’

prompt archive log list;;

prompt spool off;

spool off;

@&fil;

该脚本将会自动搜索数据库中表空间信息,然后逐个将表空间置为备份状态,再通过表空间名称索索表空间所包含的数据文件,然后调用操作系统命令将数据文件进行拷贝备份。最后还要备份控制文件,这些命令最终会输入到变量fil所指定的文件中,然后通过执行该命令文件来实现热备份。在执行备份过程中,可以通过另一个SQL*PLUS会话查询V$backup视图,来检查那个文件现在处于备份模式。也可以在运行备份脚本之后,通过如下方式察看备份状态:

alter tablespace users begin backup;将用户表空间置于备份模式

select d.tablespace_name,b.file#,b.status,b.change#,b.time

from dba_data_files d,v$backup b

where b.file#=d.file_id

order by d.tablespace_name;

运行该查询察看数据文件备份情况

alter tablespace users end backup;结束用户表空间备份状态

 

二、备份归档日志文件:

1、创建备份脚本archive_backup.sql:

define dir=’/oradata/practice/backup’

define fil=’/tmp/archive_backup_commands.sql’

spool &fil

prompt archive log next;;

select ‘host mv ‘||name||’ &dir’ from v$archived_log

where completion_time>=trunk(sysdate)-1 and completion_time<trunk(sysdate);

spool off;

@&fil

2、通过SQL*PLUSSYS用户身份登录practice数据库,运行该脚本,对归档文件进行备份。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值