oracle RMAN克隆数据库
2015-09-06 12:07
661 查看
本文为离线方式克隆
操作系统版本 : redhat5 x64
数据库版本 : Oracle 11.2.0.3 x64
数据库名 : dg1
数据库SID : dg1
db_unique_name: dg1
IP:192.168.58.5
hostname:oradg1
2. 备库环境
操作系统版本 : redhat5 x64
数据库版本 : Oracle 11.2.0.3 x64 (只安装oracle数据库软件,no netca dbca)
数据库名 : dg1
数据库SID : dg1
db_unique_name: dg1
IP:192.168.58.6
hostname:oradg2
$ vim /u01/app/oracle/product/11.2.0/db_1/network/admin/tnsnames.ora
(查看数据库是否处于归档模式中)若为非归档,则修改数据库归档模式。
如果数据库打开了,这时要关闭才行:
改为归档模式后,再查看:
为什么要修改为归档模式呢,因为会丢失数据的。不归档那就只有online redo的数据,没有archive redo的数据。
连接到target准备备份
开始备份:
等待时间可能比较久,成功后会有:完成 backup 于 05-9月 -15
之后会将备份拷贝到oradg2服务器上。
$ vim /u01/app/oracle/product/11.2.0/db_1/network/admin/tnsnames.ora
测试服务名连通性:
tnsping orcl
我的文件是:$ORACLE_HOME/dbs/initdg1.ora
su - oracle
启动nomount状态:
查看备库状态
重启数据库、开启监听,可以看到跟原来的库一样。
一.环境介绍
1. 主数据库环境操作系统版本 : redhat5 x64
数据库版本 : Oracle 11.2.0.3 x64
数据库名 : dg1
数据库SID : dg1
db_unique_name: dg1
IP:192.168.58.5
hostname:oradg1
2. 备库环境
操作系统版本 : redhat5 x64
数据库版本 : Oracle 11.2.0.3 x64 (只安装oracle数据库软件,no netca dbca)
数据库名 : dg1
数据库SID : dg1
db_unique_name: dg1
IP:192.168.58.6
hostname:oradg2
二.主数据库环境准备
1. 目标库环境重新创建口令文件
su - oracleorapwd file='/u01/app/oracle/product/11.2.0/db_1/dbs/orapwdg1' password=oracle entries=10 force=y
2. lisener监听文件
$ vim /u01/app/oracle/product/11.2.0/db_1/network/admin/listener.oraLISTENER = (DESCRIPTION_LIST = (DESCRIPTION = (ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1521)) (ADDRESS = (PROTOCOL = TCP)(HOST = oradg1)(PORT = 1521)) ) ) SID_LIST_LISTENER = (SID_LIST = (SID_DESC = (GLOBAL_DBNAME = dg1) (ORACLE_HOME = /u01/app/oracle/product/11.2.0/db_1) (SID_NAME = dg1) ) ) ADR_BASE_LISTENER = /u01/app
4. tnsname.ora
说明:dg1是主库的服务名$ vim /u01/app/oracle/product/11.2.0/db_1/network/admin/tnsnames.ora
TARGETORCL = (DESCRIPTION = (ADDRESS_LIST = (ADDRESS = (PROTOCOL = TCP)(HOST = oradg2)(PORT = 1521)) ) (CONNECT_DATA = (SERVICE_NAME = dg1) ) ) master = (DESCRIPTION = (ADDRESS_LIST = (ADDRESS = (PROTOCOL = TCP)(HOST = oradg1)(PORT = 1521)) ) (CONNECT_DATA = (SERVICE_NAME = dg1) ) ) secondary = (DESCRIPTION = (ADDRESS_LIST = (ADDRESS = (PROTOCOL = TCP)(HOST = oradg2)(PORT = 1521)) ) (CONNECT_DATA = (SERVER = DEDICATED) (SERVICE_NAME = dg1) ) )
5. 检查数据库模式:
sqlplus /nolog conn /as sysdba archive log list
(查看数据库是否处于归档模式中)若为非归档,则修改数据库归档模式。
startup mount alter database archivelog alter database open
如果数据库打开了,这时要关闭才行:
shutdown immediate
改为归档模式后,再查看:
SQL> archive log list Database log mode Archive Mode Automatic archival Enabled Archive destination USE_DB_RECOVERY_FILE_DEST Oldest online log sequence 8 Next log sequence to archive 11 Current log sequence 11
为什么要修改为归档模式呢,因为会丢失数据的。不归档那就只有online redo的数据,没有archive redo的数据。
6. rman备份主库
创建rman备份目录$ mkdir -p /u01/app/myrman
连接到target准备备份
$ rman target /
开始备份:
RMAN> backup format '/u01/app/myrman/fulldb_%d_%U' database include current controlfile plus archivelog delete input;
等待时间可能比较久,成功后会有:完成 backup 于 05-9月 -15
RMAN> quit
之后会将备份拷贝到oradg2服务器上。
三.目标库配置(要恢复的服务器)
1. 新建配置lisener监听文件
$ vim /u01/app/oracle/product/11.2.0/db_1/network/admin/listener.oraLISTENER = (DESCRIPTION_LIST = (DESCRIPTION = (ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1521)) (ADDRESS = (PROTOCOL = TCP)(HOST = oradg2)(PORT = 1521)) ) ) SID_LIST_LISTENER = (SID_LIST = (SID_DESC = (GLOBAL_DBNAME = dg1) (ORACLE_HOME = /u01/app/oracle/product/11.2.0/db_1) (SID_NAME = dg1) ) ) ADR_BASE_LISTENER = /u01/app
2. 新建tnsname.ora文件
说明:dg1是服务名,oradg1是master主机。$ vim /u01/app/oracle/product/11.2.0/db_1/network/admin/tnsnames.ora
TARGETORCL = (DESCRIPTION = (ADDRESS_LIST = (ADDRESS = (PROTOCOL = TCP)(HOST = oradg2)(PORT = 1521)) ) (CONNECT_DATA = (SERVICE_NAME = dg1) ) ) master = (DESCRIPTION = (ADDRESS_LIST = (ADDRESS = (PROTOCOL = TCP)(HOST = oradg1)(PORT = 1521)) ) (CONNECT_DATA = (SERVICE_NAME = dg1) ) ) secondary = (DESCRIPTION = (ADDRESS_LIST = (ADDRESS = (PROTOCOL = TCP)(HOST = oradg2)(PORT = 1521)) ) (CONNECT_DATA = (SERVER = DEDICATED) (SERVICE_NAME = dg1) ) )
测试服务名连通性:
tnsping orcl
3. 创建11g数据库基本目录
这里的具体路径,可能每个人的都不同不要照抄,要参考:$ORACLE_HOME/dbs/init+实例名.ora我的文件是:$ORACLE_HOME/dbs/initdg1.ora
su - oracle
mkdir -p /u01/app/admin/dg1/{adump,dpdump,pfile,scripts} mkdir -p /u01/app/oracle/oradata/dg1 mkdir -p /u01/app/fast_recovery_area/dg1/ mkdir -p /u01/app/archivelog
4. 拷贝主库口令文件(也可直接创建一个新的口令文件)
su -oracle$ cd /u01/app/oracle/product/11.2.0/db_1/dbs/ $ scp oracle@oradg1:/u01/app/oracle/product/11.2.0/db_1/dbs/orapwdg1 $ORACLE_HOME/dbs/
5. 拷贝rman备份
$ scp -r oracle@oradg1:/u01/app/myrman /u01/app/
6. 启动到nomount状态
些时先创建一个文件:$ echo 'db_name=dg1' > $ORACLE_HOME/dbs/initdg1.ora
启动nomount状态:
sqlplus /nolog SQL> conn / as sysdba; SQL> startup nomount;
四.开始在RMAN duplicate数据库
1. RMAN同进连接主库与备库
$ rman auxiliary /
2. 开始duplicate数据库
RMAN> duplicate target database to dg1 backup location '/u01/app/myrman/' nofilenamecheck;
3. 查看备库状态
说明:duplicate数据库之后,备库只是处于mount状态,查看备库状态。$ sqlplus / as sysdba
查看备库状态
SQL> select open_mode from v$database;
重启数据库、开启监听,可以看到跟原来的库一样。
五.结束语
些时复制数据已经成功了,可以用PL/SQL去试一下,登录密码跟原来的一样。两台机子的实例最好同名,不然会遇到很大麻烦.相关文章推荐
- 基于 Red Hat 的发行版 Oracle Linux 正式发布Oracle Linux 7.1
- Oracle Containers for J2EE远程安全漏洞(CVE-2014-0413)
- Oracle 10g R2不能使用EM的问题
- 表空间操作
- PreparedStatement中in子句的处理
- VMware下RedHat4.8_64位安装Oracle 10g RAC--简略脚本
- oracle sql日期比较
- 基于 Red Hat 的发行版 Oracle Linux 正式发布Oracle Linux 7.1
- OS block size和Oracle block size,查找OS Blocksize的方法
- oracle中创建数据库和表空间的几点总结
- 数据库自动备份脚本
- oracle的nvl函数的使用介绍
- 解决oracle用户连接失败的解决方法
- oracle的一些tips技巧
- Oracle 下的开发日积月累
- Oracle存储过程之数据库中获取数据实例
- Windows下ORACLE 10g完全卸载的方法分析
- Oracle 函数大全[字符串函数,数学函数,日期函数]第1/4页
- ORACLE LATERAL-SQL-INJECTION 个人见解