很多时候我们都需要
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
所包裹的类,完成导入导出功能。
下面介绍的是导入导出的实例。
数据导出:
1
将数据库
TEST
完全导出
,
用户名
system
密码
manager
导出到
D:\daochu.dmp
中
exp system/manager@TEST file=d:\daochu.dmp full=y
2
将数据库中
system
用户与
sys
用户的表导出
exp system/manager@TEST file=d:\daochu.dmp owner=(system,sys)
3
将数据库中的表
inner_notify
、
notify_staff_relat
导出
exp aichannel/aichannel@TESTDB2 file= d:\data\newsmgnt.dmp tables=
(inner_notify,notify_staff_relat)
4
将数据库中的表
table1
中的字段
filed1
以
"00"
打头的数据导出
exp system/manager@TEST file=d:\daochu.dmp tables=(table1) query=\"
where filed1 like '00%'\"
上面是常用的导出,对于压缩,既用
winzip
把
dmp
文件可以很好的压缩。
也可以在上面命令后面
加上
compress=y
来实现。
数据的导入
1
将
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
就可以了。
2
将
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
所包裹的类,完成导入导出功能。
下面介绍的是导入导出的实例。
数据导出:
1
将数据库
TEST
完全导出
,
用户名
system
密码
manager
导出到
D:\daochu.dmp
中
exp system/manager@TEST file=d:\daochu.dmp full=y
2
将数据库中
system
用户与
sys
用户的表导出
exp system/manager@TEST file=d:\daochu.dmp owner=(system,sys)
3
将数据库中的表
inner_notify
、
notify_staff_relat
导出
exp aichannel/aichannel@TESTDB2 file= d:\data\newsmgnt.dmp tables=
(inner_notify,notify_staff_relat)
4
将数据库中的表
table1
中的字段
filed1
以
"00"
打头的数据导出
exp system/manager@TEST file=d:\daochu.dmp tables=(table1) query=\"
where filed1 like '00%'\"
上面是常用的导出,对于压缩,既用
winzip
把
dmp
文件可以很好的压缩。
也可以在上面命令后面
加上
compress=y
来实现。
数据的导入
1
将
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
就可以了。
2
将
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
所包裹的类,完成导入导出功能。
下面介绍的是导入导出的实例。
数据导出:
1
将数据库
TEST
完全导出
,
用户名
system
密码
manager
导出到
D:\daochu.dmp
中
exp system/manager@TEST file=d:\daochu.dmp full=y
2
将数据库中
system
用户与
sys
用户的表导出
exp system/manager@TEST file=d:\daochu.dmp owner=(system,sys)
3
将数据库中的表
inner_notify
、
notify_staff_relat
导出
exp aichannel/aichannel@TESTDB2 file= d:\data\newsmgnt.dmp tables=
(inner_notify,notify_staff_relat)
4
将数据库中的表
table1
中的字段
filed1
以
"00"
打头的数据导出
exp system/manager@TEST file=d:\daochu.dmp tables=(table1) query=\"
where filed1 like '00%'\"
上面是常用的导出,对于压缩,既用
winzip
把
dmp
文件可以很好的压缩。
也可以在上面命令后面
加上
compress=y
来实现。
数据的导入
1
将
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
就可以了。
2
将
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
所包裹的类,完成导入导出功能。
下面介绍的是导入导出的实例。
数据导出:
1
将数据库
TEST
完全导出
,
用户名
system
密码
manager
导出到
D:\daochu.dmp
中
exp system/manager@TEST file=d:\daochu.dmp full=y
2
将数据库中
system
用户与
sys
用户的表导出
exp system/manager@TEST file=d:\daochu.dmp owner=(system,sys)
3
将数据库中的表
inner_notify
、
notify_staff_relat
导出
exp aichannel/aichannel@TESTDB2 file= d:\data\newsmgnt.dmp tables=
(inner_notify,notify_staff_relat)
4
将数据库中的表
table1
中的字段
filed1
以
"00"
打头的数据导出
exp system/manager@TEST file=d:\daochu.dmp tables=(table1) query=\"
where filed1 like '00%'\"
上面是常用的导出,对于压缩,既用
winzip
把
dmp
文件可以很好的压缩。
也可以在上面命令后面
加上
compress=y
来实现。
数据的导入
1
将
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
就可以了。
2
将
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%