首页 > 数据库 > Oracle > Oracle数据复制(理论)
u 复制数据库,既可以在本地也可以在与主数据库不同的主机上;
u 复制数据库建在本地时,需要和主数据库拥有不同的目录结构(必须修改相应的初始化参数:db_name,*_dest);
复制数据库建在其他主机时,要求其和主数据库拥有形同的OS平台;
u 复制数据库既可以包含主数据库的全部数据文件,也可以只包含部分;但必须包含主数据库的SYSTEM表空间和UNDO表空间的数据文件;
u 通过用户管理方式创建复制数据库时,需要将主数据库的数据文件拷贝到复制数据库的相应目录位置,并在建立控制文件时通过DATAFILE选项指定数据文件;
通过RMAN方式创建复制数据库时,使用SET NEWNAME命令设置复制数据库的相应数据文件;
u 通常需要拷贝主数据库的归档日志以便恢复应用(自己);
u 复制数据库的控制文件是通过配置初始化参数CONTROL_FILES来指定其位置和名称的;
u 通过用户管理方式创建复制数据库时,必须使用CREATE CONTROLFILE命令建立复制数据库的控制文件(将主数据库的控制文件备份到跟踪文件中,然后再在复制数据库上新建);
通过RMAN方式创建复制数据库时,RMAN会根据初始化参数CONTROL_FILES自动在相应位置建立控制文件;
u 复制数据库和主数据库在重做日志组和日志成员个数上可以与主数据库不同;
u 通过用户管理方式创建复制数据库时,日志组和日志组成员在建立控制文件时使用LOGFILE选项指定,且当执行SQL语句ALTER DATABASE OPEN RESETLOGS打开复制数据库时会自动建立日志成员;
通过RMAN方式创建复制数据库时,在执行DUPLICATE命令时通过LOGFILE选项可以指定日志成员;
u 通过用户管理方式建立复制数据库
5. 建立存放复制数据库相关文件的系统目录
6. 建立实例服务
a) 在Linux平台上使用ORAPWD工具为实例建立口令文件;
b) 在Windows平台上使用ORADIM工具建立实例的系统服务;
7. 建立初始化参数文件
连接到主数据库建立文本格式的初始化参数文件;
sql>create pfile=’…’ from spfile;
编辑文本格式的初始化参数文件;
建立服务器参数文件(目的是简化复制数据库的初始化管理);
4. 复制主数据库的数据文件到复制数据库的相应文件目录;
5. 以NOMOUNT方式启动复制数据库实例,并建立控制文件
a) 如果没有为复制数据库配置监听和网络服务名,则当启动复制数据库实例时需要设置ORACLE_SID环境变量;
b) 在将实例启动到NOMOUNT后,就可以通过CREATE CONTROLFILE命令创建控制文件(注意在用跟踪文件中的备份信息建立控制文件时要根据复制数据库的相关信息修改对应参数);
6. 恢复复制数据库
a) 因为从主数据库拷贝过来的数据文件状态不一致,因此需要通过恢复的方式来使复制数据库达到同步的状态;
b) 因为主数据库和复制数据库使用了不同的归档位置,所以为了应用主数据库的归档日志,可以使用set logsource选项指定要使用的归档目录;
c) 恢复复制数据库时必须指定USING BACKUP CONTROLFILE UNTIL CANCEL选项;
7. 打开数据库
a) 以RESETLOGS方式打开数据块;
8. 通过用户管理方式建立复制数据库小结
不管是本地还是其他服务器,建立复制数据库的方法都大同小异,其关键是修改初始化参数中的相关参数,剩余的工作就是用户管理方式的数据库恢复问题;
而且在其他服务器上建立复制数据库应该可以更简单,原因在于其初始化参数文件和文件所在目录的结构都可以一样,因此要修改的东西就非常少了;
u 通过RMAN方式创建复制数据库
1. 其方法前3个步骤都与通过用户管理方式建立复制数据库相同,即建立复制数据库的相应的目录结构、建立复制数据库的实例服务以及建立复制数据库的初始化参数文件;
2. (如果复制数据库和主数据库不在同一台主机上)将主数据库的备份文件、参数文件复制到数据库所在的主机。当复制备份集文件到复制数据库所在主机时,应该将备份集文件放到与主数据库备份集相同的OS目录下;当复制服务器参数文件时,应参考主数据库的参数文件存放位置,并注意服务器参数文件的文件名;
3. 接下来是启动实例到NOMOUNT
EXPORT ORACLE_SID=dupdb;
SQL>startup nomount
4. 接下来是建立复制数据库
当建立复制数据库时,必须同时连接到主数据库和复制数据库;
为了使得复制数据库的数据文件使用不同的目录,需要使用set newname命令指定数据文件的新位置;
为了指定重做日志的新位置和名称,需要在DUPLICATE命令后指定LOGFILE选项;
当执行完以下命令后,会依次建立复制数据库的数据文件、控制文件和重做日志文件,且在复制数据库建立完成之后,RMAN会自动打开复制数据库;
#export ORACLE_SID=dupdb
#rman target sys/oracle@demo auxiliary sys/oracle
RMAN>run{
set newname for datafile 1 to ‘oracledupsystem01.dbf’;
……
set newname for datafile 6 to ‘oracledupuser01.dbf’;
duplicate target database to dupdb logfile
‘oracledupredo01.log’ size 10m,
‘oracledupredo02.log’ size 10m,
‘oracledupredo03.log’ size 10m;
}
5. 完成
u 通过用户管理方式建立复制数据库和通过RMAN管理方式建立复制数据库的比较
|
|
用户管理方式 |
RMAN管理方式 |
|
相同之处 |
手工建立复制数据库的相应目录结构 手工建立复制数据库的实例服务 手工为复制数据库建立初始化参数文件 |
|
|
不同之处 |
用户管理方式备份数据库 |
RMAN方式备份数据库 |
|
无论本地还是其他主机都需要将主数据库备份的数据文件和初始化参数文件手工拷贝到复制数据库相应的目录下 |
本地,什么都不用拷贝 其他主机,将主数据库的备份集文件和初始化参数文件拷贝到复制数据库所在主机且和主数据库相同目录 |
|
|
启动复制数据库到NOMOUNT后首先手工创建控制文件 |
几乎是通过一条DUPLICATE命令就可以将建立复制数据库的数据文件、控制文件和重做日志工作完成,并且在完成后会自动打开复制数据库 |
|
|
手工恢复数据库 |
||
|
以RESETLOGS方式打开数据库 |
||
来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/14338195/viewspace-1052326/ ,如需转载,请注明出处,否则将追究法律责任。