第6章:复制数据库之克隆打开的risenet数据库

/* 2008/05/28
*环境:Windows XP +Oracle10.2.0.1
*Oracle 备份与恢复培训教程 Kenny Smith,Stephan Haisley著 周琪、韩岷、李渝琳等译
*第二部分:用户管理的备份与恢复
*第6章:复制数据库
*/

练习6.1:克隆打开的risenet数据库
1、准备克隆数据库
为准备建立CLNE数据库创建所有路径:

C:\>set ORACLE_SID=CLNE

C:\>set ORACLE_BASE=G:\oracle

C:\>set ORACLE_HOME=G:\oracle\product\10.2.0\db_1

C:\>mkdir $ORACLE_ADMIN

C:\>mkdir G:\oracle\product\10.2.0\admin\clne

C:\>mkdir G:\oracle\product\10.2.0\admin\clne\pfile

C:\>mkdir G:\oracle\product\10.2.0\admin\clne\bdump

C:\>mkdir G:\oracle\product\10.2.0\admin\clne\cdump

C:\>mkdir G:\oracle\product\10.2.0\admin\clne\udump

C:\>mkdir G:\oracle\product\10.2.0\admin\clne\create

C:\>mkdir G:\oracle\product\10.2.0\oradata\clne

C:\>mkdir G:\oracle\product\10.2.0\oradata\clne\archive


拷贝参数文件
C:\>copy G:\oracle\product\10.2.0\admin\risenet\pfile\init.ora.4282008152024 G:\
oracle\product\10.2.0\admin\clne\pfile
已复制         1 个文件。

把init.ora.4282008152024改成init.ora,并打开该文件把"risenet"替换成"clne".

创建clne内部口令:
C:\>oradim -new -sid CLNE -intpwd CLNE
实例已创建。


2、备份打开的risenet数据库
C:\>sqlplus sys/mzl@risenet as sysdba

SQL*Plus: Release 10.2.0.1.0 - Production on 星期三 5月 28 17:34:00 2008

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


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

SQL> @e:\open_backup.sql


拷贝备份的数据文件到clne数据库
C:\>copy E:\backup\*.dbf  G:\oracle\product\10.2.0\oradata\clne


3、配置控制文件脚本

在risenet数据库
SQL> alter database backup controlfile to trace resetlogs;

数据库已更改。
生成一个包含了创建控制文件所需的全部命令的文件。文件位置由user_dump_dest参数确定。
SQL> select value from v$parameter where name='user_dump_dest';

VALUE
--------------------------------------------------------------------------------

G:\ORACLE\PRODUCT\10.2.0\ADMIN\RISENET\UDUMP

SQL> show parameter  user_dump_dest;

NAME                                 TYPE        VALUE
------------------------------------ ----------- ------------------------------
user_dump_dest                       string      G:\ORACLE\PRODUCT\10.2.0\ADMIN
                                                 \RISENET\UDUMP

把该*.trc文件拷贝到G:\oracle\product\10.2.0\admin\clne\create中,并重命名为create_control.sql
,删除注释,把create controlfile中的reuse改成set,改数据库名称


修改成后内容:
STARTUP NOMOUNT
CREATE CONTROLFILE SET DATABASE "CLNE" RESETLOGS  ARCHIVELOG
    MAXLOGFILES 16
    MAXLOGMEMBERS 3
    MAXDATAFILES 100
    MAXINSTANCES 8
    MAXLOGHISTORY 292
LOGFILE
  GROUP 1 'G:\ORACLE\PRODUCT\10.2.0\ORADATA\CLNE\REDO01.LOG'  SIZE 50M,
  GROUP 2 'G:\ORACLE\PRODUCT\10.2.0\ORADATA\CLNE\REDO02.LOG'  SIZE 50M,
  GROUP 3 'G:\ORACLE\PRODUCT\10.2.0\ORADATA\CLNE\REDO03.LOG'  SIZE 50M
DATAFILE
  'G:\ORACLE\PRODUCT\10.2.0\ORADATA\CLNE\SYSTEM01.DBF',
  'G:\ORACLE\PRODUCT\10.2.0\ORADATA\CLNE\UNDOTBS01.DBF',
  'G:\ORACLE\PRODUCT\10.2.0\ORADATA\CLNE\SYSAUX01.DBF',
  'G:\ORACLE\PRODUCT\10.2.0\ORADATA\CLNE\USERS01.DBF',
  'G:\ORACLE\PRODUCT\10.2.0\ORADATA\CLNE\RISE.DBF'
CHARACTER SET ZHS16GBK
;

 


最后把每个数据文件和重做日志文件拷贝到G:\ORACLE\PRODUCT\10.2.0\ORADATA\CLNE\

4、运行控制文件脚本
G:\oracle\product\10.2.0\admin\clne\pfile\initclne.ora复制到G:\oracle\product\10.2.0\db_1\database\initclne.ora,启动数据库,

默认到该目录寻找初始化参数

winnt>set oracle_sid=clne
winnt>cd G:\oracle\product\10.2.0\admin\clne\create
winnt>sqlplus /nolog
SQL>connect sys/mzl as sysdba
SQL> @create_control.sql
ORACLE 例程已经启动。

Total System Global Area  272629760 bytes
Fixed Size                  1248476 bytes
Variable Size              88081188 bytes
Database Buffers          176160768 bytes
Redo Buffers                7139328 bytes

控制文件已创建。


5、恢复克隆的数据库
用risenet的归档日志
SQL> alter database recover until cancel using backup controlfile;
alter database recover until cancel using backup controlfile
*
第 1 行出现错误:
ORA-00279: 更改 558001 (在 05/28/2008 17:35:06 生成) 对于线程 1 是必需的
ORA-00289: 建议:
G:\ORACLE\PRODUCT\10.2.0\FLASH_RECOVERY_AREA\CLNE\ARCHIVELOG\2008_05_29\O1_MF_1_

3_%U_.ARC
ORA-00280: 更改 558001 (用于线程 1) 在序列 #3 中

 

关闭数据库:shutdown immediate
启动数据库:startup mount

SQL> set logsource G:\oracle\product\10.2.0\flash_recovery_area\RISENET\ARCHIVE
OG\2008_05_28;
SQL> alter database recover until cancel using backup controlfile;
alter database recover until cancel using backup controlfile
*
第 1 行出现错误:
ORA-00275: 已经开始介质恢复

SQL> alter database recover cancel;
alter database recover cancel
*
第 1 行出现错误:
ORA-01547: 警告: RECOVER 成功但 OPEN RESETLOGS 将出现如下错误
ORA-01194: 文件 1 需要更多的恢复来保持一致性
ORA-01110: 数据文件 1: 'G:\ORACLE\PRODUCT\10.2.0\ORADATA\CLNE\SYSTEM01.DBF'


SQL> recover database using backup controlfile;
ORA-00279: 更改 558001 (在 05/28/2008 17:35:06 生成) 对于线程 1 是必需的
ORA-00289: 建议:
G:\ORACLE\PRODUCT\10.2.0\FLASH_RECOVERY_AREA\RISENET\ARCHIVELOG\2008_05_28\ARC00

003_0655921947.001
ORA-00280: 更改 558001 (用于线程 1) 在序列 #3 中


指定日志: {=suggested | filename | AUTO | CANCEL}
cancel
介质恢复已取消。

SQL> select file#,checkpoint_change#,last_change# from v$datafile;

     FILE# CHECKPOINT_CHANGE# LAST_CHANGE#
---------- ------------------ ------------
         1             558001
         2             558001
         3             558001
         4             558001
         5             558001

SQL> select name,checkpoint_change# from v$database;

NAME      CHECKPOINT_CHANGE#
--------- ------------------
CLNE                       0

SQL> select file#,checkpoint_change# from v$datafile_header;

     FILE# CHECKPOINT_CHANGE#
---------- ------------------
         1             558001
         2             558001
         3             558001
         4             558001
         5             558001

 

由上面表可见数据库的控制文件的scn为0,与数据文件的scn558001不一致。

在G:\oracle\product\10.2.0\db_1\database\initclne.ora上加个 _allow_resetlogs_corruption=true隐含参数
SQL> startup pfile='G:\oracle\product\10.2.0\db_1\database\initclne.ora';
ORACLE 例程已经启动。

Total System Global Area  272629760 bytes
Fixed Size                  1248476 bytes
Variable Size              88081188 bytes
Database Buffers          176160768 bytes
Redo Buffers                7139328 bytes
数据库装载完毕。
ORA-01113: 文件 1 需要介质恢复
ORA-01110: 数据文件 1: 'G:\ORACLE\PRODUCT\10.2.0\ORADATA\CLNE\SYSTEM01.DBF'

SQL> recover datafile 1;
完成介质恢复。

SQL> alter database open;
alter database open
*
第 1 行出现错误:
ORA-00603: ORACLE 服务器会话因致命错误而终止

关闭数据库,重起数据库正常:
SQL> startup
ORACLE 例程已经启动。

Total System Global Area  272629760 bytes
Fixed Size                  1248476 bytes
Variable Size              88081188 bytes
Database Buffers          176160768 bytes
Redo Buffers                7139328 bytes
数据库装载完毕。
数据库已经打开。

 


6、打开克隆的数据库,检查数据

SQL> select * from test;

        ID TIME
---------- --------------
         1 28-5月 -08

 

不用关闭risenet数据库,就克隆了clne数据库。

 

 

问答:如果希望改变一个以有数据库的名称,将不得不重新创建控制文件。在CREATE CONTROLFILE命令中哪

个关键字可以重新命名数据库?
A、SET DATABASE
B、RENAME DATABASE
C、CHANGE DATABASE
D、 COPY DATABASE

答案:A
 

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/12778571/viewspace-323015/,如需转载,请注明出处,否则将追究法律责任。

转载于:http://blog.itpub.net/12778571/viewspace-323015/

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值