利用Oracle自带的impdp和expdp进行简单备份

目前有个这样的需求,每天晚上23点将生产库的数据备份到备份机器上,第二天备份机器的数据库可以直接使用,数据是昨天生产库的数据。(生产数据目前不多,全部数据不超过3000w条)。

由于没有接触过高深的Oracle知识,只会简单的impdp和expdp这种自带的工具,所以打算用这种自带的命令加shell脚本进行完成。

现在假设生产库ip为192.168.1.20(简称20),备份库ip为192.168.1.140(简称140)

我的设想是这样的,20机器在晚上11点进行自动备份,然后想办法将备份文件拷贝到140机器,然后140机器进行导入操作。

实现过程:

1.在140上安装nfs文件系统,将指定目录共享到20上。

2.在20上添加备份脚本使用crontab按时执行expdp语句

#!/bin/sh

ORACLE_BASE=/oracle
export ORACLE_BASE
ORACLE_HOME=$ORACLE_BASE/product/
export ORACLE_HOME
ORACLE_SID=ORCL
export ORACLE_SID
export PATH=$PATH:$ORACLE_HOME/bin
export DATA_DIR=/oracle/admin/orcl/dpdump
export LOGS_DIR=/oracle/admin/orcl/dpdump
export BAKUPTIME=`date +%Y%m%d%H`
export NLS_LANG=american_america.AL32UTF8

echo "Starting bakup..."
echo "Bakup file path /oracle/admin/orcl/dpdump/HJXD_$BAKUPTIME.dmp"

expdp HJXD/hjxd directory=DATA_PUMP_DIR dumpfile=HJXD_$BAKUPTIME.dmp  schemas=HJXD

echo "Bakup completed."
echo "start delete 10 day before ."
find /oracle/admin/orcl/dpdump/ -mtime +30 -type f -name *.dmp[ab] -exec rm -f {} \;
echo "end delete 10 day before ."

3.在20上添加cron任务将备份的文件拷贝到nfs共享的目录

##!my bash

myfilepath=/oracle/admin/ORCL/dpdump/;
filename=HJXD_`date -d "1 day ago" +%Y%m%d`23.dmp;
cp /oracle/admin/orcl/dpdump/$filename $myfilepath

4.140上使用cron任务将拷贝过来的nfs共享目录下面的数据文件导入140的数据库

fullexp.log

PATH=$PATH:$HOME/bin
export PATH
ORACLE_BASE=/oracle
export ORACLE_BASE
ORACLE_HOME=$ORACLE_BASE/product/
export ORACLE_HOME
ORACLE_SID=ORCL
export ORACLE_SID
export PATH=$PATH:$ORACLE_HOME/bin

sqlplus sys/123456 as sysdba <<EOF
@/oracle/admin/ORCL/dpdump/impdp.sql;
EOF

export BAKUPTIME=`date -d "a day ago" +%Y%m%d23`;
chown oracle:oinstall /oracle/admin/ORCL/dpdump/HJXD_$BAKUPTIME.dmp;
echo "Starting impdp...";
echo "impdp file path /oracle/admin/ORCL/dpdump/HJXD_$BAKUPTIME.dmp";
impdp hjxdsas/123456 directory=DATA_PUMP_DIR dumpfile=HJXD_$BAKUPTIME.dmp logfile=fullexp.log remap_schema=HJXD:hjxdsas table_exists_action=replace

impdp.sql文件

drop user hjxdsas cascade;

create user hjxdsas identified by 123456
default tablespace hjxd
temporary tablespace temp;

grant dba, create any trigger, drop any table, SELECT ANY table, SELECT ANY sequence, create user to hjxdsas identified by 123456;
grant connect, resource to hjxdsas;
grant exp_full_database,imp_full_database to hjxdsas;

第4步最开始的时候设置了oracle环境变量,原因是文件拷贝过来是通过root用户拷贝的(nfs要求两边操作的用户有相同的uid,20,140机器的oracle用户uid不一定一致,root用户缺少一致);包括在使用oracle用户进行cron任务执行也会发生一些错误,所以直接将oracle环境变量也设置给root,这样直接使用root进行数据导入。

时间: 2024-11-10 10:39:26

利用Oracle自带的impdp和expdp进行简单备份的相关文章

Oracle DMP备份文件导入(impdp)导出(expdp)方法

一  impdp 导入 --删除用户若用户已经存在(可以使用Oracle自带的sqlplus进行连接) SQL> drop user USER_NAME cascade SQL> / SQL> drop tablespace USER_TABLESPACE including contents and datafiles SQL> / --创建表空间 下载SQL> CREATE TABLESPACE USER_TABLESPACE DATAFILE 'USER_tablesp

关于oracle数据库备份还原-impdp,expdp

初始化: -- 创建表空间 CREATE TABLESPACE 表空间名 DATAFILE '文件名.dat' SIZE 100M AUTOEXTEND ON NEXT 10M MAXSIZE UNLIMITED; -- 创建用户(oauser) --connect internal CREATE USER oauser IDENTIFIED BY oauser; ALTER USER oauser DEFAULT TABLESPACE tablespace_name; ALTER USER o

oracle数据库多实例实时同步(利用oracle管理平台实现)

环境: Windows 2008 服务器,Oracle 11g  r2 数据库 任务要求: 有三个数据库实例,一个实例供管理子系统使用,一个实例供利用子系统使用,还有一个实例专门做备份. 选择的技术: Oracle Stream Replication(流复制) 创建另外两个实例 源实例:orcl 目标1:target 目标2:target2 停止应用服务器,防止用户因为使用应用服务器而对数据库做出的改变. 并导出 orcl 实例中用户的数据,用 exp 命令 例如 exp nt_gxt/[em

介绍Oracle自带的一些ASM维护工具 (kfod/kfed/amdu)

1.前言 ASM(Automatic Storage Management)是Oracle主推的一种面向Oracle的存储解决方式,它是一个管理卷组或者文件系统的软件.眼下已经被RAC环境广泛使用,可是ASM因为其高度的封装性,使得我们非常难知道窥探其内部的原理.ASM假设一旦出现故障,通常都非常难处理. 即便在有非常完备的RMAN备份的情况下,恢复起来都可能须要非常长的时间. 简单的讲ASM是通过一个ASM实例来实现对磁盘的管理.这个和Oracle 实例非常类似. ASM实例也有SGA和后台进

利用jdk自带的运行监控工具JConsole观察分析Java程序的运行

利用jdk自带的运行监控工具JConsole观察分析Java程序的运行 原文链接 一.JConsole是什么 从Java 5开始 引入了 JConsole.JConsole 是一个内置 Java 性能分析器,可以从命令行或在 GUI shell 中运行.您可以轻松地使用 JConsole(或者,它更高端的 “近亲” VisualVM )来监控 Java 应用程序性能和跟踪 Java 中的代码. 二.如何启动JConsole 如果是从命令行启动,使 JDK 在 PATH 上,运行 jconsole

利用C#自带组件强壮程序日志

前言 在项目正式上线后,如果出现错误.异常.崩溃等情况, 我们往往第一想到的事就是查看日志. 所以日志对于一个系统的维护是非常重要的. 声明 本文中的示例代码旨在这个框架是怎么工作的,具体实现可以自由发挥. 贯穿所有的日志系统 日志系统,往往是贯穿一个程序的所有代码的; 试想一下,如果你的日志完全是由第三方组件提供的; 那么就意味着,你的所有项目都必须引用这个dll; 也许你会说自己可以2次封装,那么依然需要所有项目都引用你的这个封装后的log项目, 另一方面 一些log组件需要实例化后才可以使

Oracle自带的Universal Installer卸载存在问题

使用Oracle自带的Universal Installer卸载存在问题: 不干净,不完全,还有一些注册表残留,会影响到后来的安装. 所以,推荐使用手工卸载Oracle. 1.[win+R]->[services.msc],关闭oracle所有的服务. 使用OUI(Oracle Universal Installer)卸载Oracle软件. “开始”->“程序”->“Oracle-OraDb110g_home1|Oracle installation product|Universal

利用htmlunit登陆带验证码图片的网站

http://htsoft.org/html/y2011/822_using-htmlunit-landing-site-with-captcha-image.html 利用htmlunit登陆带验证码图片的网站 2011年09月15日 ⁄ 编程语言 ⁄ 共 1266字 ⁄ 字号 小 中 大 ⁄ 暂无评论 ⁄ 阅读 7,088 次 以百度统计为例,说明下如何用htmlunit登陆带验证码的网站 //baidu统计登陆代码 try { WebClient client = new WebClien

C# 利用VS自带的WSDL工具生成WebService服务类

C# 利用VS自带的WSDL工具生成WebService服务类 wsdl /language:c# /n:空间名 /out:D:/类名 webService接口地址