【DATAGUARD 学习】使用duplicate 创建物理standby 数据库

简介:

使用手工建立物理standby 多少有些费事,利用oracle提供的duplicate 可以简单的完成创建物理standby 的工作!
一 环境:同一台主机
 主库 orcl  备库 orcldg

二 使用rman 备份主库
C:\Documents and Settings\Administrator>rman target /
复管理器: Release 11.1.0.6.0 - Production on 星期一 9月 20 10:56:30 2010
Copyright (c) 1982, 2007, Oracle.  All rights reserved.
连接到目标数据库: ORCL (DBID=1256563399)
RMAN>backup database format 'f:\backup\full_%U.bak';
     ......
RMAN>sql 'alter system switch logfile'
     ......
RMAN>backup archivelog all;
     ......
RMAN>
三 为备库建立参数文件,密码文件 ,配置监听文件
 1 备库的参数文件:
orcl.__db_cache_size=339738624
orcl.__java_pool_size=12582912
orcl.__large_pool_size=4194304
orcl.__oracle_base='F:\ORCL'#ORACLE_BASE set from environment
orcl.__pga_aggregate_target=209715200
orcl.__sga_target=473956352
orcl.__shared_io_pool_size=0
orcl.__shared_pool_size=109051904
orcl.__streams_pool_size=0
*.audit_file_dest='F:\ORCL\admin\orcldg\adump'
*.audit_trail='db'
*.compatible='11.1.0.0.0'
*.control_files='D:\oracle\orcldgdata\control01.ctl','D:\oracle\orcldgdata\control02.ctl','D:\oracle\orcldgdata\control03.ctl'
*.db_block_size=8192
*.db_domain=''
*.db_name='orcl'
*.db_unique_name='orcl'
*.log_archive_config='DG_CONFIG=(orcl,orcldg)'
*.log_archive_dest_1='LOCATION=F:\ORCL\archive1'
*.log_archive_dest_2='SERVICE=ORCLDG  ARCH VAILD_FOR=(ONLINE_LOGFILES,PRIMARY_ROLE) DB_UNIQUE_NAME= orcl'
*.log_archive_dest_state_2=defer
*.db_recovery_file_dest='F:\ORCL\flash_recovery_area'
*.db_recovery_file_dest_size=2147483648
*.diagnostic_dest='F:\ORCL'
*.dispatchers='(PROTOCOL=TCP) (SERVICE=orclXDB)'
*.memory_target=681574400
*.open_cursors=300
*.processes=150
*.remote_login_passwordfile='EXCLUSIVE'
*.sga_max_size=471859200
*.undo_management='AUTO'
*.undo_tablespace='UNDOTBS1'
#-------  角色转变-------
*.FAL_SERVER=ORCLDG
*.FAL_CLIENT=ORCL
*.DB_FILE_NAME_CONVERT='F:\ORCL\oradata\orcl','D:\oracle\orcldgdata'
*.LOG_FILE_NAME_CONVERT='F:\ORCL\oradata\orcl','D:\oracle\orcldgdata'
*.STANDBY_FILE_MANAGEMENT=AUTO

密码文件这里使用的是主库拷贝。这样保存所有的密码一致

监听文件:
# listener.ora 的配置
  SID_LIST_LISTENER=
( SID_LIST=
(SID_DESC=
       (GLOGBAL_DBNAME=orcl)
       (ORCL_HOME= F:\ORCL\product\11.1.0\db_1)
       (SID_NAME=orcl)
)
(SID_DESC =
      (GLOBAL_NAME = orcldg)
      (ORACLE_HOME = F:\ORCL\product\11.1.0\db_1)
      (SID_NAME= orcldg)
    )
)
LISTENER =
  (DESCRIPTION_LIST =
    (DESCRIPTION =
      (ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1521))
      (ADDRESS = (PROTOCOL = TCP)(HOST = yql)(PORT = 1521))
    )
  )
# tnsnames.ora 的配置

ORCL =
  (DESCRIPTION =
    (ADDRESS = (PROTOCOL = TCP)(HOST = yql)(PORT = 1521))
    (CONNECT_DATA =
      (SERVER = DEDICATED)
      (SERVICE_NAME = orcl)
    )
  )

ORCLDG =
  (DESCRIPTION =
    (ADDRESS = (PROTOCOL = TCP)(HOST = yql)(PORT = 1521))
    (CONNECT_DATA =
      (SERVER = DEDICATED)
      (SERVICE_NAME = orcldg)
    )
  )

四 启动备库到nomount
ORCLDG>startup nomount pfile='f:\initORCLDG.ora'
ORACLE 例程已经启动。

Total System Global Area  472887296 bytes                                      
Fixed Size                  1333956 bytes                                      
Variable Size             184550716 bytes                                      
Database Buffers          281018368 bytes                                      
Redo Buffers                5984256 bytes     

五 利用duplicate创建standby 数据库                                 

C:\Documents and Settings\Administrator>set oracle_sid=orcl
C:\Documents and Settings\Administrator>rman target / auxiliary sys/yang@orcldg
恢复管理器: Release 11.1.0.6.0 - Production on 星期一 9月 20 10:56:30 2010
Copyright (c) 1982, 2007, Oracle.  All rights reserved.
连接到目标数据库: ORCL (DBID=1256563399)
已连接到辅助数据库: ORCL (未装载)
RMAN> duplicate target database for standby;
启动 Duplicate Db 于 20-9月 -10
使用目标数据库控制文件替代恢复目录
分配的通道: ORA_AUX_DISK_1
通道 ORA_AUX_DISK_1: SID=152 设备类型=DISK
内存脚本的内容:
{
   restore clone standby controlfile;
   sql clone 'alter database mount standby database';
}
正在执行内存脚本
启动 restore 于 20-9月 -10
使用通道 ORA_AUX_DISK_1
通道 ORA_AUX_DISK_1: 正在开始还原数据文件备份集
通道 ORA_AUX_DISK_1: 正在还原控制文件
通道 ORA_AUX_DISK_1: 正在读取备份片段 F:\ORCL\FLASH_RECOVERY_AREA\ORCL\AUTOBACKU
P\2010_09_20\O1_MF_S_730205638_69FM6GN0_.BKP
通道 ORA_AUX_DISK_1: 段句柄 = F:\ORCL\FLASH_RECOVERY_AREA\ORCL\AUTOBACKUP\2010_0
9_20\O1_MF_S_730205638_69FM6GN0_.BKP 标记 = TAG20100920T105358
通道 ORA_AUX_DISK_1: 已还原备份片段 1
通道 ORA_AUX_DISK_1: 还原完成, 用时: 00:00:01
输出文件名=D:\ORACLE\ORCLDGDATA\ORCLDG01.CTL
输出文件名=D:\ORACLE\ORCLDGDATA\ORCLDG02.CTL
输出文件名=D:\ORACLE\ORCLDGDATA\ORCLDG03.CTL
完成 restore 于 20-9月 -10
sql 语句: alter database mount standby database
内存脚本的内容:
{
   set newname for tempfile  1 to  "D:\ORACLE\ORCLDGDATA\TEMP01.DBF";
   switch clone tempfile all;
 set newname for datafile  1 to "D:\ORACLE\ORCLDGDATA\SYSTEM01.DBF";
 set newname for datafile  2 to "D:\ORACLE\ORCLDGDATA\SYSAUX01.DBF";
 set newname for datafile  3 to "D:\ORACLE\ORCLDGDATA\UNDOTBS01.DBF";
 set newname for datafile  4 to "D:\ORACLE\ORCLDGDATA\USERS01.DBF";
 set newname for datafile  5 to "D:\ORACLE\ORCLDGDATA\EXAMPLE01.DBF";
   restore clone database;
}
正在执行内存脚本
正在执行命令: SET NEWNAME
临时文件 1 在控制文件中已重命名为 D:\ORACLE\ORCLDGDATA\TEMP01.DBF
正在执行命令: SET NEWNAME
正在执行命令: SET NEWNAME
正在执行命令: SET NEWNAME
正在执行命令: SET NEWNAME
正在执行命令: SET NEWNAME
启动 restore 于 20-9月 -10
使用通道 ORA_AUX_DISK_1
通道 ORA_AUX_DISK_1: 正在开始还原数据文件备份集
通道 ORA_AUX_DISK_1: 正在指定从备份集还原的数据文件
通道 ORA_AUX_DISK_1: 将数据文件 00001 还原到 D:\ORACLE\ORCLDGDATA\SYSTEM01.DBF
通道 ORA_AUX_DISK_1: 将数据文件 00003 还原到 D:\ORACLE\ORCLDGDATA\UNDOTBS01.DBF
通道 ORA_AUX_DISK_1: 将数据文件 00004 还原到 D:\ORACLE\ORCLDGDATA\USERS01.DBF
通道 ORA_AUX_DISK_1: 正在读取备份片段 F:\BACKUP\FULL_0LLOC0IO_1_1.BAK
通道 ORA_AUX_DISK_1: 段句柄 = F:\BACKUP\FULL_0LLOC0IO_1_1.BAK 标记 = TAG20100920
T100511
通道 ORA_AUX_DISK_1: 已还原备份片段 1
通道 ORA_AUX_DISK_1: 还原完成, 用时: 00:00:45
通道 ORA_AUX_DISK_1: 正在开始还原数据文件备份集
通道 ORA_AUX_DISK_1: 正在指定从备份集还原的数据文件
通道 ORA_AUX_DISK_1: 将数据文件 00002 还原到 D:\ORACLE\ORCLDGDATA\SYSAUX01.DBF
通道 ORA_AUX_DISK_1: 将数据文件 00005 还原到 D:\ORACLE\ORCLDGDATA\EXAMPLE01.DBF
通道 ORA_AUX_DISK_1: 正在读取备份片段 F:\BACKUP\FULL_0MLOC0J0_1_1.BAK
通道 ORA_AUX_DISK_1: 段句柄 = F:\BACKUP\FULL_0MLOC0J0_1_1.BAK 标记 = TAG20100920
T100511
通道 ORA_AUX_DISK_1: 已还原备份片段 1
通道 ORA_AUX_DISK_1: 还原完成, 用时: 00:00:45
完成 restore 于 20-9月 -10
内存脚本的内容:
{
   switch clone datafile all;
}
正在执行内存脚本
数据文件 1 已转换成数据文件副本
输入数据文件副本 RECID=6 STAMP=730205918 文件名=D:\ORACLE\ORCLDGDATA\SYSTEM01.DBF
数据文件 2 已转换成数据文件副本
输入数据文件副本 RECID=7 STAMP=730205918 文件名=D:\ORACLE\ORCLDGDATA\SYSAUX01.DBF
数据文件 3 已转换成数据文件副本
输入数据文件副本 RECID=8 STAMP=730205918 文件名=D:\ORACLE\ORCLDGDATA\UNDOTBS01.DBF
数据文件 4 已转换成数据文件副本
输入数据文件副本 RECID=9 STAMP=730205918 文件名=D:\ORACLE\ORCLDGDATA\USERS01.DBF
数据文件 5 已转换成数据文件副本
输入数据文件副本 RECID=10 STAMP=730205918 文件名=D:\ORACLE\ORCLDGDATA\EXAMPLE01.DBF
完成 Duplicate Db 于 20-9月 -10
六 验证是否能够应用日志
主库上:
ORCL>select max(sequence#) from v$archived_log;
MAX(SEQUENCE#)                                                                 
--------------                                                                 
            21                                                                 
ORCL>ALTER SYSTEM SWITCH LOGFILE;
系统已更改。
ORCL>select max(sequence#) from v$archived_log;
MAX(SEQUENCE#)      
--------------             
            22
      
在备库上
ORCLDG>alter database recover managed standby database disconnect from session;

数据库已更改。
ORCLDG>select max(sequence#) from v$archived_log;
MAX(SEQUENCE#)  
--------------   
            22
  

相关文章
|
17天前
|
存储 JSON NoSQL
学习 MongoDB:打开强大的数据库技术大门
MongoDB 是一个基于分布式文件存储的文档数据库,由 C++ 编写,旨在为 Web 应用提供可扩展的高性能数据存储解决方案。它与 MySQL 类似,但使用文档结构而非表结构。核心概念包括:数据库(Database)、集合(Collection)、文档(Document)和字段(Field)。MongoDB 使用 BSON 格式存储数据,支持多种数据类型,如字符串、整数、数组等,并通过二进制编码实现高效存储和传输。BSON 文档结构类似 JSON,但更紧凑,适合网络传输。
55 15
|
3月前
|
SQL NoSQL 关系型数据库
数据库学习
【10月更文挑战第8天】
33 1
|
3月前
|
关系型数据库 MySQL Java
Django学习二:配置mysql,创建model实例,自动创建数据库表,对mysql数据库表已经创建好的进行直接操作和实验。
这篇文章是关于如何使用Django框架配置MySQL数据库,创建模型实例,并自动或手动创建数据库表,以及对这些表进行操作的详细教程。
114 0
Django学习二:配置mysql,创建model实例,自动创建数据库表,对mysql数据库表已经创建好的进行直接操作和实验。
|
3月前
|
Java 关系型数据库 MySQL
springboot学习五:springboot整合Mybatis 连接 mysql数据库
这篇文章是关于如何使用Spring Boot整合MyBatis来连接MySQL数据库,并进行基本的增删改查操作的教程。
357 0
springboot学习五:springboot整合Mybatis 连接 mysql数据库
|
3月前
|
Java 关系型数据库 MySQL
springboot学习四:springboot链接mysql数据库,使用JdbcTemplate 操作mysql
这篇文章是关于如何使用Spring Boot框架通过JdbcTemplate操作MySQL数据库的教程。
132 0
springboot学习四:springboot链接mysql数据库,使用JdbcTemplate 操作mysql
|
14天前
|
存储 Oracle 关系型数据库
数据库传奇:MySQL创世之父的两千金My、Maria
《数据库传奇:MySQL创世之父的两千金My、Maria》介绍了MySQL的发展历程及其分支MariaDB。MySQL由Michael Widenius等人于1994年创建,现归Oracle所有,广泛应用于阿里巴巴、腾讯等企业。2009年,Widenius因担心Oracle收购影响MySQL的开源性,创建了MariaDB,提供额外功能和改进。维基百科、Google等已逐步替换为MariaDB,以确保更好的性能和社区支持。掌握MariaDB作为备用方案,对未来发展至关重要。
39 3
|
14天前
|
安全 关系型数据库 MySQL
MySQL崩溃保险箱:探秘Redo/Undo日志确保数据库安全无忧!
《MySQL崩溃保险箱:探秘Redo/Undo日志确保数据库安全无忧!》介绍了MySQL中的三种关键日志:二进制日志(Binary Log)、重做日志(Redo Log)和撤销日志(Undo Log)。这些日志确保了数据库的ACID特性,即原子性、一致性、隔离性和持久性。Redo Log记录数据页的物理修改,保证事务持久性;Undo Log记录事务的逆操作,支持回滚和多版本并发控制(MVCC)。文章还详细对比了InnoDB和MyISAM存储引擎在事务支持、锁定机制、并发性等方面的差异,强调了InnoDB在高并发和事务处理中的优势。通过这些机制,MySQL能够在事务执行、崩溃和恢复过程中保持
42 3
|
14天前
|
SQL 关系型数据库 MySQL
数据库灾难应对:MySQL误删除数据的救赎之道,技巧get起来!之binlog
《数据库灾难应对:MySQL误删除数据的救赎之道,技巧get起来!之binlog》介绍了如何利用MySQL的二进制日志(Binlog)恢复误删除的数据。主要内容包括: 1. **启用二进制日志**:在`my.cnf`中配置`log-bin`并重启MySQL服务。 2. **查看二进制日志文件**:使用`SHOW VARIABLES LIKE 'log_%';`和`SHOW MASTER STATUS;`命令获取当前日志文件及位置。 3. **创建数据备份**:确保在恢复前已有备份,以防意外。 4. **导出二进制日志为SQL语句**:使用`mysqlbinlog`
56 2
|
28天前
|
关系型数据库 MySQL 数据库
Python处理数据库:MySQL与SQLite详解 | python小知识
本文详细介绍了如何使用Python操作MySQL和SQLite数据库,包括安装必要的库、连接数据库、执行增删改查等基本操作,适合初学者快速上手。
189 15
|
21天前
|
SQL 关系型数据库 MySQL
数据库数据恢复—Mysql数据库表记录丢失的数据恢复方案
Mysql数据库故障: Mysql数据库表记录丢失。 Mysql数据库故障表现: 1、Mysql数据库表中无任何数据或只有部分数据。 2、客户端无法查询到完整的信息。