我们在一台主机上可以克隆出两个db_name相同的数据库,而将两个数据库同时启动起来。
我们要做的是将原有的数据库文件复制一份,由于文件的位置改变了,重点是要修改控制文件里的信息。
首先,我们打开已经存在的数据库,将获得控制文件创建的脚本文件:
SQL> alter database backup controlfile to trace as 'ctlbak';
如果转储整个控制文件,使用
SQL> alter database backup controlfile to ‘ctlfile.bak’;
获得的控制文件的创建脚本在$ORACLE_HOME/dbs目录下找到,打开这个文件我们可以看到创建控制文件的SQL语句,这个脚本文件我们要在创建克隆数据库的控制文件时候使用。
关闭原有的数据库。
在$ORACLE_HOME/dbs目录下创建克隆数据库的密码文件和参数文件。
bash-3.00$ orapwd file=orapwzxnm password=netnumen entries=5
bash-3.00$ cp spfileuep4x.ora spfilezxnm.ora
启动克隆数据库到nomount状态:
bash-3.00$ export ORACLE_SID=zxnm
bash-3.00$ sqlplus "/ as sysdba"
SQL*Plus: Release 10.2.0.1.0 - Production on Thu Jul 9 12:06:51 2009
Copyright (c) 1982, 2005, Oracle. All rights reserved.
Connected to an idle instance.
SQL> startup nomount;
ORACLE instance started.
Total System Global Area 2550136832 bytes
Fixed Size 1980808 bytes
Variable Size 536872568 bytes
Database Buffers 1996488704 bytes
Redo Buffers 14794752 bytes
我们查看一下再参数文件里记录的控制文件和位置的信息,然后改成克隆数据库的控制文件的位置。
SQL> show parameter control_file
NAME TYPE
------------------------------------ ----------------------
VALUE
------------------------------
control_file_record_keep_time integer
7
control_files string
/export/home/oracle/oradata/ue
p4x/control01.ctl, /export/hom
e/oracle/oradata/uep4x/control
02.ctl, /export/home/oracle/or
adata/uep4x/control03.ctl
SQL> alter system set control_files='/export/home/oracle/oradata/zxnm/control01.ctl' scope=spfile;
System altered.
下面我们要修改克隆数据库的db_unique_name(在9i中是lock_name_space)。
SQL> alter system set db_unique_name=zxnm scope=spfile;
System altered.
关闭数据库,重新打开数据库,再查看一下控制文件的信息。
SQL> show parameter control_file
NAME TYPE
------------------------------------ ----------------------
VALUE
------------------------------
control_file_record_keep_time integer
7
control_files string
/export/home/oracle/oradata/zx
nm/control01.ctl
我们看到,控制文件的位置已经更改过了。然后,我们根据刚才创建控制文件的脚本新建一个控制文件。
SQL> CREATE CONTROLFILE REUSE DATABASE "UEP4X" NORESETLOGS NOARCHIVELOG MAXLOGFILES 16
MAXLOGMEMBERS 3
MAXDATAFILES 100
MAXINSTANCES 8
MAXLOGHISTORY 292
LOGFILE
GROUP 1 '/export/home/oracle/oradata/zxnm/redo01.log' SIZE 50M,
GROUP 2 '/export/home/oracle/oradata/zxnm/redo02.log' SIZE 50M,
GROUP 3 '/export/home/oracle/oradata/zxnm/redo03.log' SIZE 50M
DATAFILE
'/export/home/oracle/oradata/zxnm/system01.dbf', '/export/home/oracle/oradata/zxnm/undotbs01.dbf', '/export/home/oracle/oradata/zxnm/sysaux01.dbf', '/export/home/oracle/oradata/zxnm/users01.dbf',
'/export/home/oracle/oradata/zxnm/example01.dbf', '/export/home/oracle/oradata/zxnm/uep.dbf', '/export/home/oracle/oradata/zxnm/UEP_CAF_FM.dbf', '/export/home/oracle/oradata/zxnm/UEP_PM.dbf',
'/export/home/oracle/oradata/zxnm/n3common.dbf', '/export/home/oracle/oradata/zxnm/IP_CM.dbf', '/export/home/oracle/oradata/zxnm/IP_PM.dbf', '/export/home/oracle/oradata/zxnm/IP_PM_INDEX.dbf'
CHARACTER SET ZHS16GBK;
Control file created.
我们可以看出,控制文件主要记录了日志文件和数据文件的信息。
然后就可以打开ORACLE_SID是zxnm和uep4x的数据库了。
本文介绍如何在同一台主机上克隆相同db_name的Oracle数据库,并详细解释了修改控制文件信息、创建克隆数据库控制文件的过程。
498

被折叠的 条评论
为什么被折叠?



