数据库的存储结构

数据库主要用于存储和检索相关的信息,Oracle数据库包含逻辑结构和物理结构。

物理结构是指现实存储单元,由一组文件组成如数据文件、日志文件、控制文件。

  数据文件:用于存储数据的文件。如表,索引和数据等都存储在数据文件中。

  日志文件:用于记录对数据库的修改信息。

  控制文件:用于存储 Oracle实例信息、数据文件信息和日志文件信息的二进制文件。由于存储了数据文件和日志文件的信息,所以 Oracle启动时必须访问呢控制文件。  

逻辑结构式是指数据概念性的组织。包括  表空间、表、行等概念组成。

一、表空间(tablespace)的概念

表空间是Oracle特殊的发明,用于存储数据库表,索引等对象的磁盘逻辑空间。在物理上表空间由1个或者多个数据文件组成,而数据库在逻辑上由1个或者多个表空间组成。

表空间在Oracle10g中北分为一下3类:

  1、永久性表空间:一般保持基表、视图、存储过程和索引等数据。SYSTEM、SYSAUX、USERS、EXAMPLE表空间是默认安装的。

  2、临时性表空间:用于保存系统中短期活动的数据,如排序数据等。

  3、撤销表空间;用来帮助回退未提交的事务数据,已提交了的数据在这里是不可以恢复的。

  一般不需要建立临时表空间和撤销表空间,除非把它们转移到其他磁盘以提高性能。

  表空间的目的:

  1、对不同用户分配不同的表空间,对不同的模式对象分配不同的表空间,方便对用户操作,对模式对象的管理。

  2、可以将不同数据文件创建到不同的磁盘中,有利于管理磁盘空间,有利于提高I/O性能,有利于备份和恢复数据等。

  

二、系统自带的表空间:

  SYSTEM表空间:用于存放Oracle系统内部表和数据字典的数据,如表名、列名、用户名等。不建议将用户创建的表、索引等对象存放到SYSTEM表空间中。

  SYSAUS表空间:用于存放Oracle系统内部的常用的样例用户的对象。SYSAUX表空间一般不存储用户的数据,由Oracle系统自动维护。

  Undotbs表空间:Undotbs表空间用于存放撤销信息的表空间。当我们对数据库表的数据进行增加、修改、删除时,Oracle自动使用撤销表空间来临时存储修改前的数据。当所做操作提交后, Oracle可根据需要保留修改前数据的时间长短来释放撤销表空间的部分空间。一般在创建Oracle实例后,Oracle会自动创建一个名为UNDOTBS1的撤销表空间。

  TEMP表空间:用于存放临时数据的特殊表空间。例如:当用户需要进行排序时,Oracle讲排序的数据临时放到该表空间内。排序完成后即可释放排序数据所占用的空间。

  USERS表空间:Users表空间是Oracle建议用户使用的表空间,可以在这个表空间上创建各种对象,如创建表、索引等。

  Example表空间:(实例表空间)它用来存放我们安装Oracle的时候创建的实例用户模式的数据信息。

  除了 Oracle自带的表空间外,用户可以根据需要创建多个表空间,以区分用户数据和系统数据。一般在Oracle数据库中,只创建一个数据库实例,而创建多个表空间来管理保存多个项目中的数据库表。

  

 三、创建表空间

  语法:

  CREATE TABLESPACE tablespacename

  DATAFILE 'filename'[size integer]

  [AUTOEXTEND[OFF|ON]]

  tablespancename:表示创建表空间的名称。

  filename:表示组成表空间的一个活多个数据文件,当有多个数据文件时,使用,分隔。

  size:指定文件的大小,单位是K(字节)或者M(兆)。

  AUTOEXTEND:用来启用或警用数据文件的自动扩展,只有设置了AUTOEXTEND后,在存储空间使用完毕后才会自动扩展,设置为ON即可,如果设置为OFF,则不能自动扩展。会导致存储空间不足的情况。

  示例:  

--创建一个表空间,物理文件为shop_dev_data.dbf,初始大小为100M,为自动增长
CREATE TABLESPACE shop_dev_data
datafile 'E:\DB\Shop\shop_dev_data.dbf'
size 100m autoextend on

四、操作表空间

  1、更改表空间大小:

  ALTER DATABASE DATAFILE '数据文件路径' resize <新的大小>

--将表空间的物理文件大小设置为50M
ALTER DATABASE DATAFILE 'E:\DB\Shop\shop_dev_data.dbf' resize 50m

  2、改变表空间的属性和状态

  ALTER TABLESPACE <表空间名称> READ WRITE;

--设置表空间为只读状态
ALTER TABLESPACE SHOP_DEV_DATA READ ONLY; --设置表空间为读写状态
ALTER TABLESPACE SHOP_DEV_DATA READ WRITE; --修改表空间状态为offline;
ALTER TABLESPACE SHOP_DEV_DATA OFFLINE;

  

  3、删除表空间

  DROP TABLESPACE tablespacename;

--删除表空间
DROP TABLESPACE SHOP_DEV_DATA

  

  4、查询系统中所有的表空间  

SELECT t.TABLESPACE_NAME,t.STATUS FROM DBA_TABLESPACES t

  

  5、查询表空间和数据文件对应关系

SELECT d.TABLESPACE_NAME,d.FILE_NAME FROM DBA_DATA_FILES d

  

  6、查询用户默认的表空间  

--查询用户默认的表空间
SELECT u.username,u.default_tablespace FROM DBA_USERS

  

  7、查询表空间中包含哪些表  

--查询“SHOP_DEV_DATA”表空间下对应的所有的表
SELECT * FROM USER_TABLES ut
WHERE ut.TABLESPACE_NAME = 'SHOP_DEV_DATA' --名称必须全大写

  8、移动表到一个新的表空间  

--将newTable移动到users表空间下
ALTER TABLE NEWTABLE MOVE TABLESPACE USERS SELECT * FROM USER_TABLES ut
WHERE ut.TABLESPACE_NAME = 'USERS'

  9、修改用户默认表空间  

SELECT username,default_tablespace FROM DBA_USERS
--修改shop_user用户默认表空间为users
ALTER USER shop_user DEFAULT TABLESPACE USERS

Oracle基础(三) 表空间的更多相关文章

  1. Oracle基础 01 表空间 tablespace

    --查看表空间 select * from dba_tablespaces; select * from v$tablespace; select * from dba_data_files; --查 ...

  2. Oracle基础:表空间名称大小写问题

    现场环境:  操作系统:windows            Oracle版本:10g 今天在通过imp导入数据时,日志提示TS_W5_D表空间不存在.感觉很奇怪,导入用户的表空间是ts_w5_d,并 ...

  3. oracle基础-创建表空间

    一. 创建表空间的完整格式 CREATE [UNDO|TEMPORARY] TABLESPACE tablespace_name       DATAFILE 'path/filename' [SIZ ...

  4. [Oracle]理解undo表空间

    一.回退段介绍 在Oracle数据库中,当某个事物对数据进行修改时,Oracle首先将数据的原始值保存到一个回退段中.一个事物只能将它的回退信息保存到一个回退段中,而多个并行事物可以使用同一个回退段. ...

  5. 删除Oracle用户及表空间

    --转载自 https://blog.csdn.net/sunny05296/article/details/81126548--以sysdba用户登录,查找需要删除的用户conn / as sysd ...

  6. Oracle 删除用户和表空间////Oracle创建删除用户、角色、表空间、导入导出、...命令总结/////Oracle数据库创建表空间及为用户指定表空间

    Oracle 使用时间长了, 新增了许多user 和tablespace. 需要清理一下 对于单个user和tablespace 来说, 可以使用如下命令来完成. 步骤一:  删除user drop ...

  7. 记一次ORACLE的UNDO表空间爆满分析过程

    这篇文章是记录一次ORACLE数据库UNDO表空间爆满的分析过程,主要整理.梳理了同事分析的思路.具体过程如下所示: 早上收到一数据库服务器的UNDO表空间的告警邮件,最早一封是7:55发出的(监控作 ...

  8. Oracle 10g bigfile表空间、smallfile 表空间

    smallfile tablespace设置不同大小的db_block_size时数据文件允许的最大大小 db_block_size=2KB,2KB*4M=8192M      8Gdb_block_ ...

  9. Oracle 10g创建表空间的完整步骤详解

    本文我们主要介绍了Oracle 10g创建表空间的完整步骤,包括表空间的创建与删除.为应用创建用户以及权限的授予等操作,希望能够对您有所帮助. AD:WOT2014:用户标签系统与用户数据化运营培训专 ...

  10. 如何让Oracle释放undo表空间

    如何让Oracle释放undo表空间   最佳答案   在日常的数据库维护和数据库编程中经常会遇到犹豫对大数据量做DML操作后是得ORACLE的undo表空间扩展到十几个G或者几十个G 但是这些表空间 ...

随机推荐

  1. .NET4中多线程并行方法Parallel.ForEach

    原文发布时间为:2011-12-10 -- 来源于本人的百度文章 [由搬家工具导入] namespace ForEachDemo{    using System;    using System.I ...

  2. C++ MFC std::string转为 std::wstring

    std::string转为 std::wstring std::wstring UTF8_To_UTF16(const std::string& source) { unsigned long ...

  3. C++笔试题目大全(笔试宝典)(不断完善中)

    1.new . delete . malloc . free 关系 delete 会调用对象的析构函数 , 和 new 对应 free 只会释放内存, new 调用构造函数. malloc 与 fre ...

  4. Scala学习随笔——控制语句

    Scala只内置了为数不多的几种程序控制语句:if.while.for.try catch以及函数调用,这是因为从Scala诞生开始就包含了函数字面量,Scala内核没有定义过多的控制结构,而是可以通 ...

  5. Dom4J读写xml

    解析读取XML public static void main(String[] args) { //1获取SaxReader对象 SAXReader reader=new SAXReader(); ...

  6. hdu 2489(状态压缩+最小生成树)

    Minimal Ratio Tree Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Other ...

  7. 牛客小白月赛3 F 异或【区间交集】

    链接:https://www.nowcoder.com/acm/contest/87/F 来源:牛客网 题目描述 Cwbc想测试一下他的加密协议,以便防止其他人偷看他给XHRlyb的信. Cwbc提出 ...

  8. string那些事之replace

    /* 用法一: 用str替换指定字符串从起始位置pos开始 长度为为len的字符串 string &replace(size_t pos, size_t len, const string&a ...

  9. 华农oj Problem B: Averyboy找密码【STL】

    Problem B: Averyboy找密码 Time Limit: 1 Sec Memory Limit: 128 MB Submit: 83 Solved: 29 [Submit][Status] ...

  10. ELK故障:elk在运行一段时间后,没有数据。

    故障排查: 1. 查看kafka.logstash.elasticsearch进程是否运行正常,显示正常. 2. 使用logstash在前台运行,有日志输出 3. 查看kafka的topic的offs ...