`
zhzhiqun2005
  • 浏览: 227290 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

linux 下oracle 11G定时备份数据库

 
阅读更多
假设数据库的拥有者为oracle,数据库的用户为tpm
Oracle数据库的参数$ORACLE_HOME为/usr/oracle,$ORACLE_SID为oracle1,则实现步骤如下:

1、建立实现备份的shell
在/data/app/oracle/product/11.2.0/dbhome_1/中用vi命令建立文件orcl_tpm_backup.sh,其内容为:
#ORACLE_HOME=/usr/oracle;
#export ORACLE_HOME;
#ORACLE_SID=oracle1;
#export ORACLE_SID;

export NLS_LANG=AMERICAN_AMERICA.AL32UTF8
ORACLE_HOME=/data/app/oracle/product/11.2.0/dbhome_1;

D=tpm_$(date +%Y%m%d);
export D;
$ORACLE_HOME/bin/exp expdb/expdb file=$ORACLE_HOME/backup_tpm/${D}.dmp owner=tpm compress=n
buffer=65536 feedback=100000 log=$ORACLE_HOME/backup_tpm/tpm_exp.log;

注意先以sys的dba的权限登录数据库赋予expdb用户下面的权限
grant exp_full_database to expdb;
grant imp_full_database to expdb;

注意:这里D=$(date +%y%m%d); 是确保你每个备份文件以日期名字.例如:060814.dmp 060815.dmp
如果想每天把备份文件覆盖那么把 ${D}.dmp 这里用固定的名字例如: backup.dmp

使用chmod命令修改backup.sh的属性为可执行:
chmod +x backup.sh
到此,具有备份功能的可执行文件(shell)backup.sh已经建成。其执行结果是将scott所拥有的ORACLE对象备份到/usr/oracle中的backup.dmp中,读者可以直接运行它来看看效

果。值得注意的是,backup.sh中Oracle的两个环境参数一定要声明,否则系统会报错。下一步将开始建立oracle用户的Crontab文件。

2、查看Crontab的使用权限
使用超级用户(root)的身份登录,在/usr/var/adm/cron下通过vi命令查看cron.deny文件,如果数据库的拥有者oracle被列在里面,将其删除即可。

3、建立oracle的Crontab文件
用oracle用户登录,通过使用命令crontab –e oracle开始建立oracle用户的Crontab文件。其内容为:
00 23 * * 1-5 "/data/app/oracle/product/11.2.0/dbhome_1/backup.sh"

前面5个参数的意义:
0~59 表示分
1~23 表示小时
1~31 表示日
1~12 表示月份
0~6 表示星期(其中0表示星期日)

存盘退出后,你会发现在/var/spool/cron/crontabs中新增了一个名为oracle文件,其作用是在周一至周五每天的23:00运行

“/data/app/oracle/product/11.2.0/dbhome_1/backup.sh”。

到此大功告成,系统会将每次备份的信息通过mail的形式发送给oracle用户。
在进行以上操作时,建议将/var/spool/cron/crontabs中其他用户(尤其是root)的Crontab文件进行备份,以免误操作对系统产生影响。


4. 数据库用户的恢复
sqlplus /nolog
conn sys/system@orcl as sysdba;

drop user tpm cascade; 或者不删除用户都可以,也可以删除部分表,根据具体情况定,请注意当设置ignore=y时,如果表没有主键会导入重复数据
create user tpm identified by tpm default tablespace tpm;
grant connect, resource to tpm;

export NLS_LANG=AMERICAN_AMERICA.AL32UTF8

imp expdb/expdb fromuser=tpm touser=tpm file=$ORACLE_HOME/backup_tpm/tpm_20110927.dmp commit=y feedback=10000 buffer=10240000 ignore=y
log=$ORACLE_HOME/backup_tpm/tpm_imp.log;


另:
若直接备份到磁带设备,使用如下命令:
exp icdmain/icd owner=icdmain rows=y indexes=n compress=n buffer=65536 feedback=100000 volsize=0 file=/dev/rmt0 log=exp.log

若从磁带设备恢复,使用如下命令:
imp icdmain/icd fromuser=icdmain touser=icdmain rows=y indexes=n commit=y buffer=65536 feedback=100000 ignore=n volsize=0 file=/dev/rmt0 log=imp.log

恢复备份数据中的指定表:
若从本地文件恢复,使用如下命令:
imp icdmain/icd fromuser=icdmain touser=icdmain rows=y indexes=n commit=y buffer=65536 feedback=100000 ignore=n file=exp.dmp log=imp.log tables=t1,t2,t3;
若从磁带设备恢复,使用如下命令:
imp icdmain/icd fromuser=icdmain touser=icdmain rows=y indexes=n commit=y buffer=65536 feedback=100000 ignore=n volsize=0 file=/dev/rmt0 
log=imp.log tables=t1,t2,t3

参数说明:

ignore参数
       Oracle在恢复数据的过程中,当恢复某个表时,该表已经存在,就要根据ignore参数的设置来决定如何操作。
       若ignore=y,Oracle不执行CREATE TABLE语句,直接将数据插入到表中,如果插入的记录违背了约束条件,比如主键约束,则出错的记录不会插入,但合法的记录会添加到

表中。
      若ignore=n,Oracle不执行CREATE TABLE语句,同时也不会将数据插入到表中,而是忽略该表的错误,继续恢复下一个表。 -

indexes参数
       在恢复数据的过程中,若indexes=n,则表上的索引不会被恢复,但是主键对应的唯一索引将无条件恢复,这是为了保证数据的完整性。

字符集转换
       对于单字节字符集(例如US7ASCII),恢复时,数据库自动转换为该会话的字符集(NLS_LANG参数);
       对于多字节字符集(例如ZHS16CGB231280),恢复时,应尽量使字符集相同(避免转换),如果要转换,目标数据库的字符集应是输出数据库字符集的超集。

IMP 常见问题及解决方法:

数据库对象已经存在
      一般情况, 导入数据前应该彻底删除目标数据下的表, 序列, 函数/过程,触发器等;  数据库对象已经存在, 按缺省的imp参数, 则会导入失败如果用了参数ignore=y, 会把

exp文件内的数据内容导入如果表有唯一关键字的约束条件, 不合条件将不被导入如果表没有唯一关键字的约束条件, 将引起记录重复

数据库对象有主外键约束
      不符合主外键约束时, 数据会导入失败,
      解决办法:
         先导入主表, 再导入依存表
     disable目标导入对象的主外键约束, 导入数据后, 再enable它们

权限不够
       如果要把A用户的数据导入B用户下, A用户需要有imp_full_database权限

导入大表( 大于80M ) 时, 存储分配失败
      默认的EXP时, compress = Y, 也就是把所有的数据压缩在一个数据块上.
      导入时, 如果不存在连续一个大数据块, 则会导入失败. 导出80M以上的大表时, 记得compress= N, 则不会引起这种错误.

imp和exp使用的字符集不同
      如果字符集不同, 导入会失败, 可以改变unix环境变量或者NT注册表里NLS_LANG相关信息.  导入完成后再改回来.

imp和exp版本不能往上兼容
       可以从低版本导入高版本,但不能从高版本导入到低版本。
       如果遇到迁移因版本不同的问题,可以用低版本的export 导出,到导入到低版本。

解決EXP-00091的方法:
export NLS_LANG=AMERICAN_AMERICA.AL32UTF8
分享到:
评论

相关推荐

    linux下远程定时备份oracle数据库

    在Linux环境下,远程定时备份Oracle数据库是一项至关重要的任务,它能确保数据的安全性和业务的连续性。Oracle数据库作为企业级的数据库管理系统,其备份与恢复策略必须严谨且可靠。以下将详细阐述如何在没有安装...

    linux下oracle定时备份

    Oracle数据库的定时备份通常借助于Linux的cron服务来实现,这是一个强大的定时任务调度器。在Redhat Linux Enterprise 5中,Oracle 10g版本的数据库管理员可以通过配置crond服务和编写脚本来安排自动备份。 首先,...

    Linux下Oracle的数据定时自动备份

    Linux 下 Oracle 的数据定时自动备份 Linux 下 Oracle 的数据定时自动备份是系统管理员每天都在做着同一样的工作。为避免数据丢失,需要进行数据备份。本文将结合实践经验谈一谈 UNIX 环境下 Oracle 数据库的自动...

    linux下oracle数据库自动定时备份迁移

    Linux下Oracle数据库自动备份迁移 通过linux下Crontab实现定时任务,结合oracle自动备份脚本实现oracle数据库的备份操作,结合linux下Scp服务实现备份文件的异地存储,从而减少了人为备份的繁琐工作和服务器损坏造成...

    linux下为oracle做定时备份的操作

    ### Linux环境下Oracle数据库定时备份操作 #### 背景与目的 在企业级应用中,Oracle数据库作为核心数据存储系统,其数据的安全性和完整性至关重要。为了确保数据安全,定期进行数据库备份是必不可少的工作之一。在...

    linux下和win7下定时备份oracle数据库

    7. Windows下定期备份数据库:Windows环境下定时备份数据库的步骤与Linux类似,但需要编写的是批处理文件(.bat或.txt文件)。批处理文件中同样需要执行导出操作,通常是使用exp工具,并进行日志记录。在Windows下,...

    Centos7.6下设置Oracle定时自动备份和sudo设置.docx

    在编写完备份脚本文件后,我们需要设置定时,以便在每天晚上 23:20 自动备份数据库。我们可以使用 crontab 命令来设置定时任务。 ``` [root@centos7 dpump_dir]# crontab -e 20 23 * * * /db_backup/AutoBackup.sh `...

    oracle 10g在linux下定时备份手册

    Oracle 10g在Linux环境下进行定时备份是数据库管理中的重要任务,确保数据的安全性和可恢复性。以下是一份详细的Oracle 10g Linux定时备份手册: 1. **使用crontab设置定时任务** 在Linux系统中,我们通常使用`...

    利用Crontab实现对Oracle数据库的定时备份.rar

    本教程将详细阐述如何利用Crontab来实现Oracle数据库的定时备份。 首先,我们需要理解Oracle数据库的备份类型。Oracle支持多种备份方式,如物理备份(如使用RMAN工具)和逻辑备份(如导出/导入)。在本教程中,我们...

    Linux下备份oracle数据库到本地

    本文主要讨论如何在Linux系统下使用Oracle的exp工具来备份数据库到本地,并结合使用shell脚本和crontab实现自动化定时备份。 首先,我们需要创建一个shell脚本来执行Oracle的exp命令。创建一个新的shell文件,例如...

    Java代码备份(windows和Linux)服务器oracle数据库

    Oracle数据库作为全球广泛使用的数据库管理系统之一,其备份策略和实施方式也是IT管理员关注的重点。本篇文章将详细介绍如何通过Java编程语言在Windows和Linux操作系统上实现对Oracle数据库的备份。 首先,理解...

    oracle数据库定时备份脚本

    "Oracle数据库定时备份脚本" 提供了一种自动化的方法,使得数据库管理员无需手动执行每次备份,大大提高了工作效率并降低了人为错误的可能性。本文将深入探讨Oracle数据库定时备份的原理、方法以及如何使用脚本来...

    oracle数据库定时备份

    定时备份Oracle数据库的基本原理是利用Oracle的RMAN(恢复管理器)工具,配合操作系统级别的任务调度(例如Windows的任务计划程序或Linux的cron job)来实现。RMAN是Oracle提供的一个强大的备份和恢复工具,它可以...

    Oracle 11g 部署rman定时备份文档(windows+linux).docx

    通过以上步骤,你可以成功地在 Windows 和 Linux 环境中设置 RMAN 定时备份,确保 Oracle 11g 数据库的数据安全性。定期检查和调整备份策略以适应不断变化的业务需求至关重要。同时,对于生产环境,建议定期测试备份...

    Linux下Oracle设置定时任务备份数据库的教程

    本文将详细介绍如何设置Linux下的定时任务来自动备份Oracle数据库。首先,确保数据库字符集与Linux系统环境变量一致,这是防止备份过程中出现乱码的关键。 1. **确认字符集**: 在Oracle数据库中,可以通过SQL查询...

    Linux中Oracle数据库备份

    本文将详细介绍如何在不使用脚本的情况下,直接使用Linux命令行工具和Oracle数据库的SQL命令来完成Oracle数据库的备份与还原。 首先,让我们从数据库备份开始: 1. **创建备份目录**: 在Linux系统下,我们需要一...

    oracle定时备份详解

    Oracle数据库的定时备份是数据库管理中的重要环节,它确保了数据的安全性和可恢复性。本文将深入探讨Oracle数据库的定时备份策略,特别是冷备份的概念及其实施步骤。 首先,Oracle数据库的冷备份是在数据库关闭状态...

    Oracle数据库版本号修改以及定时备份工具.rar

    Oracle数据库是全球广泛...总之,Oracle数据库的版本号修改、DMP文件导入错误的解决以及数据库的定时备份都是日常运维中不可忽视的环节。正确理解和使用这些工具和方法,能够有效地提高数据库管理的效率和数据安全性。

    linux下定时备份ORALCE数据库

    总结来说,要在Linux下定时备份Oracle数据库,你需要: 1. 编写一个shell脚本,使用Oracle EXP工具进行数据库备份,并根据需要删除旧的备份文件。 2. 为Oracle用户授予对备份目录的权限。 3. 启动并配置crond服务,...

    linux下Oracle自动备份到远程

    本文将详细介绍如何在Linux环境下配置Oracle数据库的自动备份,并将备份文件传输至远程服务器的方法,旨在为读者提供一套完整的解决方案。 #### 技术栈与环境准备 - **操作系统**:Linux(如CentOS、Ubuntu等) - *...

Global site tag (gtag.js) - Google Analytics