一、oracle数据备份:exp

关键字     说明(默认值)                  关键字      说明(默认值)

--------------------------------------------------------------------------------------

USERID    用户名/口令                        FULL             导出整个文件 (N

BUFFER   数据缓冲区大小                 OWNER         所有者用户名列表

FILE     输出文件(EXPDAT.DMP)         TABLES         表名列表

COMPRESS  导入到一个区(Y)      GRANTS        导出权限(Y) (Y)

INDEXES               导出索引(Y)      DIRECT          直接路径(N)

TRIGGERS        导出触发器(Y) (Y) LOG               屏幕输出的日志文件

ROWS                导出数据行(Y)   CONSTRAINTS  导出的约束条件(Y)

FEEDBACK   每x行显示进度(0)

TABLESPACES   要导出的表空间列表

1、一条命令执行exp

1.1 指定用户备份

备份命令:(在cmd下)(一定要指定用户)

exp pdmis/pdmis@orcl file=d:\pdmis_2018.dmp log=d:\pdmis_2018.log owner=pdmis rows=y indexes=n buffer=65536

owner=pdmis              导出用户

rows=y                    导出数据行

rows=n                只导出表结构

indexes=n               不导出索引

buffer=65536           exp数据行缓冲区大小>64000

1.2 全局数据库备份

备份命令:(在cmd下)(全局数据库)
exp pdmis/pdmis@orcl file=d:\pdmis_2018.dmp log=d:\pdmis_2018.log full=y

2、分步式执行exp

2.1 分步式指定用户备份

我们也可以分步式的进行备份

(建议在第一步,指定log文件存储路径,便于后面分析解决问题。)

1)exp bpmis/bpmis@bpmis log=d:\bpmis_20181211.log  回车

exp 用户名/密码@对应的实例(tns名) log=指定路径

2)输入数组提取缓冲区大小:4096 >65536                加大缓冲区提高备份速度回车

3)导出文件:EXPDAT.DMP > D:\orcl_backup\bpmis_20181211.dmp      回车

(指定备份文件的存储路径,新建orcl_backup文件夹。bpmis_20181211.dmp文件自动生成至orcl_backup路径下)

4)<1>E<完整的数据库>,<2>U<用户>或<3>T<表>:<2>U>     (选择用户) 回车

5)导出权限:默认yes                                 回车

6)导出表数据:默认yes                             回车

7)压缩区:默认yes                                    回车

8)已导出ZHS16GBK 字符集和AL16UTF16 NCHAR 字符集

即将导出指定的用户...
要导出的用户:<按 RETURN 退出>>bpmis (指定用户名)                         回车

9)要导出的用户:<按 RETURN 退出>>            (空)  直接回车

开始执行备份...

2.2 分步式全局数据库备份

分步式备份:(整个数据库)

exp bpmis/bpmis@bpmis log=d:\bpmis_20181211.log  回车   (等待导出log文件)

exp bpmis/bpmis@bpmis                             回车

输入数组提取缓冲区大小:4096 > 65536                   回车

导出文件:EXPDAT.DMP > D:\orcl_backup\bpmis_20181211.dmp         回车

<1>E<完整的数据库>,<2>U<用户>或<3>T<表>:<2>U>E(选择完整) 回车

导出权限:默认yes                                 回车

导出表数据:默认yes                               回车

压缩区:默认yes                                      回车

已导出ZHS16GBK 字符集和AL16UTF16 NCHAR 字符集

等待导出整个数据库

二、oracle 数据还原:imp

关键字     说明(默认值)                  关键字           说明(默认值)

--------------------------------------------------------------------------------------

USERID    用户名/口令                         FULL         导出整个文件 (N)

BUFFER          数据缓冲区大小           FROMUSER   所以者用户

FILE     输入文件(EXPDAT.DMP)         TOUSER         用户列表

GRANTS             导入权限(Y)         TABLES          表名列表

SHOW      只列出文件内容(N)          IGNORE       忽略创建错误(N)

COMMIT       提交数组插入(N)         LOG             屏幕输出的日志文件

ROWS              导出数据行(Y)       CONSTRAINTS       导入限制(Y)

INDEXES              导入索引(Y)       FEEDBACK     每x行显示进度(0)

INDEXFILE           将表/索引信息写入指定的文件

STATISTICS         始终导入预计算的统计信息

DATA_ONLY         仅导入数据 (N)

DESTROY            覆盖表空间数据文件 (N)

下列关键字仅用于可传输的表空间

TRANSPORT_TABLESPACE 导入可传输的表空间元数据 (N)

TABLESPACES 将要传输到数据库的表空间

DATAFILES 将要传输到数据库的数据文件

TTS_OWNERS 拥有可传输表空间集中数据的用户

1、一条命令执行imp

imp 用户名/密码@对应的实例(tns名)file=需还原的备份文件路径 log=指定路径

还原命令:(在cmd下)

1.1 备份导入指定用户

imp bpmis/bpmis@pdmis_test fromuser=bpmis touser=bpmis file=d:\oraclebf\yd2y\bpmis_20181207.dmp

log=d:\oraclebf\yd2y\bpmis.log rows=y indexes=n commit=y buffer=3072000 ignore=y

1.2 导入用户下指定表

imp pdmis/pdmis@pdmis_test fromuser=pdmis touser=pdmis commit=y buffer=3072000

file=d:\oraclebf\pdmis\pdmis_20181212\pdmis_20181212V3.DMP ignore=y

tables=(a,b)

参数说明:

rows=y                            导入数据行

fromuser=bpmis     备份数据-源用户

touser=bpmis      导入数据-目标用户

indexes=n                       不导出索引

commit=y                (表示每个数据缓冲满了之后提交一次,而不是导完一张表提交一次,减少对系统回滚段等资源的消耗)

buffer=3072000      imp数据行缓冲区大小>3072000

commit=y+增大buffer空间 (可以加快imp速度)

ignore=y                (如果没有的表,创建并倒入数据,如果已经有的表,忽略创建的表,但不忽略倒入表数据。)

tables=(a,b)          导入用户下a表数据和b表数据。

2、分步式执行imp

2.1 分步式指定用户还原-不仅仅导入数据

分布式还原数据库:(不仅仅导入数据)

(建议在第一步指定log文件存储路径,便于后面分析解决问题。)

1)imp bpmis/bpmis@pdmis_test log=d:\oraclebf\yd2y\bpmis.log     回车

imp 用户名/密码@对应的实例(tns名) log=指定路径

2)仅导入数据:默认NO 回车

3) 导入文件:EXPDAT.DMP> d:\oraclebf\yd2y\bpmis_20181207.dmp  回车

(指定导入的备份文件的存储路径)

4)输入插入缓冲区大小(最小为8192)30720> 3072000                    回车

5)经由常规路径由 EXPORT:V11.02.00创建的导出文件

已经完成 ZHS16GBK 字符集和 AL16UTF16 NCHAR 字符集中的导入
只列出导入文件的内容:默认no 回车

6)由于对象已存在,忽略创建错误;默认no 回车

(本例是第一次还原此用户下的数据库,所以默认no。
如果之前用户下已经还原了表结构或还原过早期版本,需要报错此处要选择YES   回车)

7)导入权限:默认yes                                    回车

8)用户名:bpmis (输入目标用户)              回车

9)输入表(T)或分区(T:P)名称。空列表表示用户的所以表

输入表(T)或分区(T:P)的名称或。如果完成:                           回车

开始执行备份恢复工作。。。

2.2 分步式指定用户还原-仅导入数据

分布式还原:(仅导入数据)

使用环境是,在执行sql脚本将表结构、表视图等架构提前还原至数据库的情况下!!!

我们可以通过以下步骤,仅仅导入数据即可。(这样操作,避免还原数据库后,表丢失的情况,和空表不能导出,还原的情况。)

imp bpmis/bpmis@pdmis_test log=d:\oraclebf\yd2y\bpmis.log                                     回车

仅导入数据:默认NO>YES        (此处一定选yes,因为结构我们提前已经导入了)      回车
导入文件:EXPDAT.DMP> d:\oraclebf\yd2y\bpmis_20181207.dmp                             回车
输入插入缓冲区大小(最小为8192)30720> 3072000                                                      回车
经由常规路径由 EXPORT:V11.02.00创建的导出文件
已经完成 ZHS16GBK 字符集和 AL16UTF16 NCHAR 字符集中的导入
只列出导入文件的内容:默认no                               回车

由于对象已存在,忽略创建错误:no                             回车
(在仅导入数据模式下,只能选择no,不能选择ignore=y) 
导入权限:默认yes                                              回车
导入表数据:默认yes                                            回车
导入整个导出文件:默认no                                     回车
用户名:bpmis(输入目标用户)                               回车
输入表(T)或分区(T:P)名称。空列表表示用户的所以表
输入表(T)或分区(T:P)的名称或。如果完成:             回车

等待导入即可。

三、使用心得

1、imp命令还原数据库表、视图丢失

有表丢失,表空间丢失的情况出现。这个本人尝试过许多方式,都不能根本性的解决出现的问题。

遇到以上问题,我们可以尝试以下方法还原。

1)首先我们需要用一款navicat数据库管理工具去oracle数据服务器端将空表、表结构等做一个备份。

2)用exp命令进行服务器目标用户下的数据库备份,将dmp文件带回。

3)然后在目标还原的服务器端新建表空间、临时表空间、用户、授予用户的特权,并指定表空间给新建用户。

4)进入navicat premium 12,连接-oracle-新建连接-测试连接-确定。连接建立后会出现在左侧列表--右键打开找到对应用户pdmis--右键运行SQL文件--找到提前存储文件路径--执行恢复,建议执行2遍。(将在第一步中备份的sql文件《空表、表结构等》恢复至相应的数据库用户下)

5)再将备份好的dmp文件,通过以下imp指令进行数据还原(ignore=y)

imp bpmis/bpmis@pdmis_test fromuser=bpmis touser=bpmis file=d:\oraclebf\yd2y\bpmis_20181207.dmp

log=d:\oraclebf\yd2y\bpmis.log rows=y commit=y buffer=3072000 ignore=y

rows=y           导入数据行

fromuser=bpmis   备份数据-源用户

touser=bpmis     导入数据-目标用户

commit=y         commit=y (表示每个数据缓冲满了之后提交一次,而不是导完一张表提交一次,减少对系统回滚段等资源的消耗)

buffer=3072000   imp数据行缓冲区大小>3072000

(commit=y+增大buffer空间 可以加快imp速度,buffer可增至5120000)

ignore=y(如果没有的表,创建并倒入数据,如果已经有的表,忽略创建的表,但不忽略倒入表数据。)

6)基本上不会再出现丢表的情况了,然后再进一步的进行数据库表内容的修复工作即可。

发现少了某些表,可以通过表模式,单独导入指定用户下指定的缺少表即可。如 imp ...tables(a,b) ignore=y

2、pl/sql编译无效对象

1)选择my objects 下的tables

2)选中软件中tools工具栏--compile invalid objects(编译无效对象)

3)在user下选择ALL users

4)点击左上角执行绿色箭头--执行编译无效对象,右下角的绿色进度条,完成即为编译完成。

oracle 数据库备份、还原、和使用心得(表丢失、视图丢失的解决办法)的更多相关文章

  1. Oracle数据库备份还原笔记

    Oracle数据库备份还原笔记 通过查阅资料知道Oracle备份还原的方式有三种.分别的是导出/导入.热备份和冷备份.导出/导入是一种逻辑备份.而热备份和冷备份是物理备份.[参考资料(https:// ...

  2. Linux中Oracle数据库备份还原

    一.备份Oracle数据库 1.使用数据库管理员账户登录 sqlplus system/system@orcl as sysdba; 2.创建备份目录,并指定备份目录(bak_dir)的物理路径 cr ...

  3. oracle数据库备份还原命令

    oracle数据库备份命令exp 用户名/密码@orcl file=d:\xxxxxx.dmp owner=用户名 oracle数据库还原命令sqlplus conn / as sysdba drop ...

  4. Oracle 数据库备份还原(Expdp/impdp)记录

    最近公司将原数据库服务器切换.之前没整过这块,也是一堆的度娘.经过不停的摸索,终于成功了.现在将这份艰辛记录下来,方便自己以后查阅的同时,方便有类似需求的同学参考. 我们此次切换共分:ERP.LOS. ...

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

    初始化: -- 创建表空间 CREATE TABLESPACE 表空间名 DATAFILE '文件名.dat' SIZE 100M AUTOEXTEND ON NEXT 10M MAXSIZE UNL ...

  6. Oracle数据库备份还原工具之Expdp/IMPdp

    使用EXPDP和IMPDP时应该注意的事项: EXP和IMP是客户端工具程序,它们既可以在客户端使用,也可以在服务端使用. EXPDP和IMPDP是服务端的工具程序,他们只能在ORACLE服务端使用, ...

  7. Oracle数据库备份还原

    导出备份的命令: 开始->运行->cmd->exp username/password@tns_name file=d:\backup.dmp 导入备份的命令: 开始->运行- ...

  8. 【Oracle】想查询相关的v$视图,但是提示表或视图不存在解决办法

    原因是使用的用户没有相关的查询权限导致 解决办法: grant select  any dictionary to 用户;    --这个权限比较大 这个权限是最低的要求,但是可以访问到v$相关视图 ...

  9. oracle数据库备份、还原命令及常见问题(待补充)

    1.oracle数据库的备份:先查空表——将结果全选复制为insert语句——将语句执行后导出 先select 'alter table '||table_name||' allocate exten ...

随机推荐

  1. 【Java算法】输入一行字符,分别统计出其中英文字母、空格、数字和其它字符的个数

    import java.util.Scanner; public class CountZimuShuzi { public static void main(String[] args) { Sys ...

  2. spoj220

    题解: 后缀数组 把所有串连接起来 二分答案 代码: #include<cstdio> #include<cstring> #include<algorithm> ...

  3. redis:集群配置

    一.redis集群相关 1.概念:redis集群是通过数据分区提供可用性的,这样即使一部分节点失效也可以继续处理请求. 2.原理:集群使用数据分片实现,一个redis集群包括16384个哈希槽,数据库 ...

  4. 删除所有已经停止的容器 docker rm $(docker ps -a -q)

    杀死所有正在运行的容器docker kill $(docker ps -a -q) 删除所有已经停止的容器docker rm $(docker ps -a -q) 删除所有未打 dangling 标签 ...

  5. loadrunner请求json数据参数化问题

    http://blog.sina.com.cn/s/blog_62079f620102vvx3.html

  6. installshield 功能传送错误

                                       出现这种问题,网上有几种解决方法: 1.原因:卸载不干净或者installshield本身安装的问题 解决方法:①卸载老程序.②删 ...

  7. Pandas分组统计函数:groupby、pivot_table及crosstab

    利用python的pandas库进行数据分组分析十分便捷,其中应用最多的方法包括:groupby.pivot_table及crosstab,以下分别进行介绍. 0.样例数据 df = DataFram ...

  8. Oracal

    增删改查 1.增加数据表 Create table users ( userid VARCHAR2(4), username VARCHAR2(20), userpass VARCHAR2(20), ...

  9. 解析JSON 注意解析数据为一个对象的情况.--加一下说明

    应用场景: 调某接口时, 获取json数据, 需要对数据进行解析 . 第一种: 只判断接口是否调用成功 { "code":"10102000", "d ...

  10. Spring Boot 揭秘与实战(二) 数据存储篇 - Redis

    文章目录 1. 环境依赖 2. 数据源 2.1. 方案一 使用 Spring Boot 默认配置 2.2. 方案二 手动创建 3. 使用 redisTemplate 操作4. 总结 3.1. 工具类 ...