免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 1092 | 回复: 0

将oracle冷备份恢复到另外一个数据库实例中-实践过 [复制链接]

论坛徽章:
0
发表于 2011-12-22 08:54 |显示全部楼层
因更换服务器需要将Oracle数据库转移到另外台Oracle中。
说明:
   1、测试环境为:windows server2003 和 oracle 10g.
   2、2台服务器安装的程序目录一样,数据目录不一样。
特别借签了Afshen兄弟发的
实践将oracle冷备份恢复到另外一个数据库实例中操作文章。但是对于新手来说没有详细说明,且我的操作有点点差异。另外我是新手,只知道工作完成,但是不知道是否此操作是否对于数据库使用存在何影响,还需要后期开发使用在知道,希望能给大家提供对比作为操作中的参考。(因时间仓促未俯图)

1)在A数据库服务器操作:
将需要转移的数据库A冷备份,冷备份,我很简单。
开始->运行:sqlplus
sqlplus>conn SourDB sys as sysdba
sqlplus>shutdown immediate \\关闭数据库实例
在提示后ORACLE 例程已经关闭后,将对应A数据库中的e:\Oracle\oradata\SourDB数据库目录全部拷贝出来。
我的数据库目录内含REDO01.LOG 、REDO02.LOG、REDO03.LOG,SYSAUX01.DBF,SYSTEM01.DBF,TEMP01.DBF,UNDOTBS01.DBF,USERS01.DBF,ZJTEST.DBF
CONTROL01.CTL,CONTROL02.CTL,CONTROL03.CTL
疑惑:这3个控制文件后面发现没用上,新数据库重新生成控制文件就行了。因新接触不了解,哪位同学知道的,解疑下。

2)在B数据库(实例DestDB)
我的程序安装在x:\oracle\product\10.1.0\db_1\
数据目录在x:\oracle\database\DestDB(无子目录)
a、备份数据库B的控制文件
开始->运行:sqlplus
sqlplus>conn DetDB sys as sysdba
sqlplus>alter database backup controlfile to trace
sqlplus>show parameter spfile;  //显示spfile路径
sqlplus>create pfile from spfile; //备份数据库B的控制文件,生成的文件在x:\oracle\product\10.1.0\db_1\database\下的INITDestDB.ORA,备份吧。

b、sqlplus>shutdown immediate \\关闭数据库实例

删除数据目录在x:\oracle\database\DestDB的目录下的数据文件、控制文件和日志文件,反正我是目录下的都删除了。将数据库A备份的sourDB的*.log、*.DBF复制进去。

删除数据库B中的,x:\oracle\product\10.1.0\db_1\database\SPFILEDestDB.ORA控制文件

修改INITDestDB.ORA文件,删除*.control_files对应的字串

c、启动数据库B到nomount状态
开始->运行:sqlplus /nolog
sql>conn DestDB as sysdba
sql>startup nomount
   ORACLE 例程已经启动。
    Total System Global Area  171966464 bytes
    Fixed Size                   787988 bytes
    Variable Size             144964076 bytes
    Database Buffers           25165824 bytes
    Redo Buffers                1048576 bytes

\\使用下面的语句生成数据库B的新的控制文件,将DestDB改掉目录的数据库名就行了。
sql>CREATE CONTROLFILE
SET DATABASE "DestDB" RESETLOGS  ARCHIVELOG
    MAXLOGFILES 16
    MAXLOGMEMBERS 3
    MAXDATAFILES 100
    MAXINSTANCES 8
    MAXLOGHISTORY 454
LOGFILE
  GROUP 1 'x:\oracle\database\DestDB\REDO01.LOG'  SIZE 10M,
  GROUP 2 'x:\oracle\database\DestDB\REDO02.LOG'  SIZE 10M,
  GROUP 3 'x:\oracle\database\DestDB\REDO03.LOG'  SIZE 10M
DATAFILE
  'x:\oracle\database\DestDB\SYSTEM01.DBF',
  'x:\oracle\database\DestDB\UNDOTBS01.DBF',
  'x:\oracle\database\DestDB\SYSAUX01.DBF',
  'x:\oracle\database\DestDB\USERS01.DBF',
  'x:\oracle\database\DestDB\ZJTEST.DBF'
CHARACTER SET ZHS16GBK;

关闭数据库
sql>shutdown immediate

d、添加(参考备份的initsourDB.ORA) 
  *.control_files='x:\oracle\database\DestDB\control01.ctl','x:\oracle\database\DestDB\control02.ctl','x:\oracle\database\DestDB\control03.ctl'
新的控制文件,生成到目录x:\oracle\database\DestDB,修改x:\oracle\product\10.1.0\db_1\database\下的initsourDB.ORA,我看到我的目录内生成了3个控制文件,所以加了3个。

e、指定pfile参数启动,并生成spfile,完成恢复工作。
sql>startup
pfile="x:\oracle\product\10.1.0\db_1\database\initsourDB.ORA";
ORACLE 例程已经启动。
Total System Global Area  171966464 bytes
Fixed Size                   787988 bytes
Variable Size             144964076 bytes
Database Buffers           25165824 bytes
Redo Buffers                1048576 bytes
数据库装载完毕。
ORA-01589: 要打开数据库则必须使用 RESETLOGS 或 NORESETLOGS 选项

SQL> alter database open resetlogs;
数据库已更改。

SQL> create spfile from pfile;
文件已创建。

SQL> select count(*) from dba_users;
  COUNT(*)
----------
        30
SQL> select count(*) from dba_users where username='test';
  COUNT(*)
----------
         1

您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP