- 浏览: 221578 次
- 性别:
- 来自: 北京
文章分类
最新评论
-
helloyz8773:
您好,不知道您是否了解BIEE在IPHONE上的应用,他是否支 ...
oracle biee -
hbmy_1:
对,这些例子的文档哪里能找到呢
学习essbase总结 -
greathjt:
请问,您有例子文档吗?
学习essbase总结 -
corsair5iam:
很好,赞一个,如果能分享一下“inputclass”,“sug ...
jquery 输前显示 ajax 输入框提示 仿Google Suggest的例子 -
westlwt:
附件???
第三方支付接口,银行接口(附下载),third party bank interface
假设数据库的拥有者为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
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
发表评论
-
Oracle创建表空间、创建用户以及授权、查看权限
2014-12-23 13:48 6671. 创建临时表空间 CREATE TEMPORARY T ... -
Oracle创建表空间、创建用户以及授权、查看权限
2014-12-23 13:48 5111. 创建临时表空间 CREATE TEMPORARY T ... -
Oracle 创建只读用户权限
2014-11-26 18:15 963create user 你的用户名 identified by ... -
oracle 密码过期
2014-09-24 11:37 528使用sqlplus登陆oracle数据库时提示“ORA-280 ... -
Oracle 常用DBA SQL
2014-09-02 18:02 591Oracle查询表空间使用情况 --查询表空间使用情况 ... -
创建表空间和用户命令
2014-07-28 12:35 377--表空间 CREATE TABLESPACE bieew ... -
累计数据的SQL写法
2014-02-19 20:14 1150在常常会用到 ... -
按日期循环累计字段的更新存储过程
2014-02-13 10:30 567create or replace procedure upd ... -
oracle 正则表达式
2013-07-26 14:31 8001. 有哪些是目前质检体系发现不了的问题(发生过,只是 是没有 ... -
oracle em 出现问题
2013-07-26 09:28 7841) Set the environment varia ... -
oracle em启动出问题时解决办法(可能是办为密码过期原因导致)
2013-07-24 15:24 10581) Set the environment variabl ... -
oracle 正则表达式
2013-07-01 18:23 680select * from ( select t ... -
oracle 数据库优化
2013-04-16 18:07 627http://blog.csdn.net/tianlesoft ... -
Linux安装sqlplus及shell查询数据库
2013-04-16 10:20 6110下载rpm文件,安装orcacle ... -
oracle sqlplus
2013-04-15 15:59 976一、ORACLE的启动和关闭 1、在单机环境下要想启动或关闭O ... -
分区drop
2013-04-09 18:26 751alter table fact_bug_report_det ... -
ORACLE EXPDP命令使用详细
2013-04-09 18:13 872ORACLE EXPDP命令使用详细 相关参数以及导出示例: ... -
Oracle 数据库数据导出dump方式
2013-02-28 17:53 12765linux下 [root@infodb111 ~]# ... -
当前日期的周日日期如何取得
2013-02-28 10:45 808update DIM_TIME f set f.f ... -
linux Oracle 表空间满后如何解决
2013-02-23 13:34 855alter tablespace MAXTHONBI add ...
相关推荐
1.在没有安装oracle数据库的linux环境下,远程定时备份oracle数据库。 2.并且提供安装包,以及操做文档。
采用linux下的crond定时任务进行oracle的定时备份
Linux下Oracle数据库自动备份迁移 通过linux下Crontab实现定时任务,结合oracle自动备份脚本实现oracle数据库的备份操作,结合linux下Scp服务实现备份文件的异地存储,从而减少了人为备份的繁琐工作和服务器损坏造成...
Linux 下 Oracle 的数据定时自动备份 Linux 下 Oracle 的数据定时自动备份是系统管理员每天都在做着同一样的工作。为避免数据丢失,需要进行数据备份。本文将结合实践经验谈一谈 UNIX 环境下 Oracle 数据库的自动...
linux 环境 oracle 数据库定时备份
注明:此为网络资源,自己使用的是根据该文档结合实际情况,改变了存储路径。
主要介绍了Linux下Oracle设置定时任务备份数据库的方法,本文给大家介绍的非常详细,具有一定的参考借鉴价值,需要的朋友可以参考下
在编写完备份脚本文件后,我们需要设置定时,以便在每天晚上 23:20 自动备份数据库。我们可以使用 crontab 命令来设置定时任务。 ``` [root@centos7 dpump_dir]# crontab -e 20 23 * * * /db_backup/AutoBackup.sh `...
oracle10g在linux上的定时备份 通过建立备份脚本 定制计划任务 设置时间参数,实现定时备份oracle数据库
在linux系统中,实现定时备份ORACLE数据库,文档中有脚步
在linux平台下,实现定时自动备份并存入远程的备用数据库。 双机功能改日再传给大家了。密码为:iceboard
每天定时备份数据库需要用到Linux的定时任务,利用Linux的crondtab 命令。下面通过本文给大家带来了linux每天定时备份数据库并删除十天前数据详细步骤,感兴趣的朋友一起看看吧
UNIX(Linux) 上数据库oracle 的备份策略,使用rman恢复管理器进行增量备份,crontab添加任务计划。 把路径改一下,环境变量稍作修改就可应用到windows系统上。
主要介绍了Linux 自动备份oracle数据库详解方法的相关资料,数据库的备份的重要性,不言而喻,希望能帮到大家,需要的朋友可以参考下
对于生产环境,通常需要对数据库执行有定时备份操作,好方便数据库出现异常问题的数据恢复,提高数据库的安全性,这里提供linux服务器下详细操作脚本,供大家参阅
配置信息备份 数据库定时调用备份程序,备份当前配置信息,通过oracle定时任务,每间隔一 周备份一次,具体时间可设置,默认7天,保留最近5次备份。 2. 数据信息备份 在数据库服务器上提供了备份脚本,/home/oracle...
Windows/Linux 下为MySQL/Oracle数据库设置定时备份任务
Linux下Oracle备份脚本,可以定时执行数据备份,同时包含rman备份脚本,有兴趣的同学欢迎下载
RMAN备份技术解决方案 RMAN(Recovery Manager)是...RMAN 备份技术解决方案提供了一个完整的备份方案,涵盖了多种操作系统下的备份方法,能够保障数据安全,提高数据恢复速度,是 Oracle 数据库备份的首选解决方案。