Oracle架构之物理存储中各种文件详解
文章目录
- 1 物理存储
- 1.1 简介
- 1.2 数据文件(data files)
- 1.2.1 定义
- 1.2.2 分类
- 1.2.2.1 系统数据文件
- 1.2.2.2 撤销数据文件
- 1.2.2.3 用户数据文件
- 1.2.2.4 临时数据文件
- 1.3 控制文件(Control files)
- 1.3.1 定义
- 1.3.2 查看控制文件
- 1.3.3 查看控制文件内容
- 1.3.4 控制文件多路复用
- 1.3.5 控制文件丢失的解决办法
- 1.3.6 控制文件的备份与恢复
- 1.3.6.1 使用 alter database backup controlfile 备份
- 1.3.6.2 使用 rman 备份(推荐)
- 1.3.6.3 使用 rman 恢复控制文件
- 1.3.7 asmcmd复制报错
- 1.3.7.1 问题引入
- 1.3.7.2 解决办法
- 1.4 服务器参数文件(Parameter files)
- 1.4.1 查看服务器参数
- 1.4.2 修改服务器参数
- 1.4.3 参数文件及具体作用
- 1.5 其他文件
- 1.5.1 密码文件(Password files)
- 1.5.2 警告文件
- 1.5.3 跟踪文件(tracle files)
1 物理存储
1.1 简介
逻辑存储结构是为了便于管理 Oracle 数据而定义的具有逻辑层次关系的抽象概念,不容易理解;但物理存储结构比较具体和直观,它用来描述 Oracle 数据在磁盘上的物理组成情况。
从大的角度来讲,Oracle 的数据在逻辑上存储在表空间中,而在物理上存储在表空间所包含的物理文件(即数据文件)中。
Oracle 数据库的物理存储结构由多种物理文件组成,主要有数据文件、控制文件、重做日志文件、归档日志文件、参数文件、口令文件和警告日志文件等,其中数据文件、控制文件、重做日志文件和参数文件是必须的,其他文件是可选的。
- 参数文件:用于配置数据库的初始化参数
- 控制文件:记录数据库的结构和状态信息
- 数据文件:存储了实际的数据
- 日志文件:记录了数据库的变更操作
数据库启动过程中,Oracle首先加载参数文件,然后读取控制文件,接着加载数据文件和日志文件
参数文件中的配置信息会影响到数据库实例的初始化过程,决定了数据库的初始参数值。控制文件记录了数据库的结构和状态信息,包括数据文件和日志文件的列表。数据文件存储了数据库中的实际数据,而日志文件记录了数据库的变更操作。
在数据库运行时,如果需要修改参数值,可以通过修改参数文件(PFILE或SPFILE)或使用ALTER SYSTEM语句来实现。对于控制文件、数据文件和日志文件的管理,可以使用Oracle提供的工具和命令进行备份、恢复、重建等操作。
1.2 数据文件(data files)
1.2.1 定义
数据文件是用于保存用户应用程序数据和 Oracle 系统内部数据的文件,这些文件在操作系统中就是普通的操作系统文件, Oracle 在创建表空间的同时会创建数据文件。
Oracle 数据库在逻辑上由表空间组成,每个表空间可以包含一个或多个数据文件,一个数据文件只能隶属于一个表空间,在创建表空间的同时, Oracle 会创建该表空间的数据文件。从 Oracle10g 开始,一个数据库至少需要两个数据文件,一个用于 SYSTEM 表空间,用于存储数据字典;一个用于 SYSAUX 表空间,用于存储数据字典的辅助数据。数据文件由 Oracle块组成,这是 Oracle 的 IO 基础单元,Oracle 块要比操作系统块大,每个数据块有固定的大小,由数据库参数db_block_size 定义。数据文件有下列特征:一个数据文件仅与一个数据库联系;一个表空间由一个或多个数据文件组成。
在表空间中创建数据对象(如表、索引、簇等)时,用户是无法指定使用哪一个数据文件来进行存储的,只能由 Oracle 系统负责为数据对象选择具体的数据文件,并在其中分配物理存储空间。
数据文件通常存储在操作系统的文件系统中,如$ORACLE_HOME/dbs目录下的system01.dbf文件。为了提高性能和可靠性,可以将数据文件分散在不同的物理磁盘上(一个数据对象的数据可以全部存储在一个数据文件中,也可以分布存储在同一个表空间的多个数据文件中)。在读取数据时, Oracle 系统首先从数据文件中读取数据,并将数据存储在内存的高速数据缓冲区中。
如果用户要读取数据库中的某些数据,而请求的数据又不在内存的高速数据缓冲区中,则需要从相应的数据文件中读取数据并存储在缓冲区中。
当修改和插入数据时, Oracle 不会立即将数据写入数据文件,而是把这些数据保存在数据缓冲区中,然后由 Oracle 的后台进程 DBWR 决定如何将其写入相应的数据文件。这样的存取方式减少了磁盘的 I/O 操作,提高了系统的响应性能。
数据文件可以根据需要进行扩展和收缩,以适应数据库的存储需求。此外,还可以对数据文件进行备份和恢复,以保证数据的可靠性和完整性。
1.2.2 分类
常见的数据文件有:系统数据文件、撤销数据文件、用户数据文件、临时数据等类型
1.2.2.1 系统数据文件
用于存放特殊的用户数据和 Oracle 系统本身的数据,如用户建立的表名、列名及字段类型等,这些属于用户数据范畴,这些数据被存放在系统表空间所包含的数据文件中;
而 Oracle 系统内部的数据字典、系统表(如 dba_data_files、 dba_temp_files 等)中所存储的数据属于 Oracle 系统的内部数据,这些数据也存放在系统表空间所包含的数据文件中。
例如:SYSTEM01.DBF和SYSAUX01.DBF
1.2.2.2 撤销数据文件
撤销数据文件隶属于撤销表空间。如果修改 Oracle 数据库中的数据,那么就必须使用撤销段,撤销段用来临时存放修改前的旧数据,而撤销段通常存放在一个单独的撤销表空间中,这个撤销表空间所包含的数据文件就是撤销数据文件。
例如:UNDOTBS01.DBF
1.2.2.3 用户数据文件
用户数据文件用于存放用户应用系统的数据,这些数据包括与应用系统有关的所有相关信息,比如,上述TBSP 1.DBF和TBSP 2.DBF文件就是一个具体应用系统的两个数据文件。
例如:USERS01.DBF、EXAMPLE01.DBF、 TBSP 1.DBF和TBSP_ 2.DBF
1.2.2.4 临时数据文件
临时数据文件具有特殊性,但是从 Oracle 9i 以后,Oracle 将临时表空间所对应的临时数据文件与一般数据文件分开,要了解 Oracle 系统的临时数据文件信息,可以从 dba_temp_files 或 v$tempfile 数据字典中查询。
1.3 控制文件(Control files)
1.3.1 定义
控制文件是一个二进制文件,用于记录数据库的结构信息和运行状态,控制文件用于实现数据恢复和故障恢复。
控制文件一般在 Oracle 系统安装时或创建数据库时自动创建,控制文件所存放的路径由服务器参数文件 spfileorcl.ora 的 control_files 参数值来指定。由于控制文件存放有数据文件、日志文件等的相关信息,因此, Oracle 实例在启动时必须访问控制文件。只有控制文件正常,实例才能加载并打开数据库;但若控制文件中记录了错误的信息,或者实例无法找到一个可用的控制文件,则实例无法正常启动。
当 Oracle 实例在正常启动时,系统首先要访问的是初始化参数文件 spfile,然后 Oracle 为系统全局区(SGA)分配内存。这时, Oracle 实例处于安装状态,并且控制文件处于打开状态;接下来 Oracle会自动读出控制文件 中的所有数据文件和日志文件的信息,进而恢复数据库的一致性,并打开当前数据库中所有的数据文件和所有的日志文件以供用户访问。
1.3.2 查看控制文件
SQL> select * from v$controlfile;
SQL> show parameters control_files;
1.3.3 查看控制文件内容
控制文件的内容包括:
- 数据库的名称、ID、创建的时间戳;
- 表空间的名称;
- 联机日志文件、数据文件的位置、名称;
- 联机日志的 Sequence 号码;
- 检查点的信息;
- 撤销段的开始或结束;
- 归档信息;
- 备份信息
控制文件内容相关操作:
将控制文件转出为文本文件
alter database backup controlfile to trace as '/home/oracle/ctl001.txt';
Database altered.查看控制文件包含的记录片段
select type,record_size,records_total,records_used from v$controlfile_record_section;
1.3.4 控制文件多路复用
数据库的启动和正常运行都离不开控制文件,控制文件损坏将导致整个数据库损坏,数据库正常工作至少需要一个控制文件,一个数据库可以同时拥有多个控制文件,其中至少有一个是当前的控制文件,由于控制文件极其重要,生产库最少创建控制文件的两个以上副本,可以通过多路复用技术,将控制文件的副本创建到不同的磁盘上。这样,如果一个控制文件损坏了,可以自动使用另一个控制文件。
当数据库的物理结构发生改变时,Oracle会自动更新控制文件。
但控制文件并不是越多越好,因为当 Oracle 更新控制文件时,会将所有的控制文件全部进行更新,对数据库的性能会有一定的影响,读取时则仅读取第一个控制文件。
控制文件的位置和数量由初始化参数(control_files)决定。启动数据库时,Oracle 从初始化参数文件中获取控制文件的名字及位置,并打开控制文件,然后从控制文件中读取数据文件和重做日志文件的信息,最后打开数据库。数据库运行时,会更改控制文件。
增加控制文件的步骤如下:
- 查看当前使用的控制文件:
show parameter control_files - 修改参数文件
alter system set control_files = '+DATA/orcl/controlfile/current.260.1070471991',
'+BAK/orcl/controlfile/current.256.1070471991',
'+bak/ctl_files/control_bak.ctl'
scope = spfile sid = '*';
- 重启数据库到 nomount 状态,复制所需的控制文件
重启数据库到 nomount,利用已有的控制文件通过复制的方式生成第三个控制文件
1.3.5 控制文件丢失的解决办法
- 控制文件部分丢失
一个或多个控制文件丢失,至少有一个控制文件存在。比如,原来有 3 个控制文件,丢失一个导致数据库无法启动。解决方法如下:- 将已经存在的控制文件复制到目的路径并更改为正确的控制文件名称;
- 修改 control_files 参数将丢失的控制文件去掉。
- 控制文件版本不一致
利用最新版本的控制文件替换旧的控制文件
修改 control_files 参数
SQL> alter system set control_files = '+DATA/orcl/controlfile/current.260.1070471991',
'+BAK/orcl/controlfile/control_file02.ctl',
'+BAK/ctl_files/control_bak.ctl'
scope = spfile sid = '*';System altered.
- 使用控制文件 +DATA/orcl/controlfile/current.260.1070471991 通过复制的方法生成另外两个控制文件
ASMCMD> cp +DATA/orcl/controlfile/current.260.1070471991 +BAK/orcl/controlfile/control_file02.ctl
copying +DATA/orcl/controlfile/current.260.1070471991 -> +BAK/orcl/controlfile/control_file02.ctl
ASMCMD> cp +DATA/orcl/controlfile/current.260.1070471991 +BAK/ctl_files/control_bak.ctl
copying +DATA/orcl/controlfile/current.260.1070471991 -> +BAK/ctl_files/control_bak.ctl
1.3.6 控制文件的备份与恢复
1.3.6.1 使用 alter database backup controlfile 备份
备份控制文件,命令:alter database backup controlfile to '<dir>';
生成创建控制文件的脚本:alter database backup controlfile to trace as '<dir>' ;
1.3.6.2 使用 rman 备份(推荐)
查看数据库的归档状态
archive log list;登录到rman命令
rman target username/password@orcl备份控制文件
RMAN> backup current controlfile format '+bak/control_2021_08_06.bak';查看控制文件的备份信息
RMAN> list backup of controlfile;备份数据库与控制文件
RMAN> backup database include current controlfile;
1.3.6.3 使用 rman 恢复控制文件
由于误操作、磁盘故障等导致控制文件全部丢失时,可以使用备份的控制文件进行恢复操作。下面模拟控制文件全部丢失时,恢复数据库的操作:
查看控制文件
SQL> show parameter control_files;先关机后删除全部的控制文件
SQL> shutdown immediate
ASMCMD> rm +DATA/orcl/controlfile/control_file01.ctl
ASMCMD> rm +BAK/orcl/controlfile/control_file02.ctl
ASMCMD> rm +BAK/ctl_files/control_file03.ctl启动数据库,出现错误
SQL> startup
ORACLE instance started.Total System Global Area 835104768 bytes
Fixed Size 2257840 bytes
Variable Size 603982928 bytes
Database Buffers 226492416 bytes
Redo Buffers 2371584 bytes
ORA-00205: error in identifying control file, check alert log for more info数据库启动到 nomount 状态
SQL> select status from v$instance;
使用 RMAN 还原控制文件
RMAN> restore controlfile from '+BAK/control_2021_08_06.bak';启动数据库到 mount 状态
RMAN> alter database mount;恢复数据库
RMAN> recover database;打开数据库<以resetlogs 模式才能打开数据库。
RMAN> alter database open resetlogs;
1.3.7 asmcmd复制报错
1.3.7.1 问题引入
需要增加一个控制文件,进行了如下操作:
修改参数
alter system set control_files = '+DATA/orcl/controlfile/current.260.1070471991',
'+BAK/orcl/controlfile/current.256.1070471991',
'+bak/ctl_files/controlfile.256.1070471991'
scope = spfile sid = '*';
复制控制文件到 control_files 参数指定的位置
使用asmcmd 在执行 cp 命令时出现如下错误:
ASMCMD> cp +bak/orcl/controlfile/Current.256.1070471991 +bak/ctl_files/controlfile.256.1070471991
copying +bak/orcl/controlfile/Current.256.1070471991 -> +bak/ctl_files/controlfile.256.1070471991
ASMCMD-8016: copy source '+bak/orcl/controlfile/Current.256.1070471991' and target '+bak/ctl_files/controlfile.256.1070471991' failed
ORA-15056: additional error message
ORA-15046: ASM file name '+bak/ctl_files/controlfile.256.1070471991' is not in single-file creation form
ORA-06512: at "SYS.X$DBMS_DISKGROUP", line 415
ORA-06512: at line 3 (DBD ERROR: OCIStmtExecute)
1.3.7.2 解决办法
在 asmcmd 中复制文件时不能指定文件后面的数值。命令修改为如下格式:
ASMCMD> cp '+BAK/orcl/controlfile/current.256.1070471991' '+bak/ctl_files/control_bak.ctl'
copying +BAK/orcl/controlfile/current.256.1070471991 -> +bak/ctl_files/control_bak.ctl
复制成功,查看文件:
ASMCMD> ls +bak/ctl_files
control_bak.ctl# 用 ls -l 查看文件
# 发现在 ASM 中复制文件其实只是在目标目录下存储了一个 alias(别名),真正的文件被 ASM 放到了其他位置
ASMCMD> ls -l +bak/ctl_files
Type Redund Striped Time Sys NameN control_bak.ctl => +BAK/ASM/CONTROLFILE/control_bak.ctl.265.1079800929
把数据库启动到 nomount,修改参数文件如下:
alter system set control_files = '+DATA/orcl/controlfile/current.260.1070471991',
'+BAK/orcl/controlfile/current.256.1070471991',
'+bak/ctl_files/control_bak.ctl'
scope = spfile sid = '*';
1.4 服务器参数文件(Parameter files)
参数文件是Oracle数据库实例的配置文件,它包含了一系列的参数和对应的取值,用于 控制数据库系统的行为
数据库实例在启动之前, Oracle 系统首先会读取 参数文件中设置的这些参数,并根据这些初始化参数来配置和启动实例。比如,设置标准数据块的大小(即参数 db_block_size 的值)、设置日志缓冲区的大小(即参数 log_buffer 的值)等,所以 参数文件非常重要。
根据其使用方式和位置,Oracle参数文件分为两种类型:SPFILE(Server Parameter File)和PFILE(Parameter File):
SPFILE以二进制格式存储,可以在数据库运行时动态修改参数值,用来记录了Oracle数据库的基本参数信息(如数据库名、控制文件所在路径、日志缓冲大小等)。它通常存储在服务器的文件系统中,如$ORACLE_HOME/dbs目录下的spfileSID.ora文件,sid为所创建的数据库实例名。
SPFILE虽不能使用文本编辑器修改,但可以使用ALTER SYSTEM语句在运行时修改参数值,无需重新启动数据库。同时,SPFILE还提供了参数值的持久化功能,可以保证数据库在下次启动时使用最新的参数值。PFILE是传统的文本格式参数文件,以ASCII格式存储。它需要手动编辑或使用工具进行修改。PFILE通常存储在服务器的文件系统中,如$ORACLE_HOME/dbs目录下的initSID.ora文件。与SPFILE相比,PFILE的主要不足之处是不能在数据库运行时动态修改参数值,需要重新启动数据库才能生效。
Oracle 实例启动时查找参数文件的顺序:
Oracle首先在默认目录中查找名为spfile<OracleSID >.ora的 文 件- 如 果 没 有 则 查 找
spfile.ora文 件 - 如 果 还 没 有 , 继续 找
init<ORACLE_SID>.ora的文件
pfile 和 spfile 的互相创建
-- 根据 spfile 创建 pfile
create pfile[='xxxxx'] from spfile[='xxxx'];
-- 根据内存中的参数值创建 pfile
create pfile[='xxxxx'] from memory;
-- 根据 pfile 创建 spfile
create spfile[='xxxxx'] from pfile[='xxxx'];
1.4.1 查看服务器参数
用户可以通过如下两种方式查看数据库的服务器参数。
- 查询视图
v$parameter,提供了当前会话可见的初始化参数的取值 ,可利用该动态性能视图来确定参数的默认值是否被修改过,以及是否可以用ALTER SYSTEM和ALTER SESSION命令修改。 show parameter name:查询当前会话生效的参数show spparameters:查询当前会话生效的spfile参数,参数的取值来源于 spfile 参数文件create pfile:可以将spfile或当前内存中设置的参数保存到pfile文件中,这种方法列出的参数都是用户设置的参数,不包括默认值参数。- 查询视图
v$system_parameter,视图提供了当前实例生效的初始化参数的取值 - 查看视图
v$spparameter,视图提供了来自spfile文件中初始化参数的取值 ,如果参数在spfile文件中没有设置 ,字 段isspecified对应的值为false。 - 查看视图
v$spparameter2,视图会返回多条记录
参数分为静态参数(修改之后需要重启数据库才能生效)和动态参数(修改之后无需重启,立即生效):
动态参数:可以在数据库运行时修改参数值并且立即生效的参数。静态参数:内存中的当前值不能被修改,只能在参数文件中修改,且数据库必须要重启才能生效的参数。
Oracle 在视图 V$PARAMETER 中提供了一个列 ISSYS_MODIFIABLE,如果该列的值为 IMMEDIATE 代表该参数为动态参数,且修改后立即生效;如果该列的值为 DEFERRED 代表该参数为动态参数,但参数值修改后不会立即生效,只有在新连接的会话中生效;如果该列的值为 FALSE 代表该参数为静态参数
1.4.2 修改服务器参数
修改数据库的服务器参数,主要通过企业管理器(OEM)或 ALTER SYSTEM 命令来实现。
- 通过企业管理器(
OEM)修改,首先使用SYSTEM用户登录OEM,然后选择服务器”页面中的初始化参数项,将打开如下图所示的初始化参数页面,在该页面的“值”列中就可以修改参数值,然后保存就可以

- 使用
ALTER SYSTEM命令修改服务器参数
例如:通过ALTER SYSTEM命令修改标准数据块的大小为 4096 字节,代码及运行结果如下。
alter system set db_block_size=4096
系统已更改-- 值修改内存中的值
ALTER SYSTEM/SESSION SET 参数名=参数值 SCOPE = MEMORY SID='*';-- 只修改 SPFILE 中的值
ALTER SYSTEM SET 参数名=参数值 SCOPE = SPFILE SID='*';-- 同时修改 SPFILE 和 MEMORY 中的值(也可以省略 BOTH 关键词)
ALTER SYSTEM/SESSION SET 参数名=参数值 SCOPE = BOTH SID='*';-- 设置延迟生效,修改只对以后连接到数据库的会话生效,而对当前会话以及其它已经连接到 Oracle 的会话不会生效。
ALTER SYSTEM SET 参数名=参数值 DEFERRED SCOPE = SPFILE SID='*';说明:
(1)在 RAC 环境中,要修改所有实例,可以在 ALTER SYSTEM 的最后加上 SID='*',要更改某一个实例, 在命令的结尾加上 SID='实例名'
(2)ALTER SESSION:修改的参数只限于本次会话,退出会话再进入时修改失效
(3)ALTER SYSTEM:修改的参数适用于数据库实例的所有会话,数据库关闭则修改失效
(4)ALTER SYSTEM DEFERRED:修改是延迟修改,退出会话,下次进入会话时生效
(5)scope = spfile:修改只对 spfile 参数文件有效,对于动态参数和静态参数都是数据库重启时有效。
(6)scope = memory:修改只对内存有效,对于动态参数修改后立即生效,数据库重启后失效。静态参数不允许使用该选项。
(7)scope = both:修改对 spfile 参数文件和内存都生效。对于动态参数修改后立即生效,数据库重启后失效。静态参数不允许使用该选项。
1.4.3 参数文件及具体作用
参数文件由一系列的参数和对应的取值组成,每个参数占据一行,以参数名和参数值的形式表示。
# This is a comment
processes = 200
db_block_size = 8192
sga_target = 4G
Oracle 数据库有大量的参数,每个参数都有不同的作用和取值范围。以下是一些常见的Oracle参数及其作用:
processes:控制数据库实例能够同时处理的并发连接数。db_block_size:定义数据块的大小,影响数据库存储和I/O性能。sga_target:指定SGA(System Global Area)的目标大小,包括缓冲区高速缓存和共享池。undo_tablespace:指定回滚段表空间的名称,用于管理事务的回滚和并发控制。log_archive_dest:定义归档日志文件的位置和传输方式,用于实现数据备份和恢复。optimizer_mode:确定SQL查询优化器的工作模式,影响SQL查询的执行计划和性能。
1.5 其他文件
Oracle 系统运行时,除了必需的数据文件、控制文件、日志文件及服务器参数文件外,还需要一些辅助文件,如密码文件、警告文件和跟踪文件,下面将对这些辅助文件进行简单的介绍。
1.5.1 密码文件(Password files)
密码文件是 Oracle 系统用于验证 sysdba 权限的二进制文件,当远程用户以 sysdba 或 sysoper (默认情况下 sysdba 角色中存在 sys 用户,sysoper 角色中存在 system 用户)连接到数据库时,一般要用密码文件验证。
Oracle 用户登录数据库时有三种验证方式,分别为:
操作系统验证:即,Oracle 用户只要能够登录操作系统,在登录数据库时不需要验证用户名和密码。此种登录方式只有在服务器本机登录有效,不适用于远程登录。
如果需要屏蔽操作系统验证,可以采用两种方式:- 修改
$ORACLE_HOME/network/admin/sqlnet.ora文件,如果该文件不存在,表示开启操作系统验证,则新建一个文件,设置SQLNET.AUTHENTICATION_SERVICES参数为none
其他参数:none: 关闭操作系统验证,只能使用密码验证all: 用于 linux 或 unix 平台,启用操作系统验证nts: 用于 windows 平台,启用操作系统验证
- 修改
remote_login_passwordfile参数的取值为EXCLUSIVE或SHARED
其他参数:NONE: 不使用密码文件,使用操作系统验证EXCLUSIVE: 密码文件验证,但只有一个数据库实例可以使用此文件SHARED: 密码文件验证,多个数据库实例可以使用此文件,但此设置下只有SYS帐号能被识别
- 修改
密码文件验证:使用密码文件中保存的用户和密码登录数据库数据字典验证:使用数据字典中的用户和密码登录数据库,一般用于普通用户的登录验证
Oracle 11g 密码文件的默认存放位置以及命名: $ORACLE_HOME/dbs/orapw<ORACLE_SID> ,其中 ORACLE_SID 表示数据库实例名。创建密码文件既可以在创建数据库实例时自动创建,也可以使用 ORAPWD.EXE 工具手动创建,创建密码文件的命令格式如下:
ORAPWD FILE=<filename> PASSWORD=<password> ENTRIES=<max_users>
参数说明:
filename:表示密码文件名称。password:表示设置internal/sys账户口令。max_users:表示密码文件中可以存放的最大用户数,对应允许以sysdba/sysoper权限登录数据库的最大用户数。
创建了密码文件后,需要设置初始化参数 remote_login_passwordfile 来控制密码文件的使用状态,通常有 3 种状态值:
NONE:表示只要通过操作系统验证,就不用通过Oracle密码文件验证;SHARED:表示多个数据库实例都可以采用此密码文件验证;EXCLUSIVE:表示只有一个数据库实例可以使用此密码文件验证。
创建一个密码文件,其 SYS 口令为 012345,代码如下。
C:\>ORAPWD FILE=E:\app\Admin\product\11.2.0\dbhome_1\database\PWDorcl.ora password=012345 entries=40
1.5.2 警告文件
警告文件(即警告日志文件)是一个存储在 Oracle 系统目录下的文本文件(名称通常为 alert_orcl.log),它用来记录 Oracle 系统的运行信息和错误信息。运行信息一般包括 Oracle 实例的启动与关闭、建立表空间、增加数据文件等;错误信息包括空间扩展失败、启动实例失败等。
当 Oracle 系统安装完毕后,其实例日常运行的基本信息都会记录在警告文件中。警告文件的路径可通过 Oracle 系统的 background_dump_dest 参数值来查看,并且该参数值由服务器进程和后台进程写入。
注意:随着时间的推移,警告文件会越来越大,数据库管理员应该定期删除警告文件
1.5.3 跟踪文件(tracle files)
跟踪文件包含了大量且详细的诊断和调试信息。通过对跟踪文件的分析,可以定位问题、分析问题和解决问题。跟踪文件的位置由 BACKGROUND_DUMP_DEST 参数决定。跟踪文件分为以下三类:
- 警报日志文件(alert files)
警报日志文件记录数据库在启动、关闭和运行期间后台进程的活动情况。如表空间创建、回滚段创建、某些 alter 命令、日志切换、错误消息等。
警报日志的名称:alert_<ORACLE_SID>.log。
查看警报日志文件的位置:show parameter BACKGROUND_DUMP_DEST
查看警报日志文件:ll alert_orcl1.log
报警日志主要保存以下信息:- 数据库的启动、停止;
- 记录所有的非默认值的初始化参数;
- 记录日志的切换情况;
- 记录检查点的完成情况;
- 记录数据库工作时遭遇的错误信息
后台进程跟踪文件用于记录后台进程的警告或错误消息
DBWR、LGWR、SMON等后台进程创建的后台跟踪文件
后台进程跟踪文件的磁盘位置由初始化参数BACKGROUND_DUMP_DEST确定,后台进程跟踪文件的命名格式为<ORACLE_SID>_进程名_进程号.trc,例如: orcl_cjq0_5172.trc。
查看后台进程 pmon 对应的跟踪文件:ll *pmon*用户进程跟踪文件用于记录与用户进程相关的信息,它主要用于跟踪SQL语句,这些文件仅在用户会话期间遇到错误时产生。
通过用户进程跟踪文件,可以判断SQL语句的执行性能。用户进程跟跟踪文件的位置由初始化参数user_dump_dest确定,用户进程跟踪文件的命名格式为<ORACLE_SID>_ora_服务进程的spid.trc,例如:orcl_ora_4888.trc。
查看用户进程跟踪文件:ll *ora*
在v$parameter视图中查看当前实例的用户跟踪文件的路径:select value from v$parameter where name = 'user_dump_dest';
打开 sql 跟踪:exec dbms_system.set_sql_trace_in_session(sid, serial#, true)
关闭 sql 跟踪:exec dbms_system.set_sql_trace_in_session(sid, serial#, false)
相关文章:
Oracle架构之物理存储中各种文件详解
文章目录 1 物理存储1.1 简介1.2 数据文件(data files)1.2.1 定义1.2.2 分类1.2.2.1 系统数据文件1.2.2.2 撤销数据文件1.2.2.3 用户数据文件1.2.2.4 临时数据文件 1.3 控制文件(Control files)1.3.1 定义1.3.2 查看控制文件1.3.3…...
AR 领域的突破——微型化显示屏为主流 AR 眼镜铺平道路
概述 多年来,增强现实 (AR) 技术一直吸引着人们的想象力,有望将数字信息与我们的物理世界无缝融合。通过将计算机生成的图像叠加到现实世界的视图上,AR 有可能彻底改变我们与环境的互动方式。从增强游戏体验到协助手术室的外科医生ÿ…...
Web安全 - 构建全面的业务安全保护防御体系
文章目录 业务安全概述业务安全 vs. 基础安全业务安全的防护业务安全的防护策略1. 用户资源对抗的技术实现与优化2. IP资源对抗的技术实现与优化3. 设备资源对抗的技术实现与优化4. 操作资源对抗的技术实现与优化实际应用场景中的策略 典型场景业务场景 1:新用户注册…...
机器学习(2):机器学习的相关术语
场景示例: 你周日约了小李、老王打牌,小李先来了,老王没来。你想打电话叫老王过来。小李说:“你别打电话啦,昨天老王喜欢的球队皇马输球了,他的项目在上个礼拜也没成功上线,再加上他儿子期末考…...
Leecode热题100-75.颜色分类
给定一个包含红色、白色和蓝色、共 n 个元素的数组 nums ,原地 对它们进行排序,使得相同颜色的元素相邻,并按照红色、白色、蓝色顺序排列。 我们使用整数 0、 1 和 2 分别表示红色、白色和蓝色。 必须在不使用库内置的 sort 函数的情况下解…...
408算法题leetcode--第22天
200. 岛屿数量 200. 岛屿数量时间:O(mn);空间:O(min(m, n)),队列最大入队个数,可以想象从左上到右下,第一次入队1个,第二次出队1,入队2,第三次出队2,入队3……...
dubbo微服务
一.启动nacos和redis 1.虚拟机查看是否开启nacos和redis docker ps2.查看是否安装nacos和redis docker ps -a3.启动nacos和redis docker start nacos docker start redis-6379 docker ps二.创建三个idea的maven项目 1.第一个项目dubboapidemo 2.1.1向pom.xml里添加依赖 …...
如何在 DAX 中计算多个周期的移动平均线
在 DAX 中计算移动聚合很容易。但是,计算一段时间内的移动平均值时会有一些陷阱。由于其中一些陷阱是定义问题,因此我们必须小心,不要选择错误的方法。让我们看看细节。欢迎来到雲闪世界。 添加图片注释,不超过 140 字(…...
微信小程序 图片的上传
错误示范 /*从相册中选择文件 微信小程序*/chooseImage(){wx.chooseMedia({count: 9,mediaType: [image],sourceType: [album],success(res) {wx.request({url:"发送的端口占位符",data:res.tempFiles[0].tempFilePath,method:POST,success(res){//请求成功后应该返…...
软件测试人员发现更多程序bug
软件测试人员发现更多程序bug 1. 理解需求和业务,需求评审时候发现bug 熟悉了产品的业务流程、才能迅速找出软件中存在的一些重要的缺陷,发现的软件缺陷才是有价值的。否则即使你能找到一些软件缺陷,那也是纯软件的缺陷,价值不大…...
Nagle 算法:优化 TCP 网络中小数据包的传输
1. 前言 在网络通信中,TCP(传输控制协议)是最常用的协议之一,广泛应用于各种网络应用,如网页浏览、文件传输和在线游戏等。然而,随着互联网的普及,小数据包的频繁传输成为一个不容忽视的问题。…...
C#入门教程
目录 1.if分支语句 2.面向对象 3.static简单说明 1.if分支语句 我们的这个C#里面的if语句以及这个if-else语句和C语言里面没有区别,就是打这个输出上面的方式不一样,c#里面使用的是这个console.writeline这个指令,其他的这个判断逻辑都是一…...
【MySQL报错】---Data truncated for column ‘age‘ at row...
目录 一、前言二、问题分析三、解决办法 一、前言 欢迎大家来到权权的博客~欢迎大家对我的博客进行指导,有什么不对的地方,我会及时改进哦~ 博客主页链接点这里–>:权权的博客主页链接 二、问题分析 问题一修改表结构 XXX 为 not n…...
Go基础学习08-并发安全型类型-通道(chan)深入研究
文章目录 chan基础使用和理解通道模型:单通道、双通道双向通道单向通道单向通道的作用 缓冲通道和非缓冲通道数据发送和接收过程缓冲通道非缓冲通道 通道基本特性通道何时触发panicChannel和Select结合使用Select语句和通道的关系Select语句的分支选择规则有那些Sel…...
some 蓝桥杯题
12.反异或01串 - 蓝桥云课 (lanqiao.cn) #include "bits/stdc.h" #define int long long using namespace std; char c[10000000]; char s[10000000]; int cnt,Ans,mr,mid; int maxi; int p[10000000],pre[10000000]; signed main() {ios::sync_with_stdio(0);cin.t…...
[linux 驱动]input输入子系统详解与实战
目录 1 描述 2 结构体 2.1 input_class 2.2 input_dev 2.4 input_event 2.4 input_dev_type 3 input接口 3.1 input_allocate_device 3.2 input_free_device 3.3 input_register_device 3.4 input_unregister_device 3.5 input_event 3.6 input_sync 3.7 input_se…...
2023_Spark_实验十:Centos_Spark Local模式部署
参考这篇博客:【Centos8_配置单节点伪分布式Spark环境】_centos8伪分布式环境搭建-CSDN博客...
pyecharts-快速入门
pyecharts文档:渲染图表 - pyecharts - A Python Echarts Plotting Library built with love. pyecharts-gallery文档:中文简介 - Document (pyecharts.org) 一、快速入门案例 from pyecharts.charts import Barbar Bar() bar.add_xaxis(["衬衫…...
vue3打包疯狂报错
打包的时候报错很多Cannot find name ‘xxx‘ 。 但是npm run dev 是运行正常的。 解决方法:package.json中的vue-tsc --noEmit 删掉就可以了。 例如: 这是原来的 {"scripts": {"dev": "vite","build": &quo…...
STM32 软件触发ADC采集
0.91寸OLED屏幕大小的音频频谱,炫酷! STM32另一个很少人知道的的功能——时钟监测 晶振与软件的关系(深度理解) STM32单片机一种另类的IO初始化方法 ADC是一个十分重要的功能,几乎任何一款单片机都会包含这个功能&a…...
浏览器访问 AWS ECS 上部署的 Docker 容器(监听 80 端口)
✅ 一、ECS 服务配置 Dockerfile 确保监听 80 端口 EXPOSE 80 CMD ["nginx", "-g", "daemon off;"]或 EXPOSE 80 CMD ["python3", "-m", "http.server", "80"]任务定义(Task Definition&…...
深入浅出Asp.Net Core MVC应用开发系列-AspNetCore中的日志记录
ASP.NET Core 是一个跨平台的开源框架,用于在 Windows、macOS 或 Linux 上生成基于云的新式 Web 应用。 ASP.NET Core 中的日志记录 .NET 通过 ILogger API 支持高性能结构化日志记录,以帮助监视应用程序行为和诊断问题。 可以通过配置不同的记录提供程…...
调用支付宝接口响应40004 SYSTEM_ERROR问题排查
在对接支付宝API的时候,遇到了一些问题,记录一下排查过程。 Body:{"datadigital_fincloud_generalsaas_face_certify_initialize_response":{"msg":"Business Failed","code":"40004","sub_msg…...
2.Vue编写一个app
1.src中重要的组成 1.1main.ts // 引入createApp用于创建应用 import { createApp } from "vue"; // 引用App根组件 import App from ./App.vue;createApp(App).mount(#app)1.2 App.vue 其中要写三种标签 <template> <!--html--> </template>…...
c++ 面试题(1)-----深度优先搜索(DFS)实现
操作系统:ubuntu22.04 IDE:Visual Studio Code 编程语言:C11 题目描述 地上有一个 m 行 n 列的方格,从坐标 [0,0] 起始。一个机器人可以从某一格移动到上下左右四个格子,但不能进入行坐标和列坐标的数位之和大于 k 的格子。 例…...
HTML前端开发:JavaScript 常用事件详解
作为前端开发的核心,JavaScript 事件是用户与网页交互的基础。以下是常见事件的详细说明和用法示例: 1. onclick - 点击事件 当元素被单击时触发(左键点击) button.onclick function() {alert("按钮被点击了!&…...
今日科技热点速览
🔥 今日科技热点速览 🎮 任天堂Switch 2 正式发售 任天堂新一代游戏主机 Switch 2 今日正式上线发售,主打更强图形性能与沉浸式体验,支持多模态交互,受到全球玩家热捧 。 🤖 人工智能持续突破 DeepSeek-R1&…...
全面解析各类VPN技术:GRE、IPsec、L2TP、SSL与MPLS VPN对比
目录 引言 VPN技术概述 GRE VPN 3.1 GRE封装结构 3.2 GRE的应用场景 GRE over IPsec 4.1 GRE over IPsec封装结构 4.2 为什么使用GRE over IPsec? IPsec VPN 5.1 IPsec传输模式(Transport Mode) 5.2 IPsec隧道模式(Tunne…...
安卓基础(aar)
重新设置java21的环境,临时设置 $env:JAVA_HOME "D:\Android Studio\jbr" 查看当前环境变量 JAVA_HOME 的值 echo $env:JAVA_HOME 构建ARR文件 ./gradlew :private-lib:assembleRelease 目录是这样的: MyApp/ ├── app/ …...
网站指纹识别
网站指纹识别 网站的最基本组成:服务器(操作系统)、中间件(web容器)、脚本语言、数据厍 为什么要了解这些?举个例子:发现了一个文件读取漏洞,我们需要读/etc/passwd,如…...
