`
helloyesyes
  • 浏览: 1306534 次
  • 性别: Icon_minigender_2
  • 来自: 武汉
文章分类
社区版块
存档分类
最新评论

Oracle 数据文件 reuse 属性 说明

阅读更多

有关表空间创建的相关参数,参考:

Oracle 表空间 创建参数 说明

http://blog.csdn.net/tianlesoftware/archive/2011/01/27/6166928.aspx

当我们对表空间添加数据文件的时候,有一个reuse 属性。 10g的官网对这个参数的说明如下:

REUSE

Specify REUSE to allow Oracle to reuse an existing file.

1If the file already exists, then Oracle reuses the filename and applies the new size (if you specify SIZE) or retains the original size.

--如果file 已经存在,并且在创建时指定了file size,那么就重用原文件,并应用新的size,如果没有指定file size,则保留原有的大小。

2If the file does not exist, then Oracle ignores this clause and creates the file.

-- 如果file 不存在,oracle 将忽略该参数。

Restriction on the REUSE Clause

You cannot specify REUSE unless you have specified filename.

Whenever Oracle uses an existing file, the previous contents of the file are lost.

-- 如果Oracle 使用了已经存在的file,那么之前file里的数据将全部丢失。

From

http://download.oracle.com/docs/cd/B19306_01/server.102/b14200/clauses004.htm#SQLRF01602

Oracle 11g的官方文档里没有搜到相关的信息。 因为手头还没有11g的库,所以也不好测试。 这篇blog里测试的是基于Oracle 10g环境。

下面我们来做一些测试:

1. 创建一个表空间Dave

SQL> show user;

USER is "SYS"

SQL> create tablespace dave datafile '/u01/app/oracle/oradata/dave2/dave01.dbf' size 100M;

Tablespace created.

2. 创建表anqing,并指定存储表空间dave

SQL> create table anqing tablespace dave as select * from dba_objects;

Table created.

SQL> commit;

Commit complete.

SQL> select count(*) from anqing;

COUNT(*)

----------

50391

SQL> set wrap off;

SQL> select owner,table_name,tablespace_name from dba_tables where table_name='ANQING';

OWNER TABLE_NAME TABLESPACE_NAME

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

SYS ANQING DAVE

3. 对表空间dave 添加一个新的数据文件,并使用reuse

SQL> alter tablespace dave add datafile '/u01/app/oracle/oradata/dave2/dave02.dbf' reuse;

alter tablespace dave add datafile '/u01/app/oracle/oradata/dave2/dave02.dbf' reuse

*

ERROR at line 1:

ORA-01119: error in creating database file '/u01/app/oracle/oradata/dave2/dave02.dbf'

ORA-17610: file '/u01/app/oracle/oradata/dave2/dave02.dbf' does not exist and no size specified ORA-27037: unable to obtain file status Linux Error: 2: No such file or directory Additional information: 3

-- 这种情况下,如果文件存在,会使用原始文件的大小。但dave02.dbf 不存在,我们又没有指定文件大小,所以无法创建。 我们指定size 就可以创建了。

SQL> alter tablespace dave add datafile '/u01/app/oracle/oradata/dave2/dave02.dbf' size 50M reuse;

Tablespace altered.

SQL>

4. 保持表空间的状态,然后使用reuse 来添加数据文件

SQL> alter tablespace dave add datafile '/u01/app/oracle/oradata/dave2/dave01.dbf' size 50M reuse;

alter tablespace dave add datafile '/u01/app/oracle/oradata/dave2/dave01.dbf' size 50M reuse

*

ERROR at line 1:

ORA-01537: cannot add file '/u01/app/oracle/oradata/dave2/dave01.dbf' - file already part of database

--报错,所以即使我们需要使用reuse,前提也是该数据文件已经不存在该表空间了。

5. 先将datafile offline drop,在reuse

offline drop 并不会drop datafile,仅仅是将datafile 标记为offline,我们online 之后还可以recover回来。 具体参考:

alter database datafile offline drop alter tablespace drop datafile 区别

http://blog.csdn.net/tianlesoftware/archive/2011/04/06/6305600.aspx

SQL> alter database datafile '/u01/app/oracle/oradata/dave2/dave01.dbf' offline drop;

Database altered.

SQL> alter tablespace dave add datafile '/u01/app/oracle/oradata/dave2/dave01.dbf' size 50M reuse;

alter tablespace dave add datafile '/u01/app/oracle/oradata/dave2/dave01.dbf' size 50M reuse

*

ERROR at line 1:

ORA-01537: cannot add file '/u01/app/oracle/oradata/dave2/dave01.dbf' - file already part of database

-- 依旧报错,因为此时数据文件dave01.dbf 的信息还记录在数据字典里。

-- 将数据文件还原回来

SQL> alter database datafile '/u01/app/oracle/oradata/dave2/dave01.dbf' online;

alter database datafile '/u01/app/oracle/oradata/dave2/dave01.dbf' online

*

ERROR at line 1:

ORA-01113: file 6 needs media recovery

ORA-01110: data file 6: '/u01/app/oracle/oradata/dave2/dave01.dbf'

SQL> recover datafile 6;

Media recovery complete.

6. 使用alter tablespace dave drop datafile 命令

该命令在删除控制文件和物理文件,所以没有可用的意义。

SQL> alter tablespace dave drop datafile '/u01/app/oracle/oradata/dave2/dave02.dbf';

Tablespace altered.

[oracle@db2 dave2]$ pwd

/u01/app/oracle/oradata/dave2

[oracle@db2 dave2]$ ls

control01.ctl control03.ctl example01.dbf redo01.log redo03.log system01.dbf undotbs01.dbf

control02.ctl dave01.dbf huaining01.dbf redo02.log sysaux01.dbf temp01.dbf users01.dbf

-- 文件已经不存在

7. 删除表空间后,在reuse

命令如下:

SQL>drop tablespace dave including contents and datafiles;

该命令也可以指定同时删除物理文件,但那样我们的测试就没办法完成,所以我们不删除datafile,仅从控制文件里删除表空间。

SQL> drop tablespace dave including contents;

Tablespace dropped.

SQL> create tablespace dave2 datafile '/u01/app/oracle/oradata/dave2/dave01.dbf' size 50M reuse;

Tablespace created.

-- 重用成功

看一下数据文件大小:

[oracle@db2 dave2]$ ll -h dave01.dbf

-rw-r----- 1 oracle oinstall 51M Jun 3 04:31 dave01.dbf

我们之前是100M,现在变成50M了。

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

Blog http://blog.csdn.net/tianlesoftware

Email: dvd.dba@gmail.com

DBA1 群:62697716(); DBA2 群:62697977() DBA3 群:62697850()

DBA 超级群:63306533(); DBA4 群: 83829929 DBA5群: 142216823

DBA6 群:158654907 聊天 群:40132017 聊天2群:69087192

--加群需要在备注说明Oracle表空间和数据文件的关系,否则拒绝申请

分享到:
评论

相关推荐

    ORACLE_表空间操作(图)

    表空间的属性可以在创建后通过ALTER TABLESPACE命令进行修改,包括添加数据文件、改变状态等: - **添加数据文件**: ```sql ALTER TABLESPACE IDO ADD DATAFILE 'f:\zjd\ido.dbf' SIZE 1M REUSE; ``` - **...

    oracle表空间管理汇总.docx

    Oracle 表空间管理包括创建表空间、添加数据文件、删除表空间数据文件、扩展表空间大小、修改表空间属性、删除表空间等操作。 1. 创建表空间 创建表空间是 Oracle 表空间管理的基本操作。创建表空间需要指定表空间...

    oracle导入导出命令(imp、exp)

    **功能说明**:此选项用于在导入过程中将源数据文件名称映射为目标数据文件名称,特别适用于跨平台迁移表空间的场景。 **语法格式**: ```sql REMAP_DATAFILE=source_datafile:target_datafile ``` **示例**:假设...

    Oracle9i的init.ora参数中文说明

    Oracle9i初始化参数中文说明 Blank_trimming: 说明: 如果值为TRUE, 即使源长度比目标长度 (SQL92 兼容) 更长, 也允许分配数据。 值范围: TRUE | FALSE 默认值: FALSE serializable: 说明: 确定查询是否获取表级...

    Oracle建库及导入mdb

    create tablespace TGPipeDB datafile 'd:\oracle\product\10.2.0\oradata\TGPipeDB\TGPipeDB.ora' size 100m reuse default storage(initial 500k next 500k pctincrease 20); ``` 然后,新建用户: ```sql create ...

    Oracle_create_tablespace语法详解.docx

    SIZE 参数指定文件的大小,REUSE 参数表示文件是否被重用,AUTOEXTEND 参数表示是否自动扩展数据文件。AUTOEXTEND_OFF 表示自动扩展关闭,AUTOEXTEND_ON 表示自动扩展打开。NEXT 参数指定数据文件满了以后扩展的...

    《Oracle数据库》实验报告一.docx

    3. 创建表空间`stu_tbs`,包含两个数据文件,分别为`stu001.dbf`和`stu002.dbf`,指定大小、路径和自动扩展属性。 4. 修改表空间`stu_tbs`,添加新的数据文件`stu003.dbf`,并将其设置为脱机状态。 5. 删除表空间`...

    ORACLE创建表空间

    数据文件是表空间的物理组成部分,可以使用`ALTER DATABASE DATAFILE`命令来增加、重命名或删除数据文件。此外,通过`ALTER TABLESPACE`命令可以调整表空间的属性,如扩展策略。 5. **表空间权限** 用户对表空间...

    oracle 10g xe 版本更改数据库字符集

    2. **系统配置文件**:在创建新数据库前,可能需要修改一些系统配置文件(如`init.ora`),确保这些文件中的参数与新的数据库配置相匹配。 3. **数据迁移**:创建新数据库后,需要将旧数据库中的数据迁移到新数据库...

    Oracle常用命令

    1. **创建表空间**:使用`CREATE TABLESPACE`命令,可以创建新的表空间并指定其数据文件、大小和其他属性。例如,`CREATE TABLESPACE tablespace_name DATAFILE 'c:\oracle\oradata\file1.dbf' SIZE 100M ...`创建了...

    oracle数据库学习笔记

    **Oracle数据类型:** - **字符型:** - **CHAR:** 定长字符串,最大2000字符,查询效率较高。 - **VARCHAR2:** 变长字符串,最大4000字符,节省空间。 - **CLOB (Character Large Object):** 最大4GB,用于存储...

    专题资料(2021-2022年)03创建和管理数据表.ppt

    创建表空间的命令是`CREATE TABLESPACE`,可以添加选项来定义数据文件的大小、自动扩展、最大尺寸等属性。例如,创建一个50MB大小且不允许自动扩展的表空间student,以及一个初始大小为10MB、最大容量为200MB的临时...

    10G手动建库步骤

    这段SQL命令详细地定义了数据库的各种属性,包括数据文件、重做日志文件等。 ### 八、执行目录脚本 最后,执行目录脚本来加载预定义的对象和数据: ```sql SQL> spool /oradata/cat_ypythb.log ``` 以上就是完整...

    Oracle_11g日常操作与维护手册

    - **表空间的数据文件更名**: 使用命令`ALTER DATABASE RENAME FILE '[old_file]' TO '[new_file]';`来更改数据文件的名称。 - **缺省表空间**: 使用命令`ALTER USER [username] DEFAULT TABLESPACE [tablespace_...

    建表空间例子

    - `REUSE`: 如果指定,则允许在删除表空间后重新使用其数据文件。 - `AUTOEXTEND`: 设置是否自动扩展数据文件。 - `NEXT`: 自动扩展时每次增加的大小。 - `MAXSIZE`: 数据文件的最大大小。 - `DEFAULT STORAGE`: ...

    CREATE TABLESPACE命令详解

    - **DATAFILE datafile_spec1**:指定表空间包含的数据文件及其属性。 - `filename`:数据文件的完整路径。 - `SIZE integer [K|M]`:数据文件的初始大小。 - `REUSE`:如果数据文件已存在,则允许重用。 - `...

Global site tag (gtag.js) - Google Analytics