Oracle 存储结构二
创建和管理表空间
创建表空间
典型语句:
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 存储结构二的更多相关文章
- PostgreSQL的存储系统二:REDOLOG文件存储结构二
REDOLOG文件里的用户数据和数据文件里的用户数据存储结构相同 几个月前同事给台湾一家公司培训<pg9 ad admin>时,有个学员提及WAL里记录的内容为Query时的SQL语句(比 ...
- Oracle 存储结构
数据库是存储数据的容器,它的主要功能是保存和共享数据. oracle数据库的存储结构可以分为逻辑存储结构和物理存储结构,对于这两种存储结构,oracle是分别进行管理的. 逻辑存储结构:oracle内 ...
- oracle存储结构
数据库的物理存储结构 select * from v$datafile; 数据库的逻辑存储结构,从表空间开始查起一个数据库对象的逻辑存储结构如下表空间-段-区-块 select * from dba_ ...
- Oracle 存储结构一
了解块中表行数据的存储 Oracle数据存储模型 逻辑结构在左,物理结构在右 有一个关系使用虚线绘制,表示段与数据文件的多对多关系.之所以使用虚线表示关系,是因为这种多对多关系不应存在. 表空间实体消 ...
- Oracle存储结构-表空间
表空间 oracle文件注意的问题 控制文件,redolog文件,数据文件----一定要放在存储上 问题:银行用户,集群切换失败,原因是数据库中部分的文件未放到存储上 存储三种组织形式:文件系统.AS ...
- Oracle 存储结构三
Oracle数据库服务器自动管理空间的方法 段空间的分配 空间以区间的形式分配给段,区间是一组连续的Oracle块.每个数据文件都有一个位图,来描述文件中块的状态,块可能是空闲的,也可能是区间中已分配 ...
- Oracle存储结构-段区块
段 一个段建立以后首先会分配一个区,区中包括含8个块,这时执行insert插入数据,当这个区写满后,会在分配一个区 1.一个段建立以后,Oracle如何给段分配区? 2.段分配到区以后,有了空闲空间, ...
- PLSQL中使用二维存储结构---二维数组
代码如下: --PLSQL中没有数组的概念 用TYPE 和Table of Record来代替多维数组--create by jenrry 20171028-- 1.0 建立存放列的测试表creat ...
- Oracle 逻辑存储结构
一.总述 逻辑存储结构是 Oracle 数据库存储结构的核心内容,对 Oracle 数据库的所有操作都会涉及逻辑存储结构.逻辑存储结构是从逻辑的角度分析数据库的组成,是对数据存储结构在逻辑概念上的划分 ...
随机推荐
- 关于构造器和Serlvet的知识点
关于java的构造器方法: 1.java构造方法可以有任何的访问修饰符:public.protected.private或者没有修饰(通常被package或者friendly调用)但是不能有非访问性质 ...
- Effective C++(1-2) 编译器替换预处理器
1 C++最主要的四部分: C Object-Oriented C++: 面向对象 Template C++:泛型编程 STL C++高效编程守则视状况而变化,取决于你使用C++的哪一部分. 2 尽量 ...
- Java实例---简单的数据库操作
源码分析 DAOFactory.java package cn.ftl.mysql ; public class DAOFactory { public static IEmpDAO getIEmpD ...
- 【Python学习】Python中的数据类型精度问题
Python真的很神奇...神奇到没有直接的数据类型概念,并且精度可以是任意精度.想当初,第一次接触OI算法时,写得第一个算法就是高精度加法,捣鼓了半天.一切在Python看来,仅仅三行代码即可完成. ...
- python 实现插入排序、冒泡排序、归并排序
def InsertSort(A): '''插入排序算法:传入一个list,对list中的数字进行排序''' print('插入排序前list元素顺序:',A) length=len(A) for i ...
- Python2.7 - IMOOC - 3
第三章 Python变量和数据类型 3-4.变量 变量名必须是大小写英文.数字和下划线(_)的组合,且不能用数字开头. 同一个变量可以反复赋值,而且可以是不同类型的变量,例如: a = 123 # a ...
- Centos 7 iptables配置
systemctl status firewalld.service #检测是否开启了firewall systemctl stop firewalld.service #关闭firewall syt ...
- navicat连接PostgreSQL报:column “rolcatupdate” does not exist ...错误的解决办法
avicat premium 连接PostgreSQL出现: column “rolcatupdate” does not exist ... 错误如图: 解决方案: 看看你的navicat 是否为最 ...
- Webserver管理系列:12、开启关闭Ping命令
有些时候站点打开速度会非常慢,我们要排查故障所在.须要用到Ping命令.可是Windows Server 2008防火墙默认是关闭Ping的 我们能够通过下面方法开启Ping 打开防火墙->高级 ...
- Java并发案例01---多线程之死锁
多线程之死锁案例一 package example; /** * 模拟死锁 * @author maple * */ public class DeadLock { public int flag = ...