zoukankan      html  css  js  c++  java
  • Oracle学习笔记九:表空间与数据文件管理

    一、存储结构

    二、表空间的分类

    1)系统表空间:

    • 随着数据库创建被创建
    • 包含数据字典信息
    • 包含系统回滚段

    2)非系统表空间:

    • 不同的segments分开存放(如:回滚段,临时段,应用数据)
    • 控件分配给用户对象的空间容量

    三、表空间的管理

    3.1、本地管理的表空间(9i后)

    1)概述:

    • 自由扩展信息被记录在本身的位图中
    • 位图中的每一位都对应一个数据块或一组数据块
    • 位图中的标志位显示数据使用或未使用状态信息

    2)创建方法:

    CREATE TABLESPACE test DATAFILE '/oracle/oradata/test.dbf' SIZE 500M EXTENT MANAGEMENT LOCAL;
    • 简化了数据字典中的内容
    • 空间分配和回收不产生回滚信息
    • 没有接合邻近extents的要求

    3.2、字典管理的表空间(9i前)

    1)概述:

    • 缺省的表空间管理方式
    • 自由扩展信息被记录在数据字典中

    2)创建方法:

    CREATE TABLESPACE test DATAFILE '/oracle/oradata/test.dbf' SIZE 500M EXTENT MANAGEMENT DICTIONARY DEFAULT STORAGE ( initial 1M NEXT 1M );
    • Extents在数据字典中管理
    • 每个存储在表空间的segments都可以有不同的存储参数设置
    • 有邻近接合extents的要求

    3.3、UNDO回滚段表空间

    1)概述:

    • 用来存储回滚段信息
    • 不能包含其它对象
    • Extents本地管理
    • 在创建时仅仅能使用DATAFILE and EXTENT MANAGEMENT条件

    2)创建方法:

    CREATE UNDO TABLESPACE undo1 DATAFILE '/oracle/oradata/undo01.dbf' SIZE 40M;

    3.4、TEMP临时表空间

    1)概述:

    • 用来做排序操作
    • 不能包含固定的对象
    • 最好使用本地表空间管理

    2)创建方法:

    CREATE TEMPORARY TABLESPACE temp TEMPFILE '/oracle/oradata/temp01.dbf' SIZE 500M EXTENT MANAGEMENT LOCAL;

    3.5、删除表空间

    1)概述:

    • 从数据字典中删除表空间信息
    • 通过 AND DATAFILES条件可在操作系统上删除表空间的数据文件

    2)创建方法:

    DROP TABLESPACE test INCLUDING CONTENTS AND DATAFILES;

    3.6、改变表空间的大小

    1)概述:

    • 增加数据文件
    • 改变数据文件大小:自动/手动

    2)创建方法:

    手动改变数据文件大小

    ALTER DATABASE DATAFILE '/test/oradata/app_data_02.dbf' RESIZE 200M;

    3.7、在表空间中增加一个数据文件

    1)创建方法:

    ALTER TABLESPACE app_data ADD DATAFILE '/u01/oradata/app_data_03.dbf' SIZE 200M;

    3.8、移动数据文件(修改表空间)

    1)概述:

    • 表空间必须为下线状态
    • 目标数据文件必须存在

    2)创建方法:

    ALTER TABLESPACE userdata RENAME DATAFILE '/u01/oradata/userdata01.dbf' TO '/u01/oradata/userdata01.dbf';

    3.9、获取表空间信息

    1)表空间信息:

    • DBA_TABLESPACES
    • V$TABLESPACE

    2)数据文件信息:

    • DBA_DATA_FILES
    • V$DATAFILE

    3)临时文件信息:

    • DBA_TEMP_FILES
    • V$TEMPFILE

    四、表空间的管理案例一

    4.1、案例说明

    • 请监控数据库表空间使用情况,如果表空间使用比例达到80%以上,请扩展其空间。
    • 要求,通过sqlplus运行sql脚本:test.sql。

    4.2、前期准备

    1)查看表空间数据结构:

    desc dba_tablespaces;

    2)查看表空间:

    select TABLESPACE_NAME from dba_tablespaces;

    3)查看数据文件:

    select name from v$datafile;

    4)监控oracle表空间脚本:

    select a.tablespace_name,a.bytes/1024/1024 "Sum MB",a.maxbytes/1024/1024 "Max MB",(a.bytes-b.bytes)/1024/1024 "used MB",b.bytes/1024/1024 "free MB",
    round(((a.bytes-b.bytes)/a.bytes)*100,2) "percent_used",
    round(((a.bytes-b.bytes)/a.maxbytes)*100,2) "percent_used_max"
    from
    (select tablespace_name,sum(bytes) bytes,sum(maxbytes) maxbytes from dba_data_files group by tablespace_name) a,
    (select tablespace_name,sum(bytes) bytes,max(bytes) largest from dba_free_space group by tablespace_name) b
    where a.tablespace_name=b.tablespace_name
    order by ((a.bytes-b.bytes)/a.bytes) desc;

    可以看到,SYSTEM和SYSAUX两个表空间的使用率已超过80%。

    4.3、扩展方法一:修改数据文件

    1)查看表空间与数据文件的对应关系:

    select FILE_NAME,TABLESPACE_NAME from dba_data_files;

    2)修改数据文件:

    ALTER DATABASE DATAFILE 'C:APPADMINISTRATORORADATATESTSYSTEM01.DBF' RESIZE 1000M;
    
    ALTER DATABASE DATAFILE 'C:APPADMINISTRATORORADATATESTSYSAUX01.DBF' RESIZE 800M;

    3)重新监控oracle表空间:

    4.4、扩展方法二:增加数据文件

    1)增加数据文件:

    ALTER TABLESPACE SYSTEM ADD DATAFILE 'C:APPADMINISTRATORORADATATESTSYSTEM02.DBF' SIZE 200M;
    
    ALTER TABLESPACE SYSAUX ADD DATAFILE 'C:APPADMINISTRATORORADATATESTSYSAUX02.DBF' SIZE 200M;

    2)重新监控oracle表空间:

    五、表空间的管理案例二

    5.1、案例说明:

    业务系统上线,需要创建1个业务表空间:

    • 表空间名test01
    • 大小100M
    • 自动扩展关闭
    • 多个数据文件

    1)操作方法如下:

    create tablespace test01 datafile 'C:APPADMINISTRATORORADATATEST	est01.dbf' size 100m autoextend off;
    
    alter tablespace test01 add datafile 'C:APPADMINISTRATORORADATATEST	est02.dbf' size 100m autoextend off;
    
    alter tablespace test01 add datafile 'C:APPADMINISTRATORORADATATEST	est03.dbf' size 100m autoextend off;

    六、表空间的管理案例三

    6.1、案例说明:

    业务系统上线,需要创建1临时表空间:

    • 表空间名testtemp
    • 大小100M
    • 自动扩展关闭

    1)操作方法如下:

    create temporary tablespace testtemp tempfile 'C:APPADMINISTRATORORADATATEST	esttemp01.dbf' size 100m autoextend off;
  • 相关阅读:
    我第一次上传自己的Android作品——自己的名片夹
    我开发的宣传软件,劲撑广州恒大冲击亚冠,,无论你是安卓程序员还是广州恒大球迷,欢迎下载代码,或者留下邮箱,我会把Apk发过去
    写死我的QQ程序,不过玩的效果很爽^_^,、、不敢回头去看代码了,想吐、
    有些关于Google地图开发中密钥申请的不解,一直走不下去,求助
    一个有趣的Sql查询
    笑谈“委托”与“事件”
    《中国编程挑战赛--资格赛》赛题及解答
    [转载] 在.net安装程序部署SQL Server数据库
    VS.Net Add_In Example(C#源码)
    对中国编程资格赛一题的解答
  • 原文地址:https://www.cnblogs.com/atomy/p/13812784.html
Copyright © 2011-2022 走看看