热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

初识oracle表空间与数据文件

学习目标1.描述oracle数据库的逻辑结构2.创建表空间3.改变表空间大小4.为临时段分配空间5.改变表空间状态6.改变表空间的存储设置首先看一下oracle存储结构ÿ

学习目标


1.描述oracle数据库的逻辑结构
2.创建表空间
3.改变表空间大小
4.为临时段分配空间
5.改变表空间状态
6.改变表空间的存储设置

首先看一下oracle存储结构:

 
1.oracle数据库逻辑结构包含哪些东西?


1)表空间
    a.一个Oracle数据库逻辑上分为更小的逻辑区域叫做表空间
    b.一个表空间同时只属于一个数据库
    c.每个表空间由一个或多个系统文件组成,叫做数据文件datafile
    d.一个表空间可以有1个或多个段组成
    e.当数据库运行时表空间可以是online状态
    f.除了SYSTEM表空间或者带有活动回滚段的表空间,其他表空间可以设置为offline状态
    g.表空间可以再读写(read-write)和只读(read-only)状态间切换


2)段
    a.一个段是在一个表空间中为指定的逻辑存数结构分配的空间。例如,分配给一个表的所有存储就是一个段。
    b.一个段只能属于一个表空间,可以跨越多个数据文件
    c.一个段由一个或多个区组成


3)区
    a.随着段的增长,额外的区将分配给段
    b.DBA可以为段手动增加区
    c.一个区是连续的oracle块集合
    d.一个区只能在一个数据文件中存在


4)块
    a.块作为oracle数据库最小的存储单位,数据全部存储在数据块中。
    b.一个oracle数据块相当于一个或多个从已存在的数据文件中分配的操作系统块
    c.一个标准数据块的大小由数据库创建时的初始化参数DB_BLOCK_SIZE指定
    d.为避免不必要的I/O,数据块的大小应该是操作系统块大小的几倍
    e.最大的数据块大小取决于操作系统

2.系统表空间与非系统表空间的区别?

1)系统表空间 system tablespaces:
    a.随着数据库的创建而创建
    b.在所有数据库中必须存在
    c.系统表空间包含数据字典,存储程序单元
    e.包含系统回滚段
    f.最好不要包含用户数据

2)非系统表空间 non-system tablespaces:
    a.分离回滚段、临时段、应用数据段和应用索引段
    b.通过备份需求分离数据
    c.分离动态和静态数据
    e.控制用户对象空间分配的数量
    f.方便数据库管理

3.如何创建表空间?
使用create tablespace语句,一下是官方示例:

CREATE TABLESPACE userdata
    DATAFILE '/u01/oradata/userdata01.dbf' SIZE 100M
   AUTOEXTEND ON NEXT 5M MAXSIZE 200M;

CREATE TABLESPACE tablespace
 [DATAFILE clause]
 [MINIMUM EXTENT integer[K|M]]
 [BLOCKSIZE integer [K]]
 [LOGGING|NOLOGGING]
 [DEFAULT storage_clause ]
 [ONLINE|OFFLINE]
 [PERMANENT|TEMPORARY]

MINIMUM EXTENT 指定最小区大小,使用K(千兆)或M(兆)
LOGGING  默认值,指定表空间中对所有表,索引和分区修改写入到redo中
NOLOGGING 与LOGGING相反
ONLINE与OFFLINE 创建完表空间后是否立即可用
PERMANENT 指定表空间可用来保留永久对象
TEMPORARY 指定表空间只能来保留临时对象
AUTOEXTEND 启用数据文件自动扩展

4.管理表空间的方式?
1)本地管理表空间
    a.用位图bitmap(在每个数据文件中维护)记录空闲区
    b.每个bit对应一个数据块
    c.bit值指示空闲和已使用
好处:减少数据字典表的争用;空间分配和回收不发生undo;没有合并需求(减少碎片);


用法举例:
CREATE TABLESPACE userdata
  DATAFILE '/u01/oradata/userdata01.dbf' SIZE 500M
  EXTENT MANAGEMENT LOCAL UNIFORM SIZE 256K;

[ EXTENT MANAGEMENT
    [ DICTIONARY | LOCAL 
  [ AUTOALLOCATE | UNIFORM [SIZE integer[K|M]] ] ] ]

LOCAL和DICTIONARY 就不解释了。
AUTOALLOCATE 指定表空间由系统管理,用户不能指定区大小
UNIFORM 指定表空间由同一的区大小管理。使用K或M指定大小。


2)数据字典管理表空间
    a.默认管理方法
    b.空闲区被记录在数据字典表中

CREATE TABLESPACE userdata
  DATAFILE '/u01/oradata/userdata01.dbf' SIZE 500M
  EXTENT MANAGEMENT DICTIONARY
   DEFAULT STORAGE ( initial 1M NEXT 1M );


5.undo表空间
1)undo表空间只能用来存储回滚段
2)创建undo表空间只能使用DATAFILE和EXTENT MANAGEMENT语句
CREATE UNDO TABLESPACE undo1
  DATAFILE '/u01/oradata/undo101.dbf' SIZE 40M;

6.temporary表空间
1)用来进行排序操作 SORT_AREA_SIZE(用来设置排序区的大小)
2)不能包含任何永久对象
3)推荐使用本地管理
CREATE TEMPORARY TABLESPACE temp
  TEMPFILE '/u01/oradata/temp01.dbf' SIZE 500M
  EXTENT MANAGEMENT LOCAL UNIFORM SIZE 10M;

4)本地管理临时表空间有临时数据文件tempfiles:
    a.临时文件一直是NOLOGGING模式
    b.不能设置临时文件为只读read-only
    c.不能重命名一个临时文件
    d.不能使用ALTER DATABASE命令增加临时文件
    e.临时文件对于只读数据库是需要的
    f.介质恢复不恢复临时文件
    g.备份控制文件时不生成任何临时文件的信息
    h.创建控制文件时不能指定任何关于临时文件的信息

7.默认default临时表空间
1)避免使用SYSTEM表空间存储临时数据
2)可以使用CREATE DATABASE和ALTER DATABASE语句创建
3)当使用CREATE DATABSE命令创建,默认临时表空间为本地管理

默认临时表空间的限制:
    a.没有指定新的默认临时表空间之前不能删除现有默认临时表空间
    b.不能更改默认临时表空间为永久类型
    c.不能修改默认临时表空间为offline状态
注:SYSTEM表空间、带有活动回滚段和默认临时表空间不能设置为离线状态


下面是一些操作实例:
-------------------------------------------------------------------
8.如何删除表空间?
DROP TABLESPACE userdata
   INCLUDING CONTENTS AND DATAFILES; 从数据字典中删除表空间及内容同时删除OS文件
--
DROP TABLESPACE tablespace
[INCLUDING CONTENTS [AND DATAFILES] [CASCADE CONSTRAINTS]]

CASCADE CONSTRAINTS:删除与被删表空间主键和唯一键相关的外部实体约束

9.如何改变表空间的大小?
1)增加数据文件

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

2)改变数据文件的大小(手动或自动)

ALTER DATABASE DATAFILE
   '/u01/oradata/userdata02.dbf' SIZE 200M
  AUTOEXTEND ON NEXT 10M MAXSIZE 500M;

10.如何移动数据文件?
△首先看NON-SYSTEM表空间数据文件的移动
步骤如下:
1)设置目标表空间为offline状态
2)使用OS命令一定或者复制数据文件
3)执行rename命令
4)设置目标表空间为online
5)必要的时候使用OS命令删除数据文件

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

△在看SYSTEM表空间中数据文件的移动
1)shut down数据库
2)使用OS命令移动数据文件
3)mount数据库
4)执行rename命令
5)open数据库

ALTER DATABASE RENAME
   FILE '/u01/oradata/system01.dbf'
     TO '/u03/oradata/system01.dbf';


-------------------------------------------------------------------
下面是有关表空间信息的获取:
11.表空间信息:
    -DBA_TABLESPACES
    -V$TABLESPACE
12.数据文件信息:
    -DBA_DATA_FILES
    -V$DATAFILE
13.临时文件信息:
    -DBA_TEMP_FILES
    -V$TEMPFILE


-----------------------------------------------------------
以上信息均翻译自oracle官方文档,不当之处还望指出,谢谢!

 

 


made by dylan.


推荐阅读
  • 本文介绍了数据库的存储结构及其重要性,强调了关系数据库范例中将逻辑存储与物理存储分开的必要性。通过逻辑结构和物理结构的分离,可以实现对物理存储的重新组织和数据库的迁移,而应用程序不会察觉到任何更改。文章还展示了Oracle数据库的逻辑结构和物理结构,并介绍了表空间的概念和作用。 ... [详细]
  • 本文详细介绍了SQL日志收缩的方法,包括截断日志和删除不需要的旧日志记录。通过备份日志和使用DBCC SHRINKFILE命令可以实现日志的收缩。同时,还介绍了截断日志的原理和注意事项,包括不能截断事务日志的活动部分和MinLSN的确定方法。通过本文的方法,可以有效减小逻辑日志的大小,提高数据库的性能。 ... [详细]
  • 使用Ubuntu中的Python获取浏览器历史记录原文: ... [详细]
  • 本文讨论了在数据库打开和关闭状态下,重新命名或移动数据文件和日志文件的情况。针对性能和维护原因,需要将数据库文件移动到不同的磁盘上或重新分配到新的磁盘上的情况,以及在操作系统级别移动或重命名数据文件但未在数据库层进行重命名导致报错的情况。通过三个方面进行讨论。 ... [详细]
  • Windows7 64位系统安装PLSQL Developer的步骤和注意事项
    本文介绍了在Windows7 64位系统上安装PLSQL Developer的步骤和注意事项。首先下载并安装PLSQL Developer,注意不要安装在默认目录下。然后下载Windows 32位的oracle instant client,并解压到指定路径。最后,按照自己的喜好对解压后的文件进行命名和压缩。 ... [详细]
  • PDO MySQL
    PDOMySQL如果文章有成千上万篇,该怎样保存?数据保存有多种方式,比如单机文件、单机数据库(SQLite)、网络数据库(MySQL、MariaDB)等等。根据项目来选择,做We ... [详细]
  • 我们有(据我所知)星型模式SQL数据库中的数据文件。该数据库有5个不同的文件,扩展名为 ... [详细]
  • 本文介绍了OpenStack的逻辑概念以及其构成简介,包括了软件开源项目、基础设施资源管理平台、三大核心组件等内容。同时还介绍了Horizon(UI模块)等相关信息。 ... [详细]
  • 本文介绍了一个误删Oracle数据文件导致数据库无法打开的问题,并提供了解决方式。解决方式包括切换到mount状态、离线删除报错的数据文件等。 ... [详细]
  • 本文介绍了设计师伊振华受邀参与沈阳市智慧城市运行管理中心项目的整体设计,并以数字赋能和创新驱动高质量发展的理念,建设了集成、智慧、高效的一体化城市综合管理平台,促进了城市的数字化转型。该中心被称为当代城市的智能心脏,为沈阳市的智慧城市建设做出了重要贡献。 ... [详细]
  • Java序列化对象传给PHP的方法及原理解析
    本文介绍了Java序列化对象传给PHP的方法及原理,包括Java对象传递的方式、序列化的方式、PHP中的序列化用法介绍、Java是否能反序列化PHP的数据、Java序列化的原理以及解决Java序列化中的问题。同时还解释了序列化的概念和作用,以及代码执行序列化所需要的权限。最后指出,序列化会将对象实例的所有字段都进行序列化,使得数据能够被表示为实例的序列化数据,但只有能够解释该格式的代码才能够确定数据的内容。 ... [详细]
  • 本文介绍了Oracle数据库中tnsnames.ora文件的作用和配置方法。tnsnames.ora文件在数据库启动过程中会被读取,用于解析LOCAL_LISTENER,并且与侦听无关。文章还提供了配置LOCAL_LISTENER和1522端口的示例,并展示了listener.ora文件的内容。 ... [详细]
  • 图解redis的持久化存储机制RDB和AOF的原理和优缺点
    本文通过图解的方式介绍了redis的持久化存储机制RDB和AOF的原理和优缺点。RDB是将redis内存中的数据保存为快照文件,恢复速度较快但不支持拉链式快照。AOF是将操作日志保存到磁盘,实时存储数据但恢复速度较慢。文章详细分析了两种机制的优缺点,帮助读者更好地理解redis的持久化存储策略。 ... [详细]
  • 本文介绍了在Mac上搭建php环境后无法使用localhost连接mysql的问题,并通过将localhost替换为127.0.0.1或本机IP解决了该问题。文章解释了localhost和127.0.0.1的区别,指出了使用socket方式连接导致连接失败的原因。此外,还提供了相关链接供读者深入了解。 ... [详细]
  • 本文介绍了如何使用python从列表中删除所有的零,并将结果以列表形式输出,同时提供了示例格式。 ... [详细]
author-avatar
SHW_keytae
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有