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



    本系列是作为学习笔记,用于记录学习过程,加深学习印象,以及自己重新回顾学习内容只用,参考书籍为《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';

  • 相关阅读:
    课后作业
    动手动脑
    原码,补码,反码
    CodingSouls团队项目冲刺-个人概况(7)
    《人月神话》阅读笔记03
    数据库学习
    家庭小账本——数据库的编写与测试
    家庭小账本——适配器的编写与测试
    UI高级组件
    UI高级组件
  • 原文地址:https://www.cnblogs.com/yj411511/p/11839410.html
Copyright © 2020-2023  润新知