看似诡异的tablespace online问题

今天在做一些演示的时候,在虚拟机上装了两套数据库软件,10g和11g的。还是在演示普通数据文件迁移的时候还是碰到了一些意料之外的问题,从当时的情况来看感觉还是比较诡异的,所以马上切换到另外一套环境去试验就没有任何问题了。对于这个问题事后进行了分析,发现还是一些简单常规的错误,自己还是对一些细节没有掌握好,
本来对于普通数据文件的迁移流程是很简单的,在数据库open状态就可以迁移,
 基本步骤如下:
alter tablespace xxxx offline;
cp datafiles
alter tablespace xxx rename sourcexxxxx   to targetxxxxx;
alter tablespace xxxxx online;
结果在11g的环境演示的时候,自己为了图省事,想offline更快些,就直接用了offline immediate的选项。

SQL> alter tablespace data offline immediate;

Tablespace altered.
然后敲了下面的命令尝试拷贝数据文件,但是抛出的错误看起来满高深的,其实就是最后的单引号导致的。
SQL>  !cp /u02/ora11g/oradata/TEST/disk4/data01.dbf /u02/ora11g/oradata/TEST/disk3/data01.dbf'
/bin/bash: -c: line 0: unexpected EOF while looking for matching `''
/bin/bash: -c: line 1: syntax error: unexpected end of file

[ora11g@oel1 ~]$ cp /u02/ora11g/oradata/TEST/disk4/data01.dbf /u02/ora11g/oradata/TEST/disk3/data01.dbf
[ora11g@oel1 ~]$ orasql
然后直接拷贝数据文件

SQL> alter tablespace data rename datafile '/u02/ora11g/oradata/TEST/disk4/data01.dbf' to '/u02/ora11g/oradata/TEST/disk3/data01.dbf';

Tablespace altered.
然后开始做online操作,这也是一个常规操作,但是抛出了下面的错误。

SQL> alter tablespace data online;
alter tablespace data online
*
ERROR at line 1:
ORA-01113: file 4 needs media recovery
ORA-01110: data file 4: '/u02/ora11g/oradata/TEST/disk3/data01.dbf'

这个时候从日志来看是数据文件需要介质恢复。
结果想马上把问题修好,就直接用了recover database,结果从错误来看就更有些玄妙了。
SQL> recover database;
ORA-00283: recovery session canceled due to errors
ORA-01124: cannot recover data file 1 - file is in use or recovery
ORA-01110: data file 1: '/u02/ora11g/oradata/TEST/disk5/system01.dbf'
似乎这个时候恢复还是一个看似不能完成的任务,果断放弃这个环境,切换到10g的环境,老老实实的做了一遍文件的迁移,这次就没有任何问题了。
步骤如下:

SQL> select tablespace_name from user_tablespaces;

TABLESPACE_NAME
------------------------------
SYSTEM
SYSAUX
UNDOTBS
TEMP

SQL> create tablespace data datafile '/u02/ora11g/oradata/TEST/disk3/data01.dbf' size 10M;

Tablespace created.

SQL> alter tablespace data offline;

Tablespace altered.

SQL> !cp /u02/ora11g/oradata/TEST/disk3/data01.dbf /u02/ora11g/oradata/TEST/disk4/data02.dbf

SQL> alter tablespace data rename datafile '/u02/ora11g/oradata/TEST/disk3/data01.dbf' to '/u02/ora11g/oradata/TEST/disk4/data02.dbf';

Tablespace altered.

SQL> alter tablespace data online;

Tablespace altered.
从整个过程来看,唯一的不同之处就在于出问题的那个环境我使用了offline immediate选项
从官方查看offline的这几个选项,可以看到还是有很大的不同,默认使用的是normal选项。

OFFLINE NORMAL Specify NORMAL to flush all blocks in all data files in the tablespace out of the system global area (SGA). You need not perform media recovery on this tablespace before bringing it back online. This is the default.

OFFLINE TEMPORARY If you specify TEMPORARY, then Oracle Database performs a checkpoint for all online data files in the tablespace but does not ensure that all files can be written. Files that are offline when you issue this statement may require media recovery before you bring the tablespace back online.

OFFLINE IMMEDIATE If you specify IMMEDIATE, then Oracle Database does not ensure that tablespace files are available and does not perform a checkpoint. You must perform media recovery on the tablespace before bringing it back online.
所以在自己使用offline immediate的时候,这个时候还没有做checkpoint,如果要使用online选项的时候,还是需要做recover操作。
大体明白了这么多,那么怎么修复呢,

SQL>  alter tablespace data online;
 alter tablespace data online
*
ERROR at line 1:
ORA-01113: file 4 needs media recovery
ORA-01110: data file 4: '/u02/ora11g/oradata/TEST/disk4/data02.dbf'

SQL> recover datafile 4;
Media recovery complete.
SQL> alter tablespace data online;

Tablespace altered.
或者说在一些关键的操作的时候还是最好能够做checkpoint,也就是使用默认的offline normal选项。
这是一个很简单很基础的问题,但是在特定时间里可能就没有意识到,看来还是需要不断巩固,多做练习:)

时间: 2024-09-23 17:11:38

看似诡异的tablespace online问题的相关文章

一个看似诡异的Oracle连接问题

   我们知道Oracle在启动的时,fork进程会根据ORACLE_SID来创建相关后台进程,而在Unix和Linux系统中,ORACLE SID和ORACLE_HOME在一起哈希后会得到一个唯一的值作为SGA的key.    所以我抛出一个蛮有意思的问题,在同一台服务器上,存在10g,11g多个ORACLE_HOME,是可以创建多个同名的Oracle实例,而如果在同一个用户下(比如操作系统用户是oracle),是否可能创建出两个同名的实例来?    我想你的脑海中已经有了答案.我换一个角度来

一个诡异的SQL事务现象

今天测试过程中,同事提出了一个,看似诡异,实则很基础的问题,乍一看会被迷惑. 用实验来复现下这个问题, (1) 创建测试表,A表的id字段是主键,B表的id_a字段是外键,参考A表的id主键, (2) 应用有这么一个逻辑,一个事务中,先更新表A,再INSERT表B,其中表B的id_a字段值是来自于表A刚才操作的主键,模拟如下, 可以看出,更新表A的操作正常,但使用表A的主键值id=1,来INSERT表B的时候,报了FK_B_A外键完整性约束的错误. 明明A表有id=1的记录,并且更新UPDATE

PHP require/include顺序详解

php教程 require/include顺序详解 在大型的web项目中, include_path是一个模块化设计的根本中的根本(当然,现在也有很多基于autoload的设计, 这个不影响本文的探讨), 但是正是因为include_path, 经常会让我们遇到一些因为没有找到正确的文件而导致的看似"诡异"的问题.也就有了如下的疑问:include_path是怎么起作用的?如果有多个include_path顺序是怎么样的?什么情况下include_path不起作用?今天, 我就全面的介

Oracle数据库重启后密码失效的问题(r12笔记第91天)

  前几天,我和系统运维的同事处理一个看似诡异的问题,他找到我说应用服务器启动的时候报了DB的Error,但是错误信息有限,他也没法完全定位到错误的原因,所以就希望我来帮忙看看这个问题是怎么回事,怎么解决.    从应用服务启动的日志来看,错误信息是连接池的地方有了问题. Error: 2017-06-09 10:04:59 init connpool:one or more conn open error. Error: 2017-06-09 10:12:50 init connpool:on

treeSet 一个很诡异的重复性判断问题

问题描述 有一个需求是这样的,要求去掉重复Id的文章,如果id相同就去掉,如果不同就按文章发表时间排序,但写完代码发现,id相同的文章怎么也去重不了:public class ArticleSource implements Comparable<ArticleSource> {private long id;private int sourceId;private long time;public ArticleSource(long id,int sourceId,long time) {

游戏-求网络设置大神一个诡异的问题。。。。

问题描述 求网络设置大神一个诡异的问题.... 本人同一台笔记本,为什么在公司登陆游戏就卡住,回到家就可以正常进入游戏,很流畅的玩,网上说的改mtu值也改了,但是在公司登陆的时候仍然卡住进不了游戏,请问有木有懂电脑的大神指导下到底哪里的问题....我感觉跟mtu值没有关系,倒腾好几天了.跪求解答!!!! 补充:1.家里公司都是无线网.ip设置是自动获取. 2.都是10兆网络,特意下载了几个东西试了下跟网速无关. 3公司跟家里都是联通的网 解决方案 公司的socket端口封了吧 解决方案二: 试试

lua &quot;诡异&quot;的return用法

在Lua中, return的用法比较"诡异", 为什么这么说呢, 因为它只能用在block结束的地方, 不能用在block的一个中间部分.例如 function a() i = 1 return i -- 这里会报错, 提示return后面必须是end, 意思是既然你要return了, 那么就结束这个块吧. i = 2 end 例如 :  > function a() >> i = 1 >> return i >> i = 2 stdin:4:

Photoshop惊魂一瞥—制作诡异的面具

1.找一个正面的人物图片(图1). 图1-1 图1-2 2.用钢笔工具依照人物脸部的轮廓勾勒出脸部轮廓的路径(图2). 图2 3.按CTRL+C复制脸部图象.新建一个文件,将图象大小设置为500X600DPI,分辨率设置为300,按CTRL+V粘贴复制的脸部图象.执行菜单-图象-调整-去色.将粘贴的图层1复制一个为图层1副本,执行菜单-图象-调整-曲线,设置如(图3). 图3 4.执行菜单-滤镜-杂色-中间值,将半径设置为10个象素,完成后按CTRL+F将效果重复3次(图4). 图4 5.将图层

SEO看似简单但更应该拒绝浮躁的心理

SEO一提起嘛,不外乎就是原创加外链,我相信这个已经是被提烂了的说法了,所以好多人一来就觉得SEO太简单了,不就是写写文章嘛,发发外链嘛,这个谁不会啊,也就是好多人天天没命的写原创,网站为什么还是不收录;好多人疯狂的发外链,为什么排名还是没有上升,天天在QQ群里边这样的人太多了,简直是数不甚数,所以SEO也才被人为民工职业,也是好多人选择了退出的原因,其实真的是这样吗,或许好多人在说这句话之前都忽略了一个前提,而且是一个很重要的前提:那就是在做这些原创和外链之前就是网站已经完全搭建好了,而且也是