创建和管理表空间

创建表空间

典型语句:

 CREATE SMALLFILE TABLESPACE "JWTS"
DATAFILE '/u01/app/oracle/oradata/oraclzjwts01.dbf'
SIZE 100M AUTOEXTEND ON NEXT 10M MAXSIZE 200M
LOGGIN
DEFAULT NOCOMPRESS
ONLINE
EXTENT MANAGEMENT LOCAL AUTOALLOCATE
SEGMENT SPACE MANAGEMENT AUTO;

第1行:表空间使SMALLFILE。这意味着,它可以由多个数据文件组成。替换项是BIGFILE,在这种情况下,将无法在后来添加第二个数据文件(但可以重新调整第一个文件的大小)。SMALLFILE是默认值。

第2行:数据文件的名称和位置

第3行:创建的数据文件大小是100MB,变满时,可以自动扩大10MB,最大为200MB。默认方式下,不会启用自动扩展

第4行:表空间中针对段的所有操作将生成重做内容,这是默认做法。可以为极少操作(如生成索引)仅用重做的生成

第5行:表空间中的对象未压缩。这是默认方式

第6行:表空间将立即联机(可供使用)。这是默认方式

第7行:表空间使用位图来分配空间,其大小会自动设置,这是默认方式

第8行:表空间中的段将使用位图来跟踪块的使用情况,这是默认方式

更改表空间

1.重命名表空间及其数据文件

ALTER  TABLESPACE oldname RENAME TO newname;

可以在表空间使用期间对其进行重命名,但要重命名数据文件,数据文件必须处于脱机状态。

2.使表空间联机或脱机

ALTER  TABLESPACE tablespacename OFFLINE [ NORMAL | IMMEDIATE | TEMPORARY ];

ALTER  TABLESPACE tablespacename ONLINE;

3.将表空间标记为只读

ALTER  TABLESPACE tablespacename [ READ ONLY | READ WRITE ];

将表空间标记为只读后,将不能使用DML语句来更新其中的任何对象。但是可以删除它们,删除表并不对表产生实际影响,它是针对数据字典的事务,会删除描述表及其列的行:数据字典位于SYSTEM表空间,此表空间并不是只读的。

4.重新调整表空间的大小

要重新调整表空间的大小,可以向其添加数据文件,也可以调整现有数据文件的大小。如果在创建文件时使用AUTOEXTEND语法,则可以根据需要自动向上重新调整数据文件的大小。否则,必须使用命令手动更改:

ALTER  DATABASE DATAFILE 'filename' RESIZE n[ M | G | T ];

添加数据文件:

ALTER  DATABASE ADD DATAFILE 'filename' SIZE n[ M | G | T ];

创建文件时,可以添加自动扩展子句:

ALTER  DATABASE DATAFILE 'filename' AUTOEXTEND ON NEXT n[ M | G | T ] MAXSIZE n[ M | G | T ] ;

删除表空间

DROP TABLESPACE tablespacename [ INCLUDE CONTENTS [ AND DATAFILES ] ];

如为指定INCLUDE CONTENTS关键字,但表空间中包含任何对象,那么删除操作将失败。使用这些关键字指示Oracle首先删除对象,然后删除表空间。即便如此,在一些环境下同样会失败,如果表空间包含的表与另一个表空间的表存在外键关系,而且此表是父表,则删除将失败。

如果未指定AND DATAFILES关键字,则将删除表空间及其内容,但数据文件仍保存在磁盘上。Oracle将不了解它们位于何处,必须使用操作系统命令删除它们。

区间管理

区间管理方法为每个表空间设置,应用于表空间中的所有段。字典管理已不建议使用。

本地区间管理使用在每个数据文件中存储的位图。位图中的每个位覆盖一个块的范围,在分配空间时,适当的位从0变成1。在创建本地管理的表空是,一个重要的选项是unform size。如果指定了此选项,那么,在表空间中分配的每个区间将使用此大小。这极大地提高了空间管理效率,因为每个位覆盖的块范围可以更大:每个区间只需一位。

默认语法:

create tablespace any_tabs

datafile 'any_tabs_01.dbf' size 10g

extent management local autoallocate;

在表空间中创建多个段时,Oracle将分配一个8块(64KB)的区间。随着段的增长,将需要更多区间,Oracle最多可分配16个这样大小的区间,之后它会分配128块(1MB)的区间。因此,在不断增加的块中为快速增长的段提供空间。

如果数据库从先前版本升级而来,则可能包括字典管理的表空间,检查语句:

select tablespace_name, extent_management from dba_tablespaces;

使用下面的PL/SQL程序,将任何字典管理的表空间转换为本地管理:

excute dbms_space_admin.tablespace_migrate_to_local ('tablespacename');

管理段空间

管理段空间的方法为每个表空间设置,应用于表空间中所有的段。不建议使用手动管理。

自动管理表空间方式创建的每个段都有一组位图,位图描述每个块的满度。每个段有5个位图,一个块将恰好位于一个位图上。位图跟踪块中使用的空间:一个位图用于全满块,多个位图用于满度为75%~100%的块、50%~75%的块、25%~50%的块、0%~25%的块。当搜索在其中插入行的块时,会话服务器进程将首先查看行的大小来确定要搜索的位图。例如,如果块大小是4KB,而要插入的行是1500B,则将通过搜索满度为25%~50%的位图来找到适当的块。此位图中的每个块至少有2KB的可用空间。随着行的插入或删除,或通过更新更改大小,位图将自动更新。

要查看任何表空间是否在使用手动管理,运行此查询:

select tablespace_name, segment_space_management from dba_tablespaces;

此查询应返回的唯一表空间是SYSTEM、撤销表空间和临时表空间。这些表空间中的段由Oracle管理,不需要任何自动机制的帮助。无法将表空间从手动段空间管理转换为自动段空间管理。唯一的解决方案是使用自动段空间管理方法新建表空间,将段移入其中(此时将生成位图),并删除旧的表空间。

OMF

有了Oracle管理的文件(Oracle-Managed Files,OMF),DBA将不必了解有关文件系统的任何知识。将以完全自动的方式完成数据库文件的创建。要启用OMF,请设置一部分或所有下列实例参数:

DB_CREATE_FILE_DEST

DB_CREATE_ONLINE_LOG_DEST_1

DB_CREATE_ONLINE_LOG_DEST_2

DB_CREATE_ONLINE_LOG_DEST_3

DB_CREATE_ONLINE_LOG_DEST_4

DB_CREATE_ONLINE_LOG_DEST_5

DB_RECOVERY_FILE_DEST

DB_CREATE_FILE_DEST参数指定独有数据文件和联机重做日志文件的默认位置。

DB_CREATE_ONLINE_LOG_DEST_n参数指定联机重做日志文件的默认位置,且优先于DB_CREATE_FILE_DEST。

DB_RECOVERY_FILE_DEST设置归档重做日志文件和RMAN备份文件的默认位置。

除了默认文件位置外,OMF还生产文件名并在默认方式下设置文件大小。设置这些参数可以极大地简化与文件相关的操作。启用OMF后,始终可以通过CREATE TABLESPACE命令上指定数据文件名执行重写操作。

Oracle 存储结构二的更多相关文章

  1. PostgreSQL的存储系统二:REDOLOG文件存储结构二

    REDOLOG文件里的用户数据和数据文件里的用户数据存储结构相同 几个月前同事给台湾一家公司培训<pg9 ad admin>时,有个学员提及WAL里记录的内容为Query时的SQL语句(比 ...

  2. Oracle 存储结构

    数据库是存储数据的容器,它的主要功能是保存和共享数据. oracle数据库的存储结构可以分为逻辑存储结构和物理存储结构,对于这两种存储结构,oracle是分别进行管理的. 逻辑存储结构:oracle内 ...

  3. oracle存储结构

    数据库的物理存储结构 select * from v$datafile; 数据库的逻辑存储结构,从表空间开始查起一个数据库对象的逻辑存储结构如下表空间-段-区-块 select * from dba_ ...

  4. Oracle 存储结构一

    了解块中表行数据的存储 Oracle数据存储模型 逻辑结构在左,物理结构在右 有一个关系使用虚线绘制,表示段与数据文件的多对多关系.之所以使用虚线表示关系,是因为这种多对多关系不应存在. 表空间实体消 ...

  5. Oracle存储结构-表空间

    表空间 oracle文件注意的问题 控制文件,redolog文件,数据文件----一定要放在存储上 问题:银行用户,集群切换失败,原因是数据库中部分的文件未放到存储上 存储三种组织形式:文件系统.AS ...

  6. Oracle 存储结构三

    Oracle数据库服务器自动管理空间的方法 段空间的分配 空间以区间的形式分配给段,区间是一组连续的Oracle块.每个数据文件都有一个位图,来描述文件中块的状态,块可能是空闲的,也可能是区间中已分配 ...

  7. Oracle存储结构-段区块

    段 一个段建立以后首先会分配一个区,区中包括含8个块,这时执行insert插入数据,当这个区写满后,会在分配一个区 1.一个段建立以后,Oracle如何给段分配区? 2.段分配到区以后,有了空闲空间, ...

  8. PLSQL中使用二维存储结构---二维数组

    代码如下:  --PLSQL中没有数组的概念 用TYPE 和Table of Record来代替多维数组--create by jenrry 20171028-- 1.0 建立存放列的测试表creat ...

  9. Oracle 逻辑存储结构

    一.总述 逻辑存储结构是 Oracle 数据库存储结构的核心内容,对 Oracle 数据库的所有操作都会涉及逻辑存储结构.逻辑存储结构是从逻辑的角度分析数据库的组成,是对数据存储结构在逻辑概念上的划分 ...

随机推荐

  1. 关于构造器和Serlvet的知识点

    关于java的构造器方法: 1.java构造方法可以有任何的访问修饰符:public.protected.private或者没有修饰(通常被package或者friendly调用)但是不能有非访问性质 ...

  2. Effective C++(1-2) 编译器替换预处理器

    1 C++最主要的四部分: C Object-Oriented C++: 面向对象 Template C++:泛型编程 STL C++高效编程守则视状况而变化,取决于你使用C++的哪一部分. 2 尽量 ...

  3. Java实例---简单的数据库操作

    源码分析 DAOFactory.java package cn.ftl.mysql ; public class DAOFactory { public static IEmpDAO getIEmpD ...

  4. 【Python学习】Python中的数据类型精度问题

    Python真的很神奇...神奇到没有直接的数据类型概念,并且精度可以是任意精度.想当初,第一次接触OI算法时,写得第一个算法就是高精度加法,捣鼓了半天.一切在Python看来,仅仅三行代码即可完成. ...

  5. python 实现插入排序、冒泡排序、归并排序

    def InsertSort(A): '''插入排序算法:传入一个list,对list中的数字进行排序''' print('插入排序前list元素顺序:',A) length=len(A) for i ...

  6. Python2.7 - IMOOC - 3

    第三章 Python变量和数据类型 3-4.变量 变量名必须是大小写英文.数字和下划线(_)的组合,且不能用数字开头. 同一个变量可以反复赋值,而且可以是不同类型的变量,例如: a = 123 # a ...

  7. Centos 7 iptables配置

    systemctl status firewalld.service #检测是否开启了firewall systemctl stop firewalld.service #关闭firewall syt ...

  8. navicat连接PostgreSQL报:column “rolcatupdate” does not exist ...错误的解决办法

    avicat premium 连接PostgreSQL出现: column “rolcatupdate” does not exist ... 错误如图: 解决方案: 看看你的navicat 是否为最 ...

  9. Webserver管理系列:12、开启关闭Ping命令

    有些时候站点打开速度会非常慢,我们要排查故障所在.须要用到Ping命令.可是Windows Server 2008防火墙默认是关闭Ping的 我们能够通过下面方法开启Ping 打开防火墙->高级 ...

  10. Java并发案例01---多线程之死锁

    多线程之死锁案例一 package example; /** * 模拟死锁 * @author maple * */ public class DeadLock { public int flag = ...