Oracle 专用术语自我理解

来源:互联网 发布:2016中国粮食浪费数据 编辑:程序博客网 时间:2024/04/30 12:49

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服务的实例。

原创粉丝点击