ORACLE 参数文件和控制文件管理
一、参数文件
1、参数文件作用
参数文件主要用来记录oracle数据库的一系列参数配置信息,包括数据库的物理结构、内存、数据库的限制及系统大量的默认值、数据库的各种物理属性、指定数据库控制文件名和路径等信息。
数据库在启动时时会加载参数文件并将数据库启动到nomout阶段
参数文件的主要内容:
| orcl19.__data_transfer_cache_size=0orcl19.__db_cache_size=39325794304orcl19.__inmemory_ext_roarea=0orcl19.__inmemory_ext_rwarea=0orcl19.__java_pool_size=0orcl19.__large_pool_size=134217728orcl19.__oracle_base='/data/u01/app/oracle19c'#ORACLE_BASE set from environmentorcl19.__pga_aggregate_target=15032385536orcl19.__sga_target=44962938880orcl19.__shared_io_pool_size=134217728orcl19.__shared_pool_size=4966055936orcl19.__streams_pool_size=268435456orcl19.__unified_pga_pool_size=0*.audit_file_dest='/data/u01/app/oracle19c/admin/orcl19/adump'.audit_trail='db'.compatible='19.0.0'.control_files='/data/db_data/ORCL19/controlfile/control.ctl'#Restore Controlfile.db_block_size=8192*.db_create_file_dest='/data/db_data'.db_name='orcl19'.db_recovery_file_dest='/data/u01/app/oracle19c/fast_recovery_area'.db_recovery_file_dest_size=8256m.diagnostic_dest='/data/u01/app/oracle19c'.dispatchers='(PROTOCOL=TCP) (SERVICE=orcl19XDB)'.open_cursors=300*.pga_aggregate_target=14289m*.processes=640*.remote_login_passwordfile='EXCLUSIVE'.sga_target=42864m.undo_tablespace='UNDOTBS1' |
|---|
2、参数文件分类
2.1. pfile :(parameter file)静态参数文件。
1)文本文件,可以使用vi,vim等编辑器修改参数,一般用于维护模式
2)修改参数下次重启实例才生效
3)pfile 参数文件可以不在 database server 上
4)命名方式:init.ora
2.2. spfile :(system parameter file) 动态参数文件
1)二进制文件,不可以通过编辑器修改,可以使用 EM 或SQL指令来修改
(alter system|session set parameter_name = values <>)
2)Linux 下 strings 可以查看其内容
| [oracle@oracle01 ~]ORACLE_HOME/dbs/spfileorcl19.ora |
|---|
3)必须在 database server 端的指定路径($ORACLE_HOME/dbs)下
4)支持RMAN备份
5)命名方式: spfile.ora
3、参数文件的读取顺序
按以下顺序加载参数文件,当文件存在时则读取此文件来启动数据库,如果三个文件都不存在,则启动会报错。
spfileSID.ora --> spfile.ora -->initSID.ora
查看数据库启动时加载的是pfile还是spfile
在SQL窗口输入"show parameter spfile",如果显示了路径则表示使用的是spfile,路径为空则表示使用的是pfile
4、参数文件相互转换
4.1 spfile转换为pfile
spfile为二进制文件,可将其保存为文本类型的的pfile
默认保存路径: $ORACLE_HOME/dbs/initSID.ora
SQL> create pfile from spfile;
保存到指定路径:
SQL> create pfile='/home/oracle/initorcl19.ora' from spfile;
4.2 pfile转换为spfile
SQL> create spfile='/home/oracle/spfileorcl19.ora' from pfile;
5、参数的修改
5.1 参数分类
- 动态参数:在spfile加载到内存后,有一部分参数可以直接修改并对当前instance立即生效, 重启instance后失效
- 静态参数: 需要修改spfile文件,重启instance后参数生效
5.2 参数修改
修改:
SQL> alter system set 参数=值 [scope=memory|spfile|both]
scope=memory: 立即生效,重启后会失效
scope=spfile: 修改spfile,重启后永久生效
scope=both: 立即并永久生效
不写scope,如果实例以spfile启动,则默认为both;如果实例以pfile启动,则默认为memory.
将参数恢复到默认值:
SQL> alter system set 参数 scope=spfile
二、控制文件
1、控制文件的作用
控制文件为二进制类型的文件,主要记录当前数据库的结构信息,包括数据文件、日志文件、表空间文件相关状态和位置信息以及归档备份信息。
数据库根据参数文件中的记录,找到并加载控制文件,此时数据库会进入到mount阶段。
控制文件记录的内容:
数据库的名字、ID、创建的时间戳
表空间的名字
联机日志文件、数据文件的位置、个数、名字
联机日志的Sequence号码
检查点的信息
撤销段的开始或结束
归档信息
备份信息
2、控制文件管理
2.1、查看控制文件路径
SQL> select * from v$controlfile;
SQL> show parameter control_file;
可以使用strings查看控制文件类容
[oracle@oracle01 ~]$ strings /data/db_data/ORCL19/controlfile/control.ctl
2.2、添加控制文件
为保障数据库的安全性,可以为数据库建立多个控制文件,并存放在不同的位置,避免磁盘故障导致控制文件损坏丢失而无法启动数据库。
可以通过修改control_files参数来增加控制文件(其实就是将可用的控制文件复制一份并重命名)
注意:control_files参数中定义的所有控制文件都必须存在,否则启动是会因为找不到控制文件而报错。
| SQL> alter system set control_files='/data/db_data/ORCL19/controlfile/control.ctl','/home/oracle/control02.ctl' scope=spfile; |
|---|
2.3 控制文件备份
- 以文本方式把控制文件备份到trace文件
| SQL> alter database backup controlfile to trace;SQL> select tracefile from vsession where sid in (select sid from v$mystat)); |
|---|
trace文件中包含了如何重建控制文件的语句:
| [oracle@oracle01 trace]$ cat /data/u01/app/oracle19c/diag/rdbms/orcl19/orcl19/trace/orcl19_ora_30787.trc...STARTUP NOMOUNTCREATE CONTROLFILE REUSE DATABASE "ORCL19" RESETLOGS ARCHIVELOGMAXLOGFILES 16MAXLOGMEMBERS 3MAXDATAFILES 100MAXINSTANCES 8MAXLOGHISTORY 292LOGFILEGROUP 1 ('/data/db_data/ORCL19/onlinelog/o1_mf_1_l0c34bwl_.log','/data/u01/app/oracle19c/fast_recovery_area/ORCL19/onlinelog/o1_mf_1_l0c34c0d_.log') SIZE 200M BLOCKSIZE 512,GROUP 2 ('/data/db_data/ORCL19/onlinelog/o1_mf_2_l0c34bwv_.log','/data/u01/app/oracle19c/fast_recovery_area/ORCL19/onlinelog/o1_mf_2_l0c34c0k_.log') SIZE 200M BLOCKSIZE 512,GROUP 3 ('/data/db_data/ORCL19/onlinelog/o1_mf_3_l0c34bx4_.log','/data/u01/app/oracle19c/fast_recovery_area/ORCL19/onlinelog/o1_mf_3_l0c34c0w_.log') SIZE 200M BLOCKSIZE 512-- STANDBY LOGFILEDATAFILE'/data/db_data/ORCL19/datafile/o1_mf_system_l0c329c5_.dbf','/data/db_data/ORCL19/datafile/o1_mf_test01_l0c32ddl_.dbf','/data/db_data/ORCL19/datafile/o1_mf_sysaux_l0c32ddc_.dbf','/data/db_data/ORCL19/datafile/o1_mf_undotbs1_l0c32ddh_.dbf','/data/db_data/test.dbf','/data/db_data/ORCL19/datafile/o1_mf_users_l0c329cg_.dbf'CHARACTER SET AL32UTF8; |
|---|
-
rman备份控制文件
2.4 控制文件损坏修复
A. 有多份控制文件存在,其中1份控制文件丢失损坏:
此时数据启动启动会报错
通过alter日志查看详细报错信息,alter日志路径:$ORACLE_BASE/diag/rdbms/orcl19/orcl19/trace/alert_orcl19.log
修复: 关闭数据库,将其他控制文件复制到丢失损坏的控制文件,再重新启动数据库
| SQL> shutdown abort;ORACLE instance shut down.[oracle@oracle01 ~] sqlplus / as sysdbaSQL*Plus: Release 19.0.0.0.0 - Production on Tue Mar 7 14:35:43 2023Version 19.3.0.0.0Copyright (c) 1982, 2019, Oracle. All rights reserved.Connected to an idle instance.SQL> startupORACLE instance started.Total System Global Area 4.4963E+10 bytesFixed Size 12447520 bytesVariable Size 5368709120 bytesDatabase Buffers 3.9460E+10 bytesRedo Buffers 121769984 bytesDatabase mounted.Database opened.SQL> |
|---|
B. 所有控制文件都丢失损坏(无RMAN备份情况)
此时需要重建控制文件来修复,重建控制文件需要数据文件和日志文件的位置。
| SQL> shutdown abort;ORACLE instance shut down.SQL> STARTUP NOMOUNTCREATE CONTROLFILE REUSE DATABASE "ORCL19" RESETLOGS ARCHIVELOGMAXLOGFILES 16MAXLOGMEMBERS 3MAXDATAFILES 100MAXINSTANCES 8MAXLOGHISTORY 292LOGFILEGROUP 1 ('/data/db_data/ORCL19/onlinelog/o1_mf_1_l0c34bwl_.log','/data/u01/app/oracle19c/fast_recovery_area/ORCL19/onlinelog/o1_mf_1_l0c34c0d_.log') SIZE 200M BLOCKSIZE 512,GROUP 2 ('/data/db_data/ORCL19/onlinelog/o1_mf_2_l0c34bwv_.log','/data/u01/app/oracle19c/fast_recovery_area/ORCL19/onlinelog/o1_mf_2_l0c34c0k_.log') SIZE 200M BLOCKSIZE 512,GROUP 3 ('/data/db_data/ORCL19/onlinelog/o1_mf_3_l0c34bx4_.log','/data/u01/app/oracle19c/fast_recovery_area/ORCL19/onlinelog/o1_mf_3_l0c34c0w_.log') SIZE 200M BLOCKSIZE 512-- STANDBY LOGFILEDATAFILE'/data/db_data/ORCL19/datafile/o1_mf_system_l0c329c5_.dbf','/data/db_data/ORCL19/datafile/o1_mf_test01_l0c32ddl_.dbf','/data/db_data/ORCL19/datafile/o1_mf_sysaux_l0c32ddc_.dbf','/data/db_data/ORCL19/datafile/o1_mf_undotbs1_l0c32ddh_.dbf','/data/db_data/test.dbf','/data/db_data/ORCL19/datafile/o1_mf_users_l0c329cg_.dbf'CHARACTER SET AL32UTF8;ORACLE instance started.Total System Global Area 4.4963E+10 bytesFixed Size 12447520 bytesVariable Size 5368709120 bytesDatabase Buffers 3.9460E+10 bytesRedo Buffers 121769984 bytesSQL> 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29Control file created.SQL> alter database open resetlogs;Database altered |
|---|