`

oracle 表空间 2

阅读更多

表空间是ORACLE数据库中最大的逻辑结构,ORACLE数据库就是由一个或多个表空间组成的。
(一)表空间概述:
一个表空间的大小等于其中所有数据文件的大小之和。数据库的大小等于其中所有表空间的大小之和。表空间可以被联机和脱机,SYSTEM表空间不能脱机。
表空间可以分为系统表空间和非系统表空间
系统表空间包括SYSTEM表空间和SYSAUX表空间,其余的表空间就是非系统表空间。非系统表空间分位临时表空间和撤销表空间
临时表空间可以被所有用户共享使用,例如TEMP表空间可以被所有用户共享使用。某个用户使用哪个临时表空间应该是在创建该用户时候制定的。数据库默认临时表空间是在创建数据库时由DEFAULT TEMPORARY TABLE SPACE子句来指定的。撤销表空间是将回退段放入了撤销表空间,而由例程自动处理撤销表空间中的回退段,通过查询数据字典DBA_ROLLBACK_SEGS可以得到撤销表空间中回退段的信息。在ORACLE中可以创建多个撤销表空间但是同一时刻只允许激活一个撤销表空间,在初始化参数文件中用UNDO_TABLESPACE指出要激活的撤销表空间。
大文件表空间是ORACLE 10G新引进的表空间大文件表空间只能放置一个数据文件但其 数据文件可以包括4G个数据块,如果每个数据块的大小是8KB那么大文件表空间可以达到32TB。创建语句如下:
CREATE BIGFILE TABLESPACE MYBIGTBS01
DATAFILE 'E:\MYBIGTBS01_1.DBF' SIZE 20G
SEGMENT SPACE MANAGMENT AUTO
小文件表空间是以前的ORACLE表空间的新名称,在小文件表空间中可以放置多个数据文件,一个数据库可以放置多达64K个数据文件,SYSTEM表空间和SYSAUX表空间总是被创建位小文件表空间。
CREATE SMALLFILE TEMPORARY TABLESPACE MYTMPTBS01
TEMPFILE 'E:\MYTMPTBS01_1.DBF' SIZE 4M
UNIFORM SIZE 64K
表空间的区、段管理:
区管理方式分为字典管理方式和本地管理方式。
字典管理方式是传统的管理方式在字典管理方式下使用数据字典来管理存储空间的分配。
ORACLE强烈建议使用本地管理方式代替字典管理方式,在本地管理方式下表空间中区分配和区回收的管理信息都被存储在表空间的数据文件中而与数据字典无关。在本地管理方式下可以用UNIFORM统一分配表空间中所有区的大小都相同和AUTOALLOCATE自动分配两个选项来指定表空间区的分配方式。
在本地管理方式下指定段空间的管理方式可以用MANUAL(手动)方式和AUTO(自动)方式来指定管理方式。通过DBA_TABLESPACES数据字典视图可以查询当前数据库中各个表空间的区、段空间管理方式。此外创建表空间这种修改数据库的物理结构的信息会同时被记录到预警日志文件中
表空间的状态分为读写(READ_WRITE)和只读(READ_ONLY)两种。
(二)管理表空间的准则:
表空间的管理主要包括确定表空间的大小、安排表空间,创建、修改、删除表空间,选择修改表空间的区、段管理方式,设置表空间的状态等
要确定表空间的大小需要了解1.每行大约有多少字节,2.该表最初或至少要包含多少行,3.每个时间段该表中的行的增长情况,4.在该表上进行的操作的类型,5.哪种操作类型比较多
(三)创建表空间创建不同类型的表空间:
1.创建永久表空间:
CREATE TABLESPACE MYTBS01
DATAFILE 'E:\AAA.DBF' SIZE 2M
AUTOALLOCATE; ----自动分配区的大小

CREATE TABLESPACE MYTBS01
DATAFILE 'E:\AAA.DBF' SIZE 2M
UNIFORM SIZE 128K; ----手动分配区的大小

CREATE TABLESPACE MYTBS01
DATAFILE 'E:\AAA.DBF' SIZE 1M AUTOEXTEND ON NEXT 2M MAXSIZE 11M; ---可以在数据文件子句中指定文件的扩展方式

CREATE TABLESPACE MYTBS01
DATAFILE 'E:\AAA,DBF' SIZE 3M REUSE
UNIFORM
SEGMENT SPACE MANAGEMENT AUTO;---使用SEGMENT SPACE MANAGEMENT指定AUTO,如不使用就是MANUAL段管理方式

CREATE TABLESPACE MYTBS01
DATAFILE 'E:\AAA,DBF' SIZE 3M REUSE
BLOCKSIZE 8K                 ----指定标准的ORACLE块大小的表空间
SEGMENT SPACE MANAGEMENT AUTO;
2.创建大文件表空间:
CREATE TABLESPACE MYTBSBIG01
DATAFIEL 'E:\AAA.DBF' SIZE 2M
SEGMENT SPACE MANAGEMENT AUTO;
创建大文件表空间可以指定区分配方式但不能将段管理方式指定为MANUAL方式
3.创建临时表空间:
如果指定了TEMPORARY选项则创建的就是临时表空间,即ORACLE会用这种表空间来创建临时段,以便排序操作时使用
CREATE SMALLFILE TEMPORARY TABLESPACE MYTMPTBS01
TEMPFILE 'E:\AAA.DBF' SIZE 4M
UNIFORM SIZE 64K;   ----创建临时表空间时区分配方式不能指定为AUTOALLOCATE方式
4.创建撤销表空间:
CREATE UNDO TABLESPACE MYUNDO
DATAFILE 'E:\AAA.DBF' SIZE 4M
AUTOALLOCATE;    ----创建撤销表空间不能使用UNIFORM指定统一的区大小
如果要使用UNDO表空间的管理功能就需要在初始化参数文件中设置如下参数:
*.UNDO_MANAGEMENT='AUTO'   *.UNDO_TABLESPACE='UNDOTBS1'
其中UNDO_MANAGEMENT参数必须设置成AUTO否则将使用回退表空间;UNDO_TABLESPACE参数用于指定要使用哪个UNDO表空间
可以使用如下语句修改初始化参数文件,将当前使用的UNDO表空间切换到另一个UNDO表空间
ALTER SYSTEM SET UNDO_TABLESPACE='NEW_UNDO_TABLESPACE' SCOPE=SPFILE;
正在使用的UNDO表空间是不能被删除的,只有在没有未提交的事务时才能将其删除,可以使用V$TRANSACTION视图检查其中是否还有未提交的事务。
(四)修改表空间:
通常扩展表空间的方法有添加数据文件、改变数据文件的大小、允许数据文件自动扩展三种方法
1.添加数据文件:
ALTER TABLESPACE MYTBS01 ADD DATAFILE 'E:\BBB.DBF' SIZE 3M;
ALTER TABLESPACE MYTBS01 ADD TEMPFILE 'E:\BBB.DBF' SIZE 3M;
2.改变数据文件大小:
ALTER DATABASE DATAFILE 'E:\AAA.DBF' RESIZE 4M;
3.允许数据文件自动扩展:
ALTER DATABASE DATAFILE 'E:\BBB.DBF' AUTOEXTEND ON NEXT 1M MAXSIZE 20M;
4.使表空间脱机:
ALTER TABLESPACE MYTBS01 OFFLINE;
当表空间处于脱机状态就不能访问该表空间了,SYSTEM\SYSAUX\TEMP\UNDOTBS1表空间不能被脱机
5.使表空间联机:
ALTER TABLESPACE NYTBS01 ONLINE;
6.使表空间只读:
ALTER TABLESPACE MYTBS01 READ ONLY;
7.使表空间可读写:
ALTER TABLESPACE MYTBS01 READ WRITE;
8.修改表空间的备份模式:
首先执行ALTER TABLESPACE TABLESPACE_NAME BEGIN BACKUP语句将表空间TABLESPACE_NAME设置成备份模式,类似于系统给需要备份的表空间加锁,防止在备份的过程中用户对此表空间进行操作
最后执行ALTER TABLESPACE TABLESPACE_NAME END BACKUP语句将表空间TABLESPACE_NAME设置成备份结束,类似于系统给正在备份的表空间解锁,以便用户对此表空间进行操作
9.修改表空间名称:
ALTER TABLESPACE MYTBS01 RENAME TO MYTBS01_NEW;
当表空间处于脱机状态时不能修改表空间名称
10.设置数据库默认表空间:
ALTER DATABASE DEFAULT TABLESPACE MYTBS01;
11.设置数据库默认临时表空间:
ALTER DATABSE DEFAULT TTMPORARY TABLESPACE MYTMP01;
12.查询数据库的默认表空间:
SELECT USERNAME,DEFAULT_TABLESPACE,TEMPORARY_TABLESPACE FROM DBA_USERS;
13.删除表空间:
DROP TABLESPACE MYTBS01;
如果要删除一个非空的表空间就要使用INCLUDING CONTENTS选项
DROP TABLESPACE MYTBS07 INCLUDING CONTENTS;
14.查询表空间的基本信息查询视图DBA_TABLESPACES
15.查询表空间中数据文件的信息可以查询视图DBA_DATA_FILES
16.要统计数据库中每个表空间的空闲盘区的信息可以查询DBA_FREE_SPACE视图
17.查询表空间组的信息可以查询DBA_TABLESPACE_GROUPS视图
18.查询临时表空间的临时文件信息可以查询DBA_TEMP_FILES视图

分享到:
评论

相关推荐

    获取oracle表空间脚本

    ### 获取Oracle表空间脚本 #### 背景与需求 在进行数据库备份与恢复的过程中,经常需要获取当前Oracle数据库中的表空间信息及其创建脚本。这样做的目的是为了确保在恢复过程中能够快速重建原有的数据库环境,包括...

    Oracle 表空间 收缩

    ### Oracle 表空间收缩详解 #### 一、背景与需求 在Oracle数据库管理过程中,合理地管理和优化存储空间是非常重要的工作之一。有时,我们会遇到这样的情况:某个表空间占用的实际物理空间远大于其实际需要的空间,...

    \Oracle 表空间与数据文件

    ### Oracle表空间与数据文件详解 #### 一、Oracle表空间与数据文件的概念 在Oracle数据库中,**表空间**是存储数据的基本单位之一,它是一个或多个数据文件的逻辑集合。表空间提供了数据存储的逻辑视图,而数据...

    oracle 表空间创建

    2. 然后,授予用户创建表空间的权限: ```sql grant create tablespace to 用户名; ``` 3. 接下来,创建表空间,使用以下语句: ```sql create tablespace 表空间名 datafile '路径' size *M; ``` 其中,`表空间名`...

    学习oracle创建一个表空间创建临时表空间创建用户表空间资源的权限

    2. **创建临时表空间**: 创建临时表空间的步骤与创建常规表空间相似,只是需要指定`TEMPORARY TABLESPACE`: ```sql CREATE TEMPORARY TABLESPACE MY_TEMP TEMPFILE '/u01/app/oracle/oradata/MY_DB/MY_TEMP....

    oracle表空间命令语句大全

    Oracle 表空间命令语句大全提供了 Oracle 数据库管理的重要操作,包括建立表空间、建立 UNDO 表空间、建立临时表空间、改变表空间状态、删除表空间、扩展表空间和查看表空间信息等。这些命令对于 Oracle 数据库管理...

    oracle表空间碎片整理

    利用DBMS_SPACE包对Oracle 表碎片进行监控与清理,

    Oracle多个表空间合并成一个表空间,验证通过

    ### Oracle 多个表空间合并成一个表空间详解 #### 背景介绍 在进行数据库维护时,可能会遇到需要将多个表空间合并为一个的情况。这种情况通常发生在新项目的开发过程中,尤其是当新项目需要引用来自其他表空间的...

    oracle表空间详解

    Oracle 表空间详解 Oracle 表空间是 Oracle 数据库中一个非常重要的概念,它是数据库中存储空间的逻辑概念。由于 Oracle 数据库可以存储大量的数据,但是数据文件大小受操作系统的限制,而过大的数据文件对数据的...

    oracle定时删除表空间的数据并释放表空间

    2. **自动段空间管理(Automatic Segment Space Management, ASSM)**:Oracle从9i版本开始引入ASSM,它简化了表空间的空间管理,通过位图块来跟踪空闲空间,提高了空间利用率和删除效率。 3. **purge操作**:Purge...

    oracle表空间查询命令

    ### Oracle表空间查询与管理命令详解 #### 一、Oracle表空间概述 在Oracle数据库中,表空间是逻辑存储单元,用于组织数据文件。每个Oracle数据库至少包含一个表空间,默认情况下,系统会在创建数据库时自动创建`...

    Oracle临时表空间满的解决步骤

    解决 Oracle 临时表空间满的问题需要通过查看当前数据库的默认临时表空间、查看当前临时表空间的大小、创建新的临时表空间、将新建的临时表空间设置为数据库的默认临时表空间、删除原来的临时表空间、创建新的临时表...

    oracle 创建表空间命令

    2. **创建表空间**:接着,使用数据文件创建表空间,如下所示: ```sql CREATE TABLESPACE tablespace_name DATAFILE '/path/to/datafile.dbf'; ``` 例如,创建名为`mytablespace`的表空间,使用之前创建的数据文件...

    创建ORACLE表空间

    ### 创建Oracle表空间知识点 #### 一、Oracle表空间概述 在Oracle数据库中,表空间是逻辑存储单元,用于组织和管理数据文件。一个表空间可以包含多个数据文件,而一个数据文件只能属于一个表空间。Oracle中的表...

    如何正确的删除Oracle表空间数据文件

    在Oracle数据库管理中,删除表空间数据文件是一项关键操作,涉及到数据的安全性和系统的稳定性。本文将详细介绍如何正确地删除Oracle表空间数据文件,探讨OFFLINE和OFFLINE DROP的区别,以及在操作系统层面删除数据...

    oracle表空间学习整理,包括常用sql

    Oracle数据库系统是企业级数据管理的重要工具,其中表空间(Tablespace)是数据库存储结构的基础单元。本篇文章将深入探讨Oracle表空间的概念、作用、创建方法以及常用的SQL语句,帮助你更好地理解和管理数据库资源...

    创建Oracle表空间

    2. 创建数据表空间: 数据表空间是存储用户数据的主要表空间类型。创建数据表空间的命令与创建临时表空间类似,但是不使用temporary关键字。同样需要指定表空间名称、数据文件的路径和大小、是否自动扩展和最大扩展...

    Oracle临时表空间不足和批处理缓慢问题探讨.pdf

    2. 解决临时表空间不足问题的方法:通过编写记录使用临时表空间 SQL 语句的脚本,抓取最消耗临时表空间的语句,并对其进行优化。 3. AWR 报告的作用:AWR 报告可以显示占用临时表空间最高的 SQL 语句,但可能不准确...

    oracle增加表空间

    ### Oracle在Linux环境下增加表空间及用户操作指南 #### 一、概述 Oracle数据库是业界广泛使用的数据库管理系统之一,为了确保数据库性能与可用性,合理地管理表空间是非常重要的一个环节。本文将详细介绍如何在...

    oracle表空间变动注意事项

    在Oracle数据库管理与维护过程中,表空间(tablespace)的操作是一项非常重要的工作。表空间是Oracle数据库中的逻辑存储单元,用于组织和管理数据文件。本文将详细介绍关于Oracle表空间变动时需要注意的关键点,特别...

Global site tag (gtag.js) - Google Analytics