专栏首页杨建荣的学习笔记看似诡异的tablespace online问题(r5笔记第95天)

看似诡异的tablespace online问题(r5笔记第95天)

今天在做一些演示的时候,在虚拟机上装了两套数据库软件,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选项。 这是一个很简单很基础的问题,但是在特定时间里可能就没有意识到,看来还是需要不断巩固,多做练习:)

本文分享自微信公众号 - 杨建荣的学习笔记(jianrong-notes)

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2015-07-12

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 岁末警示:当你手抖删了线上数据库..

    作者简介: ? 一乐,aka 梁宇鹏 现任环信首席架构师兼IM技术总监,负责即时通讯云平台的整体研发和管理。曾任新浪微博通讯技术专家,负责微博通讯系统的设计与研...

    数据和云
  • 基础拾遗----RabbitMQ

    前言  消息队列,在高并发环境下,由于来不及同步处理,请求往往会发生堵塞,比如说双十一很多人进行下单,购买物品这是对于数据的操作是非常之大的,不管是是inse...

    kmonkey
  • MySQL性能优化的21条经验

    1. 为查询缓存优化你的查询 大多数的MySQL服务器都开启了查询缓存。这是提高性最有效的方法之一,而且这是被MySQL的数据库引擎处理的。当有很多相同的查询被...

    wangxl
  • 【安全为王】听说你最喜欢给所有用户授DBA的权限

    编辑手记:最近很多朋友会问关于数据库用户授权的问题,经常问这样的问题,我能不能直接给用户DBA的角色,多方便。恩,方便是方便了,恶意操作和误操作也方便了。今天再...

    数据和云
  • 【MySQL】磁盘写满之后,数据库show status受到阻塞的原因

    编辑手记:前两天同事讨论到一个问题,当mysql从库磁盘满之后,show status及show slave status会被卡住,但其他select操作不受影...

    数据和云
  • PHP数据结构(十九) ——B+树

    PHP数据结构(十九)——B+树 (原创内容,转载请注明来源,谢谢) 一、概述 B+树是B树的变种,在数据库系统、文件系统等方面,B+树的运用...

    用户1327360
  • MySQL计划任务(事件调度器)

    MySQL5.1.x版本中引入了一项新特性EVENT,顾名思义就是事件、定时任务机制,在指定的时间单元内执行特定的任务,因此今后一些对数据定时性操作不再依赖外部...

    wangxl
  • 【Oracle字符集】乱码的产生原理

    编辑手记:很多人在数据库各种操作中遭遇过乱码的问题,今天我们分析一下乱码产生的原因。本文节选于《循序渐进Oracle》 通常在现实环境中,存在3个字符集设置: ...

    数据和云
  • 2016年度中国Oracle数据库使用现状分析报告

    Oracle数据库从20世纪末就已开始在国内使用,在经历了20多年的迅猛发展后,目前已经占据了全球数据库的首位,在国内拥有数十万的技术粉丝与数万家企业用户,但到...

    数据和云
  • 回答了这四个问题,少踩12c 多租户的好多坑

    在ACOUG的年终大会上,我分享了一个主题,列举了使用Oracle 12c多租户的过程中可能遇到的各种坑,当你使用一个新产品或者新特性时,如果你不了解,就可能是...

    数据和云

扫码关注云+社区

领取腾讯云代金券