zoukankan      html  css  js  c++  java
  • Oracle表空间

    一个数据库被分成一个个的逻辑单元,这些逻辑单元叫:表空间。

    表空间用于存放数据库象(表、索引等),一个数据库逻辑上由一个或者多个表空间组成。 表空间由一个或多个数据文件(物理结构)组成。

    表空间用于存放数据库对象。而这些对象实际上存放在数据文件中。数据文件是数据的物理载体。

    每个数据库都有一个系统表空间(system  tablespace)和一个辅助表空间(Sysaux tablespace).创建数据库时,Oracel会自动创建这两个表空间。

    数据库有以下类型的表空间:永久表空间(Permanent Tablespaces)、临时表空间(Temporary Tablespace)、回滚表空间(Undo Tablespace)。

    表空间中, 区 (extent)的管理方式:

    字典管理(dictionary,使用数据字典来跟踪表空间中区的使用。放分配一个新的区、使用一个区、或释放一个区的时候,Oracle都会更新数据字典FET$与UET$,

    通过数据字典来反映去的状态,当更新数据字典时,会产生回滚信息,Oracle会存储这些回滚信息。(这也是字典管理的表空间被逐渐淘汰的根源)。

    本地管理(locally Managed Tablespaces), 它通过本地表空间来管理区的使用。表空间中的每个数据文件都有一个位图(Bitmap),位图存放在数据文件头,位图中的每个位(bit)与一个或者一组数据块(block)相对应,当分配一个区或者释放一个区的时候,Oracle 将更新位图以反映这种改变。

    特别的,对于本地管理的表空间,Oracle不会更新数据字典,也不会产生回滚信息。

    ============

    概念区分:

    ============

    数据库:
    Oracle数据库是数据的物理存储。这就包括(数据文件ORA或者DBF、控制文件、联机日志、参数文件)。其实Oracle数据库的概念和其它数据库不一样,这里的数据库是一个操作系统只有一个库。可以看作是Oracle就只有一个大数据库。

    实例:  
    一个Oracle实例(Oracle Instance)有一系列的后台进程(Backguound Processes)和内存结构(Memory Structures)组成。一个数据库可以有n个实例。

    用户:
    用户是在实例下建立的。不同实例可以建相同名字的用户。

    表空间:
    表空间是一个用来管理数据存储逻辑概念,表空间只是和数据文件(ORA或者DBF文件)发生关系,数据文件是物理的,一个表空间可以包含多个数据文件,而一个数据文件只能隶属一个表空间。

    数据文件(dbf、ora):
     数据文件是数据库的物理存储单位。数据库的数据是存储在表空间中的,真正是在某一个或者多个数据文件中。而一个表空间可以由一个或多个数据文件组成,一个数据文件只能属于一个表空间。一旦数据文件被加入到某个表空间后,就不能删除这个文件,如果要删除某个数据文件,只能删除其所属于的表空间才行。

    网上找了个图片:

     建表空间是在实例下建,在EM web页面,先登录dabook实例,再创建表空间)

    1 CREATE SMALLFILE TABLESPACE "TESTDB" DATAFILE 'E:APPDINGQIORADATATESTDABOOK	estdb' SIZE 100M LOGGING EXTENT MANAGEMENT LOCAL SEGMENT SPACE MANAGEMENT AUTO 

    使表空间离线/在线:

    ALTER DATABASE testdb OFFLINE;//使表空间的数据不可访问。
    ALTER DATABASE  testdb ONLINE; //在数据库打开的情况下,SYSTEM 表空间永远在线,因为oracle需要访问存放在SYSTEM表空间中的数据字典。

    重命名表空间:

    ALTER TABLESPACE testdb TO userdb2;// 不能重命名表空间SYSTEM SYSAUX.
    ALTER TABLESPACE testdb READ ONLY;//只读

    删除表空间:

    DROP TABLESPACE testdb  INCLUDING CONTENTS AND DATAFILES;//删除表空间及其数据文件
    DROP TABLESPACE testdb INCLUDING CONTENTS;//删除表空间

    表空间加密:可以使用的算法:3DES168,AES128,AES1192,AES256

    CREATE TABLESPACE securespace
    DATAFILE ' d:data' SIZE 100M
    ENCRUPTION USING 'AES256'
    DEFAULT STORAGE ( ENCRYPT);
    SELECT tablespace_name FROM DBA_TABLESPACES;//列出数据库中有哪些表空间
    SELECT FILE_NAME FROM DBA_DATA_FILES WHERE TABLESPACE_NAME='MYUNDOTBS'//数据字典DBA_DAT
    A_FILES 存放数据文件的信息,从该视图中,可以知道一个表空间由哪些数据文件组成。

    得到创建表空间的SQL语句:

    首先以system的身份登录数据库 conn system;设置SQL*Plus的环境变量: set long 10000(如果不进行设置,执行DBMS_METADATA.GET_DDL将产生错误)

    1 SELECT DBMS_METADAT.GET_DDL('TABLESPACE','MYSPACE') FROM dual;

    使用户a拥有访问表空间 USERS的权限:

    alter user item quota unlimited on USERS;

    扩展表空间:

    ALTER DATABASE  DATAFILE 'D:data‘ RESIZE 1000M




  • 相关阅读:
    解决PHP下打开phpMyAdmin出现403错误 Jimmy
    SQL Server连接中三个常见的错误分析
    CD唱片格式知识
    ehlib的DBGridEh控件中使用过滤功能的方法
    TransactSQL MSDN入口
    发烧音响网站大全
    Transact SQL 语 句 功 能
    wwFilterDialog 取得條件
    器材价格 参考用
    phpadmin.config设定
  • 原文地址:https://www.cnblogs.com/happinessqi/p/3280616.html
Copyright © 2011-2022 走看看