返回顶部
首页 > 资讯 > 精选 >如何理解Oracle表空间Offline的三种参数
  • 504
分享到

如何理解Oracle表空间Offline的三种参数

2023-06-06 04:06:52 504人浏览 薄情痞子
摘要

如何理解oracle表空间Offline的三种参数,很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。归档模式下Temporary Offline操作 Of

如何理解oracle表空间Offline的三种参数,很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。

归档模式下Temporary Offline操作

 

Offline NORMal是一种比较理想的情况。在很多时候,Offline一个Tablespace的时候,有其他因素需要考虑。比如,在offline操作的时候,此时如果有正在进行的对表空间对象的DDL和DML操作,offline可能是会受到影响。

 

此外,如果一个表空间中有数据文件已经被Offline过了,我们正常是不能够进行offline normal的。此时,我们就需要使用temporary。

 

我们首先将表空间online处理,之后将其中一个数据文件offline。注意:这个操作是在ArcHivelog模式下才能进行。

 

sql> alter tablespace testtbs online;

Tablespace altered

SQL> alter database datafile '/u01/app/oradata/ORA11G/datafile/o1_mf_testtbs_94hpygrx_.dbf' offline;

Database altered

 

之后,观察表空间和文件状态。我们发现被offline的数据文件状态为Recover。

 

SQL> select tablespace_name, status from dba_tablespaces where tablespace_name='TESTTBS';

TABLESPACE_NAME                STATUS

------------------------------ ---------

TESTTBS                        ONLINE

SQL> select file_name, status, online_status from dba_data_files where tablespace_name='TESTTBS';

FILE_NAME            STATUS    ONLINE_STATUS

-------------------- --------- -------------

/u01/app/oradata/ORA AVaiLABLE RECOVER

11G/datafile/o1_mf_t          

esttbs_94hpygrx_.dbf           

/u01/app/oradata/ORA AVAILABLE ONLINE

11G/datafile/o1_mf_t          

esttbs_94hq0dgm_.dbf          

 

注意,Oracle维持数据文件一致性,是一个动态一致性的过程。如果某一个文件或者对象临时性的退出了这个一致性机制,就表示这个文件或者对象已经不一致。经过时间不论长短,如果该对象希望回归到原有的一致性体系里面,就需要进行Recover。Oracle进行Recover手段就是连续的redo log文件列。

 

这里,我们看到的文件recover状态,就表明如果需要这个文件回到Online状态,需要进行Recover。

 

回到我们的Offline主题。此时,Online状态表空间下的几个文件状态是不一致的。

 

SQL> alter tablespace testtbs offline normal;

alter tablespace testtbs offline normal

ORA-01191: 文件 6 已脱机 - 无法进行正常脱机

ORA-01110: 数据文件 6: '/u01/app/oradata/ORA11G/datafile/o1_mf_testtbs_94hpygrx_.dbf'

SQL> create table mm tablespace testtbs as select * from dba_objects where 1=0;

Table created

 

正常normal offline已经不能成功了。我们此时可以使用temporary参数。

 

SQL> alter tablespace testtbs offline temporary;

Tablespace altered

--Alert Log中的日志信息

Sun Sep 29 16:02:34 2013

alter tablespace testtbs offline temporary

Completed: alter tablespace testtbs offline temporary

SQL> select tablespace_name, status from dba_tablespaces where tablespace_name='TESTTBS';

TABLESPACE_NAME                STATUS

------------------------------ ---------

TESTTBS                        OFFLINE

SQL>  select file_name, status, online_status from dba_data_files where tablespace_name='TESTTBS';

FILE_NAME            STATUS    ONLINE_STATUS

-------------------- --------- -------------

/u01/app/oradata/ORA AVAILABLE RECOVER

11G/datafile/o1_mf_t          

esttbs_94hpygrx_.dbf          

/u01/app/oradata/ORA AVAILABLE OFFLINE

11G/datafile/o1_mf_t          

esttbs_94hq0dgm_.dbf          

 

我们使用temporary参数,实现了Offline。但是对于那个提前进行offline的数据文件,状态依然是recover。猜想,Temporary Offline的过程是一种不一致的关闭。

 

试图v$datafile和v$datafile_header分别反映了控制文件和数据文件头中文件SCN号的记录。在offline normal的时候,我们看到了各个文件的一致性。在进行offline normal的时候,Oracle是打入了一个check point(内部),来同步各个文件的文件头SCN。

 

在使用Temporary的时候,视图状态如何呢?

 

SQL> select file#, status, recover, fuzzy, CHECKPOINT_CHANGE# from v$datafile_header;

     FILE# STATUS  RECOVER FUZZY CHECKPOINT_CHANGE#

---------- ------- ------- ----- ------------------

         1 ONLINE  NO      YES              1054312

         2 ONLINE  NO      YES              1054312

         3 ONLINE  NO      YES              1054312

         4 ONLINE  NO      YES              1054312

         5 ONLINE  NO      YES              1054312

         6 OFFLINE YES     YES              1058660

         7 OFFLINE NO      NO               1058696

7 rows selected

SQL> select file#, CHECKPOINT_CHANGE#, OFFLINE_CHANGE# from v$datafile;

     FILE# CHECKPOINT_CHANGE# OFFLINE_CHANGE#

---------- ------------------ ---------------

         1            1054312          787896

         2            1054312          787896

         3            1054312          787896

         4            1054312          787896

         5            1054312          819012

         6            1058660         1058506

         7            1058696         1058506

7 rows selected

 

控制文件和文件头上面两个文件的SCN编号不相同,说明在一个表空间内部文件的SCN号是不一致的。

 

说明:在Temporary Offline的时候,一些“有问题”的数据文件和“没问题”的数据文件状态是可以不一样的。“没问题”的数据文件之间SCN号是一致。

 

如果此时要求Online表空间,会报错。

 

SQL> alter tablespace testtbs online;

alter tablespace testtbs online

ORA-01113: 文件 6 需要介质恢复

ORA-01110: 数据文件 6: '/u01/app/oradata/ORA11G/datafile/o1_mf_testtbs_94hpygrx_.dbf'

 

在online的时候,Oracle一定会去online一个“一致”的表空间。此时,它会发现表空间内部SCN的不一致。根据提示,我们需要手工进行文件恢复。

 

--进行media recovery过程

SQL> recover datafile 6;

Media recovery complete.

SQL> alter tablespace testtbs online;

Tablespace altered

 

online成功了。在alert log中,我们看到了进行media recovery中使用的redo log apply乃至archived redo log apply过程。注意一点:此时我们只恢复了datafile 6。

 

Sun Sep 29 16:07:22 2013

ALTER DATABASE RECOVER  datafile 6 

Media Recovery Start

Serial Media Recovery started

Recovery of Online Redo Log: Thread 1 Group 3 Seq 24 Reading mem 0

  Mem# 0: /u01/app/oradata/ORA11G/onlinelog/o1_mf_3_92t73782_.log

  Mem# 1: /u01/app/fast_recovery_area/ORA11G/onlinelog/o1_mf_3_92t737fj_.log

Media Recovery Complete (ora11g)

Completed: ALTER DATABASE RECOVER  datafile 6 

Sun Sep 29 16:07:36 2013

alter tablespace testtbs online

Completed: alter tablespace testtbs online

 

Temporary Offline的特点是:在进行Offline的时候,依然会对表空间内文件进行同步Check Point打入动作。与Normal不同的是,如果某个或者某些文件因为种种原因,不能打入check point来同步SCN,Offline动作时可以继续的。Temporary只保证一部分文件一致即可。

 

在Temporary Offline表空间进行Online的时候,Oracle会检查表空间内文件的SCN一致性。注意:这个时候,Oracle只认可表空间一个SCN号加入到现有数据库中,如果内部不一致,会拒绝online操作。

 

如果被拒绝online,我们只需要(注意是只需要)将原来那些问题文件进行recover就可以了。recover中使用Redo Log进行前推动作,将问题文件推到和表空间其他文件一致就可以了。

 

最后在online,就没有问题了。

 

注意:即使是使用Temporary Offline,但是check point动作依然是存在,只是变成非强制性动作了。如果表空间文件中没有“问题儿童”,即使使用了Temporary Offline命令,效果和Normal没有区别。而且,在online的时候,也不需要进行recover过程。

 

下面我们讨论Immediate参数方法,它较Temporary更加直接。

 

归档模式下Immediate参数

 

我们先还原现场为Online,依然是将数据文件6进行offline动作。

 

SQL> alter tablespace testtbs online;

Tablespace altered

SQL> alter database datafile '/u01/app/oradata/ORA11G/datafile/o1_mf_testtbs_94hpygrx_.dbf' offline;

Database altered

--尝试正常关闭失败

SQL> alter tablespace testtbs offline normal;

alter tablespace testtbs offline normal

ORA-01191: 文件 6 已脱机 - 无法进行正常脱机

ORA-01110: 数据文件 6: '/u01/app/oradata/ORA11G/datafile/o1_mf_testtbs_94hpygrx_.dbf'

 

我们此处使用offline immediate操作。

 

--立即offline

SQL> alter tablespace testtbs offline immediate;

Tablespace altered

SQL> select file#, CHECKPOINT_CHANGE#, OFFLINE_CHANGE# from v$datafile;

     FILE# CHECKPOINT_CHANGE# OFFLINE_CHANGE#

---------- ------------------ ---------------

         1            1059725          787896

         2            1059725          787896

         3            1059725          787896

         4            1059725          787896

         5            1059725          819012

         6            1059634         1059175

         7            1059725         1059175

7 rows selected

SQL> select file#, status, recover, fuzzy, CHECKPOINT_CHANGE# from v$datafile_header;

     FILE# STATUS  RECOVER FUZZY CHECKPOINT_CHANGE#

---------- ------- ------- ----- ------------------

         1 ONLINE  NO      YES              1059725

         2 ONLINE  NO      YES              1059725

         3 ONLINE  NO      YES              1059725

         4 ONLINE  NO      YES              1059725

         5 ONLINE  NO      YES              1059725

         6 OFFLINE YES     YES              1059634

         7 OFFLINE YES     YES              1059725

7 rows selected

 

和Temporary相似的内容方面是,问题数据文件存在的情况下,表空间依然可以进行Offline操作。但是区别是,Oracle在immediate参数情况下,就不会给任何数据文件进行check point统一SCN动作了。

 

这种方法类似于shutdown abort。无论文件是不是有问题,Oracle都不进行检查和统一动作。

 

还有个细节需要全局注意,就是v$datafile_header中的recover列。在normal参数的时候,这个列是不显示的,也就是表示这个问题不需要关注和理睬。在Tempory模式下,只有那些“问题”文件才会被标注为YES,也就是需要进行Recover。其他没问题的文件状态为NO,也就是不需要进行recover。上面的实验也证明了这点。

 

而immediate参数情况下,所有文件状态都是YES,表示无论好坏,都要进行recover。

 

下面尝试online动作。

 

SQL> alter tablespace testtbs online;

alter tablespace testtbs online

*

ERROR at line 1:

ORA-01113: file 6 needs media recovery

ORA-01110: data file 6:

'/u01/app/oradata/ORA11G/datafile/o1_mf_testtbs_94hpygrx_.dbf'

 

Online动作失败,需要进行恢复。

 

SQL> recover datafile 6;

Media recovery complete.

--依然不行,需要将所有的文件都recover一遍。

SQL> alter tablespace testtbs online;

alter tablespace testtbs online

*

ERROR at line 1:

ORA-01113: file 7 needs media recovery

ORA-01110: data file 7:

'/u01/app/oradata/ORA11G/datafile/o1_mf_testtbs_94hq0dgm_.dbf'

 

索性直接恢复表空间好了。

 

SQL> recover tablespace testtbs

Media recovery complete.

--Online动作

SQL> alter tablespace testtbs online;

Tablespace altered.

 

Normal、Temporary和Immediate是三个依次使用,严格级别逐层下降的参数方法。

看完上述内容是否对您有帮助呢?如果还想对相关知识有进一步的了解或阅读更多相关文章,请关注编程网精选频道,感谢您对编程网的支持。

--结束END--

本文标题: 如何理解Oracle表空间Offline的三种参数

本文链接: https://lsjlt.com/news/245979.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • 如何理解Oracle表空间Offline的三种参数
    如何理解Oracle表空间Offline的三种参数,很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。归档模式下Temporary Offline操作 Of...
    99+
    2023-06-06
  • 怎么理解Oracle表空间Offline的三种参数
    本篇文章为大家展示了怎么理解Oracle表空间Offline的三种参数,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。Oracle数据库管理基础中,表空间操作是基础中的基础。其中,表空间Offline...
    99+
    2023-06-06
  • 聊聊Oracle表空间Offline的三种参数(下)
     6、非归档情况Offline处理 上面的一系列讨论,都是在归档文件模式下进行的实验。如果在非归档情况下,我们面对的问题是不同的。 首先,非归档模式下,表空间可以进行normal offline操作。 ...
    99+
    2023-06-06
  • Oracle中表空间offline的三种参数对比案例
    Oracle数据库管理中,对表空间操作是基础中的基础。其中,表空间Offline是我们经常接触的。同数据文件Offline一起,构成了Oracle维护数据一致性的重要体系结构。 &n...
    99+
    2024-04-02
  • oracle表空间满了如何处理
    当Oracle表空间满了时,可以采取以下处理方法:1. 增加表空间大小:可以通过增加表空间的大小来解决空间满的问题。可以使用`ALT...
    99+
    2023-08-31
    oracle
  • oracle表空间满了如何清理
    当Oracle表空间满了,您可以通过以下步骤来清理表空间: 查看表空间的使用情况: SELECT tablespace_...
    99+
    2024-04-09
    oracle
  • oracle如何转移表的表空间
    本篇内容主要讲解“oracle如何转移表的表空间”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“oracle如何转移表的表空间”吧! ...
    99+
    2024-04-02
  • Oracle表空间不足的两种解决办法
    首先查询表空间的大小以及文件路径地址 select tablespace_name, file_id, file_name,round(bytes/(1024*1024),0) total_s...
    99+
    2024-04-02
  • oracle的表如何跨表空间存储
    oracle的一个表所在表空间,空间已经占满,其他表空间有剩余空间.实现表存在另外的表空间.方案一:利用原表重建分区表1:原表temp,存在字段id,time;2:temp存在纪录;3:根据原表temp创建...
    99+
    2024-04-02
  • Oracle缩表空间问题如何解决
    这篇文章主要介绍“Oracle缩表空间问题如何解决”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“Oracle缩表空间问题如何解决”文章能帮助大家解决问题。备注:Oracle 11.2.0.4一. 需...
    99+
    2023-07-02
  • Oracle数据库管理:用户如何分配表空间?
    Oracle数据库管理:用户如何分配表空间? Oracle数据库是一种常用的关系型数据库管理系统,用户在使用Oracle数据库时,经常需要进行表空间的管理。表空间是用来存储数据库对象(...
    99+
    2024-03-02
    数据库 用户 表空间 sql语句
  • 如何在 Oracle 数据库中确定表的表空间
    在Oracle数据库中确定表的表空间是数据库管理中的一个重要操作,通过这个操作可以更好地管理数据库空间并优化数据库性能。在Oracle数据库中,每个表都会被分配到一个表空间中,表空间是...
    99+
    2024-03-03
    oracle 表空间 表名 sql语句
  • 如何监控和管理Oracle UNDO表空间
    这篇文章主要介绍了如何监控和管理Oracle UNDO表空间,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。 对Oracle数据库UNDO表空...
    99+
    2024-04-02
  • oracle表空间不足报错如何处理
    当Oracle表空间不足报错时,可以采取以下几种处理方式: 扩展表空间:通过增加数据文件或扩展现有数据文件的大小来增加表空间的容...
    99+
    2023-10-27
    oracle
  • oracle临时表空间满了如何清理
    当Oracle临时表空间满了时,可以尝试以下方法来清理临时表空间: 确认哪些临时表空间占用空间较大:可以通过查询DBA_TEMP...
    99+
    2024-04-09
    oracle
  • Oracle 如何查看表所属的表空间
    Oracle 如何查看表所属的表空间 Oracle数据库是一款功能强大的关系型数据库管理系统,表空间是Oracle数据库中用来管理数据存储空间的重要概念。在Oracle中,每个表都需要...
    99+
    2024-03-02
    oracle 查看 表空间 sql语句
  • oracle如何清除临时表空间数据
    要清除Oracle临时表空间中的数据,可以使用以下步骤: 首先,确定要清除数据的临时表空间名称。可以通过查询v$tempfile...
    99+
    2024-04-09
    oracle
  • oracle如何增加表空间数据文件
    要增加表空间数据文件,可以按照以下步骤操作: 首先,连接到Oracle数据库,并使用sys用户或具有DBA权限的用户登录。 ...
    99+
    2024-04-23
    oracle
  • Oracle临时表空间过大如何解决
    本篇内容主要讲解“Oracle临时表空间过大如何解决”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“Oracle临时表空间过大如何解决”吧!方案一:增加临时表空间的大小1.临时表空间的使用情况题S...
    99+
    2023-06-27
  • 如何理解Oracle参数COMPATIBLE
    如何理解Oracle参数COMPATIBLE,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。Oracle数据库中有个参数可共用的我们有时候会...
    99+
    2024-04-02
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作