windows下oracle数据库备份脚本

创建oraclebak.bat文件
编写脚本

@echo off
set curdate=%date:~0,4%%date:~5,2%%date:~8,2%
set backuppath=E:\BACKUP
md %backuppath%
exp 用户/密码@127.0.0.1/orcl file=%backuppath%\%curdate%.dmp owner(用户) log=%backuppath%\%curdate%.log
echo 删除过去30天的历史文件
forfiles /p "E:\BACKUP" /s /m *.dmp /d -30 /c "cmd /c del @file"
forfiles /p "E:\BACKUP" /s /m *.log /d -30 /c "cmd /c del @file"
exp是空表无法导出

查找当前用户所有空表,并构建命令语句,为了生成空表集合。

select table_name from user_tables where num_rows=0;
select 'alter table '||table_name||' allocate extent;' from user_tables where num_rows=0;

oracle常用备份还原命令

exp
1FULL,这个用于导出整个数据库,在ROWS=N一起使用时,可以导出整个数据库的结构。
例如:
exp sys file=./db_str.dmp log=./db_str.log full=y rows=n compress=y direct=y
2、BUFFER和FEEDBACK,在导出比较多的数据时,我会考虑设置这两个参数。例如:
exp new file=yw97_2003.dmp log=yw97_2003_3.log feedback=10000 buffer=100000000 
tables=WO4,OK_YT
3、FILL和LOG,这两个参数分别指定备份的DMP名称和LOG名称,包括文件名和目录,例子
见上面。
需要说明的是,EXP可以直接备份到磁带中,即使用FILE=/dev/rmt0(磁带设备名),但是一
般我们都不这么做,原因有二:一、这样做的速度会慢很多,二、现在一般都是使用磁带库
的,不建议直接对磁带进行操作。至于没有使用磁带库的朋友可以考虑和UNIX的TAR结合使
用。

如果你真想使用EXP直接到磁带,你可以参考Metalink文章“EXPORTING TO TAPE ON UNIX 
SYSTEMS”(文档号:30428.1),该文中有详细解释。

4、COMPRESS参数将在导出的同时合并碎块,尽量把数据压缩到initial的EXTENT里,默认
是N,一般建议使用。DIRECT参数将告诉EXP直接读取数据,而不像传统的EXP那样,使用
SELECT来读取表中的数据,这样就减少了SQL语句处理过程。一般也建议使用。不过有些情
况下DIRECT参数是无法使用的。

5、如何使用SYSDBA执行EXP/IMP?

这是一个很现实的问题,有时候我们需要使用SYSDBA来执行EXP/IMP,如进行传输表空间的
EXP/IMP,以及在9i下用SYS用户来执行EXP/IMP时,都需要使用SYSDBA才可。我们可以使
用下面方式连入EXP/IMP:

exp "'sys/sys as sysdba'" file=1.dmp tables=gototop.t rows=n

6、QUERY参数后面跟的是where条件,值得注意的是,整个where子句需要使用""括起来,
where子句的写法和SELECT中相同,如果是UNIX平台所有"和'都需要使用u26469屏蔽它们
的特殊含义:

exp gototop/gototop file=1.dmp log=1.log tables=cyx.t query="where c1=20 and 
c2=gototop"

如果是windows平台,则使用下面的格式:

exp c/c@ncn file=c.dmp log=c.log tables=t query="""where id=1 and name='gototop'

imp
1. 获取帮助
imp help=y
2. 导入一个完整数据库
imp system/manager file=bible_db log=dible_db full=y ignore=y
3. 导入一个或一组指定用户所属的全部表、索引和其他对象
imp system/manager file=seapark log=seapark fromuser=seapark
imp system/manager file=seapark log=seapark fromuser=(seapark,amy,amyc,harold)
4. 将一个用户所属的数据导入另一个用户
imp system/manager file=tank log=tank fromuser=seapark touser=seapark_copy
imp system/manager file=tank log=tank fromuser=(seapark,amy) touser=(seapark1, amy1)
5. 导入一个表
imp system/manager file=tank log=tank fromuser=seapark TABLES=(a,b)
6. 从多个文件导入
imp system/manager file=(paycheck_1,paycheck_2,paycheck_3,paycheck_4) log=paycheck,filesize=1G full=y
7 使用参数文件
imp system/manager parfile=bible_tables.par
bible_tables.par参数文件:
#Import the sample tables used for the Oracle8i Database Administrator's
#Bible.
fromuser=seapark touser=seapark_copy file=seapark log=seapark_import
Windows操作系统下的Oracle数据库备份脚本可以使用Oracle提供的工具或第三方工具来实现。 一种简单的备份方案是使用Oracle提供的RMAN(Recovery Manager)工具。RMAN是Oracle数据库备份和恢复的核心工具,可以通过命令行或脚本的方式进行操作。 以下是一个基本的Windows Oracle数据库备份脚本示例: @echo off set ORACLE_SID=数据库实例名 set ORACLE_HOME=Oracle安装目录 rman target sys/oracle@数据库服务名 catalog rman/rman@目录数据库实例名 <<EOF run { allocate channel t1_type1 device type disk format 'E:\backup\%d_DB_%U_%T.bak'; backup database plus archivelog formats 'E:\backup\%d_arch_%U_%T.bak'; delete noprompt obsolete; } EOF 上述脚本首先将ORACLE_SID和ORACLE_HOME设置为相应的实例名和Oracle安装目录。然后使用rman命令来连接到数据库并运行备份操作。 具体来说,这个脚本的作用是备份整个数据库和归档日志。allocate channel语句用于分配备份通道,每个通道对应一个备份设备(磁盘)。其中t1_type1是通道名称,disk表示备份设备类型,格式为'E:\backup\%d_DB_%U_%T.bak'表示备份文件的命名规则。 接下来的backup语句指定备份的内容,包括数据库和归档日志,并设置备份文件的格式。 最后,delete语句用于删除过期的备份文件,以释放存储空间。 以上只是一个简单的备份脚本示例,实际情况中可能需要根据实际需求进行更多的配置和修改。此外,还可以结合Windows的计划任务功能,定期执行备份脚本,以实现自动备份
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值