oracle数据库offline,Oracle表空间Offline的三种参数--1

Oracle基础中,表空间操作是基础中的基础。其中,表空间是我们经常接触的一个知识点。同数据文件Offline一起,构成了Oracle维护数据一致性的重要体系结构。

一般我们比较常接触到的,就是直接的alter  xxx offline操作。但是在实际中,针对表空间对应数据文件的不同情况,我们是有三种参数操作相对应的。同数据库关闭shutdown对应的若干种参数一样,不同的offline参数对应Oracle不同的行为,更引出后续不同的处理方法。

本篇从原理入手,分别详细介绍表空间Offline、数据文件Offline、日志归档模式和还原之间的关系。

1、Offline简说

Oracle Offline表空间是一种对表空间对象和数据的“关闭访问”。在正常Online情况下,一个表空间中若干个数据文件是维持在动态的一致状态中,文件头上的SCN根据DBWR和CKPT维持一致或者不一致的状态。

我们将表空间Offline的目的无非有如下三类:

ü实现部分数据的不可访问。如果使用表空间进行多个系统数据模块的划分,可以使用offline方法,将一部分的数据不可访问;

ü当进行前端应用程序进行升级维护的时候,可以使用offline方法对部分数据访问进行屏蔽;

ü对数据文件进行改名和重定位(转移到其他位置上);

在进行数据库管理的时候,留足备份、慎删数据是非常重要的原则。没有绝对把握的时候,绝对不要动手删除数据。这里谈到的offline tablespace和lock user都是非常好的屏蔽数据访问的手段。

一个表空间可以有一个或者多个数据文件。如果一个表空间被offline,那么对应的数据文件也就被offline。

并不是所有表空间都可以被offline。System、Undo和表空间是不允许进行Offline操作的。一般只有非系统表空间,也就是业务数据表空间才会进行Offline操作。

另一个重要点是如果要进行offline操作的表空间是一个用户的Default表空间,那么最好要将其默认表空间修改一下,防止操作错误出现。

将表空间进行Offline的命令很简单,就是alter tablespace xxx offline;根据不同的情况,我们是可以使用三种参数进行命令修饰,分别为、temporary和。三个命令分别对应了Offline过程的不同行为。在下面的步骤中,我们通过来查看三种命令参数的行为特征。

2、实验环境介绍

实验选择在Oracle 11gR2上进行,数据库处在归档模式archive log mode。注意:是否归档模式对于数据表空间和文件Offline行为至关重要!

SQL> select * from v$version;

BANNER

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

Oracle Database  Enterprise Edition Release 11.2.0.3.0 - Production

PL/SQL Release 11.2.0.3.0 - Production

CORE11.2.0.3.0Production

TNS  Linux: Version 11.2.0.3.0 - Production

NLSRTL Version 11.2.0.3.0 - Production

归档模式数据库。

SQL> archive log list;

Database log modeArchive Mode

Automatic archivalEnabled

Archive destinationUSE_DB_RECOVERY_FILE_DEST

Oldest online log sequence21

Next log sequence to archive23

Current log sequence23

--数据库在open状态

SQL> select status from v$instance;

STATUS

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

OPEN

--Oracle支持命名管理OMF

SQL> show parameter db_create_file;

NAMETYPEVALUE

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

db_create_file_deststring/u01/app/oradata

创建实验表空间testtbs。为了更加明显进行试验,我们设计它是由两个数据文件构成。

SQL> create tablespace testtbs  size 10m extent management local uniform. size 1m segment space management auto;

Tablespace created

SQL> alter tablespace testtbs add datafile size 10m autoextend off;

Tablespace altered

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

TABLESPACE_NAMESTATUS

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

TESTTBSONLINE

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

FILE_NAMESTATUSONLINE_STATUS

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

/u01/app/oradata/ORA AVAILABLEONLINE

11G/datafile/o1_mf_t

esttbs_94hpygrx_.dbf

/u01/app/oradata/ORA AVAILABLEONLINE

11G/datafile/o1_mf_t

esttbs_94hq0dgm_.dbf

注意三个Online状态,我们的实验就在这个过程中展开。最后再添加一个数据表,用于空间分配过程。

SQL> create  testtablespace testtbsas select * from dba_objects;

Table created

SQL> select tablespace_name from dba_segments where wner='SYS' and segment_name='TEST';

TABLESPACE_NAME

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

TESTTBS

SQL> select count(*) from test;

COUNT(*)

----------

75223

3、归档模式下数据文件offline normal

offline normal是我们最常用的表空间offline方法,也是默认的offline方法。如果数据表空间和数据文件状态都是online,我们是可以直接offline normal的。

--Offline数据表空间

SQL> alter tablespace testtbsoffline normal;

Tablespace altered

--alert log中内容

Sun Sep 29 15:35:18 2013

alter tablespace testtbs offline normal

Completed: alter tablespace testtbs offline normal

此时,数据表空间和数据文件状态如下:

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

TABLESPACE_NAMESTATUS

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

TESTTBSOFFLINE

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

FILE_NAMESTATUSONLINE_STATUS

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

/u01/app/oradata/ORA AVAILABLEOFFLINE

11G/datafile/o1_mf_t

esttbs_94hpygrx_.dbf

/u01/app/oradata/ORA AVAILABLEOFFLINE

11G/datafile/o1_mf_t

esttbs_94hq0dgm_.dbf

数据文件一个很重要的内容就是文件头的SCN编号。我们知道,如果完全关闭数据库或者check point的时候,Oracle是要保证控制文件和文件头的SCN一致。

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

FILE# STATUSRECOVER FUZZY CHECKPOINT_CHANGE#

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

1 ONLINENOYES1054312

2 ONLINENOYES1054312

3 ONLINENOYES1054312

4 ONLINENOYES1054312

5 ONLINENOYES1054312

6 OFFLINE0

7 OFFLINE0

7 rows selected

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

FILE# CHECKPOINT_CHANGE# OFFLINE_CHANGE#

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

11054312787896

21054312787896

31054312787896

41054312787896

51054312819012

610591751058506

710591751058506

7 rows selected

在offline normal的时候,数据文件头的SCN是一致的。

alter log中信息里面,Recovery Advisor显示出信息。

--有报错内容

Sun Sep 29 15:53:04 2013

Checker run found 2 new persistent data failures

RMAN> list failure all;

List of Database Failures

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

Failure ID Priority StatusTime Detected Summary

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

122HIGHOPEN29-SEP-13One or more non-system datafiles are offline

128HIGHOPEN29-SEP-13Tablespace 7: 'TESTTBS' is offline

如果是正常的offline normal,是可以直接online回正常的。

SQL> alter tablespace testtbsonline;

Tablespace altered

在数据库正常情况下,出于性能考虑数据文件头SCN号是不能维持一致的。我们使用offline normal之后,各个文件头SCN相同。所以,offline normal特性是在offline的时候,要在表空间所有文件上打check point,只要能够打上SCN号,offline normal是可以正常完成的。也就是说,offline normal是表空间各个文件一致性的关闭。

Datafile在很多时候,是不能保证一致性的。这个时候就需要使用Temporary和Immediate两个参数了。下面我们继续讨论。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值