oracle数据备份方案 oracle数据库调优方案

来源:互联网 发布:云计算专业 编辑:程序博客网 时间:2024/05/01 05:45
  •       Oracle数据库自动备份方案


    Oracle数据库备份与恢复的三种方法 (1)

    Oracle数据库有三种标准的备份方法,它们分别是导出/导入(EXP/IMP)、热备份和冷备份。导出备件是一种逻辑备份,冷备份和热备份是物理备份。

    一、 导出/导入(Export/Import)

    利用Export可将数据从数据库中提取出来,利用Import则可将提取出来的数据送回到Oracle数据库中去。

    1、 简单导出数据(Export)和导入数据(Import)

    Oracle支持三种方式类型的输出:

    (1)、表方式(T方式),将指定表的数据导出。

    (2)、用户方式(U方式),将指定用户的所有对象及数据导出。

    (3)、全库方式(Full方式),瘵数据库中的所有对象导出。

    数据导入(Import)的过程是数据导出(Export)的逆过程,分别将数据文件导入数据库和将数据库数据导出到数据文件。

    2、 增量导出/导入

    增量导出是一种常用的数据备份方法,它只能对整个数据库来实施,并且必须作为SYSTEM来导出。在进行此种导出时,系统不要求回答任何问题。导出文件名缺省为export.dmp,如果不希望自己的输出文件定名为export.dmp,必须在命令行中指出要用的文件名。

    增量导出包括三种类型:

    (1)、“完全”增量导出(Complete)

    即备份三个数据库,比如:

    exp system/manager inctype=complete file=040731.dmp

    (2)、“增量型”增量导出

    备份上一次备份后改变的数据,比如:

    exp system/manager inctype=incremental file=040731.dmp

    (3)、“累积型”增量导出

    累计型导出方式是导出自上次“完全”导出之后数据库中变化了的信息。比如:

    exp system/manager inctype=cumulative file=040731.dmp

    数据库管理员可以排定一个备份日程表,用数据导出的三个不同方式合理高效的完成。

    比如数据库的被封任务可以做如下安排:

    星期一:完全备份(A)

    星期二:增量导出(B)

    星期三:增量导出(C)

    星期四:增量导出(D)

    星期五:累计导出(E)

    星期六:增量导出(F)

    星期日:增量导出(G)

    如果在星期日,数据库遭到意外破坏,数据库管理员可按一下步骤来回复数据库:

    第一步:用命令CREATE DATABASE重新生成数据库结构;

    第二步:创建一个足够大的附加回滚。

    第三步:完全增量导入A:

    imp system/manager inctype=RESTORE FULL=y FILE=A

    第四步:累计增量导入E:

    imp system/manager inctype=RESTORE FULL=Y FILE=E

    第五步:最近增量导入F:

    imp system/manager inctype=RESTORE FULL=Y FILE=F

    二、 冷备份

    冷备份发生在数据库已经正常关闭的情况下,当正常关闭时会提供给我们一个完整的数据库。冷备份时将关键性文件拷贝到另外的位置的一种说法。对于备份Oracle信息而言,冷备份时最快和最安全的方法。冷备份的优点是:

    1、 是非常快速的备份方法(只需拷文件)

    2、 容易归档(简单拷贝即可)

    3、 容易恢复到某个时间点上(只需将文件再拷贝回去)

    4、 能与归档方法相结合,做数据库“最佳状态”的恢复。

    5、 低度维护,高度安全。

    但冷备份也有如下不足:

    1、 单独使用时,只能提供到“某一时间点上”的恢复。

    2、 再实施备份的全过程中,数据库必须要作备份而不能作其他工作。也就是说,在冷备份过程中,数据库必须是关闭状态。

    3、 若磁盘空间有限,只能拷贝到磁带等其他外部存储设备上,速度会很慢。

    4、 不能按表或按用户恢复。

    如果可能的话(主要看效率),应将信息备份到磁盘上,然后启动数据库(使用户可以工作)并将备份的信息拷贝到磁带上(拷贝的同时,数据库也可以工作)。冷备份中必须拷贝的文件包括:

    1、 所有数据文件

    2、 所有控制文件

    3、 所有联机REDO LOG文件

    4、 Init.ora文件(可选)

    值得注意的使冷备份必须在数据库关闭的情况下进行,当数据库处于打开状态时,执行数据库文件系统备份是无效的。

    下面是作冷备份的完整例子。

    (1) 关闭数据库

    sqlplus /nolog sql>;connect /as sysdba sql>;shutdown normal;

    (2) 用拷贝命令备份全部的时间文件、重做日志文件、控制文件、初始化参数文件

    sql>;cp <file>; <backup directory>;

    (3) 重启Oracle数据库

    sql>;startup

    三、 热备份

    热备份是在数据库运行的情况下,采用archivelog mode方式备份数据库的方法。所以,如果你有昨天夜里的一个冷备份而且又有今天的热备份文件,在发生问题时,就可以利用这些资料恢复更多的信息。热备份要求数据库在Archivelog方式下操作,并需要大量的档案空间。一旦数据库运行在archivelog状态下,就可以做备份了。热备份的命令文件由三部分组成:

    1. 数据文件一个表空间一个表空间的备份。

    (1) 设置表空间为备份状态

    (2) 备份表空间的数据文件

    (3) 回复表空间为正常状态

    2. 备份归档log文件

    (1) 临时停止归档进程

    (2) log下那些在archive rede log目标目录中的文件

    (3) 重新启动archive进程

    (4) 备份归档的redo log文件

    3. 用alter database bachup controlfile命令来备份控制文件

    热备份的优点是:

    1. 可在表空间或数据库文件级备份,备份的时间短。

    2. 备份时数据库仍可使用。

    3. 可达到秒级恢复(恢复到某一时间点上)。

    4. 可对几乎所有数据库实体做恢复

    5. 恢复是快速的,在大多数情况下爱数据库仍工作时恢复。

    热备份的不足是:

    1. 不能出错,否则后果严重

    2. 若热备份不成功,所得结果不可用于时间点的恢复

    3. 因难于维护,所以要特别仔细小心,不允许“以失败告终”。



 [微软用户1]是不是可以将这写需要在cmd情况下输入的语句及要分批备份的数据分别做成可执行exe 程序,安装在服务器端,这样,我们就可在操作系统下通过“系统工具“中的”任务计划“设置某时间运行相应的备份exe文件,达到自动备份的目的。

 [微软用户2]在操作系统下通过“系统工具“中的”任务计划“来实现自动

(2)实现Oracle异地数据自动备份方案

相关命令

文中主要用到三个命令,这里先单独介绍一下:

export: 将数据库中数据备份成一个二进制系统文件,它有三种模式: 用户模式、表模式、整个数据库模式。还可分为三种备份类型:完全型、积累型、增量型。本文以整个数据库模式下的完全型为例说明。export使用格式为:exp userid file。


其中:userid的用法为username/userpassword,即Oracle中的用户名/口令。userid必须为exp的第一个参数,file指备份文件所放位置及名称。


ftp: 一般情况下可通过交互方式实现两台主机间的数据传输,即需要手工输入目标主机的IP地址、用户名、口令等。但是当用户使用ftp命令时,系统将会先在该用户的注册目录中寻找.netrc文件,并首先执行该文件。这样,我们可以通过编写一个.netrc的文件来达到自动备份的目的。要注意该文件必须命名为.netrc,且必须存放在启动ftp命令主机上的用户注册目录里。

ftp常用选项:

-i:进行多文件传送时关闭交互提示;

-n:在连接之后不进行自动登录。

本文使用“-i”选项,以关闭交互提示。

crontab: cron是一个永久进程,它由/etc/rc.local启动执行。cron检查/var/spool/cron/crontabs/目录中的文件,找到所要执行的任务和执行任务的时间,并自动完成。该目录中文件由crontab命令建立。用户所建立的crontab文件存于/var/spool/cron/crontabs中,其文件名与用户名一致,本文使用crontab的用户为Oracle,所建立的文件名也为Oracle。

cron使用者的权限记载在下列两个文件中: /usr/var/adm/cron/cron.deny和/usr/var/adm/cron/cron.allow。前面的文件中所列的用户不允许使用crontab命令;后一文件中所列的用户允许使用crontab命令。crontab命令的常用格式为:

crontab -l:显示用户的crontab文件的内容;

crontab -r:从crontabs目录中删除用户的crontab文件;

crontab -e:编辑用户的crontab文件。

crontab文件每行中有6个字段,前5个为时间设定段,第6个为所要执行的命令。时间段分别为: minutes、hours、day of month、month、day of week,字段之间用空格或Tab分开。字段如果为“*”,表示该字段在所有可能的取值范围内取值; 如果一个字段是由连字符隔开的两个数字,表明命令可以在两个数字之间的范围内执行。


备份数据库

设定数据库的拥有者为Oracle,用户名为mistest,其口令为test,新建备份目录为/export/home/oracle/backup。建立一个命名为testbackup的备份文件,文件内容如下:

  ORACLE-HOME=/export/home/oracle/815;export ORACLE-HOME

 

  ORACLE-SID=ora815;export ORACLE-SID

 

  rm /export/home/oracle/backup/*

 

  rq=丶date +“%m%d”丶

 

  /export/home/oracle/815/bin/exp mistest/test file=/export/home/oracle

 

  /backup/exp$rq.dmp log=/exoport/home/oracle/backup/exp$rq.log

说明:前两句对Oracle数据库初始化,第3条语句清空备份目录,第4条语句建立一个取当前日期的变量,以便在最后一条语句的备份文件名里含有当前日期信息。 testbackup编写完成后,用“chmod +x testbackup”命令授予它可执行权限。


异地传输

在备份主机里建立一个备份目录:/data/oradata/newbackup, 在本地主机Oracle用户的注册目录/export/home/oracle里建立一个.netrc文件。设定好备份主机的IP地址,备份主机上的用户为oraclebk, 口令为testbk2。.netrc文件内容为:

  machine x.x.x..x

 

  login oraclebk

 

  password testbk2

 

  macdef init

 

  bin

 

  lcd /export/home/oracle/backup

 

  cd /data/oradata/backup

 

  mput *

 

  bye

说明: 前3条语句完成在备份主机上的登录,第4条语句定义一个名为init的宏,第5条语句表示以二进制传输,第6条语句表示进入本地工作目录,第7条语句表示进入备份主机目录,第8条语句完成将本地主机/export/home/oracle/backup目录下的所有文件传输至备份主机/data/oradata/backup目录下,最后一条语句退出ftp会话进程。.netrc文件编写完成后,用命令“chmod 600 .netrc”使该文件只能被该用户所访问。


自动执行

我们以oracle用户登录本地主机,用“crontab -e”编写crontab文件用以启动自动备份进程。oracle文件内容如下:

  10 23 * * * /export/home/oracle/testbackup

 

  30 23 * * * ftp -i x.x.x.x  

说明:第1条语句指定每天自动在23点10分执行对数据库的备份,第2条语句指定每天自动在23点半启动ftp,将备份文件传输到备份主机(备份主机为符合语句中指定IP地址的主机)。


Oracle文件只能在Oracle用户名下用“crontab -e”命令来编辑。编辑完成后,可以在用“crontab-l”命令来查看crontab文件内容,同时在/var/spool/cron/crontabs目录下查看是否增加了一个Oracle文件。

至此,本地主机可以每天定时备份数据库,并定时把备份数据传到备份主机。这样,较好地实现了Oracle数据异地自动备份,本地主机如果有什么故障,数据有了可靠备份,同时,在一定程度上也减轻了系统管理人员烦琐、重复的备份工作。


4 系统备份解决方案

接下来我们将描述系统备份的解决方案,备份的核心是管理和策略的问题。当灾难发生时,可以容忍多长时间来恢复数据?恢复哪些数据?恢复到哪个时间点的数据?针对设计院的实际情况我们把备份分为操作系统备份,数据库备份,设计文件备份三个部分。由于前面集中存储中每台服务器都扩充了270G的空间,所以我们采用操作系统本机备份。数据库,设计文件本机异机双备。

操作系统方面因为对服务器的管理比较严所以没有出现过中毒和崩溃的情况,因此计划设计10天备份一次,保留三个版本。采用的软件是操作系统自带的“备份”和“任务计划”功能。这两个功能是比较成熟的。Windows将"备份向导"集成到"任务计划程序"服务中,有助于计划备份作业。 “任务计划”在每次启动Windows时启动并在后台运行,并按照在创建任务时指定的时间启动计划的每个任务。

数据库的备份我们采用SQL Server 2000自带的备份功能,这个功能已经能很好的进行用户自定义的备份并达到我们的要求。在SQL Server对象资源管理器中,单击服务器名称展开服务器树。再展开管理选项可以看到里面的“数据库维护计划”。新建一个维护计划,首先是选择需要创建维护计划的数据库,可以是全部数据、系统数据库、用户数据库或自定义数据库,然后可以选择更新数据优化信息,这个主要是为了提高性能防止随着索引页和数据页的填充更新所需的时间越来越长,之后可以选择检查数据库的完整性,指定数据库备份计划,指定备份的磁盘目录,指定事务日志备份计划及报表等。根据向导可以很方便快捷的建立维护计划。


设计文件的备份我们使用Second Copy这个软件。这是一个专门为Windows设计的备份软件,它能够将数据文件备份到其他的目录,磁盘或者网络上的其他计算机。可设定每隔几分钟(或是几小时、几天)自动执行一次备份工作,并依据指定的时间间隔在后台作业,自动将重要的文件或是整个文件夹备份,若是备份整个文件夹,甚至可以选择只备份某种文件类型。除了进行简单的复制,该软件还可以将要备份的文件压缩到Zip文件,以及使源文件夹和目标文件夹保持同步。借助向导的帮助,可以很快很容易地完成任务的设置和更改。它能够在系统后台运行,不需要用户的干预。因此,只要设置一次,永远都会在另外一个地方拥有自己数据的备份。我们选择这个软件的主要原因是它可以对整个目录进行备份并保持文件原有的格式,比一些需要转换格式的软件方便多了。

以上是我们对三类系统的备份策略,Windows自带的系统备份和SQL Server自带的数据库备份功能已能满足我们的要求,Second Copy是个价廉物美的软件,所以这一块的投入可以说非常少。



oracle 数据库调优
Oracle数据库服务器是整个系统的核心,它的性能高低直接影响整个系统的性能,为了调整Oracle数据库服务器的性能,主要从以下几个方面考虑

  ◆1、调整操作系统以适合Oracle数据库服务器运行 Oracle数据库服务器很大程度上依赖于运行服务器的操作系统,如果操作系统不能提供最好性能,那么无论如何调整,Oracle数据库服务器也无法发挥其应有的性能。

  1.1 为Oracle数据库服务器规划系统资源

  据已有计算机可用资源, 规划分配给Oracle服务器资源原则是:尽可能使Oracle服务器使用资源最大化,特别在Client/Server中尽量让服务器上所有资源都来运行Oracle服务。

  1.2 调整计算机系统中的内存配置

  多数操作系统都用虚存来模拟计算机上更大的内存,它实际上是硬盘上的一定的磁盘空间。当实际的内存空间 不能满足应用软件的要求时,操作系统就将用这部分的磁盘空间对内存中的信息进行页面替换,这将引起大量的磁盘I/O操作,使整个服务器的性能下降。为了避 免过多地使用虚存,应加大计算机的内存。

  1.3 为Oracle数据库服务器设置操作系统进程优先级

  不要在操作系统中调整Oracle进程的优先级,因为在Oracle数据库系统中,所有的后台和前台数据库服务器进程执行的是同等重要的工作,需要同等的优先级。所以在安装时,让所有的数据库服务器进程都使用缺省的优先级运行。

  ◆2、调整内存分配

  Oracle数据库服务器保留3个基本的内存高速缓存,分别对应3种不同类型的数据:库高速缓存,字典 高速缓存和缓冲区高速缓存。库高速缓存和字典高速缓存一起构成共享池,共享池再加上缓冲区高速缓存便构成了系统全程区(SGA)。SGA是对数据库数据进 行快速访问的一个系统全程区,若SGA本身需要频繁地进行释放、分配,则不能达到快速访问数据的目的,因此应把SGA放在主存中,不要放在虚拟内存中。内 存的调整主要是指调整组成SGA的内存结构的大小来提高系统性能,由于Oracle数据库服务器的内存结构需求与应用密切相关,所以内存结构的调整应在磁 盘I/O调整之前进行。

  2.1 库缓冲区的调整

  库缓冲区中包含私用和共享SQL和PL/SQL区,通过比较库缓冲区的命中率决定它的大小。要调整库缓 冲区,必须首先了解该库缓冲区的活动情况,库缓冲区的活动统计信息保留在动态性能表v$librarycache数据字典中,可通过查询该表来了解其活动 情况,以决定如何调整。Select sum(pins),sum(reloads) from v$librarycache; Pins列给出SQL语句,PL/SQL块及被访问对象定义的总次数;Reloads列给出SQL 和PL/SQL块的隐式分析或对象定义重装载时在库程序缓冲区中发生的错误。如果sum(pins)/sum(reloads) ≈0,则库缓冲区的命中率合适;若sum(pins)/sum(reloads)>1, 则需调整初始化参数 shared_pool_size来重新调整分配给共享池的内存量。

  2.2 数据字典缓冲区的调整

  数据字典缓冲区包含了有关数据库的结构、用户、实体信息。数据字典的命中率,对系统性能影响极大。数据 字典缓冲区的使用情况记录在动态性能表v$librarycache中,可通过查询该表来了解其活动情况,以决定如何调整。Select sum(gets),sum(getmisses) from v$rowcache; Gets列是对相应项请求次数的统计;Getmisses 列是引起缓冲区出错的数据的请求次数。对于频繁访问的数据字典缓冲区,sum(getmisses)/sum(gets)<10%~15%。若大于 此百分数,则应考虑增加数据字典缓冲区的容量,即需调整初始化参数shared_pool_size来重新调整分配给共享池的内存量。

  2.3 缓冲区高速缓存的调整

  用户进程所存取的所有数据都是经过缓冲区高速缓存来存取,所以该部分的命中率,对性能至关重要。缓冲区高速缓存的使用情况记录在动态性能表v$sysstat中,可通过查询该表来了解其活动情况,以决定如何调整。

  Select name,value from v$sysstat

  where name in ('dbblock gets','consistent gets','physical reads');

  dbblock gets和consistent gets的值是请求数据缓冲区中读的总次数。physical reads的值是请求数据时引起从盘中读文件的次数。从缓冲区高速缓存中读的可能性的高低称为缓冲区的命中率,计算公式:

  Hit Ratio=1-(physical reds/(dbblock gets+consistent gets))如果Hit Ratio<60%~70%,则应增大db_block_buffers的参数值。db_block_buffers可以调整分配给缓冲区高速缓存 的内存量,即db_block_buffers可设置分配缓冲区高速缓存的数据块的个数。缓冲区高速缓存的总字节数=db_block_buffers的 值*db_block_size的值。 db_block_size 的值表示数据块大小的字节数,可查询 v$parameter 表:select name,value from v$parameter where name='db_block_size'; 在修改了上述数据库的初始化参数以后,必须先关闭数据库,在重新启动数据库后才能使新的设置起作用。

  ◆3、调理磁盘 I/O

  磁盘的I/O速度对整个系统性能有重要影响。解决好磁盘I/O问题,可显著提高性能。影响磁盘I/O的性能的主要原因有磁盘竞争、I/O次数过多和数据块空间的分配管理。

  为Oracle数据库服务器创建新文件时,不论是表空间所用的数据文件还是数据事务登录所用的日志文 件,都应仔细考虑数据库服务器上的可用磁盘资源。如果服务器上有多个磁盘,则可将文件分散存储到各个可用磁盘上,减少对数据库的数据文件及事务日志文件的 竞争,从而有效地改善服务器的性能。对于不同的应用系统都有各自的数据集,应当创见不同的表空间分别存储各自应用系统的数据,并且尽可能的把表空间对应的 数据文件存放在不同的磁盘上,这种从物理上把每个应用系统的表空间分散存放的方法,可以排除两个应用系统竞争磁盘的可能性。数据文件、事务日志文件分别存 放在不同的磁盘上,这样事务处理执行的磁盘访问不妨碍对相应的事物日志登记的磁盘访问。如果有多个磁盘可用,将两个事物日志成员放在不同的磁盘驱动器上, 就可以消除日志文件可能产生的磁盘竞争。应把一个应用的表数据和索引数据分散存放不同表空间上,并且尽量把不同类型的表空间存放在不同磁盘上,这样就消除 了表数据和索引数据的磁盘竞争。

  ◆4、调整数据库服务器的回滚段

  回滚段是一个存储区域,数据库使用该存储区域存放曾经由一个事务更新或删除的行的原始数据值。如果用户 要回滚一个事务所做的改变,那么数据库就从回滚段中读回改变前的数据并使该事务影响的行改变为它们的原状态。回滚段控制着数据库处理事务的能力,因而在数 据库成功中起着关键性的作用,不管数据库的其它部分设计得多好,如果它设计得不合理,将会严重影响系统的性能。建立和调整回滚段的原则如下。

  4.1 分离回滚段

  分离回滚段是指单独为回滚段创建一个以上的表空间,使回滚段与数据字典、用户数据、索引等分离开来。由 于回滚段的写入与数据和索引的写入是并行进行的,因此将它分离出来可以减少I/O争用。如果回滚段与数据不分离,倘若要某个表空间脱机或撤消,那么在该表 空间中的各个回滚段没有全部脱机之前,不能将这个表空间脱机或撤消。而一旦该表空间不可用,则该表空间中的所有回滚段也不能使用,这将浪费所有分配的磁盘 空间。所以,独立回滚段可使数据库管理变得容易。回滚段的经常性收缩,使得表空间的自由块更容易形成碎片。分离回滚段可以减少数据库表空间的碎片产生。

  4.2 创建不同大小的回滚段群

  对于一些联机事物处理,他们一般是频繁地对少量数据进行修改,创建许多小的回滚段对之有利。每一个事物 的入口项只能限于一个回滚段,回滚段应该充分大以容纳一个完整的事物处理,因此对一些较大型事物,需要较大型的回滚段。极个别脱机处理事物会产生大量的回 滚信息,这时需要一个特大号的回滚段来处理。根据这些理论,在Oracle数据库服务器中针对上述3种事物处理创建三组:小事物组、较大事物组、特大事物 组等大小不同的回滚段群,并且将之分散到3个不同的表空间上,群内大小相同,应能满足该组事物处理的最大要求。


原创粉丝点击