Oracle体系结构之物理存储结构(控制、数据、参数、密码、重做日志等文件)

目录

一、Oracle中物理存储结构

1.1.控制文件

1.1.1.控制文件的相关操作

1)查看控制文件的位置

2)查看控制文件内容(简要)

3)添加新的控制文件副本(多路复用)

4)备份控制文件到跟踪文件

5)备份控制文件到二进制文件

1.2.数据文件

1.2.1.数据文件的状态

1)查看所有数据文件

2)查看临时文件

3)查看数据文件的详细统计

1.3.重做日志文件

1.3.1.查看重做日志信息

1)查看日志组信息

2)查看日志成员信息

3)查看当前正在写的日志组

4)查看日志切换历史

1.3.2.管理重做日志

1)添加新的日志组

2)添加日志组成员(多路复用)

3)删除日志组(不能删除当前组和活动组)

4)手动切换日志

1.4.归档日志文件

1.4.1.检查归档模式

1.4.2.查看归档日志

1.4.3.设置归档位置

1.5.参数文件

1.5.2.查看参数

1.5.3.修改参数(只在SPFILE下可用)

1.5.4.从SPFILE创建PFILE备份

1.6.密码文件

1.6.1.创建密码文件

1.6.2.查看具有SYSDBA权限的用户

1.7.告警、跟踪文件

1.8.备份文件


一、Oracle中物理存储结构

思维导图:

Oracle 数据库的物理存储结构是指数据库在操作系统层面实际可见的文件集合。

1.1.控制文件

控制文件是数据库的核心元数据文件,它是一个很小的二进制文件,其后缀为.ctl,记录了数据库的物理结构信息。

作用:数据库的"大脑"或"路线图"。及其关键,没有控制文件,数据库将无法启动和正常运行。因为实例启动时需要通过控制文件找到数据文件和重做日志文件。

容错:强烈建议多路复用(Multiplexing),即同时维护多个完全相同的副本(通常放在不同的物理磁盘上),以防止单点故障。

存储视图:v$controlfile;

存储的信息包括:

(1)数据库名称和创建时间戳。

(2)所有数据文件和在线重做日志文件的名称、位置。

(3)表空间信息。

(4)当前日志序列号。

(5)检查点信息。

(6)备份和恢复所需的元数据。

控制文件由于是二进制文件,因此并不能直接进行修改,只能通过sql命令进行修改。

1.1.1.控制文件的相关操作

1)查看控制文件的位置

select name,value from v$parameter where name='control_files';

2)查看控制文件内容(简要)

select type,record_size,records_total,records_used from v$controlfile_record_section;

bash 复制代码
SQL> select type,record_size,records_total,records_used from v$controlfile_record_section;

TYPE                         RECORD_SIZE RECORDS_TOTAL RECORDS_USED
---------------------------- ----------- ------------- ------------
DATABASE                             316             1            1
CKPT PROGRESS                       8180             4            0
REDO THREAD                          256             1            1
REDO LOG                              72            16            3
DATAFILE                             520          1024            8
FILENAME                             524          4146           13
TABLESPACE                           180          1024            8
TEMPORARY FILENAME                    56          1024            3
RMAN CONFIGURATION                  1108            50            3
LOG HISTORY                           56           292           62
OFFLINE RANGE                        200          1063            7

TYPE                         RECORD_SIZE RECORDS_TOTAL RECORDS_USED
---------------------------- ----------- ------------- ------------
ARCHIVED LOG                         584           112           28
BACKUP SET                            96          1022           13
BACKUP PIECE                         780          1006           13
BACKUP DATAFILE                      200          1063           23
BACKUP REDOLOG                        76           215           18
DATAFILE COPY                        736          1000            0
BACKUP CORRUPTION                     44          1115            0
COPY CORRUPTION                       40          1227            0
DELETED OBJECT                        20           818           26
PROXY COPY                           928          1004            0
BACKUP SPFILE                        124           131            7

TYPE                         RECORD_SIZE RECORDS_TOTAL RECORDS_USED
---------------------------- ----------- ------------- ------------
DATABASE INCARNATION                  56           292            2
FLASHBACK LOG                         84          2048            0
RECOVERY DESTINATION                 180             1            1
INSTANCE SPACE RESERVATION            28          1055            1
REMOVABLE RECOVERY FILES              32          1000            0
RMAN STATUS                          116           141           34
THREAD INSTANCE NAME MAPPING          80             1            1
MTTR                                 100             1            1
DATAFILE HISTORY                     568            57            0
STANDBY DATABASE MATRIX              400           128          128
GUARANTEED RESTORE POINT             256          2048            0

TYPE                         RECORD_SIZE RECORDS_TOTAL RECORDS_USED
---------------------------- ----------- ------------- ------------
RESTORE POINT                        256          2108            0
DATABASE BLOCK CORRUPTION             80          8384            0
ACM OPERATION                        104            64           11
FOREIGN ARCHIVED LOG                 604          1002            0
PDB RECORD                           780            10            0
AUXILIARY DATAFILE COPY              584           128            0
MULTI INSTANCE REDO APPLY            556             1            0
PDBINC RECORD                        144           113            0
TABLESPACE KEY HISTORY               108           151            0

42 rows selected.

SQL>
3)添加新的控制文件副本(多路复用)

SHUTDOWN IMMEDIATE;

-- 操作系统层面复制控制文件

-- cp /u01/app/oracle/oradata/ORCL/control01.ctl /u01/app/oracle/oradata/ORCL/control03.ctl

STARTUP NOMOUNT;

alter system set control_files = '/u01/app/oracle/oradata/ORCL/control01.ctl','/u01/app/oracle/oradata/ORCL/control02.ctl','/u01/app/oracle/oradata/ORCL/control03.ctl' SCOPE=SPFILE;

SHUTDOWN IMMEDIATE;

STARTUP;

4)备份控制文件到跟踪文件

alter database backup controlfile to trace as '/tmp/control.sql';

5)备份控制文件到二进制文件

alter database backup controlfile to '/backup/control.bkp';

观察一下备份文件与当前的控制文件大写是否一致就欧克。

1.2.数据文件

数据文件是实际存储用户数据的文件,包括表、索引、视图等对象的真实数据。它是数据库中最核心的文件,文件扩展名为.dbf,是操作系统可以直接看到的文件。是表空间的重要组成文件,一个表空间对应一个或多个数据文件。

存储视图:DBA_DATA_FILESv$DATAFILE视图查询数据文件信息。

区别:

DBA_DATA_FILES:是数据字典视图 ,从控制文件中读取信息,**反映的是文件在数据库逻辑层面的可用性。**AVALIABLE表示该文件在逻辑上被数据库识别为可用的,没有缺失或则损坏。

**v$DATAFILE:是动态性能视图,反映的是实例运行时该文件的实时操作状态。**它关注的是当前能否读写(ONLINE)、是否被手动离线(OFFLINE)、是否在恢复中(RECOVER)。

1.2.1.数据文件的状态

|---------|---------|----------|
| 状态 | 含义 | 操作 |
| ONLINE | 正常可用 | 可读写 |
| OFFLINE | 离线 | 需要恢复才能上线 |
| RECOVER | 需要恢复 | 应用归档日志 |
| SYSTEM | 系统表空间文件 | 不能离线 |
| TEMP | 临时文件 | 不记录日志 |

1)查看所有数据文件

select file_id,file_name,tablespace_name,status,bytes/1024/1024 as MB from dba_data_files order by tablespace_name,file_id;

2)查看临时文件

select file_id,file_name,tablespace_name,bytes/1024/1024 AS MB FROM dba_temp_files;

3)查看数据文件的详细统计
bash 复制代码
-- 查看数据文件的详细统计
SELECT df.file_name, fs.bytes/1024/1024 AS total_mb,
       (fs.bytes - NVL(s.bytes, 0))/1024/1024 AS used_mb,
       NVL(s.bytes, 0)/1024/1024 AS free_mb,
       ROUND(NVL(s.bytes, 0)/fs.bytes * 100, 2) AS pct_free
FROM dba_data_files df,
     (SELECT file_id, SUM(bytes) bytes FROM dba_free_space GROUP BY file_id) s,
     (SELECT file_id, bytes FROM dba_data_files) fs
WHERE df.file_id = s.file_id(+)
  AND df.file_id = fs.file_id;

1.3.重做日志文件

重做日志文件记录数据库的所有变更操作,是实例恢复的核心。

工作原理:

(1)当数据库处于归档模式时,ARCn(归档进程)会在日志切换发生后,将即将被覆盖的在线重做日志文件复制到指定的位置,形成归档重做日志文件。

(2)归档文件通常有独立的命名convention(如%t_%s_%r.arc)。

1.3.1.查看重做日志信息

1)查看日志组信息

select group#,sequence#,bytes/1024/1024 AS MB, members,status,archived from v$log;

2)查看日志成员信息

select group#,member,status,type from v$logfile;

3)查看当前正在写的日志组

select group#,sequence#,status from v$log where status = 'current';

4)查看日志切换历史

select * from v$log_history where rownum <= 10;

1.3.2.管理重做日志

**作用:**记录所有对数据库数据的修改操作,用于保证数据的一致性和可恢复性。

工作原理:

(1)当用户执行INSERT,UPDATE,DELECT,CREATE,ALTER等DDL/DML操作时,Oracle会生成"重做记录"。

(2)这些记录首先被写入内存中的"重做日志缓冲区"。

(3)LGWR(日志写入器)进程会定期将缓冲区的内容写入在线重做日志文件。

(4)在线重做日志文件是循环使用的。通常由多个组(Group)构成,每个组可以有多个成员(Member)用于冗余。当一个组写满后,LGWR会切换到下一组继续写入(称为日志切换)。

**存储视图:**vLOG,vLOGFILE,v$LOGMEMBER等

1)添加新的日志组

alter database add logfile group 4 '/u01/oradata/ORCL/redo04a.log' SIZE 500M;

2)添加日志组成员(多路复用)

alter database add logfile member '/u02/oradata/ORCL/redo01b.log' TO GROUP 1;

3)删除日志组(不能删除当前组和活动组)

alter database drop logfile group 4;

4)手动切换日志

alter system switch logfile;

1.4.归档日志文件

当数据库处于归档模式时,重做日志写满后会被复制到归档位置。

**重要性:是实现完整恢复(介质恢复)的基础。**有了所有历史归档日志和当前的在线重做日志,就可以将数据库恢复到过去的任意时间点。这对于生产数据库是必须开启的功能。

1.4.1.检查归档模式

select log_mode from v$database;

1.4.2.查看归档日志

SELECT name, sequence#, first_time, next_time, blocks

FROM v$archived_log

WHERE ROWNUM <= 10

ORDER BY sequence# DESC;

select name,sequence#,first_time,next_time,blocks from v$archived_log where rownum <= 10 order by sequence# DESC;

1.4.3.设置归档位置

alter system set log_archive_dest_1='LOCALTION=/u01/archives' SCOPE=BOTH;

1.5.参数文件

作用:定义了数据库实例启动时的配置参数,如内存分配(SGA、PGA)、进程数、控制文件位置、数据库名称等。

|-------------|-----------------|--------------------------------------------------------------------------------------------------|
| 类型 | 文件名 | 特点 |
| PFILE(文本) | init{SID}.ora | 可编辑文本文件,静态修改; 初始化参数文件:文本文件,名为init<SID>.ora。传统方式,修改后必须重启实例才能生效,且无法动态保存修改。 |
| SPFILE(二进制) | spfile{SID}.ora | 服务器端管理,动态修改; 服务器参数文件:二进制文件,名为spfile<SID>.ora,推荐使用,因为它可以在数据库运行期间通过ALTER STSTEM命令动态修改,并且修改是持久化的。 |

1.5.1.查看当前使用的参数文件类型及位置

select value from v$parameter where name='spfile';

注意:如果有返回路径,则证明为静态参数文件,修改的时候使用 SPFILE;否则使用 PFILE

1.5.2.查看参数

show parameter db_name;

1.5.3.修改参数(只在SPFILE下可用)

alter system set processed=300 scope=both;

1.5.4.从SPFILE创建PFILE备份

create pfile='/backup/initORCL.ora' from spfile;

1.6.密码文件

作用:用于验证具有SYSDBA、SYSOPER等特殊权限的用户,允许他们从远程客户端启动、关闭数据库或执行高级管理操作。

工具:使用orapwd命令创建。

1.6.1.创建密码文件

orapwd file=$ORACLE_HOME/dbs/orapwORCL password=admin ertries=10

1.6.2.查看具有SYSDBA权限的用户

select * from v$pwfile_users;

1.7.告警、跟踪文件

该文件包含特殊的跟踪条目。数据库的预警日志是一个按时间顺序记录消息和错误的日志。Oracle建议您定期检查此预警日志。

类型:可以是RMAN(Recovery Manager)生成的专用格式备份集,也可以是用户手动拷贝的数据文件、控制文件、归档日志等。

1.8.备份文件

作用:由用户或恢复管理器创建的数据库文件副本,用于在发生介质故障(如磁盘损坏)时恢复数据库。

相关推荐
xxjj998a2 小时前
Laravel8.x核心特性详解
数据库·mysql·adb
eSsO KERF3 小时前
MySQL Workbench菜单汉化为中文
android·数据库·mysql
钟智强3 小时前
潜伏 9 年的 Linux 核弹级漏洞:CopyFail CVE-2026-31431
linux·数据库·web安全
2401_833033623 小时前
C#怎么使用协变和逆变 C#泛型中的in和out关键字协变逆变是什么意思怎么用【语法】
jvm·数据库·python
NoSi EFUL3 小时前
MySQL-练习-数据汇总-CASE WHEN
数据库·mysql
m0_624578594 小时前
JavaScript 中高精度小数(20位以上)的正确处理方法
jvm·数据库·python
m0_740352424 小时前
如何用 Symbol 作为对象属性键名防止第三方库属性覆盖
jvm·数据库·python
m0_613856294 小时前
如何用 ArrayBuffer 在 Fetch 中处理低级别的二进制流
jvm·数据库·python
m0_736439304 小时前
如何防止SQL非法金额输入_利用触发器实现精确度校准
jvm·数据库·python