Oracle 的体系结构在之前已经分析过,最近又看了一本<<Oracle 9i10g 编程艺术:深入数据库体系结构>>的书,还有所得,所以继续做记录。Oracle 在一开是就被设计为一个相当可移植的数据库,在所有的平台上都能够运行,但是在物理结构上有所不同。这是因为各个平台结构的差异,例如在UNIX上是以多进程为基础的,所以在UNIX上Oracle是实现在多个进程上的;而在Windows是以多线程为基础的,所以Oracle实现为一个多线程的进程。
先来分析数据库和实例有什么区别:
数据库(database):物理操作系统文件或磁盘(disk)的集合。使用Oracle 10g的自动存储管理(Automatic Storage Management,ASM)或RAW分区时,数据库可能不作为操作系统中单独的文件,但定义仍然不变。
实例(instance):一组Oracle后台进程/线程以及一个共享内存区,这些内存由同一个计算机上运行的线程/进程所共享。这里可以维护易失的、非持久性内容(有些可以刷新输出到磁盘)。就算没有磁盘存储,数据库实例也能存在。也许实例不能算是世界上最有用的事物,不过你完全可以把它想成是最有用的事物,这有助于对实例和数据库划清界线。
连接数据库的方式分为两种:
(1):专用服务器
(2):共享服务器,也称为多线程服务器
共享服务器连接和专用服务器连接之间有一个重大区别,与数据库连接的客户进程不会与共享服务器直接通信,但专用服务器则不然,客户进程会与专用服务器直接通 信。之所以不能与共享服务器直接对话,原因就在于这个服务器进程是共享的。所以需要一个分配器(Dispatcher),把请求连接的Client从等待队列里取出,然后分配给服务器。
最后使用SQL-PLUS连接远程服务器的格式为:
sqlplus username/passwd@host.domain:port/sid