通过shell解析dump生成parfile

简介: 当我们得到一个dump文件的时候,总是有些不太确定dump文件中是否含有一些我们原本不希望出现的表,如果在未知的情况下对dump文件进行操作时很危险的,比如我们想要得到的是表结构的信息。
当我们得到一个dump文件的时候,总是有些不太确定dump文件中是否含有一些我们原本不希望出现的表,如果在未知的情况下对dump文件进行操作时很危险的,比如我们想要得到的是表结构的信息。如果不指定需要的表,会把当前schema下所有的Object对象的信息都导出。一般的操作中,建议还是使用parfile。

[ora11g@rac1 dbm_lite]$ exp n1/n1 file=n1_ddl.dmp rows=n  statistics=none
Export: Release 11.2.0.3.0 - Production on Tue Aug 26 07:21:57 2014
Copyright (c) 1982, 2011, Oracle and/or its affiliates.  All rights reserved.
Connected to: Oracle Database 11g Enterprise Edition Release 11.2.0.3.0 - 64bit Production
With the Partitioning, OLAP, Data Mining and Real Application Testing options
Export done in US7ASCII character set and AL16UTF16 NCHAR character set
server uses AL32UTF8 character set (possible charset conversion)
Note: table data (rows) will not be exported

About to export specified users ...
. exporting pre-schema procedural objects and actions
. exporting foreign function library names for user N1
. exporting PUBLIC type synonyms
. exporting private type synonyms
. exporting object type definitions for user N1
About to export N1's objects ...
. exporting database links
. exporting sequence numbers
. exporting cluster definitions
. about to export N1's tables via Conventional Path ...
. . exporting table                     BIG_INSERT
. . exporting table                BIG_INSERT_EXT2
. . exporting table                      CLOB_TEST
. . exporting table                 CLOB_TEST_EXT2
. . exporting table                           DATA
. . exporting table                       NEW_DATA
. . exporting table                       OLD_DATA
. . exporting table                       PAR_DATA
. . exporting table                    RATED_EVENT
. . exporting table                   SMALL_INSERT
. . exporting table              SMALL_INSERT_EXT2
. . exporting table                              T
. . exporting table                             T1
. . exporting table                             T2
. . exporting table                      TEMP_TEST
. . exporting table                 TEMP_TEST_EXT2
. . exporting table                           TEST
. . exporting table                      TEST_DATA
. . exporting table                 TEST_DATA_EXT2
. . exporting table                      TEST_EXT2
. . exporting table                             TT
. . exporting table                            TTT
. . exporting table                        TT_EXT2
. . exporting table                         T_EXT2
. . exporting table                         T_TEMP
. . exporting table                    T_TEMP_EXT2
. . exporting table                       WIN_LIST
. exporting synonyms
. exporting views
. exporting stored procedures
. exporting operators
. exporting referential integrity constraints
. exporting triggers
. exporting indextypes
. exporting bitmap, functional and extensible indexes
. exporting posttables actions
. exporting materialized views
. exporting snapshot logs
. exporting job queues
. exporting refresh groups and children
. exporting dimensions
. exporting post-schema procedural objects and actions
. exporting statistics
Export terminated successfully without warnings.
但是很多时候我们都因为是dump文件,感觉一下子没有了方向。无从查起。
如果我们能够得到dump文件中的table列表,那就太好了,我们可以很安全的进行数据的操作。不会稀里糊涂的把一些“未知”操作避免。
如果要解析dump文件,之前分享过一篇日志,通过awk来解析dump文件,得到对应的sql语句,现在来通过一些简单的命令解析dump文件。
我简单测试过百兆,数十G的dump文件,这个命令的速度都还可以,
首先,我们得到一个比较粗略的table list
[ora11g@rac1 dbm_lite]$ strings n1_ddl.dmp|grep "CREATE TABLE"|awk '{print $3}'
"BIG_INSERT"
"CLOB_TEST"
"DATA"
"NEW_DATA"
"OLD_DATA"
"PAR_DATA"
"RATED_EVENT"
"SMALL_INSERT"
"T"
"T1"
"T2"
"TEMP_TEST"
"TEST"
"TEST_DATA"
"TT"
"TTT"
"T_TEMP"
"WIN_LIST"

得到的内容如上所示,我们需要去除双引号,然后加入tables=,每行末尾加入一个逗号。
先去掉双引号
[ora11g@rac1 dbm_lite]$ strings n1_ddl.dmp|grep "CREATE TABLE"|awk '{print $3}'|sed 's/"//g'
BIG_INSERT
CLOB_TEST
DATA
NEW_DATA
OLD_DATA
PAR_DATA
RATED_EVENT
SMALL_INSERT
T
T1
T2
TEMP_TEST
TEST
TEST_DATA
TT
TTT
T_TEMP
WIN_LIST

然后再次判断,如果是第一行就加入前缀tables=,否则加入前缀一个逗号,这样就不用麻烦的判断最后一行的逗号是不是要加了。
[ora11g@rac1 dbm_lite]$  strings n1_ddl.dmp|grep "CREATE TABLE"|awk '{print $3}'|sed 's/"//g'|awk '{ if(FNR==1) print "tables="$1 ; else print ","$1}'
tables=BIG_INSERT
,CLOB_TEST
,DATA
,NEW_DATA
,OLD_DATA
,PAR_DATA
,RATED_EVENT
,SMALL_INSERT
,T
,T1
,T2
,TEMP_TEST
,TEST
,TEST_DATA
,TT
,TTT
,T_TEMP
,WIN_LIST

简单验证一下,可以看到导出的信息很“干净”,我们在数据导入的时候也可以做类似的操作。
[ora11g@rac1 dbm_lite]$ exp n1/n1 file=a.dmp parfile=a.par rows=n statistics=none
Export: Release 11.2.0.3.0 - Production on Tue Aug 26 07:34:19 2014
Copyright (c) 1982, 2011, Oracle and/or its affiliates.  All rights reserved.
Connected to: Oracle Database 11g Enterprise Edition Release 11.2.0.3.0 - 64bit Production
With the Partitioning, OLAP, Data Mining and Real Application Testing options
Export done in US7ASCII character set and AL16UTF16 NCHAR character set
server uses AL32UTF8 character set (possible charset conversion)
Note: table data (rows) will not be exported
About to export specified tables via Conventional Path ...
. . exporting table                     BIG_INSERT
. . exporting table                      CLOB_TEST
. . exporting table                           DATA
. . exporting table                       NEW_DATA
. . exporting table                       OLD_DATA
. . exporting table                       PAR_DATA
. . exporting table                    RATED_EVENT
. . exporting table                   SMALL_INSERT
. . exporting table                              T
. . exporting table                             T1
. . exporting table                             T2
. . exporting table                      TEMP_TEST
. . exporting table                           TEST
. . exporting table                      TEST_DATA
. . exporting table                             TT
. . exporting table                            TTT
. . exporting table                         T_TEMP
. . exporting table                       WIN_LIST
Export terminated successfully without warnings.

目录
相关文章
|
9月前
|
运维 Shell 数据库
Python执行Shell命令并获取结果:深入解析与实战
通过以上内容,开发者可以在实际项目中灵活应用Python执行Shell命令,实现各种自动化任务,提高开发和运维效率。
255 20
|
Java Shell Linux
【Linux入门技巧】新员工必看:用Shell脚本轻松解析应用服务日志
关于如何使用Shell脚本来解析Linux系统中的应用服务日志,提供了脚本实现的详细步骤和技巧,以及一些Shell编程的技能扩展。
275 0
【Linux入门技巧】新员工必看:用Shell脚本轻松解析应用服务日志
|
API C# Shell
WPF与Windows Shell完美融合:深入解析文件系统操作技巧——从基本文件管理到高级Shell功能调用,全面掌握WPF中的文件处理艺术
【8月更文挑战第31天】Windows Presentation Foundation (WPF) 是 .NET Framework 的关键组件,用于构建 Windows 桌面应用程序。WPF 提供了丰富的功能来创建美观且功能强大的用户界面。本文通过问题解答的形式,探讨了如何在 WPF 应用中集成 Windows Shell 功能,并通过具体示例代码展示了文件系统的操作方法,包括列出目录下的所有文件、创建和删除文件、移动和复制文件以及打开文件夹或文件等。
314 0
|
Shell 开发者
Shell 函数深入解析与实践
了解 Shell 函数的基础,包括定义、参数传递及返回值。函数定义有多种语法,如 `function func() {...}` 或 `func() {...}`。参数通过 `$1`, `$2` 等访问,`$@` 代表所有参数。`return` 用于返回退出状态码(0-255),非数值数据需用 `echo`。正确获取函数返回值应立即检查 `$?`,例如:`result=$?`。实践中不断探索和学习!
132 1
|
Unix Shell Perl
技术心得:实例解析shell子进程(subshell)
技术心得:实例解析shell子进程(subshell)
|
弹性计算 运维 Shell
每天解析一个shell脚本(86)
【4月更文挑战第28天】shell脚本解析及训练(86)
97 0
|
弹性计算 应用服务中间件 Shell
每天解析一个shell脚本(85)
【4月更文挑战第28天】shell脚本解析及训练(85)
64 0
|
7月前
|
算法 测试技术 C语言
深入理解HTTP/2:nghttp2库源码解析及客户端实现示例
通过解析nghttp2库的源码和实现一个简单的HTTP/2客户端示例,本文详细介绍了HTTP/2的关键特性和nghttp2的核心实现。了解这些内容可以帮助开发者更好地理解HTTP/2协议,提高Web应用的性能和用户体验。对于实际开发中的应用,可以根据需要进一步优化和扩展代码,以满足具体需求。
676 29
|
7月前
|
前端开发 数据安全/隐私保护 CDN
二次元聚合短视频解析去水印系统源码
二次元聚合短视频解析去水印系统源码
194 4
|
7月前
|
JavaScript 算法 前端开发
JS数组操作方法全景图,全网最全构建完整知识网络!js数组操作方法全集(实现筛选转换、随机排序洗牌算法、复杂数据处理统计等情景详解,附大量源码和易错点解析)
这些方法提供了对数组的全面操作,包括搜索、遍历、转换和聚合等。通过分为原地操作方法、非原地操作方法和其他方法便于您理解和记忆,并熟悉他们各自的使用方法与使用范围。详细的案例与进阶使用,方便您理解数组操作的底层原理。链式调用的几个案例,让您玩转数组操作。 只有锻炼思维才能可持续地解决问题,只有思维才是真正值得学习和分享的核心要素。如果这篇博客能给您带来一点帮助,麻烦您点个赞支持一下,还可以收藏起来以备不时之需,有疑问和错误欢迎在评论区指出~

推荐镜像

更多
  • DNS