• linux下进行Oracle自动备份


    自动备份数据库到Windows

    本例中IP地址如下

    应用服务器:192.168.7.246(Windows Server 2012)

    数据库服务器:192.168.7.243(Centos7)

    一、expdp导出

    1、Centos7挂载Windows目录

    (1)system用户登录plsql

    create directory backdir as '/home/backup';

    --修改目录 create or replace directory backdir as '/home/backup/';

    --删除目录 drop directory backdir;

     

    (2)查看管理员目录,检查是否存在

    select * from dba_directories;

    (3)用管理员给导出用户赋予在该目录的操作权限(以sourcedata为例)

    grant read,write on directory backdir to sourcedata;

     

    (4)应用服务器上建立备份目录

     

     

    (5)共享此目录

     

     

     

    (6)root用户登录数据库服务器创建备份目录

    # mkdir /home/backup

     

     

    (7)数据库服务器挂载应用服务器备份目录

    查看oracle的uid和gid

    # id oracle

     

     

    挂载目录

    # mount -t cifs -o username=administrator,password=tP123456@,uid=1001,gid=1002 //192.168.7.246/backup  /home/backup

     

     

    (8)查询是否挂载成功

     

     

    (9)设置开机自动挂载

    # vim /etc/fatab

    加入以下内容:

    //192.168.7.246/backup  /home/backup cifs username=administrator,password=tP123456@,uid=1001,gid=1002 0 0

     

    (10)查询目录所属用户(此时backup的用户会由root变为oracle)

     

     

    (11)测试数据泵方式备份是否成功

    expdp sourcedata/passwd111@192.168.7.243/orcl directory=backdir dumpfile=test.dmp logfile=test.log tables=sourcedata.clinic_visit

     

     

     

    2、编写自动备份脚本

    方式一、Centos7执行脚本

    (1)编写oracle_bak.sh脚本

    # vim /home/backup/oracle_bak.sh

    内容如下:

    #!/bin/sh

    export PATH

    export ORACLE_SID=orcl

    export ORACLE_HOME=/home/oracle/app/oracle/product/11.2.0/dbhome_1/

    export PATH=$ORACLE_HOME/bin:$PATH

    export LANG=C

    export NLS_LANG=AMERICAN_AMERICA.ZHS16GBK

    date_now=$(date +%Y%m%d) #获取当前时间

    days=7 #设置删除7天前备份文件

    bak_dir=/home/backup #备份实际存放路径,backdir 为directory中定义路径

    dmpname=tp_data

    schname=sourcedata #备份的用户,英文逗号分隔

    expdp system/orcl@192.168.7.243/orcl directory=backdir schemas=$schname dumpfile=$dmpname_$date_now.dmp logfile=$dmpname_$date_now.log compression=all #执行备份指定数据库

    find $bak_dir -type f -name "*.dmp" -mtime +$days -exec rm -rf {} \;

    find $bak_dir -type f -name "*.log" -mtime +$days -exec rm -rf {} \;

     

    (2)授权

    # chmod +x /home/backup/oracle_bak.sh

     

     

    (3)利用crontab定时执行任务

    crontab -e,进入定时任务编辑界面

    0 22 * * *  /home/backup/oracle_bak.sh  #每天晚上10点执行

    0 22 * * 6  /home/backup/oracle_bak.sh  #每周六晚上10点执行

     

     

    查看crontab:crontab -l

    编辑crontab:crontab -e

    删除crontab:crontab -r

    启动:systemctl start crond.service

    停止:systemctl stop crond.service

    重启:systemctl restart crond.service

     

    (4)把crontab设置成开机自启

    # vim /etc/rc.d/rc.local

    加入以下内容:

    systemctl start crond.service

     

    (5)注意事项

    数据同时备份在windows和centos上,要注意两个服务器上备份空间大小,避免空间过小备份失败。

     

    方式二、Windows执行脚本

    (1)编写oracle_bak.bat脚本

    内容如下:

    @echo off

    ::设置变量

    ::获取日期

    set date_now=%date:~0,4%%date:~5,2%%date:~8,2%

    ::备份文件路径

    set bak_dir=D:\backup

    ::备份dmp文件名前缀

    set dmpname=tp_data_

    ::要备份的数据库ip

    set host=192.168.84.132

    ::要备份的数据库实例

    set dbname=orcl

    ::要备份的数据库登录名

    set user=system

    ::要备份的数据库登录密码

    set passwd=orcl

    ::备份用户

    set schname=sourcedata

    ::备份文件保存天数

    set days=7

    expdp %user%/%passwd%@%host%/%dbname% directory=backdir dumpfile=%bak_dir%\%dmpname%%date_now%.dmp logfile=%bak_dir%\%dmpname%%date_now%.log schemas=%schname% compression=all

    ::删除7天前的备份

    forfiles /p "%bak_dir%" /s /m *.log /d -%days% /c "cmd /c del @path"

    forfiles /p "%bak_dir%" /s /m *.dmp /d -%days% /c "cmd /c del @path"

    @echo on

    exit

     

    (2)将oracle_bak.bat添加到winodws计划任务

     

     

     

     

     

     

     

     

     

     

     

     

    二、impdp

    以还原sourcedata.clinic_visit为例

     

    impdp system/orcl@192.168.7.243/orcl directory=backdir dumpfile=test.dmp logfile=impdp_test.log tables=sourcedata.clinic_visit

     

    三、exp导出

    只需修改导出方式为exp,具体参考exp命令

     

    四、exp导出

    只需修改导入方式为imp,具体参考imp命令

     

  • 相关阅读:
    利用 runtime,解决多次点击相同 button,导致重复跳转的问题-b
    dbcp数据库连接池管理
    dbutil组件的常见用法
    事务的概念及常用方法
    jdbc链接基础
    MySQL数据约束和关联查询
    mysql基本操作语句
    jsp常用标签和标签库及javaBean规范
    EL表达式
    会话过程保存数据对象cookie和session
  • 原文地址:https://www.cnblogs.com/dysk001/p/15918338.html
Copyright © 2020-2023  润新知