1、Oracle的版本区分
Oracle 11.2.0.4.0
第一个数字,代表新版本,比如9i、10g、11g、12c 第二个数字,代表维护发行版本,包含一些新的特性,比如R1、R2 第三个数字,代表Oracle中间件的版本号 第四个数字,代表组件的发布版本,比如Oracle的patch包 第五个数字,代表平台的版本,通常表示patch号
目前市场可见版本:9i、10g、11g、12c、18c、19c,当前主流使用版本11gR2
2、Oracle的体系结构
该体系结构包括:实例(Instance)、数据库文件、用户进程(User process)、服务器进程(Server process)以及其他文件,如参数文件(Parameter file)、密码文件(Password file)和归档日志文件(Archived log file)等。 其中,数据库实例包含SGA(系统全局区)和一系列的后台管理、监视进程,数据库包括三种文件:数据文件(data files)、控制文件(Control files)和重做日志文件(Redo log files) 总的来说:Oracle Server = 实例 + 数据库
2.1、什么是实例?
Oracle实例,是一种访问Oracle数据库的基本方式 。换句话说,就是用户要访问数据库,首先要访问的入口就是实例入口。一个实例总是打开且只打开一个数据库,实例是由内存结构+进程结构组成,也就是oracle中的SGA和PGA。创建连接和会话的示意图如下:
2.2、什么是SGA和PGA?
SGA和PGA是Oracle实例中的内存结构。
- SGA(System global area):系统全局区,在实例启动的时候分配。SGA 是实例启动时分配的共享内存结构,关闭时释放。是一组包含一个数据库实例的数据和控制信息的共享内存结构。
- PGA(Process global area):服务器进程启动时分配。是会话开始时为每个会话分配的私有内存区,当会话结束时释放。
- 关于Oracle 的内存结构,在SGA中,最重要的三块内存区域:共享池(Share pool)、数据库高速缓冲区(Database buffer cache)、重做日志缓冲区(Redo log buffer cache),这3个内存区对Oracle数据库的性能影响有比较大的作用。比较容易出现问题的也是share pool和database buffer cache。
- 服务器进程不属于实例,为了和外界进行交互的进程,每一个服务器进程都会有自己的内存结构PGA。
可以通过ipcs命令去查看共享池的使用情况:
[oracle@OracleTest ~]$ ipcs
------ Message Queues --------
key msqid owner perms used-bytes messages
------ Shared Memory Segments --------
key shmid owner perms bytes nattch status
0x00000000 32773 root 600 802816 2 dest
0x00000000 32774 root 600 802816 2 dest
0x00000000 65543 oracle 660 4096 0
0x00000000 65544 oracle 660 4096 0
0x00000000 65545 oracle 660 4096 0
0x00000000 65546 oracle 660 4096 0
0x00000000 65547 oracle 660 4096 0
0x00000000 65548 oracle 660 4096 0
0x00000000 65549 oracle 660 4096 0
0x525176ec 65550 oracle 660 4096 0
0x00000000 18 root 777 8192 1 dest
0x00000000 19 root 777 1572864 2 dest
0x00000000 25 root 600 524288 2 dest
0x00000000 26 root 777 3145728 2 dest
0x00000000 29 root 600 524288 2 dest
0x00000000 30 root 600 524288 2 dest
0x00000000 35 root 600 1363968 2 dest
0x00000000 36 root 777 1531904 2 dest
0x00000000 37 root 600 1363968 2 dest
0x00000000 38 root 600 364544 2 dest
0x00000000 39 root 600 364544 2 dest
0x00000000 41 root 600 40960 2 dest
0x00000000 42 root 600 40960 2 dest
0x00000000 44 root 600 421888 2 dest
0x00000000 45 root 600 421888 2 dest
0x00000000 55 root 600 524288 2 dest
------ Semaphore Arrays --------
key semid owner perms nsems
0xb0eb1ac8 26 oracle 660 154
2.3、Oracle的前台进程和后台进程?
Oracle的前台进程:主要用于客户和Oracle数据库的连接使用,每一个Oracle连接都会产生一个前台进程。按实际生产使用意义,前台进程的数量会大于后台进程的数量。当我们使用sqlplus或者是web client端去连接oracle数据库时,就会产生一个这样的连接。
[oracle@OracleTest ~]$ sqlplus / as sysdba
[oracle@OracleTest ~]$ ps -ef |grep beq
oracle 57782 57781 0 08:56 ? 00:00:00 oracleitpuxdb (DESCRIPTION=(LOCAL=YES)(ADDRESS=(PROTOCOL=beq)))
Oracle的后台进程:
- PMON:是 Oracle 数据库中最活跃的一个进程,是调节所有其他进程的进程监视器。PMON 能够清理异常连接的数据库连接,并自动向侦听器进程注册数据库实例。
- SMON:是执行系统级清理操作的系统监视进程。它有两个主要职责,包括在发生故障的情况下自动恢复实例,例如断电和清理临时文件。
- DBWR:数据库编写器。Oracle 在内存中执行每个操作而不是磁盘。因为在内存中的处理速度比在磁盘上快。DBWn 进程从磁盘读取数据并将其写回到磁盘。
- LGWR:日志写入过程,是可恢复架构的关键。 在数据库中发生的每一个变化都被写出到一个名为 redo 日志文件中用于恢复目的。 而这些变化是由 LGWR 进程编写和记录的。 LGWR 进程首先将更改写入内存,然后将磁盘写入重做日志,然后将其用于恢复。
- CKPT:负责发起检查点信号,在 Oracle 中,磁盘上的数据称为块,内存中的数据称为缓冲区。 当该块写入缓冲区并更改时,缓冲区变脏,需要将其写入磁盘。CKPT 进程使用检查点信息更新控制和数据文件头,并向脏盘写入脏缓冲区的信号。
2.4、什么是Oracle数据库?
Oracle数据库是一个单元数据的集合体,由3种文件类型组成:
2.5、Oracle的数据库结构组成是怎样的?
Oracle的数据库结构组成分为物理结构和逻辑结构。
2.6、什么是Oracle数据库的物理结构?
其中物理结构是指Oracle数据库的物理存储,而其物理存储实际是由操作系统文件所决定,如(2)中的三大类文件:控制文件、数据文件、重做日志文件。理解公式:
数据库物理结构 = 数据文件 + 控制文件 + 重做日志文件 = N * 物理文件 = N * 物理块
-
物理块:物理块是操作系统分配的基础存储单位,逻辑结构中的数据块由若干个物理块构成。
-
物理文件:每个物理文件由若干个物理块所组成,包括数据块文件、控制文件、日志文件等。
-
数据文件:数据文件是实际存储插入到数据库表中的实际数据的操作系统文件。在oracle中数据文件的扩展名为*.dbf
-
重做日志文件:Oracle使用重做日志文件在故障发生之后重现当时的数据库操作,用于数据库恢复。重做日志文件的扩展名为*.log
-
控制文件:控制文件为二进制文件,它存储了数据库的名称,数据库文件和重做日志文件的名称、位置、联机/脱机状态和大小等信息。只有控制文件正常,才能装载、打开数据库,控制文件的扩展名为*.ctl
如下:在已安装完成的oracle数据库的显示:
[oracle@OracleTest itpuxdb]$ ll
total 1512732
-rw-r----- 1 oracle oracle 9748480 Aug 31 13:58 control01.ctl 控制文件
-rw-rw---- 1 oracle oracle 10493952 Aug 31 09:46 kim01.dbf 数据文件
-rw-r----- 1 oracle oracle 52429312 Aug 31 13:56 redo01.log 重做日志文件
-rw-r----- 1 oracle oracle 52429312 Aug 31 13:58 redo02.log
-rw-r----- 1 oracle oracle 52429312 Aug 31 09:18 redo03.log
-rw-r----- 1 oracle oracle 545267712 Aug 31 13:58 sysaux01.dbf
-rw-r----- 1 oracle oracle 713039872 Aug 31 13:57 system01.dbf
-rw-r----- 1 oracle oracle 30416896 Aug 31 13:32 temp01.dbf
-rw-r----- 1 oracle oracle 104865792 Aug 31 13:57 undotbs01.dbf
-rw-r----- 1 oracle oracle 5251072 Aug 31 09:18 users01.dbf
2.7、什么是Oracle数据库的逻辑结构?
Oracle体系的逻辑结构描述的是数据库的物理空间如何运用。包括表空间、段、片区、块
数据库逻辑结构 = N * 表空间 = N表 + N索引 + N视图 + ... = 逻辑对象【N数据段 + N索引段 + N临时段 + 回滚段】 = N * 数据区间 = N * 数据块
-
数据块(Data Block):数据块最小的数据管理单位,即Oracle中所有的I/O操作都是以块为单位。数据块的大小是操作系统块大小的整数倍,常见大小为8kb或16kb
-
数据区间(Data Extent):数据区间是由物理上连续存放的块所组成,它是Oracle存储分配的最小单位,一个或多个组成一个数据区间。
-
数据段(Data Segment):若干个数据区间组成数据段。
-
表空间(Table Space):Oracle 11g采用表空间这种虚拟概念来管理逻辑对象,用户可以将不同性质的逻辑对象存放在不同的表空间下。每个表空间由一个或多个数据文件组成,一个数据文件只能和一个表空间联系。
2.8、数据库逻辑结构的对应关系?
- 每个数据库都必须由一个或多个表空间组成。【一对多关系】
- 每个表空间都必须由一个或多个数据文件(datafile)组成。【一对多关系】
- 每个表空间都必须包含一个或多个段。【一对多关系】
- 每个数据库文件都必须由一个或多个操作系统块(OS block)组成。【一对多关系】
- 每个段都必须由一个或多个区间组成。【一对多关系】
- 每个区间都必须由一个或多个Oracle数据块组成。【一对多关系】
- 每个Oracle数据块都必须由一个或多个操作系统数据块组成。【一对多关系】
2.9、Oracle数据库默认的表空间有哪些?
- EXAMPLE: 实例表空间,存放实例信息。
- SYSAUX: SYSTEM表空间的辅助空间,用于减少SYSTEM表空间负荷。
- SYSTEM: 存放数据字典,包括表、视图、存储过程的定义等等。
- TEMP: 存储SQL语句处理的表和索引的信息。
- UNDOTBS1: 回滚表空间,存放数据库恢复信息。
- USERS: 用户表空间,存放用户私有信息。