-
概念分析:
1. 数据库(Database):
数据库是一个文件集合,包括数据文件,临时文件,重做日志文件和控制文件。也可以说数据库是物理操作系统文件或磁盘集合。数据库可以由多个实例(schema)创建和打开,而实例可以在任意时间点装载和打开一个数据库。
2. 实例(Instance):
实例就是一组操作系统进程(unix系统下)或者一个多线程的进程(windows系统下)以及一些内存(主要有:SGA,PGA,UGA等,关于oracle内存结构不在这里进行阐述)。一个实例只能有一组相关的文件集合(一个实例对应一个数据库),大多数情况下,反过来也成立,一个数据库上只有一个实例对其进行操作。不过,oracle的真正应用集群(Real Application Clusters, RAC)是个例外,这是oracle提供的一个选项,允许在集群环境中的多台计算机上操作,这样就有多个实例装载和打开同一个数据库(位于一组共享物理磁盘上)
3. 连接(Connection):
连接指oracle客户端与服务器端物理的网络连接。在已建立的连接上,建立客户端与oracle的会话,以后客户端与oracle的交互都在一个会话环境中进行。(注Oracle允许失去物理连接的会话)。
4. 会话(Session):
会话是个建立在连接到某个instance之上的一个动态概念。(注Oracle允许失去物理连接的会话)。一次会话是用户的一个活跃进程,它代表用户与系统交互。用户与会话是一对多关系,一个用户可同时打开多个会话,一个会话构成一个用户到多个角色的映射,即会话激活了用户授权角色的某个子集,这个子集称为活跃角色集。活跃角色集决定本次会话的许可集。
5. 表空间(Tablespace):
表空间是oracle数据库中最大的逻辑结构,从逻辑上说,一个ORACLE数据库能够有一个或多个表空间,而一个表空间则对应着一个或多个物理的数据库文件。表空间是ORACL数据库恢复的最小单位,容纳着许多数据库实体,如表、视图、索引、聚簇、回退段和临时段等。从物理上说数据库的数据被存放在数据文件中,从逻辑上说数据时被存放在表空间中。每个数据库至少有一个system表空间。SYSTEM表空间是Oracle创建数据库时候自动创建的,每个Oracle数据库都会有SYSTEM表空间,而且SYSTEM表空间总是要保持在联机模式下,因为其包含了数据库运行所要求的基本信息,如:数据字典、联机求助机制、所有回退段、临时段和自举段、所有的用户数据库实体、其它ORACLE软件产品要求的表等等。
表空间的作用如下:
2 决定数据库实体的空间分配
2 控制数据库部分数据的可用性
2 分布数据于不同设备之间以改善性能
2 备份和恢复数据
2 设置数据库用户的空间份额(??尚未理解)
6. 用户(User):
是数据库中的用户,包含一个缺省schema(对象集合),用户是schema的拥有者; user可通过oracle预定义或自定义的角色进行权限设置,确定该user在schema中的行使权力。用户是表空间下的一个概念,其对应一个或多个schema对象集。
7. 角色(role):
角色就是相关权限的命令集合,使用角色的主要目的就是为了简化权限的管理。角色分为预定义角色和自定义角色两类。
预定义角色是指Oracle所提供的角色,每种角色都用于执行一些特定的管理任务(具体预定义角色这里不阐述);自定义角色顾名思义就是自己定义的角色,根据自己的需要来定义,一般是DBA来建立,如果用的别的用户来建立,则需要具有create role的系统权限,在建立角色时可以指定验证方式(不验证,数据库验证等)。
8. 模式(Sc?h?e?m?a):
一个用户在数据库中创建的所有对象称为schema,schema为数据库对象的集合。schema中包含如:tables,views,sequences,procedures,functions……的对象。创建用户时,默认产生一个同名的schema(即缺省schema,还可以有其他schema)。
下面通过例子来理解下schema的概念:
select * from scott.emp;(select col1,col2,... from schema.table)
语句中的“scott”在这里便是schema名(注意不是用户名),在这里要区分用户与schema的概念,schema为数据对象的集合,user为该数据对象集合的拥有者。一个user可能对应多个schema。正确的理解为schema.object,而不是user.object)