本练习中,将在DENVER数据库打开时,创建一个该数据库的完整备份。为此,使用ALTER TABLESPACE...BEGIN BACKUP命令,对表空间中的数据文件实施一个打开的备份。使用ALTER TABLESPACE...END BACKUP或ALTER DATABASE END BACKUP命令,使表空间脱离热备模式。当每个表空间都处于备份模式时,拷贝该表空间对应的数据文件。除了拷贝每个联机数据以外,一个完整的数据库打开备份还包括对当前控制文件的备份拷贝。
任务描述 | 时间(分钟) |
1. 产生数据库活动 | 5 |
2. 创建备份脚本 | 15 |
3. 运行热备份 | 5 |
4. 检查备份命令 | 5 |
总计时间 | 30 |
在确信数据库已经有了一些操作活动之后,创建一个脚本文件,其中包含了完成一个合法的完整打开数据库备份所需的所有命令。运行备份脚本,然后再检查已完成的工作。
任务1:产生数据库活动
向Tina的DATE_LOG表中插入一些行。如果用的是还原,请确认恢复已经结束。确信借助任务系统,一些行被插入到表中。可以将任务的时间间隔设为每分钟一次,以增加数据库的操作活动。
任务2:创建热备份脚本
创建数据库中所有文件的一个热备份。在nutshell中,准备生成的打开的数据库备份脚本将完成以下工作:
1) 切换日志文件,确保在备份前所做的所有更改都已被归档
2) 将一个表空间设置为热备份模式。
3) 用操作系统命令拷贝该表空间中的文件。
4) 将该表空间脱离热备份模式。
5) 对于每个表空间,重复2)~4)。
6) 切换日志文件,确保备份后所做的所有更改都已被归档
7) 备份当前控制文件
在运行热备份脚本时,使用SQL*Plus命令以及PL/SQL来创建一个有关SQL命令和操作系统命令的可执行文件,该文件(我们称之为备份命令文件)还将创建一个文件用来显示输出结果,用到的文件有:
² 备份脚本文件(open_backup.sql) 这是一个在文件编辑器(后面列出)中创建的文件。
² 备份命令文件(open_backup_commands.sql) 该文件是在open_backup.sql中创建并执行的。
² 备份命令文件输出文件(open_backup_output_sql) 该文件捕捉open_backup_commands.sql执行的那个文件的输出结果。
查看open_backup.sql的内容,注意其中有些行的注释。
[oracle@oracle11gR2 ~]$ more open_backup.sql
set feedback off heading off verify off trimspool on
set pagesize 0 linesize 100
define dir = '/tmp/backup/hot'
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_tablespace 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
执行open_backup.sql脚本:
sys@DENVER> @open_backup
*** Spooling to /tmp/open_backup_commands.sql
spool /tmp/backup/hot/open_backup_output.lst
archive log list;
alter system switch logfile;
alter tablespace SYSTEM begin backup;
host cp /u01/oradata/denver/system01.dbf /tmp/backup/hot
alter tablespace SYSTEM end backup;
alter tablespace SYSAUX begin backup;
host cp /u01/oradata/denver/sysaux01.dbf /tmp/backup/hot
alter tablespace SYSAUX end backup;
alter tablespace UNDOTBS1 begin backup;
host cp /u01/oradata/denver/undotbs01.dbf /tmp/backup/hot
alter tablespace UNDOTBS1 end backup;
alter tablespace TEMP begin backup;
alter tablespace TEMP end backup;
alter tablespace USERS begin backup;
host cp /u01/oradata/denver/users01.dbf /tmp/backup/hot
host cp /u01/oradata/denver/user02.dbf /tmp/backup/hot
alter tablespace USERS end backup;
alter tablespace EXAMPLE begin backup;
host cp /u01/oradata/denver/example01.dbf /tmp/backup/hot
alter tablespace EXAMPLE end backup;
alter tablespace PERFSTAT begin backup;
host cp /u01/oradata/denver/perfstat_01.dbf /tmp/backup/hot
alter tablespace PERFSTAT end backup;
alter tablespace TOOLS begin backup;
host cp /u01/oradata/denver/tools01.dbf /tmp/backup/hot
alter tablespace TOOLS end backup;
alter system switch logfile;
alter database backup controlfile to "/tmp/backup/hot/backup.ctl" REUSE;
archive log list;
spool off;
Database log mode Archive Mode
Automatic archival Enabled
Archive destination /u01/admin/denver/archdest
Oldest online log sequence 6
Next log sequence to archive 8
Current log sequence 8
alter tablespace TEMP begin backup
*
ERROR at line 1:
ORA-03217: invalid option for alter of TEMPORARY TABLESPACE
alter tablespace TEMP end backup
*
ERROR at line 1:
ORA-03217: invalid option for alter of TEMPORARY TABLESPACE
alter database backup controlfile to "/tmp/backup/hot/backup.ctl" REUSE
*
ERROR at line 1:
ORA-02236: invalid file name
Database log mode Archive Mode
Automatic archival Enabled
Archive destination /u01/admin/denver/archdest
Oldest online log sequence 8
Next log sequence to archive 9
Current log sequence 10