如何在同一个服务器上克隆出一个备用数据库

来源:互联网 发布:网络电玩城网址 编辑:程序博客网 时间:2024/05/16 15:01

在同一台数据库服务器上,我们可以启动多个具有相同db_name的数据库。

不过想同时打开具有相同db_name的数据库,还需要设置一个参数,db_unique_name(在ORACLE 10g中是db_unique_name,在9i中是lock_name_space)

我们现在从服务器上原有的数据库orcl 克隆出一个数据库HMX


1.将orcl文件夹的内容复制到HMX文件夹中

[oracle@localhost oradata]$ cp  -R  orcl  HMX

[oracle@localhost oradata]$ ll -l
total 8
drwxr-x--- 2 oracle oinstall 4096 Mar 19 22:16 HMX
drwxr-x--- 2 oracle oinstall 4096 Mar 19 19:56 orcl


[oracle@localhost oradata]$ cd  orcl
[oracle@localhost orcl]$ ll -l
total 1343464
-rw-r----- 1 oracle oinstall   7389184 Mar 19 21:19 control01.ctl
-rw-r----- 1 oracle oinstall   7389184 Mar 17 15:35 control01.ctl.bak
-rw-r----- 1 oracle oinstall   7389184 Mar 19 21:19 control02.ctl
-rw-r----- 1 oracle oinstall   7389184 Mar 19 21:19 control03.ctl
-rw-r----- 1 oracle oinstall 104865792 Mar 19 20:53 example01.dbf
-rw-r----- 1 oracle oinstall  52429312 Mar 19 20:53 redo01.log
-rw-r----- 1 oracle oinstall  52429312 Mar 19 20:38 redo02.log
-rw-r----- 1 oracle oinstall  52429312 Mar 19 20:38 redo03.log
-rw-r----- 1 oracle oinstall 304095232 Mar 19 20:53 sysaux01.dbf
-rw-r----- 1 oracle oinstall 513810432 Mar 19 20:53 system01.dbf
-rw-r----- 1 oracle oinstall  20979712 Mar 17 14:08 temp01.dbf
-rw-r----- 1 oracle oinstall 157294592 Mar 19 20:53 undotbs01.dbf
-rw-r----- 1 oracle oinstall 106176512 Mar 19 20:53 users01.dbf


[oracle@localhost oradata]$ cd HMX
[oracle@localhost HMX]$ ll -l
total 1343460
-rw-r----- 1 oracle oinstall   7389184 Mar 19 22:15 control01.ctl
-rw-r----- 1 oracle oinstall   7389184 Mar 19 22:13 control01.ctl.bak
-rw-r----- 1 oracle oinstall   7389184 Mar 19 22:13 control02.ctl
-rw-r----- 1 oracle oinstall   7389184 Mar 19 22:13 control03.ctl
-rw-r----- 1 oracle oinstall 104865792 Mar 19 22:15 example01.dbf
-rw-r----- 1 oracle oinstall  52429312 Mar 19 22:14 redo01.log
-rw-r----- 1 oracle oinstall  52429312 Mar 19 22:15 redo02.log
-rw-r----- 1 oracle oinstall  52429312 Mar 19 22:13 redo03.log
-rw-r----- 1 oracle oinstall 304095232 Mar 19 22:16 sysaux01.dbf
-rw-r----- 1 oracle oinstall 513810432 Mar 19 22:17 system01.dbf
-rw-r----- 1 oracle oinstall  20979712 Mar 19 22:15 temp01.dbf
-rw-r----- 1 oracle oinstall 157294592 Mar 19 22:13 undotbs01.dbf
-rw-r----- 1 oracle oinstall 106176512 Mar 19 22:14 users01.dbf


2.为HMX数据库创建参数文件,口令文件


[oracle@localhost dbs]$ ll  *orcl*

-rw-r----- 1 oracle oinstall     992 Feb 29 16:03 initorcl.ora
-rw-r----- 1 oracle oinstall    2048 Mar 12 19:00 orapwdorcl
-rw-r----- 1 oracle oinstall    3584 Mar 19 21:17 spfileorcl.ora

复制orcl数据库的参数文件

[oracle@localhost dbs]$ cp     spfileorcl.ora   spfileHMX.ora

重建口令文件

[oracle@localhost dbs]$ orapwd  file=orapwHMX  password=123 entries=5 force=y;


[oracle@localhost dbs]$ ll  *HMX*
-rw-r----- 1 oracle oinstall 2048 Mar 19 22:21 orapwHMX

-rw-r----- 1 oracle oinstall 3584 Mar 19 22:17 spfileHMX.ora


3.数据库到nomount状态,修改参数

[oracle@localhost udump]$ export  ORACLE_SID=HMX
[oracle@localhost udump]$ sqlplus / as sysdba

SQL> startup  nomount

SQL> alter system set  control_files='/opt/app/oracle/oradata/HMX/control01.ctl';
alter system set  control_files='/opt/app/oracle/oradata/HMX/control01.ctl'
                  *
ERROR at line 1:
ORA-02095: specified initialization parameter cannot be modified




SQL> alter system set  control_files='/opt/app/oracle/oradata/HMX/control01.ctl' scope=spfile;


System altered.


SQL> alter system set  db_unique_name=HMX scope=spfile;


System altered.


关闭数据库
SQL> shutdown immediate;
ORA-01507: database not mounted




ORACLE instance shut down.


4.重新创建控制文件

SQL> startup  nomount
ORACLE instance started.


Total System Global Area  285212672 bytes
Fixed Size                  1218992 bytes
Variable Size              92276304 bytes
Database Buffers          188743680 bytes
Redo Buffers                2973696 bytes


SQL>CREATE CONTROLFILE REUSE DATABASE "orcl" NORESETLOGS  ARCHIVELOG
    MAXLOGFILES 16
  2    3      MAXLOGMEMBERS 3
  4      MAXDATAFILES 100
  5      MAXINSTANCES 8
  6      MAXLOGHISTORY 292
  7  LOGFILE
  GROUP 1 '/opt/app/oracle/oradata/HMX/redo01.log'  SIZE 50M,
-- STANDBY LOGFILE
  GROUP 2   '/opt/app/oracle/oradata/HMX/redo02.log'  SIZE 50M,
  GROUP 3   '/opt/app/oracle/oradata/HMX/redo03.log'  SIZE 50M
-- STANDBY LOGFILE
DATAFILE
  '/opt/app/oracle/oradata/HMX/system01.dbf',
 14    '/opt/app/oracle/oradata/HMX/undotbs01.dbf',
 15    '/opt/app/oracle/oradata/HMX/sysaux01.dbf',
 16    '/opt/app/oracle/oradata/HMX/users01.dbf',
 17    '/opt/app/oracle/oradata/HMX/example01.dbf'
 18  CHARACTER SET WE8ISO8859P1;


Control file created.


打开数据库HMX
SQL> alter database  open;


Database altered.


好了,我们现在已经克隆好了一个数据库HMX


下面我们打开orcl数据库看看

[oracle@localhost udump]$ export  ORACLE_SID=orcl

[oracle@localhost udump]$ sqlplus / as sysdba


SQL*Plus: Release 10.2.0.1.0 - Production on Mon Mar 19 22:36:22 2012


Copyright (c) 1982, 2005, Oracle.  All rights reserved.




Connected to:
Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 - Production
With the Partitioning, OLAP and Data Mining options


SQL> alter system set  db_unique_name=orcl scope=spfile;


System altered.


SQL> shutdown immediate;
ORA-01507: database not mounted


ORACLE instance shut down.
SQL> 
SQL> startup
ORACLE instance started.


Total System Global Area  285212672 bytes
Fixed Size                  1218992 bytes
Variable Size              79693392 bytes
Database Buffers          201326592 bytes
Redo Buffers                2973696 bytes
Database mounted.
Database opened.



我们再同时打开HMX数据库

[oracle@localhost udump]$ export  ORACLE_SID=HMX
[oracle@localhost udump]$ sqlplus / as sysdba


SQL*Plus: Release 10.2.0.1.0 - Production on Mon Mar 19 22:38:11 2012


Copyright (c) 1982, 2005, Oracle.  All rights reserved.


Connected to an idle instance.


SP2-0158: unknown SET option "set"
SQL> startup
ORACLE instance started.


Total System Global Area  285212672 bytes
Fixed Size                  1218992 bytes
Variable Size              79693392 bytes
Database Buffers          201326592 bytes
Redo Buffers                2973696 bytes
Database mounted.
Database opened.


我们现在在同一台数据库服务器上建立了两个db_name相同数据库