zoukankan      html  css  js  c++  java
  • 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    from dba_users  where username = 'SCOTT';

    --查看表空间及数据文件

    SQL> select t1.name,t2.name  from v$tablespace t1,v$datafile t2  where t1.ts# = t2.ts#;

    三、表空间

      --简要语法:

    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%';

    DEFAULT_TBS_TYPE SMALLFILE

    --可修改默认值

    SQL> alter database set default bigfile tablespace;

    --改回默认值

    SQL> alter database set default smallfile tablespace;

    --创建表空间(单实例)

    CREATE TABLESPACE YYHHQQ DATAFILE 

      'F:MYDBYYHHQQ.DBF' SIZE 100M AUTOEXTEND ON NEXT 10M MAXSIZE 200M

    LOGGING

    ONLINE

    PERMANENT

    EXTENT MANAGEMENT LOCAL AUTOALLOCATE

    BLOCKSIZE 8K

    SEGMENT SPACE MANAGEMENT AUTO FLASHBACK ON;

    --rac

    CREATE TABLESPACE EXAMPLE DATAFILE
    '+DATA/bol/datafile/example01.dbf' SIZE 100M AUTOEXTEND ON NEXT 640K MAXSIZE 32767M
    NOLOGGING
    ONLINE
    EXTENT MANAGEMENT LOCAL AUTOALLOCATE
    BLOCKSIZE 8K
    SEGMENT SPACE MANAGEMENT AUTO
    FLASHBACK ON;

    --修改db默认的表空间

    SQL> ALTER DATABASE DEFAULT   TABLESPACE YYHHQQ

     --修改用户的默认表空间

    SQL> alter user hr default tablespace IN_THE_CLEAR;

    --移动表到另外的表空间

    SQL> alter table tablename move tablespace tablespacename;

    --创建临时表空间:

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

    SQL> DROP TABLESPACE YHQ_TEMP INCLUDING CONTENTS AND DATAFILES;

    CREATE TEMPORARY TABLESPACE YHQ_TEMP TEMPFILE 

      'F:MYDBYHQ_TEMP.DBF' SIZE 20M AUTOEXTEND ON NEXT 10M MAXSIZE 100M

    TABLESPACE GROUP ''

    EXTENT MANAGEMENT LOCAL UNIFORM SIZE 1M;

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

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

    临时数据文件不能重命名

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

    --重置临时文件大小

    SQL> alter database tempfile   'F:MYDBYHQ_TEMP.DBF' resize 50m

    --重置临时文件能自动扩展

    SQL> alter database tempfile  'F:MYDBYHQ_TEMP.DBF' autoextend on next 10m maxsize 50m;

    --增加临时文件

    SQL> alter tablespace YHQ_TEMP add TEMPFILE 'F:MYDBYHQ_TEMP2.DBF' size 10m;

    --查看临时文件

    SQL> select TABLESPACE_NAME,FILE_NAME,BYTES/1024/1024 "SIZE(MB)" from dba_temp_files;

    TEMP F:ORACLEPRODUCT10.2.0ORADATAORCLTEMP01.DBF 20

    YHQ_TEMP F:MYDBYHQ_TEMP.DBF 50

    YHQ_TEMP F:MYDBYHQ_TEMP2.DBF 10

    --默认临时表空间

    SQL> select * from database_properties;

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

    SQL> ALTER DATABASE DEFAULT TEMPORARY TABLESPACE YHQ_TEMP;

    --修改用户的默认临时表空间

     SQL> alter user hr  temporary tablespace TEMP;

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

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

    默认临时表空间不能删除

    默认临时表空间不能脱机

    获取创建表空间的语句

    SQL> SELECT dbms_metadata.get_ddl('TABLESPACE','SYSTEM') FROM dual; --返回一个clob

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

    DROP TABLESPACE UNDOTBS1 INCLUDING CONTENTS AND DATAFILES;

    CREATE UNDO TABLESPACE UNDOTBS1 DATAFILE 

      'F:ORACLEPRODUCT10.2.0ORADATAORCLUNDOTBS01.DBF' SIZE 35M AUTOEXTEND ON NEXT 5M MAXSIZE UNLIMITED

    ONLINE

    RETENTION NOGUARANTEE

    BLOCKSIZE 8K

    FLASHBACK ON;

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

    SQL>  ALTER SYSTEM SET UNDO_TABLESPACE=yhq_undo; ----scope=memory|spfile|both

    ---default 的是memory,实例重启后失效

    ---spfile保存在spfile中,重启后才能有效

    ---both保存在实例和spfile

    ---system只能指定一个空间

    UNDO表空间扩容:

    --重置DATAFILE大小

    --让DATAFILE能AUTOEXTEND

    --添加数据文件

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

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

    CREATE UNDO TABLESPACE yhq_undo DATAFILE 

     'F:MYDBYHQ_undo.DBF'  SIZE 35M AUTOEXTEND ON NEXT 5M MAXSIZE 100m

    ONLINE

    RETENTION NOGUARANTEE

    BLOCKSIZE 8K

    FLASHBACK ON;

    --查看表空间使用的管理方式

    SQL> select TABLESPACE_NAME,EXTENT_MANAGEMENT,BLOCK_SIZE,STATUS,CONTENTS,FORCE_LOGGING,BIGFILE from dba_tablespaces;

    --表空间改名,必须在open状态下,system,sysaux不能改名

    SQL> alter tablespace xxx renmae to yyy;

    --重置数据文件大小

    SQL> alter database datafile  'F:MYDBYYHHQQ.DBF'  resize 100m;

    --设置数据文件能自动增长

    SQL> alter database  DATAFILE 'F:MYDBYYHHQQ.DBF' AUTOEXTEND OFF;

    SQL> alter database  DATAFILE 'F:MYDBYYHHQQ.DBF' AUTOEXTEND ON NEXT 4M  MAXSIZE 50M;

    --查看

    SQL> select name,file#,bytes/1024/1024 MB,status from v$datafile;

    --为表空间添加数据文件

    SQL> alter tablespace YYHHQQ add datafile 'F:MYDBYYHHQQ2.DBF' size 100m;

    --表空间的四种状态:

    online

    offline

    read only

    read write

    --alter tablespace test1 offline;

    --alter tablespace test1 online;

    --alter tablespace test1 read only;

    --alter tablespace test1 read write;

    tablespace_name  online read only
    system 必须online ready write
    sysaux 可以offline 不能read only
    undo 不能offline 不能read only

    --查看表空间的状态

    SQL> select tablespace_name,file#,v.status,v.enabled from dba_data_files d,v$datafile v where d.file_id = v.file#;

    删除表空间:

    意味着表空间和数据文件的信息从数据库中删除,同时也应该将相应的操作系统文件删除

    不能删除的表空间

    系统表空间

    有活动回滚段的表空间

    默认临时/永久表空间

    DROP TABLESPACE tablespace_name [INCLUDING CONTENTS [AND DATAFILES]]

        INCLUDING CONTENTS                -- 删除表空间及所有段

    INCLUDING CONTENTS [AND DATAFILES] --删除表空间、所有段、数据文件、同时删除系统中的物理文件

    SQL>  alter tablespace starhub including contents and datafiles cascade constraints;

    --限制某个用户对表空间的使用

    --alter user username quota n on tablespacename;

    SQL> alter user scott QUOTA 10m on UU;

    --取消限制

    --alter user username QUOTA UNLIMITED on tablespacename;

    --grant unlimited tablespace to username;

     --获取表空间和数据文件信息

    --表空间信息,系统视图

    dba_tablespaces,v$tablespace

    --数据文件信息

    dba_data_files,v$datafile

    --临时数据文件信息

    dba_temp_files,v$tempfile

    四、数据文件

    数据文件是数据库中最重要的一个要求,是所有的数据库内容存放的地方

    datafile是按照表空间为组织单位,表空间的构成是按照段区块为层次---数据文件的逻辑结构

    datafile就是表空间的物理文件。

    datafile中的内容是通过dbwr把data buffer cache中的dirty buffer data 写入的

    --数据文件的增加与删除

    SQL> alter tablespace tb1 add datafile '/u01/app/oradata/orcl/tbs02.dbf' size 10m autoextend on;

    SQL> alter tablespace tb1 drop datafile 9;--v$datafile中的file#,有数据的数据文件不能删,

    数据文件的日志记录

    只有temp表空间是nologing  别的都是logging的

    日志记录的几种模式

    nologing          并不是不记录日志而是记录的很少

    logging          正常记录日志信息

    force logging    记录的日志比logging还详细 记录信息非常多  用于DG data guard 容灾的情况

    SQL> alter tablespace tb1 nologging  | logging | force logging;

    SQL> select tablespace_name ,logging,force_logging from dba_tablespaces;

    SQL> alter tablespace EXAMPLE logging;

  • 相关阅读:
    考在职还是全日制?
    ARP欺骗病毒攻击
    AutoCAD2006安装错误之解决
    WINCE下创建多个文件分区
    在WINCE5.0中应用CMD(比如运行PING命令)
    WinCE 应用程序开机自动方法
    Wince 添加中文字库
    WinCE内核裁减(中文字体)及字库和内核的分离(转)
    WINCE基于CH7024实现TV OUT (VGA)功能
    WINCE6.0 中文支持
  • 原文地址:https://www.cnblogs.com/yhq1314/p/10000174.html
Copyright © 2011-2022 走看看