Oracle的表空间和数据文件

摘要:
createbigfiletablespacedatafile........;好处:减少了数据文件的个数,管理方便,大的对象的存放得到了优化。减少了control文件的信息,控制文件定义了datafile的个数。bigfile只能存在一个数据文件,所以要保证分配的的磁盘具有足够的空间。*/--演示创建表空间SQL˃createtablespacedev2datafile'/u01/app/oracle/oradata/orcl/dev01.dbf'size50M,3'/u01/app/oracle/oradata/orcl/dev02.dbf'size50M;表空间已创建。

一、 概念 

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

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

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

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

表空间分类:系统表空间(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.物理结构:OSblock --->datafile物理结构通常是一系列数据文件

三、表空间的管理

创建表空间

--简要语法:

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]

--获得创建表空间的语句

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

--查看缺省是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

注意:

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

create bigfile tablespace <> datafile <>........;

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

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

--演示创建表空间

SQL> createtablespace dev
  2  datafile '/u01/app/oracle/oradata/orcl/dev01.dbf'size 50M,
  3  '/u01/app/oracle/oradata/orcl/dev02.dbf'size 50M;
表空间已创建。

--创建自动扩容的表空间

SQL> createtablespace uat
  2  datafile '/u01/app/oracle/oradata/orcl/uat.dbf'size 32m 
  3   autoextend on maxsize unlimited;

可以通过查看自动扩容是否打开

SQL> select file_name,autoextensible  from dba_data_files where tablespace_name='UAT';

表空间改名

SQL> alter tablespace dev rename to dev1;

将表空间设置为只读

注意只读表空间中的对象是可以被删除的,能执行DML语句,可以使用的为DDL

SQL> alter tablespace dev1 read only;

重新设置回可读可写

SQL> alter tablespace dev1 read write;

移动数据文件

1.查出数据文件的位置和所属表空间

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

2.将要移动的表空间离线

SQL> alter tablespace uat offline;

3.在操作系统下将文件移动到另外一个位置

SQL> host cp /u01/app/oracle/oradata/orcl/uat.dbf /u02/uat.dbf

4.修改控制文件,将数据文件的指针重新指向到另一个位置(执行rename)

SQL> alter tablespace uat rename datafile '/u01/app/oracle/oradata/orcl/uat.dbf'
  2  to '/u02/uat.dbf';

5. 使表空间在线

SQL> alter tablespace uat online;

6.删除原来位置的应该废弃的物理文件

SQL> host rm /u01/app/oracle/oradata/orcl/uat.dbf

如过表空间不能脱机的话,就启动数据库到mount状态下,其余步骤是一样的。

表空间的扩容

可以通过如下的方法扩容表空间

(1)重置数据文件大小

ALTERDATABASEDATAFILE'...'|FileNo RESIZE XX

(2)设置数据文件能自动增长

ALTERDATABASEDATAFILE'... '|FileNo AUTOEXTENDON|OFFNEXT 20MMAXSIZE300M;

--查看哪些表空间为自动增长

SELECTFILE_NAME,TABLESPACE_NAME,AUTOEXTENSIBLEFROMdba_data_files

 (3)添加数据文件

  增加到表空间中的数据文件不能直接从表空间中删除,除非删掉整个表空间

增加数据文件将有助于均衡I/O

  文件越多,执行一次检查点的代价越高*/

  ALTER TABLESPACE tbs2 ADD DATAFILE '/u01/app/oracle/oradata/orcl/tbs2.dbf' size 200m autoextend on ;

删除表空间

DROPTABLESPACE tablespace_name [INCLUDING CONTENTS [AND DATAFILES]]

INCLUDING CONTENTS --删除段

DATAFILES --删除数据文件

SQL> drop tablespace uat including contents and datafiles;

临时表空间

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

  • 临时表空间是作为排序操作使用的,当内存排序区不够时,使用临时表空间可以改进数据库的效率
  • 创建临时表空间,不能使用非标准数据块
  • 临时表空间不能存放永久对象
  • 当有第一个排序操作时创建排序段

--创建临时表空间

SQL> create temporarytablespace tmp02 tempfile
  2  '/u01/app/oracle/oradata/orcl/tmp02.dbf'size 100M;
表空间已创建。

--指定默认的临时表空间

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

 ALTER DATABASE DEFAULT TEMPORARY TABLESPACE tmp02;

--查看默认的临时表空间

select * from database_properties t  where t.property_name like 'DEFAULT_TEMP%';

还原表空间

--创建还原表空间

SQL> createundo tablespace undo2
  2  datafile '/u01/app/oracle/oradata/orcl/undo2.dbf' size 200M;

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

 ALTER SYSTEM SET UNDO_TABLESPACE=tablespace_name;

四、相关视图

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

--表空间信息

dba_tablespaces

v$tablespace

--数据文件信息

dba_data_files

v$datafile

--临时数据文件信息

dba_temp_files

v$tempfile

--查看系统默认的表空间及临时表空间:

SQL>selectPROPERTY_NAME,PROPERTY_VALUEfromdatabase_propertieswherePROPERTY_NAMElike'DEFAULT%';

--修改改系统的默认表空间:

SQL>ALTERDATABASEDEFAULTTEMPORARY TABLESPACE tablespace_name;

--查看用户默认表空间:

  SQL>selectUSERNAME,USER_ID,DEFAULT_TABLESPACE,TEMPORARY_TABLESPACEfromdba_users;

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

SQL>ALTERUSERuser_nameDEFAULTTABLESPACE tablespace_name

--查看表空间的使用情况:

dba_data_files;

dba_free_space;

--例:查每个表空间的剩余空间

SQL>selecttablespace_name,sum(bytes/1024/1024)fromdba_free_spacegroupbytablespace_name;

免责声明:文章转载自《Oracle的表空间和数据文件》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇MES软件开发工具k8s service不能访问排错下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

oracle之Flash Recovery Area全面介绍 (转载)

1. 设置闪回恢复区闪回恢复区主要通过3个初始化参数来设置和管理 db_recovery_file_dest:指定闪回恢复区的位置db_recovery_file_dest_size:指定闪回恢复区的可用空间大小 db_flashback_retention_target:指定数据库可以回退的时间,单位为分钟,默认1440分钟,也就是一天。当然,实际上可回...

mysql中整数类型后面的数字,是不是指定这个字段的长度?比如int(11),11代表11个字节吗?

原先对mysql不太理解,但也没有报错。但理解的不够深入。这次补上。 原来以为int(11)是指11个字节,int(10)就是10个字节。我错了。 http://zhidao.baidu.com/link?url=puYWaGBQNKNHgffO5kdvXshF3KmX8OuB4Mor3HXapbNHa8m1CdlF8PJTqVuKa1eKcEd6Bv2N...

MySQL查询截取分析

一、查询优化 1,mysql的调优大纲 慢查询的开启并捕获 explain+慢SQL分析 show profile查询SQL在Mysql服务器里面的执行细节和生命周期情况 SQL数据库服务器的参数调优 2,小表驱动大表 mysql的join实现原理是,以驱动表的数据为基础,“嵌套循环”去被驱动表匹配记录。驱动表的索引会失效,而被驱动表的索引有效。 #假...

Oracle数据库中序列(SEQUENCE)的用法详解

Oracle数据库中序列(SEQUENCE)的用法详解  在Oracle数据库中,序列的用途是生成表的主键值,可以在插入语句中引用,也可以通过查询检查当前值,或使序列增至下一个值。本文我们主要介绍了序列的用法,希望能够对您有所帮助。 在Oracle数据库中,什么是序列呢?它的用途是什么?序列(SEQUENCE)其实是序列号生成器,可以为表中的行自动生成序...

Oracle表中一行记录被锁(行锁,表锁,死锁)

表现形式:可以向表里面save新数据,但是无法跟新某一条数据,update的时候就一直在等待。 Oracle锁表查询和解锁方法 数据库操作语句的分类DDL:数据库模式定义语言,关键字:createDML:数据操纵语言,关键字:Insert、delete、updateDCL:数据库控制语言 ,关键字:grant、removeDQL:数据库查询语言,关键字:s...

Oracle使用——PLSQL查询表结构并导出EXCEL

背景 有一次需要查询Oracle数据库中的所有表接口并且导出excel,方法记录如下 使用 使用PLSQL工具查询表结构,SQL语句如下 SELECTB.TABLE_NAME AS '表名', C.COMMENTS AS '表说明', B.COLUMN_ID AS '字段序号', B.COLUMN_NAME AS '字段名...