oracle备份

一、备份

1、说明:

    oracle 12c导出dmp备份文件为完整备份,支持12c数据库导入,不支持12c以下版本导入。
    oracle 11g导出dmp文件,会出现空表无法导出,导出的dmp文件不完整。按下面解决方法可完整备份出dmp文件。

2、步骤:(cmd界面直接操作,需配置好Oracle环境变量)
Oracle导出dmp文件:
    导出操作见截图。

Oracle导入dmp文件
    imp username/password@Orcl file=d:\test.dmp full=y;
    如:C:\Users\Administrator>imp jgt/123@orcl file=d:\data.dmp full=y;


Oracle 11g不能导出空表解决:

使用ALLOCATE EXTENT,可以导出之前已经存在的空表。
   使用ALLOCATE EXTENT可以为数据库对象的每一张表分配Extent(注意针对每一张表,就是说一张表需要一条SQL代码)
批量输出上述生成的SQL语句并写入到一个.sql的脚本文件中。
如:
1. 创建执行脚本文件:我创建一个E:\sql_script.sql文件。内容如下:
   set heading off;
   set echo off;
   set feedback off;
   set termout on;
   spool E:\sql_allocate.sql;
   Select 'alter table '||table_name||' allocate extent;' from user_tables where num_rows=0 or num_rows is null;
   spool off;
   这个脚本的作用就是创建一个E:\sql_allocate.sql脚本文件,将Select 'alter table '||table_name||' allocate extent;' from user_tables where num_rows=0 or num_rows is null的执行结果(就是给每张表生成segment的SQL代码)批量输出,存储到一个E:\sql_allocate.sql的脚本文件中。
 
2. 执行E:\sql_script.sql文件来生成“分配表空间的SQL代码”的脚本文件sql_allocate.sql。
   命令如下:
   SQL>@ E:\sql_script.sql;  (也可写一个批处理文件,命令如下:sqlplus 用户名/密码@数据库 @E:\sql_script.sql)
   执行完毕后,得到E:\sql_allocate.sql脚本文件(里面是给所有空表分配segment的SQL代码)。
   打开该文件会看到,已经得到对所有空表分配空间的SQL语句。
 
3. 执行E:\sql_allocate.sql文件来对表分配空间。
   命令如下:SQL>@ E:\sql_allocate.sql
   执行完毕,表已更改。之前存在的空表已分配segment空间!

4. 此时执行exp命令,即可把包括空表在内的所有表,正常导出。

(注:http://blog.sina.com.cn/s/blog_5f0e9ca50101it7n.html)





二、oracle自动备份

 @echo off  
echo 正在备份数据库,请稍等...... 
exp c##sqtcw/"nc2015IT0318"@orcl file=e:/backup/oracle/nctcw%date:~0,4%%date:~5,2%%date:~8,2%.dmp  file=true 
echo 任务完成!

1.新建bat批处理文件,内容如上语法: exp 用户名/密码@实例 file="备份路径" file=true  文件名是格式为:***+日期
2.运用window自带的计划任务。新建规则,时间设置成每天一次。触发器 添加上面新建的bat文件







评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值