克隆数据库

 

克隆数据库

这篇文章中将要建立前两篇文章中的实例数据库Practice的一个克隆数据库,我们将之命名为CLNE,我们这里的原数据与克隆的数据库兹同一台机器上,因此无需再进行Oracle安装,但一般情况下需要首先在克隆目标机器上安装Oracle软件,而且要与原数据库的Oracle具有相同的版本,具体步骤如下:

1、准备CLNE数据库

  、为CLNE数据库创建所需的路径,执行如下命令:

   export ORACLE_SID=CLNE

   export ORACLE_BASE=/app/oracle;

   export ORACLE_HOME=/app/oracle/;

   export ORACLE_DATA=/oracledata/$ORACLE_SID;

  export ORACLE_ADMIN=$ORACLE_BASE/admin/$ORACLE_SID;

   mkdir $ORACLE_ADMIN;

   mkdir $ORACLE_ADMIN/pfile;

   mkdir $ORACLE_ADMIN/bdump;

   mkdir $ORACLE_ADMIN/cdump;

   mkdir $ORACLE_ADMIN/udump;

   mkdir $ORACLE_ADMIN/create;

   mkdir $ORACLE_DATA;

   mkdir $ORACLE_DATA/archive;

  、准备参数文件和口令文件:

   如果在Linux上可以使用如下命令:

   cp $ORACLE_BASE/admin/PRACTICE/pfile/initPRACTICE.ora

     $ORACLE_BASE/admin/CLNE/pfile/initCLNE.ora;

   ln –s $ORACLE_BASE/admin/CLNE/pfile/initCLNE.ora

       $ORACLE_HOME/dbs/initCLNE.ora;

以上两条命令将PRACTICE数据库的默认参数文件拷贝了一份到CLNE数据库相应路径之下,作为CLNE数据库的默认参数文件,并且建立了CLNE数据库的默认参数文件到默认数据库参数文件的一个软连接。

如果是Windows系统,因为无法建立软连接,可以把PRACTICE数据库的默认参数文件,拷贝到CLNE相应位置,并在默认数据库创建一个新文件并包含IFILE关键字,所以可适用如下命令:

copy $ORACLE_BASE/admin/PRACTICE/pfile/initPRACTICE.ora

$ORACLE_BASE/admin/CLNE/pfile/initCLNE.ora;

notepad $ORACLE_HOME/dbs/initCLNE.ora > IFILE=d:/app/oracle/admin/CLNE/pfile/initCLNE.ora;

复制完参数文件之后,需要对CLNE数据库中的默认参数文件,即pfile下的initCLNE.ora进行修改,主要是将原来的有关PRACTICE的内容替换成CLNE,主要替换的内容如下,可能还会包含其它一些内容,视情况而定:

 db_name=CLNE

 instance_name=CLNE

 log_archive_dest_1=”location=/oradata/CLNE/archive”

 background_dump_dest=/app/oracle/admin/CLNE/bdump

 core_dump_dest=/app/oracle/admin/CLNE/udump

 control_files=(“/oradata/CLNE/control01.ctl”,

” /oradata/CLNE/control02.ctl”,” /oradata/CLNE/control03.ctl”)

本例中将在同一块磁盘的相同位置创建三个控制文件,但通常会在不同的存储位置创建控制文件,以便有效保护控制文件。

接下来要创建口令文件,以便在SQL*PLUS中以SYSDBA角色登陆数据库,以及进行远程管理。

orapwd file=$ORACLE_HOME/dbs/orapwCLNE password=CLNE entries=4;

如果在Windows系统中还需要为CLNE数据库创建一个服务,该服务将会命名为OracleServiceCLNE,使用如下命令:

oradim –new –sid CLNE intpwd CLNE;

2、  备份打开的PRACTICE数据库:

使用上一篇文章中的热备份脚本open_backup.sql,并做出如下修改,将dir用户变量值修改为/oradata/CLNE,并删除原先用于创建控制文件复制的命令行,因为当复制数据库时将会使用新的数据库名称,创建一个新的控制文件。修改完毕之后,以sys用户登录系统,并执行备份脚本,如果执行成功,将会在/oradate/CLNE文件夹下得到一个PRACTICE数据库的非一致性副本。

3、  配置控制文件脚本:

可是使用create controlfile命令对备份数据库创建一个新的专用配置文件。但是这个命令相当繁琐,如果适用这个命令那么将会需要一定工作量。但是我们有一条捷径可以采用,我们可以通过如下指令:

alter database backup controlfile to trace resetlogs;

通过这条指令,Oracle服务器会自动产生一个包含创建控制文件全部命令的脚本文件。该文件将会存放于user_dump_dest初始化参数所指定的文件中。可以使用如下查询来查找该参数所对应的文件目录:

select value from v$parameter where name=’user_dump_dest’;

   在这个文件目录下,按生成的时间日期值寻找到该文件,并经该文件拷贝到$ORACLE_BASE/admin/CLNE/create目录下,并重命名为create_control_file.sql。然后对该文件进行如下修改:

删除脚本中的注释行以及所有以#号开头的行。

create controlfile命令中的reuse关键字替换成set关键字,代表重新创建一个备用数据库适用的全新控制文件,并且改变数据库名称,而删除原数据库名称。

create controlfile命令中的所有PRACTICE替换成CLNE。所创建的控制文件被用于名为CLNE的数据库。

将每个数据文件和重做日志文件的路径由/oradate/PRACTICE改为/oradata/CLNE

最后修改后的文件片断类似如下所示:

 startup nomount

 create controlfile set database “CLNE” resetlogs archivelog

maxlogfiles 16

maxlogmembers 2

maxdatafiles 30

maxinstances 1

maxloghistory 226

 logfile

group 1 ‘/oradata/CLNE/redo03.log’ size 1M ,

group 1 ‘/oradata/CLNE/redo02.log’ size 1M ,

group 1 ‘/oradata/CLNE/redo01.log’ size 1M

datafile

‘/oradata/CLNE/system01.dbf’,

‘/oradata/CLNE/tools01.dbf’,

‘/oradata/CLNE/rbs01.dbf’,

‘/oradata/CLNE/temp01.dbf’,

‘/oradata/CLNE/users01.dbf’,

‘/oradata/CLNE/index01.dbf’,

‘/oradata/CLNE/users02.dbf’

Character set webiso8859-1;

4、  运行控制文件脚本:

export ORACLE_SID=CLNE

cd  /ORACLE_BASE/admin/$ORACLE_SID/create

sqlplus nolog

connect sys/CLNE as sysdba;

@create_control_file.sql;

注意这个脚本可以在任何一台使用NET8 sql*plus的客户端机器运行。

5、  恢复克隆数据库:

要对打开的各个从PRACTICE复制而来的数据文件进行恢复,因为这些文件是在PRACTICE数据库处于待开状态下进行备份的,当数据库的表空间处于备份模式时,数据文件的检查点SCN是不同的。因此每个数据文件都必须使用来自PRACTICE数据库的归档日志文件来进行恢复。如果使用的备份文件,是PRACTICE数据库在关闭状态下的备份产物,那么将不需要恢复,一位在关闭时数据库会自动同步数据文件,控制文件以及联机重做日志文件的SCN号,使数据库处于一致状态,所以不需要进行恢复。使用如下命令进行恢复:

set  logsource  /oradata/backup/archive;通过该指令指示CLNE数据库在恢复时,要在PRACTICE数据库的归档日志文件目录下寻找恢复使用的归档日志。

recover database using backup controlfile until cancel;通过该命令采用基于取消的恢复,实施恢复直道用完了所有需要使用的归档日志。当来自PRACTICE数据库的所有归档日志,全部被应用后,又如下两个选择:

(1)                PRACTICE数据库上强制日志切换,并将新归档的日志应用于CLNE数据库。这样PRACTICE数据库在日志切换前的所有改变都会应用到CLNE数据库上。之后可以在CLNE数据库恢复提示中键入cancel这样就可以打开CLNE数据库了。

(2)                关闭PRACTICE数据库,然后在CLNE数据库恢复提示中键入/oradata/PRACTICE/redo01.log(假设redo01.log为当前联机重做日志文件),这样将会把PRACTICE数据库的当前联机重做日志文件应用到CLNE数据库上。一位数据库是不断在写入联机重做日志文件的,所以不要在PRACTICE数据库打开时应用当前联机重做日志到CLNE数据库上。此时如果恢复完成将会看到,media recover complete

6、  打开克隆数据库:

当看到介质恢复成功的提示后,就可以使用resetlogs选项打开数据库了。

alter database open resetlogs;

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值