oracle运维系列1:导出某个schema下全部数据

背景

最近做银行数据库迁移相关项目,涉及到oracle数据库备份与恢复。现有备份方案是厂商给部署的,使用一个脚本进行调用rman进行全量数据备份。导致备份数据特别大(高达15G以上),要将这些数据文件进行跨广域网传输(海外 内地)再恢复那更是让人头疼,于是思索思考解决方案,找到本文导出schema方案。

专业术语

  1. rman:Recovery Manager,恢复管理器。oracle提供数据库备份与恢复解决方案。
  2. schema:“方案”。是指由特定用户拥有的数据库对象的集合(一个用户对应一个schema)。对于生产数据库而言,该用户通常代表的不是一个人,而是一个应用程序。方案的名称与拥有该方案的用户的名称相同。方案对象是指直接引用数据库数据的逻辑结构。方案对象包含表、视图和索引等多种结构;
  3. expdp:ORACLE提供的数据库导出工具。
  4. impdp:与expdp对应,数据库导入工具。下篇博文将要讲述。

操作步骤:

以下将详细介绍使用expdp导出schema=ZAVIER的全部数据的步骤。

  • 以sys或者system用户身份登录数据库
[oracle@t24app1sg ~]<20181119 16:48:41>$ sqlplus / as sysdba;
  • 创建schema导出路径(EXP_ZAVIER名称可替换),并在dba_directories中查看
SYS@T24APDB> create directory EXP_ZAVIER as '/odata/exp_zavier';
Directory created.

SYS@T24APDB> select * from dba_directories where DIRECTORY_NAME = 'EXP_ZAVIER';

 说明:在使用create directory创建目录,请先用mkdir创建目录/odata/exp_zavier,并保证oracle用户有相关权限。

  • 把导出路径与导出权限授权给用户:ZAVIER
SYS@T24APDB> grant read,write on directory EXP_ZAVIER to ZAVIER;
Grant succeeded.

SYS@T24APDB> grant exp_full_database to ZAVIER;
Grant succeeded.

 说明:若第四步中使用sys或system等特权用户,此处无需为ZAVIER用户授权

  • 退出sqlplus,使用expdp命令导出

oracle运维系列1:导出某个schema下全部数据_第1张图片

说明:

  1. directory选项指定刚才创建的导出目录名;
  2. dumpfile指定导出文件。由于后面使用了并行parallel参数,此处指定导出文件时使用了%U并行导出多个文件
  3. logfile指定导出日志文件;
  4. parallel指定并行导出jobs数。
  5. 其他相关参数还有:COMPRESSION(是否采用压缩)、ENCRYPTION(是否加密)、SCHEMAS(指定导出schema默认为登录schema,即ZAVIER)等,具体请查看:
expdp –help

总结

  1. 由于导出的ZAVIER方案(schema)数据量非常小,仅有3个table(T1、T2、KNN_DATA),因而导出耗时少。生产上若schema包含的数据多,导出可能很长时间,具体取决与数据量大小、处理器性能、是否采用压缩等;
  2. 在尚未介绍oracle体系架构的情况下,写下第一篇关于oracle的博文,内心充满激动与忐忑。一来害怕自己对oracle的理解不够,表述有误,毕竟oracle DB占据全球数据库市场半壁江山,不是我这等渣渣一年半载能领会的;二来不想因为我的才疏学浅误导同学,这才是最致命的,误人子弟呀。

参考推荐

《oracle学生指南1-D50102CN11_SG1》

《Oracle性能诊断艺术》

你可能感兴趣的:(DataBases)