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

僤鯓⒐⒋嵵緔 提交于 2019-12-04 07:26:18

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

1、物理存储结构

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

物理文件主要有:

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

如下所示:

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;

通过上面的代码,可以看到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;

1.2 控制文件

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

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

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

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

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

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运行在归档模式下,可以通过服务器参数文件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;

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

show parameter

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';

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';

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!