- List item
本篇接上篇,接着介绍Oracle DB几类重要文件的日常管理,和作为DBA需要掌握针对这些文件的哪些操作。本篇将重点介绍参数文件和控制文件,数据文件是和业务息息相关的文件,在后续的数据库备份恢复,优化篇将会针对不同管理粒度做重点介绍,其他文件都比较好理解,日常运维基本不怎么涉及,在此仅做基本介绍。
参数文件和控制文件对整个数据库实例的启动,备份恢复,优化等过程有非常重要的作用,是数据库必不可少的两类文件。参数文件在之前的文章中已经有所介绍,这篇把参数文件和控制文件放在一起介绍,方便大家集中对比了解学习。
OracleDB文件的分类及其各自的作用:
Oracle DB文件主要分为以下几类:
参数文件:用于定义实例启动时的配置。
控制文件:包含与数据库本身相关的数据,即物理数据库结构信息。这些文件对数据库至关重要,没有这些文件,就无法打开数据文件以访问数据库中的数据。
数据文件:包含数据库的用户或应用程序数据,以及元数据和数据字典。数据文件隶属于某个表空间,如数据表空间、undo表空间、临时表空间等。
联机重做日志文件:用于进行数据库的实例恢复。如果数据库服务器发生崩溃,但未丢失任何数据文件,那么实例便可使用这些文件中的信息恢复数据库。
口令文件: 允许sysdba、sysoper和sysasm远程连接到实例并执行管理任务。
备份文件:用于进行数据库恢复。如果原始文件在发生介质故障或用户错误时被损坏或删除,通常要还原备份文件。
归档重做日志文件:包含实例发生的数据更改(重做)的实时历史记录。使用这些文件和数据库备份,可以恢复丢失的数据文件。
跟踪文件:每个服务器和后台进程都可以写入关联的跟踪文件。当进程检测到内部错误时,进程会将有关该错误的信息转储到相应的跟踪文件中。
预警日志文件:这些文件包含特殊的跟踪条目,数据库的预警日志是按时间顺序列出的消息日志和错误日志。
数据库最重要的文件:参数文件和控制文件
STARTUP实例启动:
- startup nomount:加载参数文件
- startup mount:加载控制文件
- startup(alter database open):加载数据文件
可见参数文件和控制文件贯穿DB实例启动和DB运行的全过程,DB必不可少的文件,参数文件和控制文件的维护至关重要。
参数文件
- 参数文件读取的优先级别:oracle 启动读取参数文件的顺序,以下文件至少要有一个存在且可用,
spfile.ora --> spfile.ora -->init.ora -->init.ora
如果每个文件都不存在,则Oracle会报错。 - 参数文件的默认存放目录:
$ORACLE_HOME/db - 参数文件之间的转换
spfile–>pfile转换
SQL> create pfile from spfile;
SQL> !ls $ORACLE_HOME/dbs/initorcl.ora
/u01/app/oracle/product/12.2.0/db_1/dbs/initorcl.ora
生成在指定路径
SQL> create pfile=‘/tmp/initorcl.ora’ from spfile;
pfile–>spfile 转换
SQL> create spfile=‘/tmp/spfileorcl.ora’ from pfile;
可以用strings命令查看创建的spfile文件,查出来的结过和pfile是一样的。
- 判断数据库是从SPFILE还是从PFILE启动
方式1:
如果是spfile,则value是有值的SQL> show parameter spfile
方式2:
SQL> set linesize 120
SQL> col name format a10
SQL> col value format a60
SQL> select name,value from v$parameter where name='spfile';
5. 修改参数文件的三种模式:
scope=both 立即并永久生效(此为默认模式);
scope=spfile 下次启动才能生效;
scope=memory 立即生效但下次启动时失效;
查询方法:v$parameter
isses_modifiable:
ISSES_MODIFIABLE=true
ture表明这个参数可以在session级别可以修改,并且立即生效,false表示不能修改。
issys_modifiable:
issys_modifiable=immediate
表示这个参数可以在system立即修改,并且立即生效。
若如果issys_modifiable=deferred
会话级别参数,直接通过alter session set 参数名=值;
issys_modifiable=false
表示这个参数不能在直接修改在内存中,需要加scope=spfile,重启后才能生效。
如:
SQL> select name, isses_modifiable,issys_modifiable from v$parameter where name='sga_max_size';
NAME ISSES ISSYS_MOD
-------------------------------------------------------------------------
sga_max_size FALSE FALSE
两个都为false。
SQL> alter system set sga_max_size=1000M;
alter system set sga_max_size=1000M ;
*
第 1 行出现错误:ORA-02095: 无法修改指定的初始化参数
SQL> alter system set sga_max_size=800M scope=spfile;
系统已更改。
恢复参数到默认值SQL> alter system reset sga_max_size scope=spfile;
说明:一般scope常用的参数是both和spfile,如果临时测试会用到memory
控制文件
-
控制文件存储的主要信息
数据库名称和SID标识
数据文件和日志文件列表
数据库创建的时间戳
表空间信息
当前重做日志文件序列号(scn)
归档日志信息
检查点信息
回滚段的起始与结束
备份数据文件信息 -
控制文件查看
select name from v$controlfile;
show parameter control_files -
控制文件的多路复用
为了提高数据库的安全性,至少要为数据库建立两个控制文件,而且这两个文件最好分别放在不同的磁盘中,这样可以避免产生由于某个磁盘故障而无法启动数据库的危险,该管理策略称为多路复用控制文件。当多路复用控制文件某个磁盘发生故障导致其包含的控制文件损坏,数据库将被关闭或者发生异常,此时可以用另一磁盘中保存的控制文件来恢复被损坏的控制位文件,然后再重启数据库,达到保护控制文件的目的。数据库建立时,一般会默认创建两个控制文件,我们可以手动的再创建多个控制文件且不要与默认的放在同一个磁盘中,首先我们可以修改control_files参数来增加控制文件。
3.1 添加控制文件
QL> alter system set control_files =‘/oradata/orcl/control01.ctl’,‘/u01/orafra/orcl/control02.ctl’,‘/oradata/orcl/oldguo.ctl’ scope=spfile;
其实添加控制文件就是将之前可用的控制文件复制过去,重命名即可,关闭数据库,然后将/usr/oracle/app/oradata/orcl/control01.ctl 复制为/home/oracle/ControlFiles/control04.ctl
3.2 重建控制文件 -
备份控制文件
alter database backup controlfile to trace;
可以查看控制文件的具体内容:
select tracefile from v p r o c e s s w h e r e a d d r i n ( s e l e c t p a d d r f r o m v process where addr in (select paddr from v processwhereaddrin(selectpaddrfromvsession wheresid in (select sid from v$mystat));
实操:数据库启动到nomount状态之后,执行create controlfile 命令
create controlfile
reuse database "orcl"
logfile
group 1 '/oradata/orcl/redo01.log',
group 2 '/oradata/orcl/redo02.log',
group 3 '/oradata/orcl/redo03.log'
datafile
'/oradata/orcl/system01.dbf',
'/oradata/orcl/sysaux01.dbf',
'/oradata/orcl/undotbs01.dbf',
'/oradata/orcl/users01.dbf'
maxlogfiles 50
maxlogmembers 4
maxinstances 6
maxdatafiles 200
noresetlogs
noarchivelog
本篇完。
码字不易,宝贵经验分享不易,请各位支持原创,转载注明出处,多多关注作者,后续不定期分享DB基本知识和排障案例及经验、性能调优等。