安徽省“集成”平台数据备份与恢复技术综述_表空间论文

安徽省“一体化”平台数据的备份与恢复技术概要,本文主要内容关键词为:安徽省论文,概要论文,备份论文,数据论文,平台论文,此文献不代表本站观点,内容供学术参考,文章仅供参考阅读下载。

      一、县级数据恢复与上报方法

      县级数据处理是报送工作的起点,在源头做好数据的恢复与导出工作,才可为市级、省级逐级汇总上报提供良好的基础。按照省厅实施方案的要求,首先需要创建一个“地区编码_CZYTH_年度_上报年月”格式名的用户,然后将财政备份数据导入到该用户模式下,最后导出该模式下的对象。因财政部门提供数据逻辑备份方式不同,数据恢复方法也不同。

      (一)恢复方法

      1.EXP方式导出文件的恢复

      (1)利用DBCA向导创建一个空数据库,在创建过程中一般保持默认选项即可;

      (2)在CMD模式下,以system身份登录,创建5个表空间:ltsysdata01、ltsysdata02、ltsysdata03、ltsysdata04、ltslobdata01,因安徽省财政“一体化”平台中部分对象的创建指定了特定表空间,如果不事先创建这些表空间,对象导入将会失败。表空间创建格式如下:

      CREATE TABLESPACE ltsysdata01 DATAFILE‘文件路径\xxx.dbf’SIZE 50M AUTOEXTEND ON;

      SIZE大小根据实际需要确定,将表空间中数据文件设置为自动增长,其他表空间的创建方法相同。

      (3)以system身份登录,按命名规则创建新用户,并授予DBA角色,其默认的表空间为ltsysdata01,也可以是USERS或其他表空间,并具有该表空间无限配额,因用户名以地区编码打头,需用西文双引号标识,语法如下:

      CREATE USER“用户名”IDENTIFIED BY密码DEFAULT TABLESPACE ltsysdata01 QUOTA UNLIMITED ON ltsysdata01;

      (4)以system身份或者以新创建的用户身份导入备份文件的内容,在CMD命令提示符下输入:

      IMP system/密码@数据库连接符file=备份文件的路径及文件名fromuser=备份数据导出用户名(严格地说是对象所有者,可从财政提供的导出日志文件中获取)touser=新创建的用户log=日志文件存放路径及文件名

      2.EXPDP方式导出文件的恢复

      如果财政部门以数据泵(EXPDP)方式导出的备份文件,那么县级审计机关应在本地服务器(数据库安装在本机)上使用IMPDP方式导入,步骤如下:

      (1)创建数据库、表空间、用户以及给用户授权操作同方法1中(1)~(3)步骤;

      (2)以system身份登录创建目录,并将财政提供的备份文件置于该目录中:

      CREATE OR REPIACE DIRECTORY目录名AS‘路径’;

      (3)以创建的用户导入,需要给创建的用户授予目录的读写权限及导入权限:

      GRANT READ,WRITE ON DIRECTORY目录名TO用户;

      GRANT IMP_FULL_DATABASE,EXP_FULL_DATABASE TO用户;

      (4)在CMD命令行提示符下,以创建的用户身份导入数据:

      IMPDP用户名/密码@数据库服务名DIRECTORY=目录名DUMPFILE=备份文件名SCHEMAS=导出用户名(对象所有者)LOGFILE=日志文件名job_name=作业名称PARALLEL=整数。

      Job_name是对执行作业的命名,通过作业名,可以与当前执行的作业进行交互,parallel可以忽略,默认值为1,上述处理是将备份文件中对象导入到当前模式下。

      第(4)步中也可以使用system身份导入,导入命令如下:

      IMPDP system/密码@数据库服务名DIRECTORY=目录名DUMPFILE=备份文件名REMAP_SCHEMA=原备份文件中的模式名:创建的用户名LOGFILE=日志文件名job_name=作业名称PARALLEL=整数。

      县导入数据过程中最常见的问题是“ora-12899”错误,这种错误主要是由于源数据库的字符集与目标数据库的字符集不一致造成的。安徽省“一体化”平台使用的是ZHS16GBK与AL16UTF16 NCHAR字符集,如果在11.2.0.1.0版本上创建数据库,未指定字符集,默认为UTF-8,UTF-8使用3个字节存储每个汉字,而ZHS16GBK只用2个字节,故极易引发此类错误,解决办法是在创建数据库时指定字符集,或者在导入结束后,以sys身份将数据库启动到MOUNT状态下修改字符集,然后重新启动数据库,最后根据日志记录删除有问题的表,以tables选项指定需要导入的表;另外一种是编译之类的警告,如“IMP-00041创建的对象带有编译警告”,主要原因是ORACLE在不基于表的情况下可以事先创建视图,由于无法编译而发出警告,这种错误可以忽略。

      (二)数据导出

      根据导出方式不同,分为常规方式导出(EXP)与数据泵导出(EXPDP),步骤分别如下:

      1.常规导出方式:以system身份或者对象所有者身份,利用EXP工具导出,在CMD命令行提示符下输入:

      EXP SYSTEM(或者对象所有者)/密码@数据库服务名FILE=导出文件存放路径及规范命名OWNERS=用户名LOG=日志文件存放路径。

      2.数据泵导出方式:需要事先创建目录,并授予导出用户对目录的读写权限和导出数据库的权限,步骤与前述“(一)恢复方法、2、EXPDP方式导出文件的恢复中(2)、(3)”方法相同,不再赘述,导出语句为:

      EXPDP SYSTEM/密码@数据库服务名DIRECTORY=目录名DUMPFILE=导出文件规范名称LOGFILE=日志文件名SCHEMAS=对象所有者JOB_NAME=作业名称PARALLEL=整数。

      上述2种导出方法均是导出指定的模式对象,只是语句格式不同而已。

      二、市级数据恢复与上报方法

      (一)市级数据处理与县级的区别

      市级审计机关不仅要处理市本级“一体化”平台数据,还要汇总县级报送来的数据,尽管数据恢复与导出方式相同,但与县级相比,主要存在以下差异:

      1.建库的数量:县级可以按年度、区分平台创建独立数据库,也可以将不同年度、不同平台数据整合到一个数据库中,如,县级可以将非税数据与“一体化”平台数据分别建库恢复,也可以只创建一个库,然后分别导入非税数据与“一体化”平台数据;而市级只能创建一个数据库。

      2.数据库的规模:县级数据量较小,一般不会突破单个数据文件的最大限制,而市需要汇总县级数据,单个数据文件都会超过32G,因此不仅需要关注磁盘空间大小,而且要实时掌握数据文件大小。

      3.处理方式:市级汇总数据量较大,恢复时间长,如果按用户分次恢复将十分繁琐,且代码编写极易出错,因此需采用批处理方式,提高效率。

      在县、市、省级数据逐级汇总上报过程中,市级数据处理最具典型性,如果能处理好市级数据的恢复与导出工作,那么省级数据的处理也就迎刃而解。

      (二)市级数据的恢复

      与县级恢复相同,如果县级报送的数据为常规方式(EXP)导出,市级则需要使用IMP方式导入,如果是EXPDP方式导出,市级则要用IMPDP方式导入。

      1.市级应根据需要创建与县级相同的表空间名,如“一体化”平台5个表空间,非税“FS”表空间等,数据文件均设置为自动增长。

      2.根据县级提供的用户名,创建对应的用户,为方便处理应设置统一的密码,并授予DBA角色。

      3.将县级提供的备份文件置于同一个目录中,如果提供的数据均为EXP方式导出,则采用以下办法之一批量生成命令:

      方法一:SELECT ‘imp’||‘’||username||‘/密码@数据库服务名’||‘’||‘file=需恢复文件路径\’||‘’||username||‘.dmp’||‘’||‘fromuser=’||username||‘’||‘touser=’||username||‘’||‘log=生成导入日志的路径\’\’||username||‘.log’||‘’FROM dba_users where username like‘区划编码%’:

      方法二:SELECT ‘imp’||‘’||‘system/密码@数据库服务名’||‘’||‘file=需恢复文件路径'||username||‘.dmp’||‘’||‘fromuser=’||username||‘’||touser=’||username||‘’||‘log=生成导入日志的路径\’||username||‘.log’||‘’FROM dba_users where username like‘区划编码’;

      方法三:SELECT ‘imp’||‘’||‘system/密码@数据库服务名’||‘’||‘file=需恢复文件路径\’||username||‘.dmp’||‘’||‘full=y’||‘’||‘log=生成导入日志的路径\’||username||.log'||‘’FROM dba_users where username like‘区划编码%’;

      方法四:是system利用“full=y”参数导入备份文件中所有模式,系统会自动将模式对象导入到同名模式下。

      建议使用方法一与方法二,命令清晰、简单明了。

      如果县级提供的备份文件是以EXPDP方式导出,同样需要创建目录,授予用户权限,方法同县级“2、EXPDP方式导出文件的恢复中的(2)、(3)步骤”,这里不再赘述,批量生成的语句格式有以下3种方法:

      方法一:SELECT‘expdp'||username||‘/密码@数据库服务名directory=目录名dumpfile=’||username||‘.dmp logfile=’||username||‘.|og schemas=’||username||‘’||‘job_name=自定义作业名parallel=整数’FROM dba_users WHERE username like‘区划编码%’;

      方法二:SELECT‘expdp system/密码@数据库服务名directory=目录名dumpfile=’||username||‘.dmp logfile=’||username||‘.log schemas=’||username||‘’||‘job_name=自定义作业名parallel=整数’FROM dba_users WHERE username like‘区划编码%’;

      方法三:SELECT ‘expdp system/密码@数据库服务名directory=目录名dumpfile=’||username||‘.dmp logfile=’||username||‘.log full=y’||‘’||‘job_name=自定义作业名parallel=整数’FROM dba_users WHERE username like‘区划编码%’。

      从上述3种数据泵导入命令来看,第一、二种方法使用“模式到模式”方式更容易理解。上述select语句是利用“dba_users”数据字典表,生成相应的命令字符串,其恢复文件名、生成导入日志文件名均与用户名相同,符合审计署及省厅数据报送要求。

      在PL/SQL Developer的SQL窗口执行,生成相应的命令,将命令复制到记事本文件中,并将文件扩展名修改为“.bat”批处理文件,双击即可执行导入操作,按区划名在指定的目录中生成日志文件,每执行完一条命令后,自动跳转到下一条命令执行。

      如果备份文件既有EXP方式导出又有EXPDP方式导出,则需要在记事本中手工编辑单个命令,每行一条命令,每编辑完一条命令,回车换行后再编辑下一条命令,编辑完成后,保存退出,并将文件扩展名修改为“.bat”批处理文件,最后双击执行。

      由于市级数据量较大,导入过程经常会因为单个数据文件达到最大限制(32G)而报错,因此,在导入过程中使用下列语句查看每个数据文件的大小:

      WITH i

      (select d.fle_id文件号

      ,d.file_name文件名

      ,d.tablespace_name所属表空间

      ,d.autoextensible自动扩展

      ,d.online_status状态

      ,round(d.bytes/power(1024,2),2)文件大小

      ,round(sum(b.bytes)/power(1024,2),2)剩余空间

      from dba_data_files d

      join v$datafile t

      on d.file_id=t.fle#

      join dba_free_space b

      on b.file_id=d.file_id

      group by

      d.file_id,d.file_name,d.tablespace_name,d.autoextensible,d.online_status,round(d.bytes/power(1024,2),2)

      select文件号,文件名,所属表空间,自动扩展,状态,文件大小,文件大小-剩余空间使用量,剩余空间

      from I:

      order by文件号;

      也可以登录Oracle Enterprise Manager 11g DataBase Control(https://localhost:1158/em),在“服务器”选项卡“存储”类别下,打开“数据文件”链接,可以通过图形化方式查看每个数据文件的大小,如图所示:

      

      每当某个数据文件即将达到32G时,就在需要在其表空间中添加数据文件,以上图为例,LT_TBS_DATA_0101.DBF文件以尺寸已达到32G最大限制,这时需要在其所属的表空间添加数据文件,命令如下:

      ALTER TABLESPACE ltsysdata01 ADD DATAFILE'E:\TBS\LT_DATA_0102.DBF' SIZE 100M AUTOEXTEND ON;

      采用数据泵方式导入,如果单个数据文件达到最大限制时,作业暂时中断,当添加完数据文件后,作业从中断的位置重新启动,而采取IMP方式导入会引发“ORA-01658:无法为表空间XXX中的段创建INITIAL区”错误,导致恢复失败。

      (三)市级数据的导出

      市级向省级报送数相对较为简单,可采用EXP方式或者EXPDP方式导出。

      1.exp方式导出:

      (1)以system身份(或其他有权限的用户)导出:

      exp system/密码@数据库服务名file=文件存放路径及文件名owners=(用户1,用户2……)log=导出日志路径及文件名

      如果用户较多,可通过查询dba_users视图,利用循环串连字符拼接成导出命令,假设以区划代码340200为例,在命令窗口输入以下代码:

      SET SERVEROUTPUT ON;

      DECLARE

      v_str VARCHAR2(500):=";

      BEGIN

      FORIIN(SELECT USERNAME FROM DBA_USERS WHERE USERNAME LIKE '3402%')LOOP

      v_str:=v_str||i.username||',';

      END LOOP;

      v_str:=RTRIM(v_str,',');

      v_str:='exp system/abc@orcl file=d:\340200_czyth_2015_201601.dmp owners=('||v_str||')‘

      ||'Log=d:\340200_czyth_2015_201601.log’;

      DBMS_OUTPUT.PUT_LINE(v_str);

      为便于展示执行结果,在CMD下运行上述代码(实践中一般在工具运行,如Oracle SQL Developer),生成的字符串如下图所示:

      

      将生成命令复制到记事本中格式化后(取消自动换行),即可执行。

      2.expdp方式导出:使用数据泵技术导出是市级首选方法,采用这种方法应事先创建目录,如果使用其他用户导出,同样需要授予相应的权限,与前述类似。一般有3种方法:

      (1)命令行方式

      在CMD命令行提示符中输入的命令格式如下:

      expdp system/密码@数据库服务名directory=目录dumpfile=备份文件名schemas=(模式1,模式2,模式3…)logfile=日志文件路径及文件名job_name=作业名parallel=整数

      (2)参数文件方式

      参数文件方式导出是指将导出参数的设置信息放入一个参数文件中,在命令行中通过参数parfile指定该参数文件。

      首先新建记事本文件,假设存放在D:\backup目录下,名为expdp.txt,其内容为:

      Schemas=模式1,模式2,模式3…

      Dumpfile=备份文件名

      Directory=目录名

      Logfile=日志文件名

      Parallel=整数

      然后在命令行中输入下列命令就可以执行数据的导出操作了。

      Expdp system/abc@orcl parfile=d:\backup\expdp.txt

      如果模式名称较多,需要使用以下方法,从DBA_USE RS视图中读取,并串接成以逗号分隔的模式列表,方法如下:

      SET SERVEROUTPUT ON;

      DECLARE

      V_str VARCHAR2(500):='';

      BEGIN

      FOR i IN(SELECT username FROM dba_users WHERE username LIKE '3402%')LOOP

      v_str:=v_str||i.username||',';

      END LOOP;

      v_str:=RTRIM(v_str,’,’);

      DBMS_OUTPUT.PUT_LINE(v_str);

      执行结果如下图示例:

      将生成的字符串复制到记事本文件的schemas参数中,这是实际操作过程中经常用到的方法。

      

      数据的恢复与导出方式很多,各级审计部门应严格按照审计署统一部署,认真执行审计厅数据采集方案,采用简洁高效的数据处理方法。同时也建议省厅进行相应的技术培训,统一、规范数据处理方法,从而使采集报送工作有条不紊进行。

标签:;  ;  ;  ;  ;  ;  ;  ;  ;  

安徽省“集成”平台数据备份与恢复技术综述_表空间论文
下载Doc文档

猜你喜欢