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