备份恢复12——复制数据库与备用数据库

1、建立复制数据库:

分为用户管理的方式建立复制数据库和rman建立复制数据库。

对于用户管理的复制数据库来说,还可以分为本机建立复制数据库和不在本机建立复制数据库,但是这两个方式区别不大,建立 数据库的方法步骤与建库的方法基本类似。不写了,自己参照书  P257 页做吧。

重点写写rman管理的方式建立复制数据库吧,这个才是重点。当使用rman管理的方式建立复制数据库时,必须首先使用rman备份主数据库的多有数据文件、控制文件和归档日志。示例如下:C:\> rman target sys/liu1232 mynewdb nocatalog;

RMAN >backup database include current controlfile plus archivelog format='g:\backup\%d_%s.bak';

在rman环境中,建立复制数据库是使用duplicate命令来完成的。默认情况下,当建立复制数据库时,会包含主数据库的所有数据文件。如果不希望复制数据库包含只读表空间的数据文件,则在执行duplicate命令时可以带有skip readonly选项;如果要跳过特定的表空间,则执行duplicate命令时可以大有skip  tablespace选项;如果在不同主机上建立复制数据库,并且与主数据库采用完全相同的目录结构和文件名,则在执行duplicate命令时必须制定nofilenamecheck选项;如果要将复制数据库恢复到过去的时间点,则可以使用set
until命令完成duplicate 。。until命令。当使用rman管理的方式建立复制数据库时,需呀注意以下两点:

* skip tablespace选项不能指定system表空间和undo表空间。

* 当在不同 主机上建立复制数据库时,必须将rman备份集文件复制到目标主机的相同目录下。

在同一主机上建立rman管理的复制数据库:

下面以建立实例名和数据库名都是dupdb的复制数据库为例,说明建立的步骤:

1) 建立存放复制数据库各种相关文件的os目录:

> mkdir /tmp/oradata/dupdb

> mkdir /tmp/oradata/dupdb/bdump

> mkdir /tmp/oradata/dupdb/udump

> mkdir /tmp/oradata/dupdb/archive

2)建立复制数据库实例名:当在unix系平台上建立复制数据库时时,需要使用ORAPWD工具为实例建立口令文件;当在windows平台上建立复制数据库时,必须为复制数据库建立例程服务,使用oradim工具可以建立例程服务。下面以为复制数据库dupdb建立例程服务为例,说明建立例程服务的方法。实例如下:

c:\> oradim  -new  -sid dupdb  -intpwd  oracle

3)建立复制数据库实例的参数文件。可以在主库上使用create pfile命令为复制数据库建立文本参数文件,然后手工编辑相应的初始化参数,最后使用create spfile命令为复制数据库建立服务器参数文件。

SQL> create pfile = '$ORACLE_HOME/dbs/initdupdb.ora'  from spfile; ;

编辑文本参数initdupdb.ora。修改db_name  instance_name  service_names control_files *_dest 等参数。

建立服务器参数文件。SQL>create spfile = '$ORACLE_HOME/spfiledupdb.ora'  from pfile = '$ORACLE_HOME/inttdupdb.ora';

4)启动实例如果没有为复制数据库配置监听程序和网络服务名,那么当启动实例时,必须设置环境变量oracle_sid. 示例如下:

> set oracle_sid = dupdb

> sqlplus / as sysdba

SQL> startup nomount;

5)建立复制数据库。在启动的例程之后,就可以运行rman建立复制数据库了。注意,当建立复制数据库时,必须同时连接到主数据库和复制数据库实例。当连接主数据库时指定target选项;当连接到复制数据库时,指定auxiliary选项。为了使得复制数据库的数据文件使用不同的目录,需呀使用set newname命令指定数据文件的新位置;为了指定重做日志的新位置和名称,需要在duplicate命令后指定logfile选项。示例如下:

用rman在不同主机上建立复制数据库的方法与此基本类似,不赘述了。自己参考吧。

2、建立物理备用数据库:

1.data guard综述

dg由一个产品数据库和一个或多个备用数据库组成,并且这些数据库可以分布到不同地区,他们之间的互联是通过oracle net来完成的。

物理备用数据库简介:他具有与主数据库完全相同的物理副本,通过应用主数据库的重做数据,物理备用数据库与主数据库保持同步。当主数据库发生事务变化时,oracle会将重做数据写入到重做日志和归档日志。再将归档日志传送到物理备用数据库的所有主机之后,物理备用数据库可以直接应用这些事务变化,从而保持与主数据库的同步性。

逻辑备用数据库简介:注意物理备用数据库与主库具有完全相同的物理结构,而逻辑备用数据库的物理结构域主库的可以不同,当主数据库发生事务变化时,oracle会将重做数据写入到重做日志和归档日志。再将归档日志传送到逻辑备用数据库的所有主机之后,oracle会将重做数据转化为相应的sql语句,最终在逻辑备用数据库上执行sql语句。从而维持逻辑备用数据库与主库的同步性。

用户管理的方式建立物理备用数据库不说了。直接用rman建立吧。首先必须使用 rman备份主数据库的所有数据文件,并且必须建立备用 控制文件备份。

示例:

RMAN>  backup database plus archivelog format = '/home/oracle/rman/%d_%s.bak';

RMAN> backup current controlfile for standby format='/home/oracle/rman/%d_%s.bak';

如果将备库与主库放在同一个主机上,则必须为备库专门建立os目录,并且必须配置初始化参数db_file_name_convert 和 log_file_name_convbert 示例将会在同一主机上使用rman备份建立物理备用数据库standby3,。下面看具体步骤:

1)建立存放备用数据库的相关文件的os目录:

> mkdir  /home/oracle/rman

> mkdir  /home/oracle/rman/bdump

> mkdir  /home/oracle/rman/udump

> mkdir  /home/oracle/rman/archive

2)建立例程服务:

当在unix系平台上建立复制数据库时时,需要使用ORAPWD工具为实例建立口令文件;当在windows平台上建立复制数据库时,必须为复制数据库建立例程服务,使用oradim工具可以建立例程服务。下面以为复制数据库dupdb建立例程服务为例,说明建立例程服务的方法。实例如下:

orapwd file=$ORACLE_HOME/dbs/orapwmydb password=admin entries=5 force=y

c:\> oradim  -new  -sid dupdb  -intpwd  oracle

3)配置监听程序和网络服务名。主库和备库交互是通过oracle net来完成的,必须进行网络配置,为了使得监听程序可以监听主库demo和备库standby3,需要配置并重新启动监听程序;为了使得主库和备库可以交互访问,应该fenb 为主库和备库配置网络服务名,在下面的示例中,demo表示主库demo的网络服务名,standby3表示备用数据库standby3的网络服务名。

4)准备主数据库参数文件。当使用备用数据库时,需要将主数据库归档日志传送到备用数据库相应的目录。为了使得主库和备库可以正常运转,必须合理配置主库的初始化参数。因为某些初始化参数不能使用alter system命令直接修改,所以当该版主库的初始化参数时,应该首先使用create pfile命令建立文本参数文件,然后手工并将文件参数文件,最后使用create spfile重建服务器参数文件。具体步骤如下:

连接到主库,家里pfile:SQL> create pfile from spfile;

编辑省的pfile文件initdemo.ora,手工编辑相关初始化参数,

3、逻辑备用数据库:

如果,使用物理备用数据库,那么物理备用数据库会应用主数据库的所有重做数据;但如果使用逻辑备用数据库,那么逻辑备用数据库只会维护主数据库的部分方案,并且对于方案对象和数据类型有一些限制。

逻辑备用数据库可以用于降低主库的工作负载,如果主库的负载量很大,那么可以将数据统计,数据报表和执行查询等操作转移到逻辑备用数据库来完成,从而节省数据库的cpu和io开销。

确定 逻辑备用数据库所支持的数据库方案。当使用逻辑备用数据库时,逻辑备用数据库只会维护部分数据库方案。通过在主数据库上查询数据字典视图DBA_LOGSTDBY_SKIP,可以显示逻辑备用数据库要跳过的数据库方案。下面以显示逻辑备用数据库所支持的所有数据库方案,说明使用该数据字典视图的方法。示例如下:

SQL> select  username from dba_users where username not in (select owner from dba_logstdby_skip);

2、建立逻辑备用数据库

为了建立逻辑备用数据库,必须首先建立物理备用数据库。在建立了物理备用数据库之后,还应该应用所有的归档日志,以维持物理备用数据库的一致性。本次操作将使用之前建立的物理备库standby1为基础,物理备库的standby1的所有文件都存放在相应的目录中,为例使得该物理备库与主库保持同步,应该使得物理备库自动应用归档日志:

c:\> sqlplus sys/oracle@standby1 as sysdba

SQL> alter database recovery managed standby database cisconnect from session;

执行了以上命令之后,物理备库会自动应用归档日志,通过在备用数据库上查询动态性能视图v$archived_log,可以确定还未应用的归档日志。示例:

SQL > select name from v$archived_log where applied='no;

执行此句之后,如果还返回结果,那表示还存在尚未应用的归档日志;如果该语句不返回任何结果,则说明已经应用了所有的归档日志。接下来既可以开始建立逻辑备用数据库了,具体步骤如下:

1)激活主库和备库的补充日志特征。当执行dml操作时,oracle只会讲被修改列的的重做数据记载到重做日志。为了使得备用数据库能够正确的标识表行,必须激活补充日志特征,示例如下:

SQL> conn sys/oracle@demo as sysdba

SQL > alter database add supplemental log data(primary key , unique index ) columns; 

SQL> conn sys/oracle@standby1 as sysdba

SQL> alter database add supplemental log data (primary key , unique index ) columns;

通过在主库或者备库上查询动态性能视图v$database,可以确定是否激活了补充日志特征,示例如下:

SQL> select supplemental_log_data_pk  pk_log, supplemental_log_data_ui  ui_log  from v$database;

2)建立逻辑备用控制文件。当将物理备库转变为逻辑备库时,必须在主库上为连接备库建立逻辑备用控制文件。示例:

c:\> sqlplus sys/oracle@demo as sysdba

SQL> alter database create logical standby controlfile as 'd:\backup\control01.ctl' reuse;

3) 复制逻辑备用控制文件到备库。首先应该关闭备库,然后使用os命令cp复制逻辑备用控制文件,示例:

SQL> conn sys/oracle@standby1 as sysdba

SQL>shutdown immediate

SQL> ho cp d:\backup\control01.ctl  d:\standby1;

4)激活逻辑备库。在将逻辑备用控制文件复制到备用库的相应位置之后,装载逻辑备用数据库,然后应用归档日志,最后激活备用数据库,示例:

sqlplus sys/oracle@standby1 as sysdba

SQL> startup mount

SQL> alter database recover managed standby database disconnect from session;

SQL> alter database activate standby database;

5)修改逻辑备用数据库的数据库名。在激活了逻辑备库之后,为了防止主库和备库的相互影响,应该改变逻辑备库的数据库名称,改变数据库名可以使用dbnewid工具来完成,当改变逻辑备用数据库的数据库名时,要求逻辑备用数据库必须处于mount状态。示例:

如上所示,在运行了dbnewid工具之后,必须重新建立口令文件。为了重新建立口令文件,首先需要删除原有的口令文件,然后使用orapwd工具建立新口令文件。示例如下:

SQL>ho del %oracle_home%\database\pwdstandby1.ora

SQL>ho orapwd file=%oracle_home%\database\pwdstandby1.ora  password=oracle

6)改变参数文件的数据库名,在运行dbnewid工具之后,已经改变了所有数据文件和控制文件所记载的数据库名以及dbid,但是没有修改初始化参数db_name.因此,在执行dbnewd工具之后,dba必须修改初始化参数db_name.因为初始化参数DB_name不能使用alter system命令直接修改,所以,为了修改该参数,必须建立文本参数文件,然后手工修改文本参数文件,最后根据文本参数文件建立spfile,步骤如下:

7)启动逻辑备用数据库,并修改全局数据库名。在重新建立了口令文件,修改了初始化参数DB_NAME后,就可以启动逻辑备库了。在启动时,必须首先装载数据库,然后resetlogs选项打开逻辑备库。打开逻辑备库之后,修改其全局数据库名。示例:

SQL> conn sys/oracle@stanby1  as sysdba

SQL> startup mount

SQL>alter database open resetlogs;

SQL>alter database rename global_name to standby1;

8)为逻辑备用数据库增加临时文件。打开逻辑备库之后,为了防止在逻辑备库上排序错误,应该为其增加临时文件。通过查询数据字典视图dba_tablespaces,可以显示临时表空间名称;通过执行alter tablespace 。。。add tempfile 可以为临时表空间增加临时文件。示例:

SQL>select tablespace_name from dba_tablespaces where contents='TEMPORARY';

SQL> alter tablespace temp add  tempfile;

逻辑备用数据库的管理

1、开始sql apply

在建立了逻辑备用数据库之后,为了使得逻辑备用数据库与主数据库保持同步,必须应用sql操作。开始sql apply的示例如下:

SQL> alter database start logical standby apply;

当在逻辑备库上执行围炉操作时,可以停止应用sql,示例:

SQL> alter database stop logical standby apply;

2、显示已注册的归档日志

当主数据库上执行日志切换时,会将归档日志传送到逻辑备用数据库。通过在逻辑备用数据库上查询数据字典视图dba_logstdby_log可以显示已经注册的所有归档日志。示例:

SQL> conn sys/oracle@standby  as sysdba

SQL> select sequence#,applied from dba_logstdby_log;

sequence#用于标识已经被注册到逻辑备用数据库的日志序列号,applied用于标识归档日志是否应用(yes——已应用; no——未应用; current——正在应用)

3、检查是否正在应用重做数据。

通过在逻辑备用数据库上查询动态性能视图v$logstandby_stats,可以检查逻辑备用数据库是够正在应用重做数据。示例:

SQL> SELECT value  from  v$logstandby_stats  where  name='coordinator state';

value

------------

initializing

如上所示,initializing标识协调进程(coordinator process)正在初始化,初始化标识日志应用服务正在准备sql apply; applying表示正在应用sql。注意,如果查询该动态性能使它没有返回行,则表示没有启动sql apply。

4、检查sql  apply的进度。

通过在逻辑备用数据库上产销数据字典视图dba_logstdby_progress,可以监视 sql apply的进程。示例如下:

SQL> select applied_scn , newest_scn from dba_logstdby_progress;

applied_scn用于标记已经应用到的scn值,newest_scn用于标识罪行的scn值,注意,如果返回值不一致,则表述可能没有启动sql  apply。

5、验证数据变化

当启动sql apply之后,如果主数据库的相关表发生变化,并且被记载到归档日志,那么在逻辑备用数据库可以查看到数据库变化。示例如下:

SQL> conn sys/oracle@demo as sysdba

connnected

SQL> update scott.emp set sal = 1111 where empno=7788;

SQL>commit;

SQL> alter system archive log current;

SQL>conn sys/oracle@standby1 as sysdba

SQL> select sal from scott.emp where empno=7788;

sal

-----

1111

6、转变逻辑数据库为主数据库

当主库发生重大事故时,可以激活逻辑备用数据库,并将其转变为主库,在将逻辑备库转变为主库之后,该数据库就可以作为普通数据库使用了。下面以激活逻辑备库standby1为例,如下:

C:\>sqlplus sys/oracle@standby1 as sysdba

SQL> alter database stop logical stanby apply;

SQL> alter database activate logical standby database;

时间: 2024-11-03 18:04:00

备份恢复12——复制数据库与备用数据库的相关文章

《构建高可用VMware vSphere 5.X虚拟化架构》——2.6 vCenter Server数据库的备份恢复

2.6 vCenter Server数据库的备份恢复 vCenter Server所使用的数据库备份相当重要,一旦出现问题,vCenter Server将不能正常工作,所以日常备份工作是相当重要的,本节将针对vCenter Server两种数据库如何备份恢复进行详细介绍. 2.6.1 备份SQL Server数据库 本节实战操作将对2.4小节安装好的SQL Server 2008数据库进行备份操作,备份操作可以使用dsdbutil工具来完成,其具体操作如下. 第1步,进入到Windows Ser

[原创]RMAN备用数据库(逻辑dataguard)

  RMAN备用数据库 1.介绍几个新RMAN命令 INCLUDE CURRENT CONTROLFILE FOR STANDBY:在备份命令中包含一个备用控制文件,RMAN为了创建备用数据库必须在其备份中有一个备用控制文件. DUPLICATE TARGET DATABASE FOR STANDBY:创建一个副本数据库作为目标的备用数据库. DORECOVER:从目标数据库用归档日志备份恢复备用数据库.一旦备用数据库的创建完成,RMAN将对备用数据库应用主数据库中的所有归档日志,一直到RMAN

创建逻辑备用数据库

创建|数据|数据库 下面的是Logical Standby Database的配置步骤. (下面用到的一些文件的位置都是临时性的,还得做一定的修改) 将主数据库置为FORCE LOGGING模式.在主数据库创建之后做如下操作: SQL>ALTER DATABASE FORCE LOGGING;   确认主数据库是归档的并定义好本地归档.如下: SQL >ALTER SYSTEM SET LOG_ARCHIVE_DEST_1='LOCATION=e:\oracle\oradata\orcl\ar

使用reads on standby功能挖掘DB2备用数据库潜力

DB2® 高可用性灾难恢复 (High Availability Disaster Recovery, HADR) 是 IBM® DB2 for Linux®, UNIX®, and Windows® 的一种易于使用的数据http://www.aliyun.com/zixun/aggregation/11886.html">复制功能,它为部分和全面的站点故障提供了一种高可用性 (HA) 解决方案. DB2 for Linux, UNIX, and Windows 高可用性灾难恢复 (Hig

SQL数据库与oracle数据库镜像有什么不同对比_数据库其它

Oracle数据库与MSSQL数据操作上有很大的不同,但是,在镜像操作方面有类比的地方.这篇文章关于MSSQL数据库镜像在Oracle数据库中是如何实现的,它们之间存在哪些差异呢. 首先,微软SQL数据库中的镜像数据库类似于Oracle数据库中的备用数据库.我说的只是类似,确切的说,我们需要考虑不同数据库在自己体系中的差异.MSSQL作为一个实例来操作,一个实例包含几个数据库,你首先要登录一个实例,然后选择哪个数据库作用于该实例.而在Oracle数据库中,简单模式(忽略RAC)就只有一个数据库与

SYSTEM 表空间管理及备份恢复

--============================= -- SYSTEM 表空间管理及备份恢复 --=============================       SYSTEM表空间是Oracle数据库最重要的一个表空间,存放了一些DDL语言产生的信息以及PL/SQL包.视图.函数.过程等,称之为数据字典, 因此该表空间也具有其特殊性,下面描述SYSTEM表空间的相关特性及备份与恢复.        一.SYSTEM表空间的管理     1.建议不存放用户数据,避免用户错误导致

《循序渐进Oracle:数据库管理、优化与备份恢复》一一1.1 Oracle软件的获取与安装

1.1 Oracle软件的获取与安装 循序渐进Oracle:数据库管理.优化与备份恢复 在学习和接触Oracle数据库时,首先需要获取相关软件并安装创建数据库,本节简要介绍一下Oracle软件的获取与安装. 1.1.1 Oracle软件的获取 Oracle的软件可以从官方网站上下载,主要的网址链接为:http://www.oracle.com/us/products/database/index.html. 在这里可以找到Oracle数据库产品的详细信息,如图1-1所示. 注册一个OTN的账户后

php实现mysql备份恢复分卷处理的方法_php技巧

本文实例讲述了php实现mysql备份恢复分卷处理的方法.分享给大家供大家参考.具体分析如下: 分卷处理就是把握们要处理的数据分成一个个小文件进行处理了,这里我来给大家介绍一个php mysql备份恢复分卷处理类,实现mysql数据库分卷备份,选择表进行备份,实现单个sql文件及分卷sql导入. 分卷导入类及思路详解 数据库导入导出是一个后台必要拥有的功能,网上一搜,有很多关于数据库导入导出的,但基本上一个大的系统,包含了许多我们并不需要的,而且他们都是自己的后台的形式,我并不喜欢的是拿人家的东

DB2面向OLTP环境的物理数据库设计:数据库事务日志

数据库事务日志对于数据库恢复至关重要,也是设计高度可用的数据库解决方案的一个重要组成部分. 数据库日志使得从故障中恢复成为可能.它们还可以在 HADR 环境中同步主数据库和备用数据库. DB2 对每个数据库使用一组独立的日志文件. 所有数据库都有与自己有关联的日志.这些日志保留数据库变更的记录.如果数据库需要还原到最后一次完整离线备份之前的某个点,日志需要将数据前滚到故障点.DB2 数据库支持两种类型的数据库的日志:循环日志和归档日志. 循环日志 循环日志仅支持崩溃恢复,也就是说,如果 DB2