创建和管理表空间

创建表空间

典型语句:

 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. svg动画之日出

    效果分析 一个太阳,从底部升起来,天空由黑变蓝.那么要画的东西确定为三个:1.太阳(圆形)2.太阳光芒 3.天空 代码如下 <!--画太阳--> <svg width="6 ...

  2. Git和Github快速入门

    一.什么是Git? 假设你在的公司要上线一个新功能,你们开发团队为实现这个新功能,写了大约5000行代码,上线没2天,就发现这个功能用户并不喜欢,你老板让你去掉这个功能,你怎么办?你说简单,直接把50 ...

  3. Codeforces Round #419 A+B

    A. Karen and Morning time limit per test  2 seconds memory limit per test  512 megabytes   Karen is ...

  4. Codeforces Round #417 B. Sagheer, the Hausmeister

    B. Sagheer, the Hausmeister time limit per test  1 second memory limit per test  256 megabytes   Som ...

  5. C/C++遍历进程和进程ID的小工具

    原文:http://blog.csdn.net/qq78442761/article/details/54646010 当我们写某些具有破坏性的程序时就需要对进程进行遍历和提取ID 对于上述功能,我们 ...

  6. file cycle

    # Author:Alex# Date:2017.06.07# Version:3.6.0with open('james.txt') as jaf: data = jaf.readline() ja ...

  7. linux用户的增加与删除

    sudo useradd xxx 仅仅是添加用户, 不会在home目录添加帐号很简单 Ubuntu中提供了两种方式 图形界面 增加 和 Windows 一样 ,还有一种就是 Linux传统的 增加方法 ...

  8. python_4程序设计基础

    1注释 2变量和常量 3命名 4表达式 5赋值语句

  9. SpringBoot 中解决跨域请求

    CORS 理解 同源策略是web浏览器实现的一个重要的安全概念,它防止JavaScript代码对不同的来源(例如,不同的域)发出请求,而不是它所服务的来源.虽然同源策略有效地防止来自不同来源的资源,但 ...

  10. HttpClient简述

    HttpClient相比传统JDK自带的URLConnection,增加了易用性和灵活性,它不仅是客户端发送Http请求变得容易,而且也方便了开发人员测试接口(基于Http协议的),即提高了开发的效率 ...