重庆分公司,新征程启航
为企业提供网站建设、域名注册、服务器等服务
如果是sql server,定期备份可以利用sql server的management studio来做,比较方便。但要做oracle的定期备份,那就需要我们写导出命令,并设置linux的定时任务。
创新互联公司是一家集成都网站设计、网站制作、网站页面设计、网站优化SEO优化为一体的专业网络公司,已为成都等多地近百家企业提供网站建设服务。追求良好的浏览体验,以探求精品塑造与理念升华,设计最适合用户的网站页面。 合作只是第一步,服务才是根本,我们始终坚持讲诚信,负责任的原则,为您进行细心、贴心、认真的服务,与众多客户在蓬勃发展的市场环境中,互促共生。
首先创建一个数据库作为测试。
--创建数据表空间
create tablespace test_data
logging
datafile '/u01/app/oradata/test/TEST.dbf'
size 32m
autoextend on
next 32m maxsize 2048m
extent management local;
--创建用户并指定表空间
create user TEST identified by 123
default tablespace test_data
temporary tablespace temp;
--给用户授予权限
grant connect,resource to TEST;
用Test用户登录,创建一个表,并插入两条数据:
create table t1(
Id varchar(50) primary key,
title varchar(50)
);
insert into t1 values(sys_guid(),'t1');
insert into t1 values(sys_guid(),'t2');
commit;
先写一个导出的脚本文件:
export ORACLE_BASE=/u01/app
export ORACLE_HOME=/u01/app/oracle
export ORACLE_SID=TEST
export PATH=$ORACLE_HOME/bin:$PATH
d=$(date '+%Y%m%d')
exp TEST/123@TEST file=/home/oracle/backup/$d.dmp log=/home/oracle/backup/$d.log owner=TEST
zip -m /home/oracle/backup/$d.zip /home/oracle/backup/$d.dmp /home/oracle/backup/$d.log
前4句是设置环境变量,因为crontab定时调用时,不会使用oracle用户的环境变量,所以要先把它们导进来。第6行以当前日期作为导出的文件名,例如20120626.dmp和20120626.log。第7行把这两个文件打成一个zip包,并删掉这两个文件。
要用chmod命令把这个sh标记为可执行:
chmod +x backup.sh
用oracle用户,输入crontab -e命令,编辑oracle用户的任务计划:
[oracle@localhost backup]$ crontab -e
42 13 * * * /home/oracle/backup/backup.sh
这样就添加了一个计划,在每天的13点42分运行/home/oracle/backup/backup.sh。
另外,每天运行完之后,会收到mail通知,可以在mail里看出到底有没有正确运行。
oracle实现自动定时备份其实比较好的方法是:
oracle中的job
+
存储过程
job定时执行,而存储过程则完成增量备份!!
Oracle Database,又名Oracle RDBMS,或简称Oracle。是甲骨文公司的一款关系数据库管理系统。它是在数据库领域一直处于领先地位的产品。下面我为大家分享一下oracle数据库自动备份系统的 方法 ,有需要的可以参考一下!
oracle数据库自动备份系统
实现过程:
1. 建立文件 backup.bat (自定义文件名.bat)
@echo off
REM ###########################################################
REM # Windows Server 2003下Oracle数据库自动备份批处理脚本
REM ###########################################################
REM 取当前系统时间,可能因 操作系统 不同而取值不一样
set CURDATE=%date:~0,4%%date:~5,2%%date:~8,2%
set CURMON=%date:~0,4%%date:~5,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=orcl
set USER=bktcgl
set PASSWORD=bktcgl
REM 创建备份用目录,目录结构为oraclebak/YYYYMMDD/
if not exist "oraclebak" mkdir oraclebak
cd oraclebak
if not exist "%CURMON%" mkdir %CURMON%
set FILENAME=%CURMON%/%OWNER%_%CURDATE%_%CURTIME%.DMP
set EXPLOG=%CURMON%/%OWNER%_%CURDATE%_%CURTIME%_log.log
REM 调用ORACLE的exp命令导出用户数据
exp %USER%/%PASSWORD%@%OWNER% file=%FILENAME% log=%EXPLOG% owner=%USER% grants=n
exit
注:
1.bat文件可双击或直接在命令行执行,检查正确与否
2.检查时可注释掉exit
3.以上文件实现按月份创建文件夹,按时间生成备份文件
2.建立windows任务
步骤:
开始 - 所有程序 - 附件 - 系统工具 - 任务计划程序 - 操作 - 创建基本任务
- 任务名输入"oracle_backup"(自定义任务名),执行这个任务选择每天,下一步
- 起始时间下午12:00,起始日期2012-7-11,下一步 -(启动程序)下一步
-在 浏览 中查找刚刚写好的 backup.bat 文件 下一步 完成
注:
1.在任务计划栏目下新增一个名为"oracle_backup"的任务计划,表明已经配置完毕。
2.不同系统的任务计划略有不同,但基本换汤不换药,不做一一例举
问题:系统警告"已创建新任务,但可能不能运行,因为无法设置账户信息。指定的错误是:Ox80041315:任务计划程序服务没有运行"
原因:电脑的任务计划程序服务没有启动起来。
解决:开始 所有程序 管理工具 服务,找到"Task Scheduler"服务,发现启动类型为"已禁用",
右键单击更改为"自动",并把它启动起来,然后重新添加一次任务计划就可以了。
3.简单解释
1. bat:是dos下的批处理文件。批处理文件是无格式的文本文件,它包含一条或多条命令。在命令提示下键入批处理文件的名称,或者双击该批处理文件,系统就会调用 Cmd.exe按照该文件中各个命令出现的顺序来逐个运行它们。
2. Echo 命令:打开回显或关闭请求回显功能,或显示消息。
3. @ 命令:表示不显示@后面的命令
4. Rem 命令:注释命令
5. If命令:if表示将判断是否符合规定的条件,从而决定执行不同的命令。
6. exit :退出命令行
7. GRANTS: 是权限的意思,在你导出的目标数据库中可能会有一些表的如select 权限等赋给了别的用户。
【GRANTS=Y】导出的时候将这些权限导出,导入的时候将这些权限导入。
【GRANTS=N】权限不被导入。
在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如下截图中标红的相关的服务是否已经正常启动。
请点击输入图片描述
要断开数据库的所有连接,如果数据库中有正在连接客户端,备份的时候可能会出现异常,比如PLSQL的连接先退出一下。
请点击输入图片描述
在开始菜单中输入“cmd”命令后回车,打开dos命令窗口,如下截图1和2所示。
请点击输入图片描述
请点击输入图片描述
在cmd窗口中,输入以下命令:
exp 用户名/密码@SID file=d:\xx.dmp owner=用户名,按下回车键,界面如下截图所示。
请点击输入图片描述
导出的时间是根据数据库的大小决定的,如果数据库中表比较多,数据量比较大速度就会比较慢,请耐心等待。当数据完成导出之后,cmd窗口中会出现如下图所示的提示语,这就表示已经完成了数据库备份导出的动作。
请点击输入图片描述
这时候在计算机中找到第四步中设定的文件保存路径,如下截图,你会发现多了一个dmp的文件,这个文件就是我们需要的备份文件了。
请点击输入图片描述
可以在控制面板的管理工具中,找到任务计划程序,设置一个定时任务,每天执行一遍exp 用户名/密码@SID file=d:\xx.dmp owner=用户名这个命令,这样就能实现数据库数据的定时备份了。
请点击输入图片描述
请点击输入图片描述