现在的ORACLE一般都采用RMAN进行备份,不过在8及以前一般都是DBA自己写的一些备份脚本。
这是一个比较简单的windows系统不用RMAN的oracle数据库冷备脚本。仅供参考学习用。
 
本代码包括以下两个文件。
  
主文件backup.bat,用来执行备份的批处理文件,配置好参数,直接运行即可。
rem 设置ORACLE_SID  

set ORACLE_SID=testdb

rem 设置备份目录

set backup_dest_path=H:/oracle/oradata/testdbbackup/

rem 创建备份的SQLPLUS脚本到mybackup.sql文件

sqlplus /nolog @createscript.sql

rem 执行数据库备份

sqlplus /nolog @mybackup.sql %backup_dest_path%
生成备份脚本文件createscript.sql 
  1 connect / as SYSDBA  
2
3 --关闭屏幕输出
4
5 set term off;
6
7 --关闭输出列头信息
8
9 set heading off;
10
11 --设置行长度
12
13 set linesize 100;
14
15 --关闭输出统计行数信息
16
17 set feedback off;
18
19 --关闭变量扫描
20
21 SET SCAN off;
22
23 --关闭变量定义
24
25 SET DEFINE off;
26
27 --打开输出
28
29 SET SERVEROUTPUT ON SIZE 100000;
30
31 spool off
32
33 --将生成的脚本输出到mybackup.sql文件
34
35 spool mybackup.sql
36
37 declare
38
39 --读取数据文件
40
41 cursor cur_datafile is
42
43 select * from v$datafile;
44
45 --读取临时文件
46
47 cursor cur_tempfile is
48
49 select * from v$tempfile;
50
51 --读取控制文件
52
53 cursor cur_controlfile is
54
55 select * from v$controlfile;
56
57 --读取重做日志文件
58
59 cursor cur_redofile is
60
61 select * from v$logfile;
62
63 begin
64
65 --输出连接数据库命令
66
67 dbms_output.put_line('connect / as SYSDBA;');
68
69 --输出备份spfile文件命令
70
71 dbms_output.put_line('create pfile=''&1/pfile.ora'' from spfile;');
72
73 --输出关闭数据库命令
74
75 dbms_output.put_line('shutdown immediate;');
76
77 for rec_datafile in cur_datafile loop
78
79 --输出操作系统复制数据文件命令
80
81 dbms_output.put_line('host copy /Y "'||rec_datafile.name||'" "&1";');
82
83 end loop;
84
85 for rec_tempfile in cur_tempfile loop
86
87 --输出操作系统复制临时文件命令
88
89 dbms_output.put_line('host copy /Y "'||rec_tempfile.name||'" "&1";');
90
91 end loop;
92
93 for rec_controlfile in cur_controlfile loop
94
95 --输出操作系统复制控制文件命令
96
97 dbms_output.put_line('host copy /Y "'||rec_controlfile.name||'" "&1";');
98
99 end loop;
100
101 for rec_redofile in cur_redofile loop
102
103 --输出备份重做日志文件命令
104
105 dbms_output.put_line('host copy /Y "'||rec_redofile.member||'" "&1";');
106
107 end loop;
108
109 --输出启动数据库命令
110
111 dbms_output.put_line('startup;');
112
113 --输出退出sqlplus命令
114
115 dbms_output.put_line('exit;');
116
117 end;
118
119 /
120
121 spool off
122
123 exit;


posted on 2011-11-21 13:29  IT高级民工  阅读(660)  评论(0编辑  收藏  举报