Oracle 定时自动备份(windows任务计划,2016新增linux自动化备份)

Oracle自动备份windows任务计划
 
背景:Oracle 10g 服务器,Oracle 10g 客户端,windows 7 操作平台
 
要求:Oracle  数据库服务器对数据库 web_images 每天自动备份一次。
 
解决方案:利用任务计划、批处理文件和  Oracle 的 exp 导出功能,根据日期自动生成 Oracle 备份文件。详细步骤:
 
1 创建批处理文件 backup.bat
 backup.bat中详细内容如下:
@echo off
echo 正在备份图像 Oracle 数据库,请稍等......
exp userid=' system/***@web_images as sysdba' file= d:\oracle_backup \%date:~0,4%%date:~5,2%%date:~8,2%.dmp log=d:\oracle_backup\%date:~0,4%%date:~5,2%%date:~8,2%.log full=y
echo 任务完成!
 
其中红色部分是根据需要进行变动的地方,例如作者的项目名图像,数据库 web_images 用户名 system,密码 ***,要在目录 "d:\oracle_backup" 下生成形如 "20120711.dmp" 和 "20120711.log" 的备份和日志文件,全表导出。
另外:%date%的值在不同的 系统、语言版本下可能是不一样的,控制面板里面区域选项的设定也会改变%date%的值。请先在命令行中测试 echo %date% 的返回值。%date:~0,4%取年, %date:~5,2%取月, %date:~8,2%取日


有些windows可以直接这样写:脚本如下:

@echo off
echo 正在备份图像 Oracle 数据库,请稍等......
exp  HRD/密码@orcl file=E:\oracledatabak\%date:~0,4%%date:~5,2%%date:~8,2%.dmp log=E:\oracledatabak\%date:~0,4%%date:~5,2%%date:~8,2%.log owner=HRD    
echo 任务完成! 



2 添加一个任务计划 oracle_backup
 
开始 > 所有程序 > 附件 > 系统工具 > 任务计划程序 > 操作 > 创建基本任务  > 任务名输入oracle_backup,执行这个任务选择每天,下一步 > 起始时间下午12:00,起始日期2012-7-11,下一步 >(启动程序)下一步 > 在 浏览 中查找刚刚写好的 backup.bat 文件 >下一步 > 完成
 
点击"完成"之后,会在任务计划栏目下新增一个名为"oracle_backup"的任务计划,表明已经配置完毕。
 
备注:有时点击"完成" 之后,系统警告
 
"已创建新任务,但可能不能运行,因为无法设置账户信息。
指定的错误是:
Ox80041315:任务计划程序服务没有运行"
 
这是因为电脑的任务计划程序服务没有启动起来。开始 > 所有程序 > 管理工具 > 服务,找到"Task Scheduler"服务,发现启动类型为"已禁用",右键单击更改为"自动",并把它启动起来,然后重新添加一次任务计划 oracle_backup 就可以了。

------------------------------linux自动化备份,原理和操作步骤雷同windows操作------------------------------------------
1、新建一个sh文件,直接建立一个记事本,打开后输入如下内容,然后保存,之后文件后缀修改成.sh即可
rq=$(date '+%Y%m%d%H%M') 
su - oracle -c "exp pims/pims@xmzkf file=/home/oracle/pims_$rq.dmp log=/home/oracle/pims_$rq.log"


1.1、脚本中的  su - oracle -c ,是因为操作系统中,oracle安装在了oracle用户下,而不是root下,,所以在root下操作时,需要加入此切换命令
,如果oracle也是安装在root用户中,那么命令如下:

rq=$(date '+%Y%m%d%H%M') 
exp pims/pims@xmzkf file=/home/oracle/pims_$rq.dmp log=/home/oracle/pims_$rq.log


2、登录操作系统,输入命令,找到最上层目录,然后找到etc目录
cd etc
然后找到crontab文件,并加入定时任务脚本
crontab -e 
然后编辑,并加入如下代码:

*/5 * * * * /刚刚保存的.sh文件

然后保存即可

这里是*/5 * * * *  表示每五分钟执行一次

3、可以测试下,root用户切换oracle之后,在oracle中,是否可以直接运行此段代码
exp pims/pims@xmzkf file=/home/oracle/pims_$rq.dmp log=/home/oracle/pims_$rq.log
$rq变量可以写死成其他的,或者不用,随便命名即可。

如果不行,可能是因为oracle,不能用root建立文件夹,root里面建立的文件夹,oracle用户没有权限访问,所以建立文件夹
最后是在切换到oracle之后,执行建立文件夹目录
建立文件夹的脚本
mkdir 文件夹

删除文件夹脚本
rm -rf 文件夹

注意点2. 执行脚本.sh可能没有权限,需要赋权限,chown 775 执行脚本.sh

总结:1、因为创建定时任务需要在root用户下,所以,执行脚本无论放在oracle用户还是root用户,都需要在root用户下执行的
所以脚本中必须先切换到oracle中,脚本必须加入:
su - oracle -c 
备份到的目录,因为脚本已经做了切换,切换到了oracle,所以备份目录必须是oracle中的文件夹,而不是root创建的文件夹。


------------------------------------------以下来自百度文库lzj20206

很多时候我们都需要

Oracle

自动备份,

下面就为您详细介绍

Oracle

自动备份的

三种方法,供您参考,如果您对

Oracle

备份方面感兴趣的话,不妨一看。

 

Oracle

自动备份数据库不外乎以下三种方式

 

WINDOWS

下的任务计划

(At

命令

)  

UNIX

下的

Crontab  

第三方工具如

Viritas 

在以上三种方式中

Viritas

属于第三方工具,

很多人可能都没有接触,

主要说一

windows

的任务计划与

unix

cron 

1

、生成脚本文件,如

backup.rcv 

假定文件内容如下:

 

$

>

cat backup.rcv   

 

connect target sys/password rcvcat rman/rman@localname;   

 

run{   

 

allocate channel c1 type disk;   

 

allocate channel c2 type disk;   

 

allocate channel c3 type disk;   

 

backup fileaperset 3 format 

‘/u01/oradata/backup/arch%u_%s_%p’

    

 

archivelog all delete input;   

 

release channel c1;   

 

release channel c2;   

 

release channel c3;   

 

}   

 

2

生成执行文件在

windows

上生成

backup_archive.bat

内容包括

rman 

cmdfile 

backup.rcv 

unix

下生成

 backup_archive.sh

内容包括

oracle/ramn/rman 

cmdfile = backup.rcv 

3

、加入调度在

windows

中用任务计划向导即可,或使用

at

命令。在

unix

中,

在目标机器上编写一个文件,用以启动

Oracle

自动备份进程。假定文件名为

ORACLE

,文件将放在

/var/spool/cron/crontabs

目录下

  

$>cat oracle  

0 23 * * 0 backup_archive.sh  

#

表示星期天

23

点对数据库备份

  

0 12,18 * * * backup_archive.sh  

    #

表示每天

12

点,

18

点备份

  

Crontab

文件的每一行由六个域

(minutes,hours,day of month,month,day of 

week,command)

组成,域之间用空格或

Tab

分隔开来

 

 

oracle

备份命令使用实例

 

 

oracle

备份命令用于

oracle

备份及恢复,

下面就为您详细介绍如何使用

oracle

备份命令实现

oracle

备份的过程,

希望可以让您对

oracle

备份命令有更深的认

识。

 

导出

 EXP USER/PASSWORD@ODBC FILE=C

\***.DMP ROWS=N //

不保存数据;

  

导出

 EXP USER/PASSWORD@ODBC FILE=C

\***.DMP   //

保存数据;

  

导出

 EXP USER/PASSWORD@ODBC FILE=C

\***.DMP full=y //

全部导出;

 

导入

 imp user/password@odbc file=c:\***.dmp full=y ignore=y; 

Oracle

数据导入导出

imp/exp

就相当于

oracle

数据还原与备份。

exp

命令可以

把数据从远程数据库服务器导出

 

到本地的

dmp

文件,

imp

命令可以把

dmp

文件从本地导入到远处的数据库服务器

中。

 

利用这个功能可以构建

 

两个相同的数据库,一个用来测试,一个用来正式使用。

 

执行环境:可以在

SQLPLUS.EXE

或者

DOS

(命令行)中执行,

  

DOS

中可以执行时由于

 

oracle 8i 

 

安装目录

\ora81\BIN

被设置为全局路

径,

  

该目录下有

EXP.EXE

IMP.EXE

文件被用来执行导入导出。

  

oracle

java

编写,

SQLPLUS.EXE

EXP.EXE

IMP.EXE

这两个文件有可能是被

包装后的类文件。

  

SQLPLUS.EXE

调用

EXP.EXE

IMP.EXE

所包裹的类,完成导入导出功能。

 

下面介绍的是导入导出的实例。

  

数据导出:

  

将数据库

TEST

完全导出

,

用户名

system 

密码

manager 

导出到

D:\daochu.dmp

  

   exp system/manager@TEST file=d:\daochu.dmp full=y  

将数据库中

system

用户与

sys

用户的表导出

  

   exp system/manager@TEST file=d:\daochu.dmp owner=(system,sys)  

将数据库中的表

inner_notify

notify_staff_relat

导出

  

    exp aichannel/aichannel@TESTDB2 file= d:\data\newsmgnt.dmp tables= 

(inner_notify,notify_staff_relat) 

将数据库中的表

table1

中的字段

filed1

"00"

打头的数据导出

  

   exp system/manager@TEST file=d:\daochu.dmp tables=(table1) query=\" 

where filed1 like '00%'\" 

上面是常用的导出,对于压缩,既用

winzip

dmp

文件可以很好的压缩。

  

也可以在上面命令后面

 

加上

 compress=y 

来实现。

 

数据的导入

  

D:\daochu.dmp 

中的数据导入

 TEST

数据库中。

  

   imp system/manager@TEST file=d:\daochu.dmp  

   imp aichannel/aichannel@HUST full=y file=file= d:\data\newsmgnt.dmp 

ignore=y  

   

上面可能有点问题,因为有的表已经存在,然后它就报错,对该表就不进行

导入。

  

   

在后面加上

 ignore=y 

就可以了。

  

d:\daochu.dmp

中的表

table1 

导入

  

imp system/manager@TEST file=d:\daochu.dmp tables=(table1) 

基本上上面的导入导出够用了。不少情况要先是将表彻底删除,然后导入。

 

注意:

  

操作者要有足够的权限,权限不够它会提示。

  

数据库时可以连上的。可以用

tnsping TEST 

来获得数据库

TEST

能否连上。

 

 

 

 

因项目需要,要整出个每天自动备份

Oracle

数据库的脚本,在参考了网上的相

关资料,结合

Windows

自带的任务计划功能,基本能满足需求。相关代码如下:

 

[java]

 

view plaincopy

 

@echo

 off  

 

REM ###########################################################  

 

REM # Windows Server 

2003

Oracle

数据库自动备份批处理脚本

  

 

REM ###########################################################  

 

REM 

取当前系统时间

,

可能因操作系统不同而取值不一样

  

 

set CURDATE=%date:~

0

,

4

%%date:~

5

,

2

%%date:~

8

,

2

%  

 

set CURTIME=%time:~

0

,

2

%  

 

REM 

小时数如果小于

10

,则在前面补

0

  

 

if

 

"%CURTIME%"

==

" 0"

 set CURTIME=

00

  

 

if

 

"%CURTIME%"

==

" 1"

 set CURTIME=

01

  

 

if

 

"%CURTIME%"

==

" 2"

 set CURTIME=

02

  

 

if

 

"%CURTIME%"

==

" 3"

 set CURTIME=

03

  

 

if

 

"%CURTIME%"

==

" 4"

 set CURTIME=

04

  

 

if

 

"%CURTIME%"

==

" 5"

 set CURTIME=

05

  

 

if

 

"%CURTIME%"

==

" 6"

 set CURTIME=

06

  

 

if

 

"%CURTIME%"

==

" 7"

 set CURTIME=

07

  

 

if

 

"%CURTIME%"

==

" 8"

 set CURTIME=

08

  

 

if

 

"%CURTIME%"

==

" 9"

 set CURTIME=

09

  

 

set CURTIME=%CURTIME%%time:~

3

,

2

%%time:~

6

,

2

%  

 

REM 

设置所有者、用户名和密码

  

 

set OWNER=DBUSER  

 

set USER=DBUSER  

 

set PASSWORD=DBPWD  

 

REM 

创建备份用目录,目录结构为

backup/YYYYMMDD/  

 

if

 not exist 

"backup"

                     mkdir backup  

 

if

 not exist 

"backup/%CURDATE%/"

          mkdir backup/%CURDATE%/  

 

set CURDIR=backup/%CURDATE%  

 

set FILENAME=%CURDIR%/%OWNER%_%CURDATE%_%CURTIME%.DMP  

 

set EXPLOG=%CURDIR%/%OWNER%_%CURDATE%_%CURTIME%_log.log  

 

REM 

调用

ORACLE

exp

命令导出用户数据

  

 

exp %USER%/%PASSWORD%

@DBSample

 file=%FILENAME% log=%EXPLOG% owner=%OW

NER% grants=n  

 

exit   

 

其中,

%USER%/%PASSWORD%@DBSample

中的

DBSample

为连接数据库的实例名称;

grants=n

表示导出数据时不导出对表

/

视图

/

序列

/

角色的授权

 

然后再结合

Windows

自带的“任务计划”,

设置于每天夜里

1

点钟或其他时间自

动运行,便可达到每天自动备份指定数据库的目的了!

 

附相关代码知识点:

 

1

@echo 

off

DOS

在运行批处理时,会依次执行批处理中的每条命令,并且会

在显示器上显示,如果你不想让它们显示,可以加一个“echo off”。当然,

“echo 

off”也是命令,它本身也会显示,如果连这条也不显示,就在前面加个

“@”

 

2

、批处理获取当前日期时间:

%time:~0,2%

:“:”(冒号)和“~”波浪号必不

可少,“~”后的数字:为正数表示舍弃输出结果的前几位;直接跟负数表示取

到输出结果的后第几位;

“,”后的数字:

为正数表示取到输出结果的前第几位;

为负数表示舍弃输出结果的后几位。如想获取当前系统时间的

HHMMSS

格式,则

可以成

%time:~0,2%%time:~3,2%%time:~6,2% 

3

imp

exp

非交互式命令行方式使用方法:

exp 

用户名

/

密码

@

实例名

 file=

/

文件名

.dmp 

owner=

用户名

imp 

用户名

/

密码

@

实例名

 fromuser=

导出时用的

用户名

 touser=

用户名

 file=

路径

/

文件名

.dmp 

如果备份的文件太大,

可以使用

WinRAR

带命令行的格式调用

WinRAR

压缩备份的

文件,具体代码如下:

 

[c-sharp]

 

view plaincopy

 

CD %CURDATE%  

 


lxj201206的:

很多时候我们都需要

Oracle

自动备份,

下面就为您详细介绍

Oracle

自动备份的

三种方法,供您参考,如果您对

Oracle

备份方面感兴趣的话,不妨一看。

 

Oracle

自动备份数据库不外乎以下三种方式

 

WINDOWS

下的任务计划

(At

命令

)  

UNIX

下的

Crontab  

第三方工具如

Viritas 

在以上三种方式中

Viritas

属于第三方工具,

很多人可能都没有接触,

主要说一

windows

的任务计划与

unix

cron 

1

、生成脚本文件,如

backup.rcv 

假定文件内容如下:

 

$

>

cat backup.rcv   

 

connect target sys/password rcvcat rman/rman@localname;   

 

run{   

 

allocate channel c1 type disk;   

 

allocate channel c2 type disk;   

 

allocate channel c3 type disk;   

 

backup fileaperset 3 format 

‘/u01/oradata/backup/arch%u_%s_%p’

    

 

archivelog all delete input;   

 

release channel c1;   

 

release channel c2;   

 

release channel c3;   

 

}   

 

2

生成执行文件在

windows

上生成

backup_archive.bat

内容包括

rman 

cmdfile 

backup.rcv 

unix

下生成

 backup_archive.sh

内容包括

oracle/ramn/rman 

cmdfile = backup.rcv 

3

、加入调度在

windows

中用任务计划向导即可,或使用

at

命令。在

unix

中,

在目标机器上编写一个文件,用以启动

Oracle

自动备份进程。假定文件名为

ORACLE

,文件将放在

/var/spool/cron/crontabs

目录下

  

$>cat oracle  

0 23 * * 0 backup_archive.sh  

#

表示星期天

23

点对数据库备份

  

0 12,18 * * * backup_archive.sh  

    #

表示每天

12

点,

18

点备份

  

Crontab

文件的每一行由六个域

(minutes,hours,day of month,month,day of 

week,command)

组成,域之间用空格或

Tab

分隔开来

 

 

oracle

备份命令使用实例

 

 

oracle

备份命令用于

oracle

备份及恢复,

下面就为您详细介绍如何使用

oracle

备份命令实现

oracle

备份的过程,

希望可以让您对

oracle

备份命令有更深的认

识。

 

导出

 EXP USER/PASSWORD@ODBC FILE=C

\***.DMP ROWS=N //

不保存数据;

  

导出

 EXP USER/PASSWORD@ODBC FILE=C

\***.DMP   //

保存数据;

  

导出

 EXP USER/PASSWORD@ODBC FILE=C

\***.DMP full=y //

全部导出;

 

导入

 imp user/password@odbc file=c:\***.dmp full=y ignore=y; 

Oracle

数据导入导出

imp/exp

就相当于

oracle

数据还原与备份。

exp

命令可以

把数据从远程数据库服务器导出

 

到本地的

dmp

文件,

imp

命令可以把

dmp

文件从本地导入到远处的数据库服务器

中。

 

利用这个功能可以构建

 

两个相同的数据库,一个用来测试,一个用来正式使用。

 

执行环境:可以在

SQLPLUS.EXE

或者

DOS

(命令行)中执行,

  

DOS

中可以执行时由于

 

oracle 8i 

 

安装目录

\ora81\BIN

被设置为全局路

径,

  

该目录下有

EXP.EXE

IMP.EXE

文件被用来执行导入导出。

  

oracle

java

编写,

SQLPLUS.EXE

EXP.EXE

IMP.EXE

这两个文件有可能是被

包装后的类文件。

  

SQLPLUS.EXE

调用

EXP.EXE

IMP.EXE

所包裹的类,完成导入导出功能。

 

下面介绍的是导入导出的实例。

  

数据导出:

  

将数据库

TEST

完全导出

,

用户名

system 

密码

manager 

导出到

D:\daochu.dmp

  

   exp system/manager@TEST file=d:\daochu.dmp full=y  

将数据库中

system

用户与

sys

用户的表导出

  

   exp system/manager@TEST file=d:\daochu.dmp owner=(system,sys)  

将数据库中的表

inner_notify

notify_staff_relat

导出

  

    exp aichannel/aichannel@TESTDB2 file= d:\data\newsmgnt.dmp tables= 

(inner_notify,notify_staff_relat) 

将数据库中的表

table1

中的字段

filed1

"00"

打头的数据导出

  

   exp system/manager@TEST file=d:\daochu.dmp tables=(table1) query=\" 

where filed1 like '00%'\" 

上面是常用的导出,对于压缩,既用

winzip

dmp

文件可以很好的压缩。

  

也可以在上面命令后面

 

加上

 compress=y 

来实现。

 

数据的导入

  

D:\daochu.dmp 

中的数据导入

 TEST

数据库中。

  

   imp system/manager@TEST file=d:\daochu.dmp  

   imp aichannel/aichannel@HUST full=y file=file= d:\data\newsmgnt.dmp 

ignore=y  

   

上面可能有点问题,因为有的表已经存在,然后它就报错,对该表就不进行

导入。

  

   

在后面加上

 ignore=y 

就可以了。

  

d:\daochu.dmp

中的表

table1 

导入

  

imp system/manager@TEST file=d:\daochu.dmp tables=(table1) 

基本上上面的导入导出够用了。不少情况要先是将表彻底删除,然后导入。

 

注意:

  

操作者要有足够的权限,权限不够它会提示。

  

数据库时可以连上的。可以用

tnsping TEST 

来获得数据库

TEST

能否连上。

 

 

 

 

因项目需要,要整出个每天自动备份

Oracle

数据库的脚本,在参考了网上的相

关资料,结合

Windows

自带的任务计划功能,基本能满足需求。相关代码如下:

 

[java]

 

view plaincopy

 

@echo

 off  

 

REM ###########################################################  

 

REM # Windows Server 

2003

Oracle

数据库自动备份批处理脚本

  

 

REM ###########################################################  

 

REM 

取当前系统时间

,

可能因操作系统不同而取值不一样

  

 

set CURDATE=%date:~

0

,

4

%%date:~

5

,

2

%%date:~

8

,

2

%  

 

set CURTIME=%time:~

0

,

2

%  

 

REM 

小时数如果小于

10

,则在前面补

0

  

 

if

 

"%CURTIME%"

==

" 0"

 set CURTIME=

00

  

 

if

 

"%CURTIME%"

==

" 1"

 set CURTIME=

01

  

 

if

 

"%CURTIME%"

==

" 2"

 set CURTIME=

02

  

 

if

 

"%CURTIME%"

==

" 3"

 set CURTIME=

03

  

 

if

 

"%CURTIME%"

==

" 4"

 set CURTIME=

04

  

 

if

 

"%CURTIME%"

==

" 5"

 set CURTIME=

05

  

 

if

 

"%CURTIME%"

==

" 6"

 set CURTIME=

06

  

 

if

 

"%CURTIME%"

==

" 7"

 set CURTIME=

07

  

 

if

 

"%CURTIME%"

==

" 8"

 set CURTIME=

08

  

 

if

 

"%CURTIME%"

==

" 9"

 set CURTIME=

09

  

 

set CURTIME=%CURTIME%%time:~

3

,

2

%%time:~

6

,

2

%  

 

REM 

设置所有者、用户名和密码

  

 

set OWNER=DBUSER  

 

set USER=DBUSER  

 

set PASSWORD=DBPWD  

 

REM 

创建备份用目录,目录结构为

backup/YYYYMMDD/  

 

if

 not exist 

"backup"

                     mkdir backup  

 

if

 not exist 

"backup/%CURDATE%/"

          mkdir backup/%CURDATE%/  

 

set CURDIR=backup/%CURDATE%  

 

set FILENAME=%CURDIR%/%OWNER%_%CURDATE%_%CURTIME%.DMP  

 

set EXPLOG=%CURDIR%/%OWNER%_%CURDATE%_%CURTIME%_log.log  

 

REM 

调用

ORACLE

exp

命令导出用户数据

  

 

exp %USER%/%PASSWORD%

@DBSample

 file=%FILENAME% log=%EXPLOG% owner=%OW

NER% grants=n  

 

exit   

 

其中,

%USER%/%PASSWORD%@DBSample

中的

DBSample

为连接数据库的实例名称;

grants=n

表示导出数据时不导出对表

/

视图

/

序列

/

角色的授权

 

然后再结合

Windows

自带的“任务计划”,

设置于每天夜里

1

点钟或其他时间自

动运行,便可达到每天自动备份指定数据库的目的了!

 

附相关代码知识点:

 

1

@echo 

off

DOS

在运行批处理时,会依次执行批处理中的每条命令,并且会

在显示器上显示,如果你不想让它们显示,可以加一个“echo off”。当然,

“echo 

off”也是命令,它本身也会显示,如果连这条也不显示,就在前面加个

“@”

 

2

、批处理获取当前日期时间:

%time:~0,2%

:“:”(冒号)和“~”波浪号必不

可少,“~”后的数字:为正数表示舍弃输出结果的前几位;直接跟负数表示取

到输出结果的后第几位;

“,”后的数字:

为正数表示取到输出结果的前第几位;

为负数表示舍弃输出结果的后几位。如想获取当前系统时间的

HHMMSS

格式,则

可以成

%time:~0,2%%time:~3,2%%time:~6,2% 

3

imp

exp

非交互式命令行方式使用方法:

exp 

用户名

/

密码

@

实例名

 file=

/

文件名

.dmp 

owner=

用户名

imp 

用户名

/

密码

@

实例名

 fromuser=

导出时用的

用户名

 touser=

用户名

 file=

路径

/

文件名

.dmp 

如果备份的文件太大,

可以使用

WinRAR

带命令行的格式调用

WinRAR

压缩备份的

文件,具体代码如下:

 

[c-sharp]

 

view plaincopy

 

CD %CURDATE%  

 


http://wenku.baidu.com/link?url=O0LiSQNgXl_ugNz-5RAlaw-RB7nrdczPNBOP65l0pVlr6lFYnfCLfX6wcMKwc7UsBldpu6zWA2FqiuXMC4WLAAdNhAazpGsgjtdWyZgVNtq



很多时候我们都需要

Oracle

自动备份,

下面就为您详细介绍

Oracle

自动备份的

三种方法,供您参考,如果您对

Oracle

备份方面感兴趣的话,不妨一看。

 

Oracle

自动备份数据库不外乎以下三种方式

 

WINDOWS

下的任务计划

(At

命令

)  

UNIX

下的

Crontab  

第三方工具如

Viritas 

在以上三种方式中

Viritas

属于第三方工具,

很多人可能都没有接触,

主要说一

windows

的任务计划与

unix

cron 

1

、生成脚本文件,如

backup.rcv 

假定文件内容如下:

 

$

>

cat backup.rcv   

 

connect target sys/password rcvcat rman/rman@localname;   

 

run{   

 

allocate channel c1 type disk;   

 

allocate channel c2 type disk;   

 

allocate channel c3 type disk;   

 

backup fileaperset 3 format 

‘/u01/oradata/backup/arch%u_%s_%p’

    

 

archivelog all delete input;   

 

release channel c1;   

 

release channel c2;   

 

release channel c3;   

 

}   

 

2

生成执行文件在

windows

上生成

backup_archive.bat

内容包括

rman 

cmdfile 

backup.rcv 

unix

下生成

 backup_archive.sh

内容包括

oracle/ramn/rman 

cmdfile = backup.rcv 

3

、加入调度在

windows

中用任务计划向导即可,或使用

at

命令。在

unix

中,

在目标机器上编写一个文件,用以启动

Oracle

自动备份进程。假定文件名为

ORACLE

,文件将放在

/var/spool/cron/crontabs

目录下

  

$>cat oracle  

0 23 * * 0 backup_archive.sh  

#

表示星期天

23

点对数据库备份

  

0 12,18 * * * backup_archive.sh  

    #

表示每天

12

点,

18

点备份

  

Crontab

文件的每一行由六个域

(minutes,hours,day of month,month,day of 

week,command)

组成,域之间用空格或

Tab

分隔开来

 

 

oracle

备份命令使用实例

 

 

oracle

备份命令用于

oracle

备份及恢复,

下面就为您详细介绍如何使用

oracle

备份命令实现

oracle

备份的过程,

希望可以让您对

oracle

备份命令有更深的认

识。

 

导出

 EXP USER/PASSWORD@ODBC FILE=C

\***.DMP ROWS=N //

不保存数据;

  

导出

 EXP USER/PASSWORD@ODBC FILE=C

\***.DMP   //

保存数据;

  

导出

 EXP USER/PASSWORD@ODBC FILE=C

\***.DMP full=y //

全部导出;

 

导入

 imp user/password@odbc file=c:\***.dmp full=y ignore=y; 

Oracle

数据导入导出

imp/exp

就相当于

oracle

数据还原与备份。

exp

命令可以

把数据从远程数据库服务器导出

 

到本地的

dmp

文件,

imp

命令可以把

dmp

文件从本地导入到远处的数据库服务器

中。

 

利用这个功能可以构建

 

两个相同的数据库,一个用来测试,一个用来正式使用。

 

执行环境:可以在

SQLPLUS.EXE

或者

DOS

(命令行)中执行,

  

DOS

中可以执行时由于

 

oracle 8i 

 

安装目录

\ora81\BIN

被设置为全局路

径,

  

该目录下有

EXP.EXE

IMP.EXE

文件被用来执行导入导出。

  

oracle

java

编写,

SQLPLUS.EXE

EXP.EXE

IMP.EXE

这两个文件有可能是被

包装后的类文件。

  

SQLPLUS.EXE

调用

EXP.EXE

IMP.EXE

所包裹的类,完成导入导出功能。

 

下面介绍的是导入导出的实例。

  

数据导出:

  

将数据库

TEST

完全导出

,

用户名

system 

密码

manager 

导出到

D:\daochu.dmp

  

   exp system/manager@TEST file=d:\daochu.dmp full=y  

将数据库中

system

用户与

sys

用户的表导出

  

   exp system/manager@TEST file=d:\daochu.dmp owner=(system,sys)  

将数据库中的表

inner_notify

notify_staff_relat

导出

  

    exp aichannel/aichannel@TESTDB2 file= d:\data\newsmgnt.dmp tables= 

(inner_notify,notify_staff_relat) 

将数据库中的表

table1

中的字段

filed1

"00"

打头的数据导出

  

   exp system/manager@TEST file=d:\daochu.dmp tables=(table1) query=\" 

where filed1 like '00%'\" 

上面是常用的导出,对于压缩,既用

winzip

dmp

文件可以很好的压缩。

  

也可以在上面命令后面

 

加上

 compress=y 

来实现。

 

数据的导入

  

D:\daochu.dmp 

中的数据导入

 TEST

数据库中。

  

   imp system/manager@TEST file=d:\daochu.dmp  

   imp aichannel/aichannel@HUST full=y file=file= d:\data\newsmgnt.dmp 

ignore=y  

   

上面可能有点问题,因为有的表已经存在,然后它就报错,对该表就不进行

导入。

  

   

在后面加上

 ignore=y 

就可以了。

  

d:\daochu.dmp

中的表

table1 

导入

  

imp system/manager@TEST file=d:\daochu.dmp tables=(table1) 

基本上上面的导入导出够用了。不少情况要先是将表彻底删除,然后导入。

 

注意:

  

操作者要有足够的权限,权限不够它会提示。

  

数据库时可以连上的。可以用

tnsping TEST 

来获得数据库

TEST

能否连上。

 

 

 

 

因项目需要,要整出个每天自动备份

Oracle

数据库的脚本,在参考了网上的相

关资料,结合

Windows

自带的任务计划功能,基本能满足需求。相关代码如下:

 

[java]

 

view plaincopy

 

@echo

 off  

 

REM ###########################################################  

 

REM # Windows Server 

2003

Oracle

数据库自动备份批处理脚本

  

 

REM ###########################################################  

 

REM 

取当前系统时间

,

可能因操作系统不同而取值不一样

  

 

set CURDATE=%date:~

0

,

4

%%date:~

5

,

2

%%date:~

8

,

2

%  

 

set CURTIME=%time:~

0

,

2

%  

 

REM 

小时数如果小于

10

,则在前面补

0

  

 

if

 

"%CURTIME%"

==

" 0"

 set CURTIME=

00

  

 

if

 

"%CURTIME%"

==

" 1"

 set CURTIME=

01

  

 

if

 

"%CURTIME%"

==

" 2"

 set CURTIME=

02

  

 

if

 

"%CURTIME%"

==

" 3"

 set CURTIME=

03

  

 

if

 

"%CURTIME%"

==

" 4"

 set CURTIME=

04

  

 

if

 

"%CURTIME%"

==

" 5"

 set CURTIME=

05

  

 

if

 

"%CURTIME%"

==

" 6"

 set CURTIME=

06

  

 

if

 

"%CURTIME%"

==

" 7"

 set CURTIME=

07

  

 

if

 

"%CURTIME%"

==

" 8"

 set CURTIME=

08

  

 

if

 

"%CURTIME%"

==

" 9"

 set CURTIME=

09

  

 

set CURTIME=%CURTIME%%time:~

3

,

2

%%time:~

6

,

2

%  

 

REM 

设置所有者、用户名和密码

  

 

set OWNER=DBUSER  

 

set USER=DBUSER  

 

set PASSWORD=DBPWD  

 

REM 

创建备份用目录,目录结构为

backup/YYYYMMDD/  

 

if

 not exist 

"backup"

                     mkdir backup  

 

if

 not exist 

"backup/%CURDATE%/"

          mkdir backup/%CURDATE%/  

 

set CURDIR=backup/%CURDATE%  

 

set FILENAME=%CURDIR%/%OWNER%_%CURDATE%_%CURTIME%.DMP  

 

set EXPLOG=%CURDIR%/%OWNER%_%CURDATE%_%CURTIME%_log.log  

 

REM 

调用

ORACLE

exp

命令导出用户数据

  

 

exp %USER%/%PASSWORD%

@DBSample

 file=%FILENAME% log=%EXPLOG% owner=%OW

NER% grants=n  

 

exit   

 

其中,

%USER%/%PASSWORD%@DBSample

中的

DBSample

为连接数据库的实例名称;

grants=n

表示导出数据时不导出对表

/

视图

/

序列

/

角色的授权

 

然后再结合

Windows

自带的“任务计划”,

设置于每天夜里

1

点钟或其他时间自

动运行,便可达到每天自动备份指定数据库的目的了!

 

附相关代码知识点:

 

1

@echo 

off

DOS

在运行批处理时,会依次执行批处理中的每条命令,并且会

在显示器上显示,如果你不想让它们显示,可以加一个“echo off”。当然,

“echo 

off”也是命令,它本身也会显示,如果连这条也不显示,就在前面加个

“@”

 

2

、批处理获取当前日期时间:

%time:~0,2%

:“:”(冒号)和“~”波浪号必不

可少,“~”后的数字:为正数表示舍弃输出结果的前几位;直接跟负数表示取

到输出结果的后第几位;

“,”后的数字:

为正数表示取到输出结果的前第几位;

为负数表示舍弃输出结果的后几位。如想获取当前系统时间的

HHMMSS

格式,则

可以成

%time:~0,2%%time:~3,2%%time:~6,2% 

3

imp

exp

非交互式命令行方式使用方法:

exp 

用户名

/

密码

@

实例名

 file=

/

文件名

.dmp 

owner=

用户名

imp 

用户名

/

密码

@

实例名

 fromuser=

导出时用的

用户名

 touser=

用户名

 file=

路径

/

文件名

.dmp 

如果备份的文件太大,

可以使用

WinRAR

带命令行的格式调用

WinRAR

压缩备份的

文件,具体代码如下:

 

[c-sharp]

 

view plaincopy

 

CD %CURDATE%  

 









很多时候我们都需要

Oracle

自动备份,

下面就为您详细介绍

Oracle

自动备份的

三种方法,供您参考,如果您对

Oracle

备份方面感兴趣的话,不妨一看。

 

Oracle

自动备份数据库不外乎以下三种方式

 

WINDOWS

下的任务计划

(At

命令

)  

UNIX

下的

Crontab  

第三方工具如

Viritas 

在以上三种方式中

Viritas

属于第三方工具,

很多人可能都没有接触,

主要说一

windows

的任务计划与

unix

cron 

1

、生成脚本文件,如

backup.rcv 

假定文件内容如下:

 

$

>

cat backup.rcv   

 

connect target sys/password rcvcat rman/rman@localname;   

 

run{   

 

allocate channel c1 type disk;   

 

allocate channel c2 type disk;   

 

allocate channel c3 type disk;   

 

backup fileaperset 3 format 

‘/u01/oradata/backup/arch%u_%s_%p’

    

 

archivelog all delete input;   

 

release channel c1;   

 

release channel c2;   

 

release channel c3;   

 

}   

 

2

生成执行文件在

windows

上生成

backup_archive.bat

内容包括

rman 

cmdfile 

backup.rcv 

unix

下生成

 backup_archive.sh

内容包括

oracle/ramn/rman 

cmdfile = backup.rcv 

3

、加入调度在

windows

中用任务计划向导即可,或使用

at

命令。在

unix

中,

在目标机器上编写一个文件,用以启动

Oracle

自动备份进程。假定文件名为

ORACLE

,文件将放在

/var/spool/cron/crontabs

目录下

  

$>cat oracle  

0 23 * * 0 backup_archive.sh  

#

表示星期天

23

点对数据库备份

  

0 12,18 * * * backup_archive.sh  

    #

表示每天

12

点,

18

点备份

  

Crontab

文件的每一行由六个域

(minutes,hours,day of month,month,day of 

week,command)

组成,域之间用空格或

Tab

分隔开来

 

 

oracle

备份命令使用实例

 

 

oracle

备份命令用于

oracle

备份及恢复,

下面就为您详细介绍如何使用

oracle

备份命令实现

oracle

备份的过程,

希望可以让您对

oracle

备份命令有更深的认

识。

 

导出

 EXP USER/PASSWORD@ODBC FILE=C

\***.DMP ROWS=N //

不保存数据;

  

导出

 EXP USER/PASSWORD@ODBC FILE=C

\***.DMP   //

保存数据;

  

导出

 EXP USER/PASSWORD@ODBC FILE=C

\***.DMP full=y //

全部导出;

 

导入

 imp user/password@odbc file=c:\***.dmp full=y ignore=y; 

Oracle

数据导入导出

imp/exp

就相当于

oracle

数据还原与备份。

exp

命令可以

把数据从远程数据库服务器导出

 

到本地的

dmp

文件,

imp

命令可以把

dmp

文件从本地导入到远处的数据库服务器

中。

 

利用这个功能可以构建

 

两个相同的数据库,一个用来测试,一个用来正式使用。

 

执行环境:可以在

SQLPLUS.EXE

或者

DOS

(命令行)中执行,

  

DOS

中可以执行时由于

 

oracle 8i 

 

安装目录

\ora81\BIN

被设置为全局路

径,

  

该目录下有

EXP.EXE

IMP.EXE

文件被用来执行导入导出。

  

oracle

java

编写,

SQLPLUS.EXE

EXP.EXE

IMP.EXE

这两个文件有可能是被

包装后的类文件。

  

SQLPLUS.EXE

调用

EXP.EXE

IMP.EXE

所包裹的类,完成导入导出功能。

 

下面介绍的是导入导出的实例。

  

数据导出:

  

将数据库

TEST

完全导出

,

用户名

system 

密码

manager 

导出到

D:\daochu.dmp

  

   exp system/manager@TEST file=d:\daochu.dmp full=y  

将数据库中

system

用户与

sys

用户的表导出

  

   exp system/manager@TEST file=d:\daochu.dmp owner=(system,sys)  

将数据库中的表

inner_notify

notify_staff_relat

导出

  

    exp aichannel/aichannel@TESTDB2 file= d:\data\newsmgnt.dmp tables= 

(inner_notify,notify_staff_relat) 

将数据库中的表

table1

中的字段

filed1

"00"

打头的数据导出

  

   exp system/manager@TEST file=d:\daochu.dmp tables=(table1) query=\" 

where filed1 like '00%'\" 

上面是常用的导出,对于压缩,既用

winzip

dmp

文件可以很好的压缩。

  

也可以在上面命令后面

 

加上

 compress=y 

来实现。

 

数据的导入

  

D:\daochu.dmp 

中的数据导入

 TEST

数据库中。

  

   imp system/manager@TEST file=d:\daochu.dmp  

   imp aichannel/aichannel@HUST full=y file=file= d:\data\newsmgnt.dmp 

ignore=y  

   

上面可能有点问题,因为有的表已经存在,然后它就报错,对该表就不进行

导入。

  

   

在后面加上

 ignore=y 

就可以了。

  

d:\daochu.dmp

中的表

table1 

导入

  

imp system/manager@TEST file=d:\daochu.dmp tables=(table1) 

基本上上面的导入导出够用了。不少情况要先是将表彻底删除,然后导入。

 

注意:

  

操作者要有足够的权限,权限不够它会提示。

  

数据库时可以连上的。可以用

tnsping TEST 

来获得数据库

TEST

能否连上。

 

 

 

 

因项目需要,要整出个每天自动备份

Oracle

数据库的脚本,在参考了网上的相

关资料,结合

Windows

自带的任务计划功能,基本能满足需求。相关代码如下:

 

[java]

 

view plaincopy

 

@echo

 off  

 

REM ###########################################################  

 

REM # Windows Server 

2003

Oracle

数据库自动备份批处理脚本

  

 

REM ###########################################################  

 

REM 

取当前系统时间

,

可能因操作系统不同而取值不一样

  

 

set CURDATE=%date:~

0

,

4

%%date:~

5

,

2

%%date:~

8

,

2

%  

 

set CURTIME=%time:~

0

,

2

%  

 

REM 

小时数如果小于

10

,则在前面补

0

  

 

if

 

"%CURTIME%"

==

" 0"

 set CURTIME=

00

  

 

if

 

"%CURTIME%"

==

" 1"

 set CURTIME=

01

  

 

if

 

"%CURTIME%"

==

" 2"

 set CURTIME=

02

  

 

if

 

"%CURTIME%"

==

" 3"

 set CURTIME=

03

  

 

if

 

"%CURTIME%"

==

" 4"

 set CURTIME=

04

  

 

if

 

"%CURTIME%"

==

" 5"

 set CURTIME=

05

  

 

if

 

"%CURTIME%"

==

" 6"

 set CURTIME=

06

  

 

if

 

"%CURTIME%"

==

" 7"

 set CURTIME=

07

  

 

if

 

"%CURTIME%"

==

" 8"

 set CURTIME=

08

  

 

if

 

"%CURTIME%"

==

" 9"

 set CURTIME=

09

  

 

set CURTIME=%CURTIME%%time:~

3

,

2

%%time:~

6

,

2

%  

 

REM 

设置所有者、用户名和密码

  

 

set OWNER=DBUSER  

 

set USER=DBUSER  

 

set PASSWORD=DBPWD  

 

REM 

创建备份用目录,目录结构为

backup/YYYYMMDD/  

 

if

 not exist 

"backup"

                     mkdir backup  

 

if

 not exist 

"backup/%CURDATE%/"

          mkdir backup/%CURDATE%/  

 

set CURDIR=backup/%CURDATE%  

 

set FILENAME=%CURDIR%/%OWNER%_%CURDATE%_%CURTIME%.DMP  

 

set EXPLOG=%CURDIR%/%OWNER%_%CURDATE%_%CURTIME%_log.log  

 

REM 

调用

ORACLE

exp

命令导出用户数据

  

 

exp %USER%/%PASSWORD%

@DBSample

 file=%FILENAME% log=%EXPLOG% owner=%OW

NER% grants=n  

 

exit   

 

其中,

%USER%/%PASSWORD%@DBSample

中的

DBSample

为连接数据库的实例名称;

grants=n

表示导出数据时不导出对表

/

视图

/

序列

/

角色的授权

 

然后再结合

Windows

自带的“任务计划”,

设置于每天夜里

1

点钟或其他时间自

动运行,便可达到每天自动备份指定数据库的目的了!

 

附相关代码知识点:

 

1

@echo 

off

DOS

在运行批处理时,会依次执行批处理中的每条命令,并且会

在显示器上显示,如果你不想让它们显示,可以加一个“echo off”。当然,

“echo 

off”也是命令,它本身也会显示,如果连这条也不显示,就在前面加个

“@”

 

2

、批处理获取当前日期时间:

%time:~0,2%

:“:”(冒号)和“~”波浪号必不

可少,“~”后的数字:为正数表示舍弃输出结果的前几位;直接跟负数表示取

到输出结果的后第几位;

“,”后的数字:

为正数表示取到输出结果的前第几位;

为负数表示舍弃输出结果的后几位。如想获取当前系统时间的

HHMMSS

格式,则

可以成

%time:~0,2%%time:~3,2%%time:~6,2% 

3

imp

exp

非交互式命令行方式使用方法:

exp 

用户名

/

密码

@

实例名

 file=

/

文件名

.dmp 

owner=

用户名

imp 

用户名

/

密码

@

实例名

 fromuser=

导出时用的

用户名

 touser=

用户名

 file=

路径

/

文件名

.dmp 

如果备份的文件太大,

可以使用

WinRAR

带命令行的格式调用

WinRAR

压缩备份的

文件,具体代码如下:

 

[c-sharp]

 

view plaincopy

 

CD %CURDATE%  

 

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值