oracle数据库搬迁(由DBF表空间恢复数据)(非正常方法)
背景:
使用常规方法搬迁oracle数据库失败,故使用物理文件搬迁的方法进行数据库的搬迁,此方法为非正规方法,慎用!!!方法适用于dbf文件存在的数据库恢复。
需求分析:
数据库A搬迁至数据库B,常规方法不能导出数据库进行迁移和备份活动,数据库A可正常运行或只存在dbf文件和相关用户信息。
前期准备:
需要根据数据库A的版本在新虚拟机中建立数据库B,且数据库版本及相关配置尽量相同。
实际操作:
一、源数据库操作
1.备份源数据库控制文件
(1)登录数据库
使用dba身份登录
sqlplus / as sysdba

(2)备份控制文件到trace文件
alter database backup controlfile to trace;

(3)找到刚才备份的控制文件并进行备份
找到oracle的安装目录,如:D:\app\Administrator,一般位于D:\app\chadmini\diag\rdbms\orcl\orcl\trace内,按照时间降序即可,名称一般为(orcl1_ora_xxx.trc)。或者可以在安装目录,按修改时间降序,找到最近的trace文件。


2.备份数据库实例文件
(1)停止数据库
shutdown immediate 停止数据库实例。

(2)备份文件
备份一般位于目录下的D:\app\chadmini\oradata\orcl中的数据库实例文件夹,注意需要整个文件夹进行备份拷贝。


3.最终成果

二、新数据库操作
1.重建前准备
(1)重建源数据库的用户及表空间。
使用dba账户连接到orcl实例,创建表空间及用户,对用户授权。
sqlplus / as sysdba

创建源数据库同名用户及其表空间。因为源数据库的实例文件中,表空间名称为WXSL.DBF,用户为WXSL,故此处以此为例。
创建表空间
CREATE TABLESPACE WXSL
DATAFILE 'D:\app\Administrator\oradata\orcl\WXSL.DBF'
SIZE 1024M
AUTOEXTEND ON
NEXT 50M MAXSIZE 20480M
EXTENT MANAGEMENT LOCAL;
创建用户并绑定表空间
CREATE USER WXSL IDENTIFIED BY password
DEFAULT TABLESPACE WXSL;

(2)替换数据库实例文件
shutdown immediate 停止数据库实例

删除原有实例并把需要恢复的dbf拷贝到原目录下。

2.恢复数据库实例
(1)启动数据库,重建控制文件
启动数据库到nomount状态
startup nomount
打开数据库备份的控制文件,复制其中的CREATE CONTROLFILE部分语句来重建控制文件:

此处需要进行对应的修改,
1.NORESETLOGS NOARCHIVELOG改为 NORESETLOGS ARCHIVELOG
2.所有对应路径需要改为当前系统的实例路径。
更改完成后为:
CREATE CONTROLFILE REUSE DATABASE "orcl" NORESETLOGS ARCHIVELOG
MAXLOGFILES 16
MAXLOGMEMBERS 2
MAXDATAFILES 100
MAXINSTANCES 2
MAXLOGHISTORY 584
LOGFILE
GROUP 1 'D:\app\Administrator\oradata\orcl\REDO01.LOG' SIZE 50M BLOCKSIZE 512,
GROUP 2 'D:\app\Administrator\oradata\orcl\REDO02.LOG' SIZE 50M BLOCKSIZE 512,
GROUP 3 'D:\app\Administrator\oradata\orcl\REDO03.LOG' SIZE 50M BLOCKSIZE 512
-- STANDBY LOGFILE
DATAFILE
'D:\app\Administrator\oradata\orcl\SYSTEM01.DBF',
'D:\app\Administrator\oradata\orcl\SYSAUX01.DBF',
'D:\app\Administrator\oradata\orcl\UNDOTBS01.DBF',
'D:\app\Administrator\oradata\orcl\USERS01.DBF',
'D:\app\Administrator\oradata\orcl\WXSL.DBF'
CHARACTER SET ZHS16GBK
;

(2)恢复数据库
此处执行会有两个报错,可以忽略。
recover database
alter database open;

(3)重新配置监听
按照步骤一步一步配置即可。可以按照正常步骤重新配置,详情参考相关文章。






(4)新建临时表空间
查看当前表空间状态
select tablespace_name,file_name from dba_temp_files;

创建表空间
alter database default temporary tablespace temp;
增加临时表空间物理文件
alter tablespace TEMP add tempfile 'D:\app\Administrator\oradata\orcl\TEMP.DBF' size 200m autoextend on;
查询临时表空间物理文件是否创建成功
select tablespace_name,file_name from dba_temp_files;

恢复完成!!!
DAMO开发者矩阵,由阿里巴巴达摩院和中国互联网协会联合发起,致力于探讨最前沿的技术趋势与应用成果,搭建高质量的交流与分享平台,推动技术创新与产业应用链接,围绕“人工智能与新型计算”构建开放共享的开发者生态。
更多推荐



所有评论(0)