您的位置:首页 > 数据库 > Oracle

Oracle 专用术语自我理解

2012-03-14 11:32 218 查看
Oracle与Mysql在很多概念上不一致,从Mysql转过来需要理解一些oracle的概念。

1 database and instance 数据库与实例

数据库是一组物理文件的集合,保存在硬盘设备上,里面保存着很多数据文件及日志文件、控制文件等。在oracle11g下,一个数据库一般对应一个独立的数据存储目录,如/opt/oracle/oradata/hello目录。下面是该目录下的文件列表。

-rw-r--r--. 1 oracle oinstall 24 3月 14 08:45 afiedt.buf

-rw-r-----. 1 oracle oinstall 9748480 3月 14 17:06 control01.ctl

-rw-r-----. 1 oracle oinstall 52429312 3月 14 17:06 redo01.log

-rw-r-----. 1 oracle oinstall 52429312 3月 14 07:35 redo02.log

-rw-r-----. 1 oracle oinstall 52429312 3月 14 07:35 redo03.log

-rw-r-----. 1 oracle oinstall 513810432 3月 14 17:05 sysaux01.dbf

-rw-r-----. 1 oracle oinstall 702554112 3月 14 17:05 system01.dbf

-rw-r-----. 1 oracle oinstall 30416896 3月 14 08:35 temp01.dbf

-rw-r-----. 1 oracle oinstall 78651392 3月 14 17:05 undotbs01.dbf

-rw-r-----. 1 oracle oinstall 52436992 3月 14 09:03 user_data.dbf

-rw-r-----. 1 oracle oinstall 5251072 3月 14 07:35 users01.dbf

-rw-r-----. 1 oracle oinstall 52436992 3月 14 08:11 user_temp.dbf

可见,数据库是静态的,恒久的

另外,oracle中一个数据库可以包含很多应用的数据表,每个应用靠不同的数据库用户名来区别,这与mysql中一个数据库的概念不同。

数据库实例,是一组进程与内存空间,其唯一用处就是用来管理一个数据库,实例是动态的。一个数据库实例的启动不依赖于数据库的存在,通过startup nomount就可以启动一个不加载任何数据库的实例,当然这样的实例也没有什么用处。需要注意的是,一个实例在其生命周期内能且只能加载一个数据库,所以很多时候实例和数据库是一一对应的,并且名字也很可能相同。但是在RAC下,可以通过多个实例来管理同一个数据库,也就是说一个数据库可以同时被多个实例加载管理。

2 tablespace and datafile 表空间与数据文件

oracle一个数据库通常是很大的,为了便于管理,把其分成多个表空间来管理,每个表空间包含一个或多个数据文件,通常是一个。表空间是一个逻辑的概念,它管理的是实际存在的数据文件。



3 schema and user 方案与用户

前面说过,一个oracle数据库往往包含很多应用的数据表,用来区分不同应用的方法就是schema。schema是一个逻辑上的概念,它代表了同名用户所拥有的数据库资源集合。没有方法直接创建一个schema,当建立一个数据库用户时,这个schema自动就"产生"了,需要说明的是,如果该用户还没有任何资源,那么这个schema就是空的,在ORACLE的GUI窗口不会显示,当该用户创建了一个表之后,才会显示schema。可以看出,oracle中的schema在概念上更像是mysql中的数据库。



4 SID and Service Name 实例名和服务名

ORACLE中的实例只是管理数据库,并不负责和客户端通信,负责通信的是Listener(监听器),它在1521端口上侦听客户的链接请求。客户端连接时提供的是oracle服务的Service Name,如sqlplus 用户名/密码@Oracle服务器IP/服务名。Listener负责把客户端请求的ServiceName映射到服务器端的SID,找到实际提供SQL服务的实例。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: