zoukankan      html  css  js  c++  java
  • Oracle 数据库 Only 导出空表的方法

    1. 之前因为oracle11.2.0.1 的bug(deferred_segment_creation) 引起无法将空表导出.

    有时给同事解释上半个小时他们也不知道 如何处理 或者是 他们不会用expdp 也不想用 allocate extent 的方式来搞.

    没办法 只能通过 备份空表进行导入的方式进行处理.

    2. 第一个想到的办法是 通过 exp tables=(select table_name from user_tables) 的方式来处理 发现有问题 提示不支持where子句 (坑爹)

    3. 然后将 num_rows=0 的表进行导出  结果发现 cmd直接输入命令超长..

    4. 没办法 使用如下办法进行处理

    4.1 查找所有的空表 转换成行处理

    select wm_concat(table_name) from user_tables where num_rows=0

    结果如下图示:

    4.2 写一个批处理

    然后 将buffer 改大一下:

    执行批处理直接进行导出

     

    4.3 其实建议是在目标库 先恢复空表 再恢复非空表 因为有很多视图和触发器的创建需要用到空表

     5. 这种方式不太建议 容易出现异常 除非是跟实施人员说好能够将两种备份文件都导出来 才可以用. 不然 还是无法使用

    最终建议:

    1. 早日升级11.2.0.4

    2. 尽量使用expdp的方式备份 速度快 bug还少.  可以增加compress=y 的参数 直接压缩备份文件  备份恢复文件占用空间少, 占用网络传输时间也少. . 

  • 相关阅读:
    vue 兼容ie 下载文件
    IDEA maven项目添加自己的jar包依赖
    mongodb 用户权限操作
    springboot + aspect
    Enum枚举类
    线上CPU飙升100%问题排查
    Linux零拷贝技术
    Java线程池实现原理及其在美团业务中的实践
    深入解析String#intern
    Java对象内存布局
  • 原文地址:https://www.cnblogs.com/jinanxiaolaohu/p/10363850.html
Copyright © 2011-2022 走看看