您的位置:首页 > 其它

Migrate database by cold backup method

2013-04-10 14:30 183 查看

一.背景:

预计到不久之后可能会有一次大规模的数据库同平台迁移的任务。据目前掌握的信息:

1. windows IA 下的迁移。

2. 版本为10.2.0.5,且大部分都是非归档模式。(有没有备份,尚不清楚,这些并不是我们管理的环境)。

3. 会用到冷备迁移。

应该是很简单的事情,那么更应该准确,高效的完成。

二.首先了解数据库的文件布局:

包括数据文件,临时文件,在线日志文件,归档日志文件,参数文件 (在windows下,可以推断出SID与服务项的名称,多多少少能预估到实例名重名的问题)

/***

select * from v$database;

select name from v$datafile;

select name from v$tempfile;

select member from v$logfile;

select * from v$archived_log

select * from v$parameter where name like '%name%' order by name;

select * from v$parameter where name like '%domain%' order by name;

select * from v$parameter where name like '%spfile%' --to check the SID and instance_name and "service item" in windows

DBCA建立数据库时:

第一行的意义是: db_name.db_domain (其中db_domain可不写) ,db_name 的值被sercive_names继承

第二行的意义是: SID ,其值被instance_name完整继承。 在win中此名称也完整体现在服务列表中。与spfile名称对应。 SID与instance_name是可以事后任意修改的。

编辑第一行时,UI会强制同步第二行字符。实际上第二行字符可以在编辑完第一行后,任意更改。

BONDSDFSDFSDFSDFSDFSDFSDFSDFSDFSDFSDFSDFDSFSDFSDFSDFSDFSDFSD1234 SID最长64个字符

***/

三. 步骤规划:

例如需要将A库迁移到B库,通常情况下只用关心数据文件目标路径,目前假定目录发生变化。当然目录不变的话,那就更简单了。

A库:

SQL> create pfile='c:\inittran1.ora' from spfile;

File created.

拷贝到B,删掉动态参数,修改 控制文件路径;并在B的ORACLE_BASE下建立admin目录与5个子目录

B库:

C:\Documents and Settings\Administrator>oradim -new -sid tran1

Instance created.

C:\Documents and Settings\Administrator>orapwd file=c:\oracle\product\10.2.0\db_2\database\PWDtran1.ora password=oracle entries=5

SID_LIST_LISTENER =

(SID_LIST =

(SID_DESC =

(GLOBAL_DBNAME = tran1)

(ORACLE_HOME = C:\oracle\product\10.2.0\db_2)

(SID_NAME = tran1)

)

)

此时可 startup nomount

再将A库shutdown,将control file,datafile,online redo 拷贝到B库路径下 (注意tempfile如果较大可以不拷贝)

使用脚本将控制文件中保存的数据文件、临时文件、在线日志文件路径转换,创建c:\renamelist.sql内容如下:

set serveroutput on
set feedback off verify off trimspool off
set heading off
set pagesize 0
set linesize 200
define dir='C:\oracle\oradata2\tran1\'                      --need modify!!  oradata2 was oradata1 in the past!
define renamefile='C:\renamefile.sql'                       --need modify!!
spool &renamefile
SELECT 'alter database rename file '''||NAME||''' to '||'''&dir'|| substr(NAME,instr(NAME,'\',-1,1)+1,100)||''';' FROM v$datafile order by 1;
select 'alter database rename file '''||member||''' to '||'''&dir'|| substr(member,instr(member,'\',-1,1)+1,100)||''';' from v$logfile  order by 1;
SELECT 'alter database rename file '''||NAME||''' to '||'''&dir'|| substr(NAME,instr(NAME,'\',-1,1)+1,100)||''';' FROM v$tempfile  order by 1;
spool off
@&renamefile
exec dbms_output.put_line('done! database is ready to open!');


alter database open

(tempfile会自动被创建:

Sun Apr 07 12:56:03 Pacific Daylight Time 2013

Re-creating tempfile C:\ORACLE\ORADATA2\TRAN1\TEMP01.DBF)

SQL> create spfile from pfile;

File created.

SQL> startup force
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: