学习笔记:oracle学习一:oracle11g体系结构之物理存储结构

摘要:
当Oracle实例正常启动时,系统首先访问初始化参数文件spfile,然后为系统分配全局内存。

目录


本系列是作为学习笔记,用于记录学习过程,加深学习印象,以及自己重新回顾学习内容只用,参考书籍为《oracle 11g从入门到精通(第二版)》,如果需要深入学习,请购买原书籍,谢谢!

1、物理存储结构

物理存储结构用于描述oracle数据在磁盘上的物理组成情况,oracle数据在逻辑上存储于表空间中,在物理上存储在表空间所包含的物理文件(即数据文件)中。

物理文件主要有:

  • 数据文件
  • 重做日志文件
  • 归档日志文件
  • 参数文件
  • 口令文件
  • 警告日志文件

如下所示:

学习笔记:oracle学习一:oracle11g体系结构之物理存储结构第1张

1.1 数据文件

数据文件用于保存用户应用程序数据和oracle系统内部数据。逻辑存储表空间可以包含一个或多个数据文件,但是一个数据文件只能属于一个表空间。

oracle系统通过高速缓存区来存取数据,减少磁盘I/O操作,提高系统性能,过程如下:

1)、读取数据

从数据文件读取数据--》》将数据存储在内存的高速缓存区--》》对于新读取的数据若不在高速缓存区,则系统从相应的数据文件中读取数据并缓存在高速缓存区

2)、修改和插入数据

oracle将修改和插入的数据先保存在高速缓存区--》》由后台进程DBWR决定何时写入数据文件

可以通过查询dba_data_files或者V$datafile数据字典来了解Oracle系统的数据文件信息


col file_name for a50;
set linesize 100;
select file_name,talbespace_name from dba_data_files;

学习笔记:oracle学习一:oracle11g体系结构之物理存储结构第2张

通过上面的代码,可以看到3种类型的数据文件:

  • 系统数据文件,如SYSTEM01.DBF:用于存放'特殊'的用户数据和Oracle系统本身的数据,如用户建立的表名、列名及字段类型等用户数据,还有Oracle系统内部的数据字典、系统表(dab_data_files、dba_temp_files等)的数据
  • 撤销数据文件,如UNDOTB01.DBF:属于撤销表空间。当修改Oracle数据库中的数据时,就必须使用撤销段,撤销段用于存放修改前的旧数据,撤销段所在的表空间所包含的数据文件即撤销数据文件。
  • 用户数据文件,如USERS01.DBF、EXAMPLE01.DBF、TBSP_1.DBF等,用于存放用户应用系统的数据

例:通过查询dba_temp_files或者v$tempfile数据字典来查看临时文件的信息


col file_name for a50;
col tablespace_name for a20;
select file_name,tablespace_name from dba_temp_files;

学习笔记:oracle学习一:oracle11g体系结构之物理存储结构第3张

1.2 控制文件

控制文件是一个二进制文件,记录了数据库的物理结构,其中主要包括数据库名、数据文件与日志文件的名字与位置、数据库建立日期等信息,一般在Oracle系统安装时或创建数据库时自动创建,存放路径由服务器参数文件spfileorcl.ora的control_file参数确定。

Oracle实例正常启动时,系统首先访问初始化参数文件spfile,然后为系统分配全局区(SGA)内存。然后Oracle自动读出控制文件中的所有数据文件和日志文件信息,并打开当前数据库中所有数据文件和日志文件供用户访问。

每个数据库至少有一个控制文件,一个控制文件唯一的属于一个数据库。

通过查询v$controlfile数据字典可以查看Oracle系统的控制文件信息,代码如下:


col name for a50;
select name from v$controlfile;

学习笔记:oracle学习一:oracle11g体系结构之物理存储结构第4张

1.3 日志文件

日志文件主要功能用于记录对数据所作的修改,对数据库所作的修改几乎都记录在日志文件中。挡在出现问题时,可以通过日志文件得到原始数据,从而保证不丢失已有的操作成果。包括:

  • 重做日志文件(Redo Log File)
  • 归档日志文件(Archive Log File)

1.3.1 重做日志文件

用于记录数据库所有发生过的更改信息(修改、添加、删除等信息)以及Oracle内部行为(创建数据库、索引等)而引起的数据库变化信息。

在数据库运行期间,当用户执行commit命令时,数据库首先将每笔操作的原始记录写入日志文件中,写入日志文件成功后,才会把新的记录传递给应用程序,所以,日志文件上可以随时读取原始记录以恢复数据库。

每个oracle实例都启用一个日志线程来记录数据库的变化。日志线程由若干‘日志组’组成,每个日志组又由一个或者多个日志文件构成。

Oracle系统运行过程中产生的日志信息,首先被存放在SGA(系统全局区)的重做日志缓存区,当发出commit命令(或日志缓冲区信息满1/3)时,LGWR进程(日志写入进程)将日志从重做缓冲区中读取出来,并将读取的日志信息写入日志文件组中序号较小的文件中,一个日志组写满后接着写另一个日志组。当LGWR进程将所有能用的日志文件都使用过一遍后,它将再次转向第一个日志组重新覆写。

1.3.2 归档日志文件

在LGWR进程将所有日志组写满后,再次转向第一个日志组进行覆写时,oracle系统由归档进程ARCH将即将被覆盖的日志文件中的日志信息读出,并将读出的日志信息写入归档日志文件中,这个过程即归档操作。

归档模式为可选模式,可以通过v$database视图来查看当前Oracle系统是否采用归档模式,代码如下:


col name for a30;
select dbid,name,log_mode from v$database;

学习笔记:oracle学习一:oracle11g体系结构之物理存储结构第5张

如果Oracle运行在归档模式下,可以通过服务器参数文件spfile的log_archive_dest参数确定归档日志文件的路径。

show parameter log_archive_dest

1.4 服务器参数文件

服务器参数文件spfile(server parameter file)是二进制文件,用于记录Oracle数据库的基本参数信息(如数据库名、控制文件路径、日志缓冲大小等)。数据库实例在启动前,会先读取spfile中设置的参数,并根据这些初始化参数来配置和启动实例。比如:设置标准数据块的大小(db_block_size)、设置日志缓冲区大小(log_buffer)等。spfile在安装数据库系统时自动创建,文件名为SPFILEsid.ora,sid为所创建数据库的实例名。

1.4.1 查看服务器参数

1)、查看视图v$parameter


col name for a30;
col value for a30;
select name,value,ismodified from v$parameter;

学习笔记:oracle学习一:oracle11g体系结构之物理存储结构第6张

2)、使用sql*plus的show parameter命令显示服务器参数

show parameter

学习笔记:oracle学习一:oracle11g体系结构之物理存储结构第7张

1.4.2 修改服务器参数

使用alter system参数修改服务器参数

alter system set db_block_size=4096;

1.5 密码文件、警告文件和跟踪文件

1.5.1 密码文件

密码文件时Oracle系统用于验证sysdba权限的二进制文件,当远程用户已sysdba或者sysoper链接到数据库时,一般要使用密码文件验证。

创建密码文件的命令格式如下:

C:\>ORAPWD FILE=<filename>PASSWORD=<password>ENTRIES=<max_users>

  • filename:表示密码文件名称
  • password:表示设置internal/sys账号口令
  • max_users:表示密码文件中可以存放的最大用户数,对应允许以sysdba/sysoper权限登录数据库的最大用户数

创建了密码文件以后,需要设置初始化参数remote_login_passwordfile来控制密码文件使用状态

  • NONE:只要通过操作系统验证,就不用通过oracle密码文件验证
  • SHARED:表示多个数据库实例都可以采用此密码文件验证
  • EXCLUSIVE:表示只有一个数据库实例可以使用此密码文件验证

1.5.2 警告文件

警告文件是一个存储在Oracle系统目录下的文本文件(名称通常为alert_orcl.log),用于记录Oracle系统的运行信息和错误信息。

  • 运行信息:Oracle实例的启动与关闭、建立表空间、增加数据文件等
  • 错误信息:包括空间扩展失败、启动实例失败等

通过v$parameter视图查看当前实例的告警文件路劲,代码如下



col name for a20;
col value for a50;
select name,value from v$parameter where name = 'background_dump_dest';

学习笔记:oracle学习一:oracle11g体系结构之物理存储结构第8张

1.5.3 跟踪文件

跟踪文件包括后台进程跟踪文件和用户进程跟踪文件。

  • 后台进程跟踪文件:用于记录后台进程的警告或错误信息。路径由BACKGROUND_DUMP_DEST参数确定,命名格式为.trc,如orcl_cjq0_5172.trc。
  • 用户进程跟踪文件:用于记载与用户进程相关的信息,主要跟踪sql语句。可以用于判断sql语句的执行性能。路径由USER_DUMP_DEST参数确定。命名格式为ora.trc.

实例:

select value from v$parameter where name='user_dump_dest';

学习笔记:oracle学习一:oracle11g体系结构之物理存储结构第9张

免责声明:文章转载自《学习笔记:oracle学习一:oracle11g体系结构之物理存储结构》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇蓝牙协议栈详解Linux系统文件系统损坏修复实例下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

转:nginx+CGI/FASTCGI

简介版: 1.fastcgi与cgi区别:fastcgi通过线程来响应请求,而cgi对每个请求生成一个进程。 2.典型nginx数据传输过程:user->nginx->本地socket(请求传输)->fastcgi(即进程管理器)->cgi进程。 转(感谢下面两位同学): http://blog.csdn.NET/chenjh213...

关于使用navicat将mdb文件导入mysql数据库

公司最近下发了任务,要把gdb,sde,mdb格式的数据文件统一放入mysql数据库中,作为后台数据库,支持地理信息开发平台。首先来研究mdb格式的文件。.mdb格式的文件,一般都是office access来编写的,虽然2010之后,access所保存出的默认数据库的格式都是.accdb,不过不影响我们的正常使用,就把它当成.mdb文件实用就行。好了,闲...

[转]Android 操作SQLite基本用法

在Android开发中SQLite起着很重要的作用,网上SQLite的教程有很多很多,不过那些教程大多数都讲得不是很全面。本人总结了一些SQLite的常用的方法,借着论坛的大赛,跟大家分享分享的。一.SQLite的介绍1.SQLite简介SQLite是一款轻型的数据库,是遵守ACID的关联式数据库管理系统,它的设计目标是嵌入  式的,而且目前已经在很多嵌入...

Kettle-Spoon入门示例

Spoon是Kettle的设计调试工具 [Demo文档下载]https://files.cnblogs.com/files/shexunyu/Kettle-Spoon-Demo%E5%B8%AE%E5%8A%A9%E6%96%87%E6%A1%A3.zip[驱动下载]https://files.cnblogs.com/files/shexunyu/Kett...

MySQL 主从复制:基于二进制文件复制配置详解

MySQL-主从复制:基于二进制文件复制详解 前言 主从复制是指把一个MySQL的数据库服务器作为主服务器(master),然后把master的数据复制到一个或者多个MySQL数据库服务器作为从服务器(slave)。从master到slave的复制一般是异步复制,所以从服务器的复制可以随时停止,也不会影响到主服务器的使用。可以通过配置来决定只复制哪些数据库...

SSH key生成代码详解

SSH key生成代码详解 -b 4096-t rsassh-keygen-C "邮箱" 转载于知乎 作者:就是这么优秀链接:https://zhuanlan.zhihu.com/p/36098077 ssh-keygen -t rsa -b 4096 -C "邮箱":这条命令的目的是为了让本地机器ssh登录远程机器上的GitHub账户无需输入密码。...