将oracle冷备份恢复到另外一个数据库实例中
因更换服务器需要将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(*)
----------
文章出处:飞诺网(www.diybl.com):http://www.diybl.com/course/7_databases/oracle/oraclejs/20110814/558381.html
1、首先安装一个全新的Oracle,包括服务名、SID,安装目录应最好与原来的ORACLE目录一致。
2、删除安装目录下所有的datafile、logfile.(oradata目录下的文件)
3、Copy原来的数据文件到oradata目录下,包括系统数据文件等。
4、alter database backup controlfile to trace; 备份当前数据库控制文件,控制文件一般备份到D:\oracle\PRoduct\10.2.0\admin\bstest\udump下,请注意最新一个就是了。
删除原控制文件,重新创建一个控制文件,请注意修改各个路径的位置,如下:
CREATE CONTROLFILE SET DATABASE "TEST" RESETLOGS NOARCHIVELOG
MAXLOGFILES 16
MAXLOGMEMBERS 3
MAXDATAFILES 100
MAXINSTANCES 8
MAXLOGHISTORY 292
LOGFILE
GROUP 1 'D:\ORACLE\PRODUCT\10.2.0\ORADATA\BSTEST\REDO01.LOG' SIZE 50M,
GROUP 2 'D:\ORACLE\PRODUCT\10.2.0\ORADATA\BSTEST\REDO02.LOG' SIZE 50M,
GROUP 3 'D:\ORACLE\PRODUCT\10.2.0\ORADATA\BSTEST\REDO03.LOG' SIZE 50M
-- STANDBY LOGFILE
DATAFILE
'D:\ORACLE\PRODUCT\10.2.0\ORADATA\BSTEST\SYSTEM01.DBF',
'D:\ORACLE\PRODUCT\10.2.0\ORADATA\BSTEST\UNDOTBS01.DBF',
'D:\ORACLE\PRODUCT\10.2.0\ORADATA\BSTEST\SYSAUX01.DBF',
'D:\ORACLE\PRODUCT\10.2.0\ORADATA\BSTEST\USERS01.DBF',
'D:\ORACLE\PRODUCT\10.2.0\ORADATA\BSTEST\TEST.DAT'
CHARACTER SET ZHS16GBK
;
注意修改数据文件的路径,如果是原数据文件,加上你原来所有的数据文件路径,如红色则是我原来的数据文件。
11、重启,启动到startup mount;然后
执行recover database;成功,
再执行alter database open;打开成功了。
12、现在已基本成功了,但是经过这样处理,为了安全起见,
最好用EXP先将数据全部导出,然后再重新安装ORACLE,然后再用IMP重新导入。
而当我导出时却出现错误:提示临时表空间为空。
用select name from v$tempfile;查看,确实为空,则:
如temp01.dbf已存在,则如下:
alter tablespace temp add tempfile 'D:\oracle\product\10.2.0\oradata\bstest\temp01.dbf'
否则:
alter tablespace temp add tempfile 'D:\oracle\product\10.2.0\oradata\bstest\temp01.dbf' size 10M;
再用EXP导出,成功!
还是打不开。出现以下错误:
alter database open RESETLOGS
*
ERROR 位于第 1 行:
ORA-01092: ORACLE 例程终止。强行断开连接
10、 将UNDO日志改为手动模式:
alter system set undo_management='manual' scope=spfile;
5、startup nomount;启动到nomount状态,然后执行以上控制文件重建语句。
6、执行recover database using backup controlfile until cancel;
输入cancel回车,后出现错误。
7、alter database open resetlogs;执行后出现以下错误。
ORA-01194: 文件1需要更多的恢复来保持一致性
ORA-01110: 数据文件 1: 'D:\ORACLE\ORADATA\ZQKH\SYSTEM01.DBF'
8、#系统文件出错,看到“一致性”自然想到 _allow_resetlogs_corruption的隐含命令
alter system set "_allow_resetlogs_corruption"=true scope=spfile;
9、alter database open RESETLOGS;
将oracle冷备份恢复到另外一个数据库实例中的更多相关文章
- 12C RAC中的一个数据库实例自动crash并报ORA-27157、ORA-27300等错误
rhel7.2上安装12C RAC数据库后,其中一个数据库实例经常会自动crash.查看alert日志发现以下错误信息: Errors in file /d12/app/oracle/diag/rdb ...
- Oracle基础(二) 创建数据库实例
Oracle中数据库也称为数据库实例,在Oracle在安装过程中可以选择创建数据库,也可以再安装之后再进行创建. 一般创建数据库可以使用图形界面方式和SQL指令的方式,由于SQL指令方式较为复杂,这里 ...
- 如何将Azure SQL 数据库还原到本地数据库实例中
原文:https://www.jerriepelser.com/blog/restore-sql-database-localdb/ 原文作者: Jerrie Pelser 译文:如何将Azure S ...
- oracle如何链接到另外一个数据库DB_LINK
命令创建从一个库连接的另外一个库: create database link DB_XXX --创建连接的名字connect to db_xxx --数据库名identified by DB-XXX ...
- Oracle 查看一个数据库实例下面所有的表大小
1. 因为 oracle有一些 lob字段 在user_extents 里面取出来的结果不是表名, 所以需要与user_lobs 表做关联查询才可以 本来想通过 关联查询来实现, 发现字表查询更简单 ...
- Ubuntu中开启MySQL远程访问功能,并将另一个数据库服务器中的数据迁移到新的服务器中
一.开启MyS远程访问功能 1.进入服务器输入netstat -an | grep 3306确认3306是否对外开放,MySQL默认状态下是不对外开放访问功能的.输入以上命令之后如果端口没有被开放就会 ...
- 查看当前mysql数据库实例中,支持的字符集有哪些,或者是否支持某个特定字符集
需求描述: 查看当前mysql实例中支持哪些字符集,过滤特定的字符集 操作过程: 1.通过show character set来进行查看 mysql> show character set; + ...
- Oracle 数据库实例简介
回到顶部 一:Oracle 数据库实例简介 1:数据库实例的启动顺序: 使用数据库其实就是访问内存.即:数据库实例.数据库的启动是顺序是 先 nomount ----> mount --- ...
- 【Oracle】Oracle安装配置、创建数据库实例及用户和连接
https://blog.csdn.net/wudiyong22/article/details/78904361 参考资料:https://www.cnblogs.com/hoobey/p/6010 ...
随机推荐
- SQL Server 维护计划实现数据库备份(策略实战)
一.背景 之前写过一篇关于备份的文章:SQL Server 维护计划实现数据库备份,上面文章使用完整备份和差异备份基本上能解决数据库备份的问题,但是为了保障数据更加安全,我们需要再次完善我们的备份计划 ...
- OpenCASCADE Conic to BSpline Curves-Parabola
OpenCASCADE Conic to BSpline Curves-Parabola eryar@163.com Abstract. Rational Bezier Curve can repre ...
- 将 instance 连接到 first_local_net - 每天5分钟玩转 OpenStack(82)
上一节 first_local_net 已经就绪,下面创建 instance 并将其连接到该网络. 将 instance 连接到 first_local_net launch 一个 instance, ...
- 应用程序框架实战十四:DDD分层架构之领域实体(基础篇)
上一篇,我介绍了自己在DDD分层架构方面的一些感想,本文开始介绍领域层的实体,代码主要参考自<领域驱动设计C#2008实现>,另外参考了网上找到的一些示例代码. 什么是实体 由标识来区分的 ...
- C#线程同步自动重置事件——AutoResetEvent
AutoResetEvent对象用来进行线程同步操作,AutoResetEvent类继承waitHandle类. AutoResetEvent对象有终止和非终止两种状态,终止状态是线程继续执行,非终止 ...
- T-Sql(六)触发器(trigger)
不知不觉讲到触发器了,一般我们做程序的很少接触到触发器,触发器的操作一般是DB人员来完成. 然而有的时候一些简单的业务需要我们自己去完成,不能每次都去麻烦DB人员,所以说,编程人员要全才,除了编程以为 ...
- DotNet项目中的一些常用验证操作
在项目中需要对用户输入的信息,以及一些方法生成的结果进行验证,一般在项目中较多的采用js插件或js来进行有关信息的校验,但是从项目安全性的角度进行考虑,可对系统进行js注入. 如果在后台对用户输入的信 ...
- 一言不合就动手系列篇一-仿电商平台前端搜索插件(filterMore)
话说某年某月某日,后台系统需要重构,当时公司还没有专业前端,由我负责前台页面框架搭建,做过后台系统的都知道,传统的管理系统大部分都是列表界面和编辑界面.列表界面又由表格和搜索框组成, 对于全部都是输入 ...
- js正则表达式语法
1. 正则表达式规则 1.1 普通字符 字母.数字.汉字.下划线.以及后边章节中没有特殊定义的标点符号,都是"普通字符".表达式中的普通字符,在匹配一个字符串的时候,匹配与之相同的 ...
- Python_Day_02 str内部方法总结
刚开始学习Python,看了一天的字符串内部方法,现在来总结一下. capitalize(self) 将一句话的首字母变大写,其他字母都变小 name = "love PyThon" ...