利用Python批量恢复Oracle备份数据的方法

作 者:
房磊 

作者简介:
房磊,海南省审计厅

原文出处:
中国审计

内容提要:

02


期刊代号:V3
分类名称:审计文摘
复印期号:2019 年 01 期

关 键 词:

字号:

      面对以各市县为独立用户的多个Oracle数据库系统的DMP备份文件,审计工作量大,重复性工作多。笔者探索利用Python语句实现各市县GFMIS系统Oracle数据库备份文件的批量导入,具体步骤和部分关键程序语句如下:

      整理待导入的DMP备份文件,地区数据命名规则采用“具体地名名称缩写+GFMIS+年度+_采集时间.DMP”,省级数据命名规则为“GFMIS+年度+_采集时间.DMP”。通过调用Python os库的文件函数功能,实现对指定文件夹内后缀名为“.DMP”文件的遍历和获取文件名称。变量list为存储所有文件名称的集合。通过cx_Oracle库连接Oracle数据库,调用execute函数执行SQL语句,完成建立表空间、用户、授权等操作。

      以遍历到的“.DMP”文件名称前缀为用户名创建Oracle用户,密码统一设定为“abc”,并对用户进行权限授权。

      for i in range(0,len(list):

      filepath =os.path.join(filedir,list[i])

      if os.path.splitext(list[i])[1]=='.DMP':

      sql="CREATE user "+os.path.splitext(list[i])[0]+"identified by abc default TABLESPACE GFMIS_SYS_DATA QUOTA UNLIMITED ON GFMIS_LOB_DATA"

      cr.execute(sql)

      调用Python os库的system函数执行impdp数据泵导入命令,将不同的备份文件导入不同用户。

      impcmd ="impdp userid='"+os.path.splitext(list[i])[0]+"/abc as sysdba' directory=impdp_dir dumpfile="+list[i]+"logfile="+list[i]+".log remap_schema="+os.path.splitext(list[i])[0]+":"+os.path.splitext(list[i])[0]

      os.system(impcmd)

      最后调用cr.close()和db.close()关闭数据库连接。

相关文章: