问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

oracle 中不完全数据库恢复的问题

发布网友 发布时间:2022-05-01 11:43

我来回答

3个回答

懂视网 时间:2022-05-01 16:05

使用rman的level0的备份文件迁移oracle数据库-不完全恢复-20160811

将oracle数据库从一台机器A迁移到另外的一台机器B(同为linux平台),设置为不同的路径,不同的实例名

 

 

源端:

ORACLE_BASE=/u01/app/oracle

ORACLE_HOME=/u01/app/oracle/product/12.1.0.2/db_1

ORACLE_SID=SCPDB

数据文件位置:/u01/app/oracle/oradata/SCPDB/datafile/

 

 

目标端:

ORACLE_BASE=/u01/app/oracle

ORACLE_HOME=/u01/app/oracle/product/12.1.0.2/db_1

ORALCE_SID=SCPDB01

数据文件位置:/u01/app/oracle/oradata/SCPDB01/datafile/

 

 

把备份上传到目标端/u01/rmanSCPDB/

备份集信息:

[oracle@SCP01 /]$ ll /u01/rmanSCPDB/*

-rw-r--r--. 1 oracle oinstall 10256384 Aug 10 18:18 /u01/rmanSCPDB/ctl_auto_c-2612507248-20160712-00.bk

-rw-r--r--. 1 oracle oinstall 1089299968 Aug 10 18:18 /u01/rmanSCPDB/o12c_full_level0_SCPDB201607122erahka5_1_1.bk

-rw-r--r--. 1 oracle oinstall 2024849408 Aug 10 18:19 /u01/rmanSCPDB/o12c_full_level0_SCPDB201607122frahkan_1_1.bk

-rw-r--r--. 1 oracle oinstall 12288 Aug 10 18:19 /u01/rmanSCPDB/o12c_full_level0_SCPDB201607122grahkbg_1_1.bk

 

 

 

以下都在目标端使用oracle用户操作

 

cd $ORACLE_BASE

mkdir flash_recovery_area

mkdir -p admin/SCPDB01

cd admin/SCPDB01

mkdir {a,b,c,d,u}dump

 

 

 

 

 

开始恢复,此时恢复的实例名为SCPDB

export ORACLE_SID=SCPDB

rman target /

===================================================

==在rman启动数据库到nomount,                    ===

==还原spfile,使用nomount打开数据库                ===

==编辑一个最简单的pfile,只有db_name即可:        ===

==vi initSCPDB.ora                                    ===

==cat initSCPDB.ora                                ===

==db_name=SCPDB                                ===

==                                                ===

==也可以不用创建pfile,直接启动到nomount        ===

===================================================

RMAN> startup nomount

 

RMAN> restore spfile from ‘/u01/rmanSCPDB/ctl_auto_c-2612507248-20160712-00.bk‘;

RMAN> shutdown immediate

 

编辑参数文件,使参数中的相关路径变更为新路径

注意:ORACLE_SID=SCPDB

sqlplus / as sysdba

create pfile from spfile;

 

编辑生成的$ORACLE_HOME/dbs/initSCPDB.ora文件,

根据需要修改相应的参数,如增加sga大小等

其次修改pfile文件中的相关路径使之指向新的位置,即参数文件中所有含SCPDB目录的应修改为SCPDB01

*.audit_file_dest=‘/u01/app/oracle/admin/SCPDB01/adump‘

*.control_files=‘/u01/app/oracle/oradata/SCPDB01/controlfile/o1_mf_clozc9vs_.ctl‘,‘/u01/app/oracle/fast_recovery_area/SCPDB01/controlfile/o1_mf_clozcb1k_.ctl‘

*.log_archive_dest_1=‘location=/u01/archscp01‘

注意db_name参数不变,为原来的db_name,

待恢复完成后使用nid修改

使用pfile文件启动到nomount状态

 

 

目标端的一些参数

*.__data_transfer_cache_size=0

*.__db_cache_size=1808M

*.__java_pool_size=16M

*.__large_pool_size=32M

*.__oracle_base=‘/u01/app/oracle‘ # ORACLE_BASE set from environment

*.__pga_aggregate_target=800M

*.__sga_target=2384M

*.__shared_io_pool_size=80M

*.__shared_pool_size=432M

*.__streams_pool_size=0

*.pga_aggregate_target=790m

*.sga_target=2384M

 

源端的一些参数

SCPDB.__data_transfer_cache_size=0

SCPDB.__db_cache_size=15904800768

SCPDB.__java_pool_size=469762048

SCPDB.__large_pool_size=1140850688

SCPDB.__oracle_base=‘/u01/app/oracle‘#ORACLE_BASE set from environment

SCPDB.__pga_aggregate_target=6777995264

SCPDB.__sga_target=20333985792

SCPDB.__shared_io_pool_size=536870912

SCPDB.__shared_pool_size=2214592512

SCPDB.__streams_pool_size=0

 

 

 

---还原控制文件

 

export ORACLE_SID=SCPDB

 

rman target /

RMAN> startup nomount

RMAN> restore controlfile from ‘/u01/backup/ctl_auto_c-2612507248-20160809-00.bk‘;

---切换到mount状态,注,db_name务必保持原db_name,否则切换到mount时提示

---ORA-01103: database name ‘SCPDB‘ in control file is not ‘SCPDB01‘

 

RMAN> alter database mount;

RMAN> exit

 

 

 

---开启第二个窗口,修改日志文件位置

export ORACLE_SID=SCPDB

sqlplus / as sysdba

SQL> select ‘alter database rename file ‘‘‘||member||‘‘‘ to ‘‘‘||replace(member,‘SCPDB‘,‘SCPDB01‘)||‘‘‘;‘ from v$logfile;

 

 

alter database rename file ‘/u01/app/oracle/fast_recovery_area/SCPDB/onlinelog/redo08a.log‘ to ‘/u01/app/oracle/fast_recovery_area/SCPDB01/onlinelog/redo08a.log‘;

alter database rename file ‘/u01/app/oracle/oradata/SCPDB/onlinelog/redo08b.log‘ to ‘/u01/app/oracle/oradata/SCPDB01/onlinelog/redo08b.log‘;

alter database rename file ‘/u01/app/oracle/fast_recovery_area/SCPDB/onlinelog/redo09a.log‘ to ‘/u01/app/oracle/fast_recovery_area/SCPDB01/onlinelog/redo09a.log‘;

alter database rename file ‘/u01/app/oracle/oradata/SCPDB/onlinelog/redo09b.log‘ to ‘/u01/app/oracle/oradata/SCPDB01/onlinelog/redo09b.log‘;

alter database rename file ‘/u01/app/oracle/fast_recovery_area/SCPDB/onlinelog/redo05a.log‘ to ‘/u01/app/oracle/fast_recovery_area/SCPDB01/onlinelog/redo05a.log‘;

alter database rename file ‘/u01/app/oracle/oradata/SCPDB/onlinelog/redo05b.log‘ to ‘/u01/app/oracle/oradata/SCPDB01/onlinelog/redo05b.log‘;

alter database rename file ‘/u01/app/oracle/fast_recovery_area/SCPDB/onlinelog/redo06a.log‘ to ‘/u01/app/oracle/fast_recovery_area/SCPDB01/onlinelog/redo06a.log‘;

alter database rename file ‘/u01/app/oracle/oradata/SCPDB/onlinelog/redo06b.log‘ to ‘/u01/app/oracle/oradata/SCPDB01/onlinelog/redo06b.log‘;

alter database rename file ‘/u01/app/oracle/fast_recovery_area/SCPDB/onlinelog/redo07a.log‘ to ‘/u01/app/oracle/fast_recovery_area/SCPDB01/onlinelog/redo07a.log‘;

alter database rename file ‘/u01/app/oracle/oradata/SCPDB/onlinelog/redo07b.log‘ to ‘/u01/app/oracle/oradata/SCPDB01/onlinelog/redo07b.log‘;

 

---执行上述语句

SQL> alter database rename file ‘/u01/app/oracle/oradata/SCPDB/datafile/o1_mf_temp_cto6lh07_.tmp‘ to ‘/u01/app/oracle/oradata/SCPDB01/datafile/o1_mf_temp_cto6lh07_.tmp‘;

.......

 

 

---回到第一个窗口中

export ORACLE_SID=SCPDB

rman target /

 

---使用catalog start with指定备份文件位置

RMAN> catalog start with ‘/u01/backup/‘;

 

---还原及恢复数据库,由于使用了不同的位置,因此我们需要使用set newname 子句,如下面的示例

run{

allocate channel ch1 device type disk;

set newname for datafile 1 to ‘/u01/app/oracle/oradata/SCPDB01/datafile/system.dbf‘;

set newname for datafile 3 to ‘/u01/app/oracle/oradata/SCPDB01/datafile/sysaux.dbf‘;

set newname for datafile 4 to ‘/u01/app/oracle/oradata/SCPDB01/datafile/undotbs1.dbf‘;

set newname for datafile 6 to ‘/u01/app/oracle/oradata/SCPDB01/datafile/users.dbf‘;

set newname for datafile 2 to ‘/u01/app/oracle/oradata/SCPDB01/datafile/TBS_NotifyDB.dbf‘;

set newname for datafile 5 to ‘/u01/app/oracle/oradata/SCPDB01/datafile/TBS_gmscp.dbf‘;

set newname for datafile 7 to ‘/u01/app/oracle/oradata/SCPDB01/datafile/tbsp_index01.dbf‘;

restore database;

release channel ch1;

switch datafile all;

}

=====================================================================================

----也可以使用

set newname for database to ‘/u01/app/oracle/oradata/SCPDB01/datafile/%b‘;

run{

allocate channel ch1 device type disk;

set newname for database to ‘/u01/app/oracle/oradata/SCPDB01/datafile/%b‘;

restore database;

release channel ch1;

switch datafile all;

}

=====================================================================================

 

 

 

 

 

RMAN> recover database;

 

---Recover过程中会收到如下错误提示

 

archived log thread=1 sequence=614

RMAN-00571: ===========================================================

RMAN-00569: =============== ERROR MESSAGE STACK FOLLOWS ===============

RMAN-00571: ===========================================================

RMAN-03002: failure of recover command at 08/11/2016 14:21:27

RMAN-06054: media recovery requesting unknown archived log for thread 1 with sequence 614 and starting SCN of 8223302

 

 

RMAN> recover database until sequence 614;

 

RMAN> alter database open resetlogs;

 

 

---修改临时文件位置

export ORACLE_SID=SCPDB

sqlplus / as sysdba

SQL> shutdown immediate;

SQL> startup mount

SQL> select ‘alter database rename file ‘‘‘||name||‘‘‘ to ‘‘‘||replace(name,‘SCPDB‘,‘SCPDB01‘)||‘‘‘;‘ from v$tempfile;

 

alter database rename file ‘/u01/app/oracle/oradata/SCPDB/datafile/gmscpTemp01.dbf‘ to ‘/u01/app/oracle/oradata/SCPDB01/datafile/gmscpTemp01.dbf‘;

alter database rename file ‘/u01/app/oracle/oradata/SCPDB/datafile/NotifyDBTemp01.dbf‘ to ‘/u01/app/oracle/oradata/SCPDB01/datafile/NotifyDBTemp01.dbf‘;

alter database rename file ‘/u01/app/oracle/oradata/SCPDB/datafile/o1_mf_temp_ctr6mjvh_.tmp‘ to ‘/u01/app/oracle/oradata/SCPDB01/datafile/o1_mf_temp_ctr6mjvh_.tmp‘;

 

SQL> alter database open;

 

 

---修改实例名,以及数据库名

export ORACLE_SID=SCPDB

sqlplus / as sysdba

 

SQL> shutdown immediate;

SQL> startup mount

SQL> !nid target=sys/oracle dbname=SCPDB01 logfile=/tmp/change_name2SCPDB01.log

 

 

SQL> create spfile from pfile;

 

SQL> startup mount;

 

启动数据库,这个时候会报数据库名称不一致的错误,不去管他(ORA-01103: database name ‘SCPDB‘ in control file is not ‘SCPDB01‘)

 

SQL> alter system set db_name=‘SCPDB01‘ scope=spfile;

 

SQL> create pfile from spfile;

 

SQL> shutdown immediate;

 

[oracle@SCP01 ~]$ export ORACLE_SID=SCPDB01

[oracle@SCP01 ~]$ sqlplus / as sysdba

SQL> startup pfile=‘/u01/app/oracle/product/12.1.0.2/db_1/dbs/initSCPDB.ora‘;

 

SQL> create spfile from pfile=‘/u01/app/oracle/product/12.1.0.2/db_1/dbs/initSCPDB.ora‘;

 

SQL> shutdown immediate;

 

SQL> startup mount;

 

SQL> create pfile from spfile;

 

SQL> alter database open resetlogs;

 

SQL> alter system register;

 

SQL> alter user system identified by oracle;

 

 

 

 

 

相关参考:

http://blog.sina.com.cn/s/blog_67be3b4501017zz9.html

http://blog.csdn.net/leshami/article/details/8076841

http://www.2cto.com/database/201408/327614.html

 

配置rman并备份

RMAN> show all;

 

RMAN configuration parameters for database with db_unique_name SCPDB01 are:

CONFIGURE RETENTION POLICY TO RECOVERY WINDOW OF 7 DAYS;

CONFIGURE BACKUP OPTIMIZATION OFF; # default

CONFIGURE DEFAULT DEVICE TYPE TO DISK;

CONFIGURE CONTROLFILE AUTOBACKUP ON;

CONFIGURE CONTROLFILE AUTOBACKUP FORMAT FOR DEVICE TYPE DISK TO ‘/u01/backup/level0/ctl_auto_%F.bk‘;

CONFIGURE DEVICE TYPE DISK PARALLELISM 1 BACKUP TYPE TO BACKUPSET; # default

CONFIGURE DATAFILE BACKUP COPIES FOR DEVICE TYPE DISK TO 1; # default

CONFIGURE ARCHIVELOG BACKUP COPIES FOR DEVICE TYPE DISK TO 1; # default

CONFIGURE CHANNEL DEVICE TYPE DISK FORMAT ‘/u01/backup/level0/o12c_full_level0_%d%T%U.bk‘;

CONFIGURE MAXSETSIZE TO UNLIMITED; # default

CONFIGURE ENCRYPTION FOR DATABASE OFF; # default

CONFIGURE ENCRYPTION ALGORITHM ‘AES128‘; # default

CONFIGURE COMPRESSION ALGORITHM ‘BASIC‘ AS OF RELEASE ‘DEFAULT‘ OPTIMIZE FOR LOAD TRUE ; # default

CONFIGURE RMAN OUTPUT TO KEEP FOR 7 DAYS; # default

CONFIGURE ARCHIVELOG DELETION POLICY TO NONE; # default

CONFIGURE SNAPSHOT CONTROLFILE NAME TO ‘/u01/app/oracle/product/12.1.0.2/db_1/dbs/snapcf_SCPDB01.f‘; # default

 

 

 

 

RMAN> backup database plus archivelog delete input;

使用rman的level0的备份文件迁移oracle数据库-不完全恢复

标签:

热心网友 时间:2022-05-01 13:13

好久没玩了,也不知道说的对不对。说说自己的理解,互相学习学习。

1.为什么需要全部控制文件的备份文件,只靠全部数据文件恢复表空间不行吗?
下面是一个假设的例子
上午9点,数据库正常,备份数据库
上午10点,错误删除了一个表空间
上午11点,发现错误删除了,需要恢复

这里 9点的时候,控制文件中,记录了你每个数据文件的信息。
10点的时候,误删了表空间,导致一个或多个数据文件,被删除掉,同时 控制文件中,不再记录该文件的信息。
11点的时候,你要恢复那个误删的表空间,那就必须要 定位到9点的那个时候的控制文件。 因为9点的时候,控制文件中记录了 每个表空间,由多少个数据文件组成,以及数据文件都叫啥名字.
如果你只有一堆数据文件的话,Oracle 没法自动的识别这些文件,原来是属于哪一个表空间的。

2.假如该例子不完全数据库恢复之后,那么是恢复到数据库之前的一个时间,尽然这样的话,那么的用来恢
复的控制文件和数据文件的SCN是往后推移的,那是不是日志文件和系统改变的SCN是往前的呢?SCN是否
可以往前。 或者是我对不完全数据库恢复还没有理解,请大家帮我解决下!!

SCN = SYSTEM CHANGE NUMBER
就是当数据库 COMMIT 之后,这个 SCN 会不断地从小到大递增。
还是前面那个例子

上午9点,数据库正常,备份数据库 假如这个时候数据库 SCN = 500
上午10点,错误删除了一个表空间 假如这个时候数据库 SCN = 600
上午11点,发现错误删除了,需要恢复 假如这个时候数据库 SCN = 700

那么上面的这种情况下,你需要把数据库恢复到删除表空间的前一个 SCN 之前, 也就是 SCN = 599 的情况下。

热心网友 时间:2022-05-01 14:31

1。只靠全部数据文件你怎么恢复?你的数据库的信息都保存在控制文件里面,你现在误删了个表空间,你自然要先恢复你误删之前备份了的控制文件,因为备份的控制文件里有你误删表空间的信息,误删之后的控制文件里已经没有你想要恢复的表空间信息了。
2 。你做不完全恢复你的redolog会被重置,你数据库内生成编号会改变。也就是说你做不完全恢复后的数据库与你恢复前的数据库是两个不同的数据库了。
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
M&G 晨光 48K线装本-适用对象 M&G 晨光 A5纸质笔记本棕色 - 购买最佳价格 欧伦A5线装本棕色-适用对象 得力FA530 A5/30张小学生作业本簿-性价比最高的纸质笔记本 kinbor DTB40103 线装本 灰色 单本-适合所有需要记录和管理的人群_百度... 得力颐和园系列皮面记事本,实用与收藏价值兼具 写尚A5线装本蜡感鹿头经典款黑色360页G15黑笔礼盒装-高端大气上档次 乔先生 康奈尔笔记本 曜石黑 A4方格版 纸质笔记本推荐 Amari阿玛瑞QS-008 2020年日程本-金华盛纸纸质笔记本推荐 CHOGORI笔记本-高品质A5纸质笔记本,236页米黄色道林纸,多色可选... 蚕丝被和羽绒被哪个好啊? 开空调睡觉半夜出汗 羽绒被三斤冬天睡会冷吗 请问一下大品牌的羽绒被充绒量最多的也才1200克在南方0-10度真的不冷吗? 桃花集益生菌凝胶真的好用吗?对妇科炎症真的有效么? 念珠菌阴道炎可以用益生菌凝胶吗 夏季羽绒被适合几斤的? Eva益微雅阴道益生菌凝胶的主要成份有哪些 两斤的羽绒被适合温度 快童复合益生菌凝胶糖果的优势在哪里? 请问羽绒被是什么季节盖的? Eva益微雅阴道益生菌凝胶和口服益生菌有什么区别 普通被子跟空调被子有什么区别? 女性私护益生菌的疗效跟作用是什么? 是空调被子比较暖还是羽绒被? 纯蜜益生菌凝胶是仁和出厂吗 EVA益生菌是什么 仁和纯蜜益生菌抑菌凝胶适合什么人群使用? Eva益微雅妇科阴道益生菌凝胶有什么作用 益生菌凝胶与口服益生菌有什么区别 点痣的疤痕去不掉怎么办? 激光点痣留下的疤痕用什么产品可以去除? 点痣留下的增生疤痕怎么消除? 点痣后有凸起的疤痕怎么去除? 点痣后留下的疤痕,怎样快速去掉呢??? 求美式英语的俚语,越多越好 有几个英语俚语请高人帮我翻译下(最好是英汉双解)万分感激!!!_百度... HIP-HOP界的俚语! 网络俚语( online slang )最出名的一个词是2B,你又知道它的含义吗? 中国俚语的分类?(最好以特点来分类的) 我是外国学生要写论文的,所以资... ABS材质是什么,用作调料盒好不好 PCABS材质有什么优点 材料ABS较PC有什么优点 夏天做熟食因该怎么储存 熟食的储存 熟食是不是只要经过真空包装就可以储存几个月? 滚筒洗衣机洗涤剂添加盒卡住了怎么打开 中考网上报名户籍地是选填的,只有区没有县怎么办? 户籍所在地写市还是县 送女朋友mac什么色号