问题:我是数据库的初学者,望大家不吝赐教!! 在Oracle中数据库、数据文件、表、表空间、用户之间是什么关系啊?比如我知道表和数据文件隶属于表空间;表空间与用户是多对多的关系。 希望大家能写的通俗具体一点,呵呵呵 我在逻辑上有点混乱了!答案:呵呵,问的好,这涉及到数据库的物理结构和逻辑结构。 首先,你需要明白的一点是:数据库的物理结构是由数据库的 *** 作系统文件所决定,每一个Oracle数据库是由三种类型的文件组成:数据文件、日志文件和控制文件。数据库的文件为数据库信息提供真正的物理存储。 每一个Oracle数据库有一个或多个物理的数据文件(data file)。一个数据库的数据文件包含全部数据库数据。逻辑数据库结构(如表、索引等)的数据物理地存储在数据库的数据文件中。数据文件通常为dbf格式,例如:userCIMSdbf。数据文件有下列特征:①、一个数据文件仅与一个数据库联系;②、一旦建立,数据文件只增不减;③、一个表空间(数据库存储的逻辑单位)由一个或多个数据文件组成。 其次,我们再来叙述一下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的用户、表空间和数据文件的关系: 一个用户可以使用一个或多个表空间,一个表空间也可以供多个用户使用。用户和表空间没有隶属关系,表空间是一个用来管理数据存储的逻辑概念,表空间只是和数据文件发生关系,数据文件是物理的,一个表空间可以包含多个数据文件,而一个数据文件只能隶属一个表空间。总结一下:解释数据库、表空间、数据文件、表、数据的最好办法就是想象一个装满东西的柜子。数据库其实就是柜子,柜中的抽屉是表空间,抽屉中的文件夹是数据文件,文件夹中的纸是表,写在纸上的信息就是数据。
不加owner时,会将数据库中所有对象导出,包括用户,表,视图,存储过程,函数,包,同义词等等。
而加上owner的区别在于,导出某个指定数据库用户的的表,视图,存储过程,函数,包,同义词等等。
注意部分的内容,二者的区别在于范围,而不是加了owner就只能导出表而已。
这个问题我在前两天刚刚回答过一次,这里再次回答一下:
在创建用户前我们得先创建表空间,不然新用户数据量如果大,你的默认表空间会被撑爆,另外一个作用也是为了方便管理。
和一般创建语句一样,创建表空间也是create语句,指定该表空间数据保存位置,一般都在%ORACLE_HOME%/oradata/orcl下面,具体语句是:
1临时表空间
create temporary tablespace 表空间名 --创建临时表空间
tempfile '路径\文件名dbf' --临时表空间的路径已经临时表空间名字
size 50m autoextend on next 50m --表空间出事空间大小50M,自动增加,步长是50M,后面还可以跟最大值,比如 maxsize 20480m
extent management local; --表空间管理方式
2创建表空间,数据存放的地方
create tablespace 表空间名
datafile '路径\文件名dbf'
size 50m autoextend on next 50m maxsize 20480m
extent management local;
3创建用户,并制定默认表空间
create user 用户名 identified by 密码
default tablespace 数据表空间名(第二步创建的那个表空间名字)
temporary tablespace 临时表空间名 (第一步创建的那个表空间名)
4赋权
一般如果没有特殊要求,只需要赋两个权限
grant connect,resource to 用户名;
如果要给dba权限
grant DBA to 用户名
收回dba权限:
revoke dba from 用户名;
先su 到 oracle用户,SYS用户以DBA身份登陆
//创建临时表空间
SQL>create temporary tablespace user_temp
datafile '/data1/oradata/user_tempdbf'
size 5000M autoextend on;
//创建数据表空间
SQL>create tablespace user_temp
datafile '/data1/oradata/user_tempdbf'
size 500M autoextend on;
(这些只是例子,具体数据文件的路径,大小,都要你自己改,这里的是不自动扩展,你如果想自动扩展,autoextend on next 50m maxsize 2048m,上网查一下就可以了)
//创建用户并指定表空间
SQL> create user username identified by password
default tablespace user_data
temporary tablespace user_temp;
//给用户授予权限
SQL> grant connect,resource to username;
以上就是关于Oracle中数据库、数据文件、表、表空间、用户之间是什么关系(转)全部的内容,包括:Oracle中数据库、数据文件、表、表空间、用户之间是什么关系(转)、oracle多用户下如何只导出某个用户的数据库(包括表,视图,队列,存储过程等)、怎么给oracle数据库,创建表空间和用户等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)