Oracle中数据库、数据文件、表、表空间、用户之间是啥关系(转)
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Oracle中数据库、数据文件、表、表空间、用户之间是啥关系(转)相关的知识,希望对你有一定的参考价值。
问题:我是数据库的初学者,望大家不吝赐教!! 在Oracle中数据库、数据文件、表、表空间、用户之间是什么关系啊?比如我知道表和数据文件隶属于表空间;表空间与用户是多对多的关系。 希望大家能写的通俗具体一点,呵呵呵 我在逻辑上有点混乱了!答案:呵呵,问的好,这涉及到数据库的物理结构和逻辑结构。 首先,你需要明白的一点是:数据库的物理结构是由数据库的操作系统文件所决定,每一个Oracle数据库是由三种类型的文件组成:数据文件、日志文件和控制文件。数据库的文件为数据库信息提供真正的物理存储。 每一个Oracle数据库有一个或多个物理的数据文件(data file)。一个数据库的数据文件包含全部数据库数据。逻辑数据库结构(如表、索引等)的数据物理地存储在数据库的数据文件中。数据文件通常为*.dbf格式,例如:userCIMS.dbf。数据文件有下列特征:①、一个数据文件仅与一个数据库联系;②、一旦建立,数据文件只增不减;③、一个表空间(数据库存储的逻辑单位)由一个或多个数据文件组成。 其次,我们再来叙述一下Oracle的逻辑结构:Oracle的逻辑结构包括表空间(tablespace),段(segment),数据块(data block)以及模式对象(schema object)。 Oracle数据库在逻辑上是由多个表空间组成的,表空间在物理上包含一个或多个数据文件。而数据文件大小是块大小的整数倍;表空间中存储的对象叫段,比如数据段,索引段和回退段。段由区组成,区是磁盘分配的最小单位。段的增大是通过增加区的个数来实现的。每个区的大小是数据块大小的整数倍,区的大小可以不相同;数据块是数据库中的最小的I/O单位,同时也是内存数据缓冲区的单位,及数据文件存储空间单位。块的大小由参数DB_BLOCK_SIZE设置,其值应设置为操作系统块大小的整数倍。 ⑴、表空间(tablespace) 表空间是数据库中最大的逻辑单位,每一个表空间由一个或多个数据文件组成,一个数据文件只能与一个表空间相联系。每一个数据库都有一个SYSTEM表空间,该表空间是在数据库创建或数据库安装时自动创建的,用于存储系统的数据字典表,程序系统单元,过程函数,包和触发器等,也可用于存储用户数据表,索引对象。表空间具有在线(online)和离线(offline)属性,可以将除SYSTME以外的其他任何表空间置为离线。 ⑵、段(segment) 数据库的段可以分为四类:数据段、索引段、回退段和临时段。 ⑶、区 区是磁盘空间分配的最小单位。磁盘按区划分,每次至少分配一个区。区存储与段中,它由连续的数据块组成。 ⑷、数据块 数据块是数据库中最小的数据组织单位与管理单位,是数据文件磁盘存储空间单位,也是数据库I/O的最小单位,数据块大小由DB_BLOCK_SIZE参数决定,不同的Oracle版本DB_BLOCK_SIZE的默认值是不同的。 ⑸、模式对象 模式对象是一种应用,包括:表、聚簇、视图、索引序列生成器、同义词、哈希、程序单元、数据库链等。 最后,在来说一下Oracle的用户、表空间和数据文件的关系: 一个用户可以使用一个或多个表空间,一个表空间也可以供多个用户使用。用户和表空间没有隶属关系,表空间是一个用来管理数据存储的逻辑概念,表空间只是和数据文件发生关系,数据文件是物理的,一个表空间可以包含多个数据文件,而一个数据文件只能隶属一个表空间。总结一下:解释数据库、表空间、数据文件、表、数据的最好办法就是想象一个装满东西的柜子。数据库其实就是柜子,柜中的抽屉是表空间,抽屉中的文件夹是数据文件,文件夹中的纸是表,写在纸上的信息就是数据。 参考技术A 数据库是一整个概念,里面包含多个表空间,表空间里面存放表,每个用户有不同的表空间和表Oracle创建表空间
表空间:
oracle 使用表空间来管理数据库的对象(表,序列,过程,函数,游标等)。
oracle的逻辑结构
oracle 数据库 =》 表空间 =》 表 序列 过程 等对象
oracle的物理结构
oracle 数据库 =》oracle的数据文件 =》数据段=》数据区间=》数据块
oracle中所有数据都存在数据文件中。
oracle的数据文件分三种
1,控制文件,以ctl结尾,控制文件中存储oracle运行所需要的字典,用户 等对象。
2,日志文件,以log 存储oracle操作产生的日志文件,还包含oracle的重做日志。
3,数据文件。存储用户或者系统创建的对象
表空间也是对象,需要存储到数据文件中,所以创建表空间的时候需要指定使用哪个数据文件。
创建表空间的语法:
create tablespace 表空间名称
datafifile ‘D:\\test_tab\\test01.dbf‘ 指定表空间使用的数据文件,如果文件不存在会自动创建
size 50m 表空间的初始大小
autoextend on next 30m 表空间如果空间不够用了,下次自动扩展的大小
maxsize 300m 指定表空间的最大存储空间;
-- 创建表空间 create tablespace tab_test01 --指定使用的数据文件 datafile ‘D:\\test_tab\\test01.dbf‘ --指定表空间的初始大小 size 50m --当表空间不够用时,下次自动增长的大小 autoextend on next 30m --表空间自动增长的最大值 maxsize 300m;
创建表空间的参数 除了表空间名称和数据文件,初始值大小外都是可选的:
-- 创建表空间 create tablespace tab_test02 --指定使用的数据文件 datafile ‘D:\\test_tab\\test02.dbf‘ --指定表空间的初始大小 size 50m;
表空间用到的物理文件,不要在磁盘上直接删除,否则数据库将不能正常启动,如果要删除数据文件,需要先删除表空间。
drop tablespace tab_test02;
oracle中有内置的默认的表空间:(users01)
1,临时表空间,存储oracle数据库运行产生的临时数据
2,重做表空间 ,存储数据库产生的重做文件。
3,用户表空间,存储默认用户的数据。当创建用户 且用户不指定默认表空间的时候会使用该表空间。
权限管理:
oracle中使用角色来批量的管理权限,常用的角色有三种 :
connect 连接数据库的角色 ,可以执行数据库的增删改查,但是不能执行数据库表的增删改,一般在开发环境中给
用户赋予这种角色
resource 开发者角色 。可以执行数据库对象的增删改查。我们一般在开发中使用这种角色。
dba 数据库管理员角色。最高权限,可以执行数据库的任何操作。一般不建议使用这种角色。
给用户赋予角色可以使用如下语句:
grant 角色名[,角色名2,角色名3] to 用户;
--为张三用户赋予连接的权限 grant connect to zhangsan; --为张三赋予开发权限 grant resource to zhangsan; --为张三同时赋予连接和开发权限 grant connect ,resource to zhangsan;
撤销权限可以使用如下语句:
--撤销张三的开发权限
revoke resource from zhangsan;
以上是关于Oracle中数据库、数据文件、表、表空间、用户之间是啥关系(转)的主要内容,如果未能解决你的问题,请参考以下文章
oracle中用一个用户导出的dmp文件中含有多个表空间,怎么用该用户将这个文件再导入数据库