Oracle 数据库 Only 导出空表的方法
2023-09-27 14:24:16 时间
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 的参数 直接压缩备份文件 备份恢复文件占用空间少, 占用网络传输时间也少. .
相关文章
- Oracle 11g Articles
- Oracle数据库误truncate table的数据恢复案例
- oracle 数据库 基础操作
- 非常规方法,轻松应对Oracle数据库危急异常
- [转]PL/SQLDeveloper导入导出Oracle数据库方法
- Oracle外键级联删除和级联更新
- VNC不同用户 Oracle
- Oracle数据库内置函数
- PLSQL 配置连接ORACLE数据库
- Oracle 数据库导入导出 dmp文件
- oracle 通过内部函数提高SQL效率.
- oracle表复杂查询--创建数据库实例
- oracle连接命令
- 转 ORACLE数据库它可以存储 中文 字节或字符
- oracle数据库之子查询
- oracle数据库单表查询
- Oracle 创建数据库
- Oracle——listener数据库监听 lsnrctl
- 【12.2新特性】Oracle Sharding分片级别的高可用实现
- 改变Oracle数据库连接端口
- Oracle数据库LOGGING&NOLOGGING模式概述
- [Oracle]如何查看 10046 trace 中的 tim= ... 的具体时刻
- [Oracle]如何为数据库设置Event(eg: ORA-00235)
- Oracle数据库无法向listener注册的解决一例
- Oracle查询client编码集
- ORACLE数据库的优化
- Java 联系Oracle 数据库
- oracle的number的浅析
- C# ODP.Net oracle数据库操作 支持不安装客户端
- Oracle 数据库、表、方案的逻辑备份与恢复
- Oracle运算符收录(易忘记,但是又很重要的运算符)
- Oracle数据库模式关系和数据备份导出导入