zoukankan      html  css  js  c++  java
  • 七、Oracle管理表空间和数据文件

    管理表空间和数据文件

    1. 表空间是数据库的逻辑组成部分。

    从物理上讲,数据库的数据存放在数据文件中的;从逻辑上讲,数据库则是存放在表空间中的,表空间是由一个或多个数据文件组成的。

    1. 数据库的逻辑结构

    Oracle中逻辑结果包括表空间、段、区和块。

    说明:数据库是由表空间构成,而表空间又是由段构成,而段又是由区构成,而区又是由Oracle块构成的这样一种结构。这样做可以提高数据库的效率。

    1. 表空间

    表空间用于从逻辑上组织数据库中的数据。数据库在逻辑上是由一个或多个表空间组成。通过表空间可以达到以下作用:

    (1)控制数据库占用的磁盘空间

    (2)dba可以将不同的数据类型部署到不同的位置,这样有利于提高I/O性能,同时利于备份和恢复等管理操作。

    1. 建立表空间

    建立表空间使用create tablespace 命令完成,需要注意的是,一般情况下,建立表空间必须是由特权用户或者是dba来执行,如果其他用户来创建表空间,则该用户必须要具有create tablespace 的系统权限。

    建立数据表空间

    在建立数据库后,为了便于管理表,最好建立自己的表空间,命令如下:

    create tablespace [ts_name] datafile 'd:\test\data001.dbf' 20m uniform 12k;

    说明:执行上述命令后,会在相应路径下建立名称为ts_name的表空间,并为该表空间建立名称为data001.dbf的数据文件,区的大小为128k

    1. 使用数据表空间

    create table my_table(deptno number(4), dname varchar2(20), loc varchar2(30)) tablespace ts_name;

    1. 改变表空间的状态

    当建立表空间时,表空间处于联机(online)的状态,此时该表空间是可以访问的,并且该表空间是可以读写的,即可以查询该表空间的数据,而且还可以在表空间执行各种sql语句。但是在进行系统或数据维护时,可能需要改变表空间的状态。一般情况下,由特权用户或是dba来操作。

    (1)使表空间脱机

    alter tablespace 表空间名 offilne;

    (2)使表空间联机

    alter tablespace 表空间名 online;

    (3)只读表空间

    当建立表空间时,表空间可以读写,如果不希望在该表空间上执行update,insert,delete操作,那么可以将表空间修改为只读的

    alter tablespace 表空间名 read only;

    (4)把表空间改成可读可以的

    alter tablespace 表空间名 read write;

    1)知道表空间名,显示该表空间下的所有表

    select * from all_tables where tablespace_name='表空间名';

    2)知道表名,查看属于哪个表空间

    select tablespace_name, table_name from user_tables where table_name='EMP';

    1. 删除表空间

    一般情况下,由特权用户或是dba来操作,如果其他用户操作,必须具有drop tablespace系统权限。

    drop tablespace '表空间名' including contents and datafiles;

    说明:including contents表示删除表空间时,也删除该表空间中的所有数据库对象,而datafiles表示数据库磁盘文件也将删除。

    1. 扩展表空间

    表空间是由数据文件组成的,表空间的大小实际上是数据文件相加后的大小,那么我们可以想象,假定表EMP存放到data001表空间,初始大小是2M,当数据满2M后,如果再向EMP表插入数据,就会显示表空间不足的错误。

    所以需要扩展表空间,扩展表空间有三种方法:

    1)增加数据文件

    alter tablespace sp001 add datafile 'd:\test\sp002.dbf' size 20m;

    2)增加数据文件的大小

    alter tablespace sp001 add datafile 'd:\test\sp001.dbf' resize 20m;

    说明:数据文件大小不能超过500M

    3)设置文件的自动增长

    alter tablespace sp001 add datafile 'd:\test\sp001.dbf' autoextend on next 10m maxsize 500m;

    1. 故障处理,移动数据文件

    有时,如果数据文件所在的磁盘损坏了,该数据文件将不能使用,为了能够重新使用,需要将这些文件的副本移动到其他的磁盘上,然后恢复。

    下面以移动数据文件sp001.dbf为例说明。

    1)确定数据文件所在的表空间

    select tablespace_name from dba_data_files where file_name='d:\test\sp001.dbf';

    2)使表空间脱机

    确保数据文件的一致性,将表空间的状态转化为offline状态

    alter tablespace sp001 offline;

    3)使用命令移动数据文件到指定的目标位置

    host move d:\test\sp001.dbf c:\test\sp001.dbf;

    4)执行alter tablespace命令

    在物理上移动了数据后,还必须执行alter tablespace 命令对数据库文件进行逻辑修改:

    alter tablespace sp001 rename datafile 'd:\test\sp001.dbf' to 'c:\test\sp001.dbf';

    5)使新的表空间联机

    alter tablespace sp001 online;

    显示表空间信息:

    查询数据字典视图dba_tablespace,显示表空间信息

    select tablespace_name from dba_tablespace;

    显示表空间所包含的数据文件

    查询数据字典视图dba_data_files,可显示表空间所包含的数据文件

    select filename,bytes from dba_data_files where tablespace_name='表空间名';

  • 相关阅读:
    Release COM Objects in AE
    图像相关系数
    Geoprocessor edit the featureclasses in memmory
    NetLogo AStar path finding
    IDL+C#三种调用方式
    Dictionary is not like a array
    C# DataGridView 禁止列排序
    工作总结
    (转)常见数据库设计(1)——字典数据
    碎碎念(3)
  • 原文地址:https://www.cnblogs.com/fanyong/p/2888241.html
Copyright © 2011-2022 走看看