当前位置:  数据库>oracle

Oracle 表空间与数据文件

    来源: 互联网  发布时间:2017-03-30

    本文导语: --============================== --Oracle 表空间与数据文件 --============================== /* 一、概念     表空间:是一个或多个数据文件的逻辑集合     表空间逻辑存储对象:永久段-->如表与索引                         临时...

--==============================

--Oracle 表空间与数据文件

--==============================

/*

一、概念

    表空间:是一个或多个数据文件的逻辑集合

    表空间逻辑存储对象:永久段-->如表与索引

                        临时段-->如临时表数据与排序段

                     回滚段-->用于事物回滚或闪回内存的撤销数据

    表空间分类:系统表空间(system、sysaux),非系统表空间

   

    一个表空间至少包含一个数据文件,一个数据文件只能属于一个表空间。

   

    不可或缺的几个表空间:

    SYSTEM --->字典表空间,不能被损坏

    UNDO    --->dml,dql把数据快照到此,数据提交即消失(用于恢复)

    SYSAUX  --->10g 高并发系统繁忙时,会造成system争用,将工具放到SYSAUX,减轻system的压力,SYSAUX不影响系统(影响性能)

    TEMP    --->临时数据相关的内容

    USERS   --->10g  用户数据从system拨离出来

   

   

二、Oracle的存储结构

    1.Schema: 用户--->创建相关对象、表、视图、序列、函数、存储过程、包等

    2.逻辑结构:database数据库--->tablespace表空间---> segment段--->extent区间----> block块

            逻辑结构是Oracle内部管理数据库中对象的方式

    3.物理结构:OS  block --->datafile 物理结构通常是一系列数据文件

    4.举例描述scott用户创建对象的组织方式 */

   

--查看scott用户的默认表空间及数据文件

    SQL> select USERNAME,DEFAULT_TABLESPACE,TEMPORARY_TABLESPACE                                       

      2  from dba_users

      3  where username = 'SCOTT';

 

    USERNAME                       DEFAULT_TABLESPACE             TEMPORARY_TABLESPACE

    ------------------------------ ------------------------------ ------------------------------

    SCOTT                          USERS                          TEMP

 

    SQL> col name format a50

    SQL> select t1.name,t2.name   --查看表空间及数据文件

      2  from v$tablespace t1,v$datafile t2

      3  where t1.ts# = t2.ts#;

 

    NAME                                               NAME

    -------------------------------------------------- --------------------------------------------------

    SYSTEM                                             /u01/app/oracle/oradata/orcl/system01.dbf

    UNDOTBS1                                           /u01/app/oracle/oradata/orcl/undotbs01.dbf

    SYSAUX                                             /u01/app/oracle/oradata/orcl/sysaux01.dbf

    USERS                                              /u01/app/oracle/oradata/orcl/users01.dbf

    EXAMPLE                                            /u01/app/oracle/oradata/orcl/example01.dbf

 

/*

    scott-->emp(table)-->数据定义(位于)-->system表空间

                      数据(位于)  -->user表空间(逻辑存储)-->表段-->区间-->内存块

                                                    -->索引段等-->区间-->内存块

                                user表空间(物理存储)-->user01.dbf

                                   -->采用本地管理,包含头部信息,可用、已用等位图信息

                                  

    当databuffer缓冲区满则调用dbwr进程将数据写入到物理文件当中 */

    /*

 

三、创建表空间

 

    --简要语法:

    CREATE [BIGFILE | SMALLFILE] [TEMPORARY] TABLESPACE tablespace name

    DATAFILE datafile spec | TEMPFILE tempfile spec

    [MINIMUM EXTENT minimum extent size]

    [BLOCKSIZE blocksize]

    [[COMPRESS|NOCOMPRESS] DEFAULT STORAGE (default storage clause)]

    [LOGGING|NOLOGGING]

    [FORCE LOGGING]

    [ONLINE|OFFLINE]

    [EXTENT MANAGEMENT DICTIONARY |

    LOCAL [AUTOALLOCATE|UNIFORM SIZE size]]

    [SEGMENT SPACE MANAGEMENT MANUAL|AUTO]

    [FLASHBACK ON|OFF]

   

    --创建表空间的条件

    1.具有create tablespace的权限,DBA角色具有该权限,sysdba,sysoper

    2.创建的是bigfiel ,还是smallifle  超过T 级别应考虑bigfile

    3.新建的表空间的I/O,是否会导致磁盘I/O不够用

    4.datafile后跟的路径应该具备写的权限  */

   

    --查看缺省是BIGFILE 还是SMALLFILE,当缺省为SMALLFILE,创建表空间不指定表空间类型则为SMALLFILE

    SQL> select PROPERTY_NAME,PROPERTY_VALUE from database_properties where PROPERTY_NAME like '%TBS%';

 

    PROPERTY_NAME                  PROPERTY_VALUE

    ------------------------------ --------------------------------------------------

    DEFAULT_TBS_TYPE               SMALLFILE

   

    --修改创建表空间为大或小表空间的默认值

    SQL> alter database set default bigfile tablespace;

 

    Database altered.

 

    SQL> select PROPERTY_NAME,PROPERTY_VALUE from database_properties where PROPERTY_NAME like '%TBS%';

 

    PROPERTY_NAME                  PROPERTY_VALUE

    ------------------------------ --------------------------------------------------

    DEFAULT_TBS_TYPE               BIGFILE

   

    --改回为缺省值

    SQL> alter database set default smallfile tablespace;

 

    Database altered.

   

    --建议创建表空间时最好带上[BIGFILE | SMALLFILE]参数,以免参数设置导致创建了不合理的表空间

    /*

    注意:

    大表文件(bigfile)最大可以存放个T的容量。头文件的大小达到了G-->block,普通的头文件大小为M---->block。

    create bigfile tablespace datafile ........;

       好处:减少了数据文件的个数,管理方便,大的对象的存放得到了优化。减少了control文件的信息,控制文件定义了datafile的个数。

       bigfile只能存在一个数据文件,所以要保证分配的的磁盘具有足够的空间。 */

      

    --演示创建表空间

    SQL> create tablespace TBS1 datafile '/u01/app/oracle/oradata/orcl/tbs1.dbf' size 100m;

 

    Tablespace created.

 

    SQL> col name format a50      

    SQL> select t1.name,t2.name

      2  from v$tablespace t1,v$datafile t2

      3  where t1.ts# = t2.ts#;

 

    NAME                                               NAME

    -------------------------------------------------- --------------------------------------------------

    SYSTEM                                             /u01/app/oracle/oradata/orcl/system01.dbf

    UNDOTBS1                                           /u01/app/oracle/oradata/orcl/undotbs01.dbf

    SYSAUX                                             /u01/app/oracle/oradata/orcl/sysaux01.dbf

    USERS                                              /u01/app/oracle/oradata/orcl/users01.dbf

    EXAMPLE                                            /u01/app/oracle/oradata/orcl/example01.dbf

    TBS1                                               /u01/app/oracle/oradata/orcl/tbs1.dbf

   

    /*

    创建临时表空间:

    创建临时表空间,不能使用非标准数据块,另临时表空间不能存放永久对象。*/

    CREATE TMEPORARY TABLESPACE tablespace_name

    TEMPFILE '...' SIZE n

 

    CREATE TEMPORARY TABLESPACE T2 TEMPFILE '/opt/oracle/oradata/orcl/t2.dbf'

    size 100m;

    /*

    临时表空间具有以下特征:

       临时数据文件不能置为只读

       临时数据文件不能重命名

       监时数据文件的日志方式总是NOLOGGING

      

    临时表空间扩容:*/

    --(1)重置临时文件大小

        alter database tempfile '/opt/oracle/oradata/orcl/t2.dbf' resize 150m;

 

    --(2)让临时文件能自动扩展

       alter database  tempfile '/opt/oracle/oradata/orcl/t2.dbf'

       autoextend on next 10m maxsize 50m;

 

    --(3)增加临时文件

       alter tablespace t2 add tempfile '/disk8/oracle/t2b.dbf' size 50m;

 

    --查看临时文件

       select TABLESPACE_NAME,FILE_NAME,BYTES/1024/1024 "SIZE(MB)"

       from dba_temp_files;

 

    --默认临时表空间:

        select * from database_properties;

 

    --修改默认临时表空间:

       ALTER DATABASE DEFAULT TEMPORARY TABLESPACE T2;

       /*

        默认临时表空间最好要指定一下,如果没有指定默认的临时表空间,那么将使用system表空间作为排

       序区

 

       默认临时表空间有一定的限制:

           默认临时表空间不能删除

           默认临时表空间不能脱机

          

 

    获得创建表空间的语句:*/

       SELECT dbms_metadata.get_ddl('TABLESPACE','SYSTEM') FROM dual;

 

    /*

    临时表空间组:

       10G引入的,是一组临时表空间,只能由临时表空间组成。组名不能与临时表空间同名

       临时表空间不能显示的创建和删除,当把第一个临时表空间分配给某个临时表空间组的时候,自动创建

       临时表空间组,将最后一个临时表空间,删除时,组也将自动删除。

 

 

    创建临时表空间组:

       1、创建临时表空间的时候 */

        CREATE TEMPORARY TABLESPACE tablespace_name TEMPFILE '...' SIZE n

        TABLESPACE GROUP group_name;

 

        ALTER TABLESPACE tablespace_name TABLESPACE GROUP group_name;

           ALTER TABLESPACE T3 TABLESPACE GROUP TEMP_GRP;

 

    --查看临时表空间组的信息:

       dba_tablespace_groups

 

       SELECT * FROM DBA_TABLESPACE_GROUPS;

 

    --将临时表空间组成员移除:

       ALTER TABLESPACE tablespace_name TABLESPACE GROUP '';

 

    --可将系统默认的临时表空间设为临时表空间组:

       ALTER DATABASE DEFAULT TEMPORARY TABLESPACE tablespace_name;

 

    --删除临时表空间:

       --将所有成员全移出去,便自动删除

 

    --创建UNDO表空间(还原表空间):

    /*

    创建语法:*/

       CREATE UNDO TABLESPACE tablespace_name DATAFILE '...' SIZE n

 

    SQL> CREATE UNDO TABLESPACE undo2

       DATAFILE '/opt/oracle/oradata/orcl/undo2_01.dbf' SIZE 200M,

       '/opt/oracle/oradata/orcl/undo2_02.dbf' size 100m;

 

    --修改当前系统的UNDO表空间:

       ALTER SYSTEM SET UNDO_TABLESPACE=tablespace_name

 

    /* 

    UNDO表空间扩容:

       ()重置DATAFILE大小

       ()让DATAFILE能AUTOEXTEND

       ()添加数据文件

 

    删除UNDO表空间 */

       DROP TABLESPACE tablespace_name

        /*

       注:当前的UNDO表空间不能删除

           系统只能使用一个UNDO表空间 */

 

 

    --创建表空间的详细语法:http://download.oracle.com/docs/cd/B28359_01/server.111/b28286/statements_7003.htm#SQLRF01403          

   

    /*


    
 
 

您可能感兴趣的文章:

  • Linux平台下Oracle 密码文件重建
  • Oracle数据库访问参数文件的顺序
  • Oracle 对数据文件大小的限制
  • Oracle移动数据文件到新分区步骤分析
  • 在jsp文件中怎么设置oracle的路径:很简单的,只是因为我不会;
  • Oracle的spfile参数文件
  • linux下通过对文件读取方式查询oracle的版本信息
  • 求高手指点shell导入.dat文件到ORACLE数据库
  • jsp文件连接oracle失败
  • linux 安装 oracle 运行./runinstall 提示没有这个文件
  • oracle删除文件后数据库启动不了的处理方法
  • 请教:为什么删除不掉?我用超级用户删除某一文件夹rm -R oracle失败。
  • Oracle控制文件多元化处理
  • Oracle数据库逻辑备份的SH文件
  • 利用多个转储文件导出大量Oracle数据
  • 50分的题:如何给oracle减肥?在linux多目录的环境下查找体积最大的单个文件??
  • 用oracle pl/sql 从A unix机器,去读取B unix机器上的一个文件,怎么实现?
  • 读取oracle数据库表写文件慢
  • 如何向oracle中写入一个大文件?谢谢!
  • jsp文件上传smartupload到oracle数据库中没有longblob的数据类型如何处理的?
  • Oracle 数据库(oracle Database)Select 多表关联查询方式
  • oracle数据库导出和oracle导入数据的二种方法(oracle导入导出数据)
  • oracle中如何把表中具有相同值列的多行数据合并成一行
  • Oracle 数据库开发工具 Oracle SQL Developer
  • Oracle数据库(Oracle Database)体系结构及基本组成介绍
  • 请问大家用oracle数据库, 用import oracle.*;下的东西么? 还是用标准库?
  • ORACLE数据库常用字段数据类型介绍
  • 怎样调出ORACLE数据库中的数据,该如何连接?
  • Oracle 数据库(oracle Database)性能调优技术详解
  • 用JDBC连接Oracle数据库时,如何向数据库中写日期型数据(格式)?谢了!
  • 关于JDBC连接Oracle数据库,是否必须有Oracle客户端
  •  
    本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
    本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • oracle查看表空间已分配和未分配空间的语句分享
  • shell脚本操作oracle删除表空间、创建表空间、删除用户
  • oracle 创建表空间步骤代码
  • oracle增加表空间大小两种实现方法
  • RedHat8上解压Oracle9磁盘丢失磁盘空间,请大虾帮忙!
  • ORACLE数据库空间整理心得
  • oracle9i 在 redhat7.3 上安装临时目录空间不够.
  • Oracle 10g创建表空间和用户并指定权限
  • Linux下Oracle传输表空间高手支招
  • Oracle释放undo表空间
  • oracle 创建表空间详细介绍
  • 在linux下装oracle9i到了最后时候,提示/tmp空间不够了,怎么增加,谢谢!
  • 查看修改Oracle10G归档日志空间的限制
  • [小技巧]手工扩大Oracle数据库表空间的方法
  • Oracle回滚段空间回收步骤
  • Oracle数据库手工扩大表空间的方法
  • Oracle tablespace表空间调整
  • 新手求助:RedHat安装oracle 11g 检测空间不足
  • Oracle安装过程中物理内存检查及临时temp空间不足问题解决
  • Oracle 10g表空间创建的完整步骤
  • Oracle 12c发布简单介绍及官方下载地址
  • 在linux下安装oracle,如何设置让oracle自动启动!也就是让oracle那个服务自动启动,不是手动的
  • oracle 11g最新版官方下载地址
  • 请问su oracle 和su - oracle有什么不同?
  • 如何设置让Oracle SQL Developer显示的时间包含时分秒
  • 虚拟机装Oracle R12与Oracle10g
  • Oracle 10g和Oracle 11g网格技术介绍
  • Oracle EBS R12 支持 Oracle Database 11g
  • ORACLE日期相关操作
  • SCO unix下安装oracle,但没有光盘,请大家推荐一个oracle下载站点(unix版本的)。谢谢!!!!
  • Oracle 12c的九大最新技术特性介绍


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3