目标:实现关闭状态下 将现有计算机A上的数据库db_a,改名成db_b,转移到另一台电脑上;
测试数据库:oracle10g
步骤:
1.在计算机A上查询数据库日志文件,数据文件等相关信息;
a 在计算机A上,用sys/密码 as sysdba 登陆;
b 查询数据文件存储路径
column name format a40;
select file#,name,satatus,fromv$datafile;
c 查询日志文件运行方式
archive log list;
d 生成pfile文件
create pfile from spfile;
2. 生成样本控制文件脚本;
alter database backup controlfile to trace;
show parameter user_dump_dest; --根据此路径找到 .trc文件打开之
其中类似下面的命令即为控制文件创建控制脚本:
STARTUP NOMOUNT
CREATE CONTROLFILE set DATABASE "db_b" RESETLOGS NOARCHIVELOG
--注意:其中的'set'和‘RESETLOGS’是自己改的,如果要改变实例名这两项必须要改
-- 其中db_b即为目标数据的实例名
MAXLOGFILES 16
MAXLOGMEMBERS 3
MAXDATAFILES 100
MAXINSTANCES 8
MAXLOGHISTORY 292
LOGFILE ----这是日志文件的存储路径,把下面的路劲改成目标地址
GROUP 1 'E:\ORACLE\PRODUCT\10.2.0\ORADATA\db_b\REDO01.LOG' SIZE 50M,
GROUP 2 'E:\ORACLE\PRODUCT\10.2.0\ORADATA\db_b\REDO02.LOG' SIZE 50M,
GROUP 3 'E:\ORACLE\PRODUCT\10.2.0\ORADATA\db_b\REDO03.LOG' SIZE 50M
-- STANDBY LOGFILE
DATAFILE --- ----这是数据文件的存储路径,把下面的路劲改成目标地址
'E:\ORACLE\PRODUCT\10.2.0\ORADATA\db_b\SYSTEM01.DBF',
'E:\ORACLE\PRODUCT\10.2.0\ORADATA\db_b\UNDOTBS01.DBF',
'E:\ORACLE\PRODUCT\10.2.0\ORADATA\db_b\SYSAUX01.DBF',
'E:\ORACLE\PRODUCT\10.2.0\ORADATA\db_b\USERS01.DBF',
'E:\ORACLE\PRODUCT\10.2.0\ORADATA\db_b\MED_DATA01.DBF'
CHARACTER SET ZHS16GBK
3. 关闭数据库,把数据库的数据文件,日志文件拷贝到目标地址;
shutdown immediate;
用操作系统命令把数据库的数据文件,日志文件拷贝到目标地址;
4.修改参数文件initdb_b.ora;
把其中的路径都换成目标数据库的路径;
数据库名换成目标数据库名;
5. 创建新的实例;
set oracle_sid=bd_b;--设置默认实例名
oradim -new -sid db_b -intpwd 123456 -startmode m ;--创建新的实例db_b,密码是123456,启动模式手动;
6.启动数据库
sqlplus/nolog
conn sys/123456 as sysdba;
create spfile from pfile='initdb_b.ora(所在路径)';
startup nomount;--启动实例
7.运行刚才创建的控制文件脚本create_ctl,重建控制文件;
8 alter database open resetlogs;打开数据库;
大功告成!
祝你成功!