学习笔记:oracle学习一:oracle11g体系结构之物理存储结构
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';

学习笔记:oracle学习一:oracle11g体系结构之物理存储结构的更多相关文章
- (1.3)学习笔记之mysql体系结构(C/S整体架构、内存结构、物理存储结构、逻辑结构)
目录 1.学习笔记之mysql体系结构(C/S架构) 2.mysql整体架构 3.存储引擎 4.sql语句处理--SQL层(内存层) 5.服务器内存结构 6.mysql如何使用磁盘空间 7.mysql ...
- 20155234 2016-2017-2第十周《Java学习笔记》学习总结
20155234第十周<Java学习笔记>学习总结 教材学习内容总结 网络编程 在两个或两个以上的设备(例如计算机)之间传输数据.程序员所作的事情就是把数据发送到指定的位置,或者接收到指定 ...
- #学习笔记#e2e学习使用(一)
本文仅限于记录本人学习的过程,以及怎么踩的坑,是如何解决的.逻辑肯定是混乱的,有用之处会抽出共通另行发帖. 最终目标:要运用于Vue项目中,进行功能测试甚至自动化测试. 一.e2e概念 理解:end ...
- java JDK8 学习笔记——助教学习博客汇总
java JDK8 学习笔记——助教学习博客汇总 1-6章 (by肖昱) Java学习笔记第一章——Java平台概论 Java学习笔记第二章——从JDK到IDEJava学习笔记第三章——基础语法Jav ...
- 1.C#基础学习笔记3---C#字符串(转义符和内存存储无关)
技术qq交流群:JavaDream:251572072 教程下载,在线交流:创梦IT社区:www.credream.com ------------------------------------- ...
- python3.4学习笔记(七) 学习网站博客推荐
python3.4学习笔记(七) 学习网站博客推荐 深入 Python 3http://sebug.net/paper/books/dive-into-python3/<深入 Python 3& ...
- 20155234 2610-2017-2第九周《Java学习笔记》学习总结
20155234第九周<Java学习笔记>学习总结 教材学习内容总结 数据库本身是个独立运行的应用程序 撰写应用程序是利用通信协议对数据库进行指令交换,以进行数据的增删查找 JDBC(Ja ...
- #学习笔记#e2e学习使用(二)
前言: <#学习笔记#e2e学习使用(一)>主要记录了Vue项目的创建到e2e环境的搭建,以及期间遇到的各种问题和解决方法.本文建立在基础测试环境搭建完毕能正确运行的情况下,编写测试代码, ...
- mybatis学习笔记之学习目录(1)
mybatis学习笔记之学习结构(1) 学习结构: 1.mybatis开发方法 原始dao开发方法(程序需要编写dao接口和dao实现类) mybatis的mapper接口(相当于dao接口)代理开发 ...
随机推荐
- antd 表单获取参数
wrappedComponentRef是为了把form的值赋值到自定的对象中 <OpenCityForm wrappedComponentRef={(inst)=>{this.cityFo ...
- jQuery相关方法6----三大系列属性
一.获取和设置元素的宽和高------width( )方法和height()方法 <!-- 点击按钮,设置div的宽和高为原来的两倍 --> <script src="ht ...
- TensorFlow(十三):模型的保存与载入
一:保存 import tensorflow as tf from tensorflow.examples.tutorials.mnist import input_data #载入数据集 mnist ...
- NetworkX系列教程(10)-算法之二:最小/大生成树问题
小书匠 Graph 图论 重头戏部分来了,写到这里我感觉得仔细认真点了,可能在NetworkX中,实现某些算法就一句话的事,但是这个算法是做什么的,用在什么地方,原理是怎么样的,不清除,所以,我决定 ...
- vue中router-link的详细用法
官网文档地址:https://router.vuejs.org/zh/api/#to 今天项目突然有需求,让vue中的一个页面跳转到另一个页面 // 字符串 <router-link to=&q ...
- 关于.eslintrc.js代码检测的一些配置
配置参数 rules: { "规则名": [规则值, 规则配置] } 规则值: "off"或者0 //关闭规则关闭 "warn"或者1 / ...
- 在application-context.xml中配置多个property-placeholder
如下所示,直接写多个<context:property-placeholder>标签是会报错的. <context:property-placeholder location=&qu ...
- linux的free命令详解-内存是拿来用的不是拿来看的
$ free -m total used free shared buffers cached Mem: -/+ buffers/cache: Swap: 第一部分Mem行:total 内存总数: 1 ...
- elasticsearch集群健康状态查看
1. 查看ES集群健康状态 http://localhost:9200/_cluster/health?pretty 响应: { "cluster_name" : "if ...
- Wireshark过滤命令总结
1.表达式1 (tcp.flags.reset == )&&(tcp.seq == ) 2.表达式2 (tcp.flags.syn == )&&(tcp.analysi ...