Oracle 阅读器-刚看完表空间回复的详细解释
(一) 当使用一个控制文件的备份恢复,例如下面的附图。使用备份控制文件恢复位置
watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvZGVtb25zb24=/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center" alt="">
1) 创建測试表空间ts1及相关測试表(表空间为ts1)
SYS@ORCL>create tablespace ts1 datafile '/u01/app/oracle/oradata/ORCL/ts1.dbf' size 10m;
Tablespace created.
SYS@ORCL>create table scott.t(x int) tablespace ts1;
Table created.
SYS@ORCL>insert into scott.t select rownum from dual connect by rownum<=10;
10 rows created.
SYS@ORCL>commit;
Commit complete.
SYS@ORCL>
2) 通过RMAN备份ts1表空间和控制文件
RMAN> backup tablespace ts1 include current controlfile;
Starting backup at 17-JAN-13
using target database control file instead of recovery catalog
allocated channel: ORA_DISK_1
channel ORA_DISK_1: sid=141 devtype=DISK
channel ORA_DISK_1: starting full datafile backupset
channel ORA_DISK_1: specifying datafile(s) in backupset
input datafile fno=00006 name=/u01/app/oracle/oradata/ORCL/ts1.dbf
channel ORA_DISK_1: starting piece 1 at 17-JAN-13
channel ORA_DISK_1: finished piece 1 at 17-JAN-13
piece handle=/u01/app/oracle/flash_recovery_area/ORCL/backupset/2013_01_17/o1_mf_nnndf_TAG20130117T101646_8hgqrg9h_.bkp tag=TAG20130117T101646 comment=NONE
channel ORA_DISK_1: backup set complete, elapsed time: 00:00:01
channel ORA_DISK_1: starting full datafile backupset
channel ORA_DISK_1: specifying datafile(s) in backupset
including current control file in backupset
channel ORA_DISK_1: starting piece 1 at 17-JAN-13
channel ORA_DISK_1: finished piece 1 at 17-JAN-13
piece handle=/u01/app/oracle/flash_recovery_area/ORCL/backupset/2013_01_17/o1_mf_ncnnf_TAG20130117T101646_8hgqrhvd_.bkp tag=TAG20130117T101646 comment=NONE
channel ORA_DISK_1: backup set complete, elapsed time: 00:00:01
Finished backup at 17-JAN-13
RMAN>
3) 删除t表部分记录
SYS@ORCL>delete scott.t where x>=6;
5 rows deleted.
SYS@ORCL>commit;
Commit complete.
SYS@ORCL>
4) 切换几次日志。让上面的动作归档(对于測试来说,意义不是特别的大)
SYS@ORCL>alter system switch logfile;
System altered.
SYS@ORCL>/
System altered.
SYS@ORCL>/
System altered.
SYS@ORCL>/
System altered.
SYS@ORCL>
5) 在users表空间上创建t1表
SYS@ORCL>create table scott.t1(x int) tablespace users;
Table created.
SYS@ORCL>insert into scott.t1 select rownum from dual connect by rownum<=2;
2 rows created.
SYS@ORCL>commit;
Commit complete.
SYS@ORCL>
6) 将表ts1改动为仅仅读模式
SYS@ORCL>alter tablespace ts1 read only;
Tablespace altered.
SYS@ORCL>select tablespace_name,status from dba_tablespaces where tablespace_name='TS1';
TABLESPACE_NAME STATUS
------------------------- ---------
TS1 READ ONLY
SYS@ORCL>select file_id,file_name,status,online_status from dba_data_files where tablespace_name='TS1';
FILE_ID FILE_NAME STATUS ONLINE_
---------- --------------------------------------------- --------- -------
6 /u01/app/oracle/oradata/ORCL/ts1.dbf AVAILABLE ONLINE
SYS@ORCL>
7) 删除ts1表空间数据文件和全部控制文件
SYS@ORCL>!rm /u01/app/oracle/oradata/ORCL/ts1.dbf
SYS@ORCL>!rm /u01/app/oracle/oradata/ORCL/*.ctl
8) 重新启动数据库到nomount状态
SYS@ORCL>shutdown abort;
ORACLE instance shut down.
SYS@ORCL>
SYS@ORCL>startup nomount;
ORACLE instance started.
Total System Global Area 285212672 bytes
Fixed Size 1218992 bytes
Variable Size 96470608 bytes
Database Buffers 184549376 bytes
Redo Buffers 2973696 bytes
SYS@ORCL>
9) 通过RMAN备份的控制文件完毕控制文件的恢复,恢复完毕,数据库改动为mount
RMAN> restore controlfile from '/u01/app/oracle/flash_recovery_area/ORCL/backupset/2013_01_17/o1_mf_ncnnf_TAG20130117T101646_8hgqrhvd_.bkp';
Starting restore at 17-JAN-13
using target database control file instead of recovery catalog
allocated channel: ORA_DISK_1
channel ORA_DISK_1: sid=157 devtype=DISK
channel ORA_DISK_1: restoring control file
channel ORA_DISK_1: restore complete, elapsed time: 00:00:05
output filename=/u01/app/oracle/oradata/ORCL/control01.ctl
output filename=/u01/app/oracle/oradata/ORCL/control02.ctl
output filename=/u01/app/oracle/oradata/ORCL/control03.ctl
Finished restore at 17-JAN-13
RMAN> alter database mount;
database mounted
released channel: ORA_DISK_1
RMAN>
10) 恢复ts1表空间
RMAN> restore tablespace ts1;
Starting restore at 17-JAN-13
Starting implicit crosscheck backup at 17-JAN-13
allocated channel: ORA_DISK_1
channel ORA_DISK_1: sid=157 devtype=DISK
Crosschecked 2 objects
Finished implicit crosscheck backup at 17-JAN-13
Starting implicit crosscheck copy at 17-JAN-13
using channel ORA_DISK_1
Finished implicit crosscheck copy at 17-JAN-13
searching for all files in the recovery area
cataloging files...
cataloging done
List of Cataloged Files
=======================
File Name: /u01/app/oracle/flash_recovery_area/ORCL/backupset/2013_01_17/o1_mf_ncnnf_TAG20130117T101646_8hgqrhvd_.bkp
using channel ORA_DISK_1
channel ORA_DISK_1: starting datafile backupset restore
channel ORA_DISK_1: specifying datafile(s) to restore from backup set
restoring datafile 00006 to /u01/app/oracle/oradata/ORCL/ts1.dbf
channel ORA_DISK_1: reading from backup piece /u01/app/oracle/flash_recovery_area/ORCL/backupset/2013_01_17/o1_mf_nnndf_TAG20130117T101646_8hgqrg9h_.bkp
channel ORA_DISK_1: restored backup piece 1
piece handle=/u01/app/oracle/flash_recovery_area/ORCL/backupset/2013_01_17/o1_mf_nnndf_TAG20130117T101646_8hgqrg9h_.bkp tag=TAG20130117T101646
channel ORA_DISK_1: restore complete, elapsed time: 00:00:01
Finished restore at 17-JAN-13
RMAN>
11) 表空间恢复完成。尝试open数据库
--当然。我们知道一定是无法open数据库的,由于控制文件恢复的是老版本号的
SYS@ORCL>!ls /u01/app/oracle/oradata/ORCL/ts1.dbf
/u01/app/oracle/oradata/ORCL/ts1.dbf
SYS@ORCL>alter database open;
alter database open
*
ERROR at line 1:
ORA-01589: must use RESETLOGS or NORESETLOGS option for database open
--提示resetlogs方式打开
SYS@ORCL>alter database open resetlogs;
alter database open resetlogs
*
ERROR at line 1:
ORA-01194: file 1 needs more recovery to be consistent
ORA-01110: data file 1: '/u01/app/oracle/oradata/ORCL/system01.dbf'
--提示须要恢复1号数据文件
SYS@ORCL>recover datafile 1;
ORA-00283: recovery session canceled due to errors
ORA-01610: recovery using the BACKUP CONTROLFILE option must be done
--提示using BACKUP CONTROLFILE方式完毕恢复
SYS@ORCL>
12) using backup controlfile恢复数据库
注:假设要恢复到控制文件SCN以后的时间。这时候。就须要用using backup controlfile. 恢复就不会受“当前controlfile所纪录的SCN”的限制。
这时候的限制就来自于你的语句(until time , until scn),或者可用的archive log(until cancel)
SYS@ORCL>recover database using backup controlfile until cancel;
ORA-00279: change 493760 generated at 01/16/2013 17:10:46 needed for thread 1
ORA-00289: suggestion :
/u01/app/oracle/flash_recovery_area/ORCL/archivelog/2013_01_16/o1_mf_1_7_%u_.arc
ORA-00280: change 493760 for thread 1 is in sequence #7
Specify log: {<RET>=suggested | filename | AUTO | CANCEL}
--此处回车则是利用下一个归档日志文件进行恢复。只是在这里也能够输入CANCEL,表示恢复到此结束,不再使用后面的归档日志文件
……
--在恢复的过程中又出现了例如以下警告
ORA-01547: warning: RECOVER succeeded but OPEN RESETLOGS would get error below
ORA-01194: file 1 needs more recovery to be consistent
ORA-01110: data file 1: '/u01/app/oracle/oradata/ORCL/system01.dbf'
SYS@ORCL>
13) 尝试再次resetlogs打开数据库
SYS@ORCL>alter database open resetlogs;
alter database open resetlogs
*
ERROR at line 1:
ORA-01194: file 1 needs more recovery to be consistent
ORA-01110: data file 1: '/u01/app/oracle/oradata/ORCL/system01.dbf'
SYS@ORCL>
14) 採用极端办法
注:此时仅仅能採取极端手段:隐含參数_allow_resetlogs_corruption强制启动数据库,设置此參数之后,在数据库Open过程中。Oracle会跳过某些一致性检查。从而使数据库可能跳过不一致状态,Open打开:
--查看隐藏參数_allow_resetlogs_corruption。默认值为false
SYS@ORCL>SELECT ksppstvl, ksppdesc
2 FROM x$ksppi x, x$ksppcv y
3 WHERE x.indx = y.indx
4 AND ksppinm = '_allow_resetlogs_corruption';
KSPPSTVL KSPPDESC
---------- --------------------------------------------------
FALSE allow resetlogs even if it will cause corruption
SYS@ORCL>
--将隐藏參数设置为true
SYS@ORCL>alter system set "_allow_resetlogs_corruption"=true scope=spfile;
System altered.
SYS@ORCL>
--因为是静态參数,重新启动数据库使其生效
SYS@ORCL>shutdown immediate;
ORA-01109: database not open
Database dismounted.
ORACLE instance shut down.
SYS@ORCL>
--数据库启动到mount状态
SYS@ORCL>startup mount;
ORACLE instance started.
Total System Global Area 285212672 bytes
Fixed Size 1218992 bytes
Variable Size 83887696 bytes
Database Buffers 197132288 bytes
Redo Buffers 2973696 bytes
Database mounted.
SYS@ORCL>
15) 再次尝试open数据库。提示RESETLOGS方式open
SYS@ORCL>alter database open;
alter database open
*
ERROR at line 1:
ORA-01589: must use RESETLOGS or NORESETLOGS option for database open
SYS@ORCL>
16) 数据库成功以resetlogs方式open
SYS@ORCL>alter database open resetlogs;
Database altered.
SYS@ORCL>
SYS@ORCL>select count(*) from scott.t;
COUNT(*)
----------
5
SYS@ORCL>select count(*) from scott.t1;
select count(*) from scott.t1
*
ERROR at line 1:
ORA-00942: table or view does not exist
SYS@ORCL>
17) 恢复參数,重新启动数据库
SYS@ORCL>alter system set "_allow_resetlogs_corruption"=false scope=spfile;
System altered.
SYS@ORCL>startup force;
ORACLE instance started.
Total System Global Area 285212672 bytes
Fixed Size 1218992 bytes
Variable Size 88082000 bytes
Database Buffers 192937984 bytes
Redo Buffers 2973696 bytes
Database mounted.
Database opened.
SYS@ORCL>
5.1.1. 小结
假设在生产中使用了仅仅读表空间,那么切记,在改动为仅仅读以后,第一件事情就是备份的孩子,这将节省不必要的麻烦和损失。
版权声明:本文博主原创文章,博客,未经同意不得转载。
Oracle 阅读器-刚看完表空间回复的详细解释的更多相关文章
- [独孤九剑]Oracle知识点梳理(一)表空间、用户
本系列链接导航: [独孤九剑]Oracle知识点梳理(一)表空间.用户 [独孤九剑]Oracle知识点梳理(二)数据库的连接 [独孤九剑]Oracle知识点梳理(三)导入.导出 [独孤九剑]Oracl ...
- Oracle 释放过度使用的Undo表空间
故障现象:UNDO表空间越来越大,长此下去最终数据因为磁盘空间不足而崩溃: 问题分析:产生问题的原因主要以下两点: 1. 有较大的事务量让Oracle Undo自动扩展,产生过度占用磁盘空间的情况: ...
- centos 安装oracle 11g r2(三)-----表空间创建
centos 安装oracle 11g r2(三)-----表空间创建 创建表空间前要保证监听与数据库实例已经启动 1.启动监听 [oracle@localhost ~]$ lsnrctl start ...
- oracle 怎么查看用户对应的表空间
oracle 怎么查看用户对应的表空间? 查询用户: 查看数据库里面所有用户,前提是你是有 dba 权限的帐号,如 sys,system: select * from dba_users; 查看你能管 ...
- 【Oracle】删除(释放)数据文件/表空间流程
oracle删除(释放)数据文件/表空间流程 生产环境:数据库里空间不足,niptest 表空间251G,只使用了17G 再alter database datafile '...../niptest ...
- Oracle数据库-建库、建表空间,建用户
Oracle安装完后,其中有一个缺省的数据库,除了这个缺省的数据库外,我们还可以创建自己的数据库. 对于初学者来说,为了避免麻烦,可以用'Database Configuration Assistan ...
- Oracle 高水位说明和释放表空间,加快表的查询速度
高水位的介绍 数据库运行了一段时间,经过一些列的删除.插入.更改操作有些表的高水位线就有可能和实际的表存储数据的情况相差特别多,为了提高检索该表的效率,建议对这些表进行收缩: 查找高水位线的表 查找表 ...
- oracle 删除用户命令和部分表空间操作
删除用户 drop user user_name cascade; 建立表空间 CREATE TABLESPACE data01DATAFILE '/oracle/oradata/db/DATA01. ...
- oracle 创建用户和imp指定表空间
创建用户: 1,sqlplus sys/pwd as sysdba; 2, create user username identified by password; 3, grant dba,conn ...
随机推荐
- 从O2O体验活动看华硕平板也“来电”新融合理念
随着平板电脑的普及,用户对平板的要求也变得越来越高,且这种要求已经逐渐从单纯的性能方面拓展到全方位的功能方面,尤其在通讯.社交.娱乐等层面,平板迫切需要满足用户日益增长的需求. ...
- Swift初窥--使用Swift实现TableView
完毕Swift的语法关之后.来点实际的Task,第一个任务是写一个tableview,使用cocoaTouch里tableview这个经常使用的控件. 创建project.选择Swift语言 首先是用 ...
- Kali Linux 装好系统后安装经常使用软件
1.配置软件源 leafpad /etc/apt/source.list or(recommand): #官方源 deb http://http.kali.org/kali kali main no ...
- liGDX life_cycle (生命周期)
本文章翻译自libGDX官方wiki,,转载请注明出处:http://blog.csdn.net/kent_todo/article/details/37940489 libGDX官方网址:http: ...
- C++晋升之dynamic_cast
danamic_cast 动态类型转换 ----RTTI提供的的操作符 ----动态:在执行阶段 ----类型转换:检測指针或引用类型,true->转换 ----体现价值的地方:用于多态 --- ...
- hdu-4418-Time travel-高斯+概率dp
把N个点先转化为2*N-2个点. 比方说把012345转化成0123454321. 这样,就能够找出随意两两个点之间的关系. 然后依据关系能够得出来一个一元多项式的矩阵. 然后就用高斯消元求出矩阵就可 ...
- Direct UI
在界面开发中,眼下DirectUI是个热门的技术名称,由于众多的知名公司都是用DirectUI方式作出了非常炫丽的界面.而对于大多数熟悉Win32控件,熟悉MFC开发的开发者来说,我们应该做何选择? ...
- TI推出SimpleLink低能耗蓝牙CC2541
TI推出SimpleLink低能耗蓝牙CC2541 日前,德州仪器 (TI) 宣布推出 SimpleLink™ 低能耗蓝牙 (Bluetooth®Low Energy) CC2541-Q1, 这是一款 ...
- c++中sort()及qsort()的使用方法总结
当并算法具体解释请见点我 想起来自己天天排序排序,冒泡啊,二分查找啊,结果在STL中就自带了排序函数sort,qsort,总算把自己解脱了~ 所以自己总结了一下,首先看sort函数见下表: 函数名 ...
- [置顶] CentOS release 5.4 (Final)重置root密码(图文)