Control files

本文介绍Oracle数据库控制文件的重要性和管理方法,包括控制文件的作用、内容、配置参数、多路复用及备份策略。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

控制文件是数据库建立的时候自动生成的二进制文件,只能通过实例进行修改,如果手动修改的话会造成控制文件与物理信息不符合,从而导致数据库不能正常工作。oracle数据库通过控制文件保持数据库的完整性,一旦控制文件被破坏数据库将无法启动,因此建议采用多路控制文件或者备份控制文件的方法。
控制文件主要包括下面内容:
1.控制文件所属数据库的名字,一个控制文件只能属一个数据库
2.数据库创建时间
3.数据文件的名称,位置,联机,脱机状态信息
4.所有表空间信息
5.当前日志序列号
6.最近检查点信息
7. undo段的起始点和结束点
8. redo日志归档信息 (日志归档时记录)
9. 备份信息 (由RMAN负责维护)
其中,数据库名称,标识和创建时间在数据库创建时写入;数据文件和重做日志名称和位置在增加,重命名或者删除的时候更新;表空间信息在增加或者删除表空间的时候进行更新。
在初始化参数文件中control_files参数主要来描述控制文件的文件名跟物理路径,如下所示:
control_files=("d:/oracle/oradata/oradb/control01.ctl")
该参数只设置一个,也可以设置多个,如下所示:
control_files=('d:/oracle/oradata/oradb/control01.ctl','d:/oracle/oradata/oradb/control02.ctl', 'd:oracle/oradata/oradb/control03.ctl')
这个方法叫做多路控制文件,oracle可以利用这个方法恢复被破坏的控制文件,oracle最多允许设置8个多路控制文件。
必须所有的多路控制文件都完整正确数据库才能正常启动
对控制文件的管理原则:
1.明确控制文件的名称和存储路径
参数设置错误将无法打开数据库,数据库打开以后,实例将同时写入所有的控制文件但是只会读取第一个控制文件的内容。
2.为数据库创建多路控制文件
a.多路控制文件内容必须完全一样,oracle实例同时将内容写入到control_files变量所设置的控制文件中。
b.初始化参数control_files中列出的第一个文件是数据库运行期间唯一可读取的控制文件。
c.创建,恢复和备份控制文件必须在数据库关闭的状态下运行,这样才能保证操作过程中控制文件不被修改。
d.数据库运行期间如果一个控制文件变为不可用,那么实例将不再运行,应该终止这个实例,并对破坏的控制文件进行修复。
3.将多路控制文件放在不同的硬盘上
4.采用操作系统镜像方式备份控制文件
5.手工方式备份控制文件
应该及时备份特别是发生了如下的操作的时候:
添加删除重命名数据文件
添加删除表空间,改变表空间读写状态
添加删除重做日志文件
备份控制文件
SQL> alter database backup controlfile to ‘d:/20080326.ctl’;(备份成二进制文件)
SQL> alter database backup controlfile to trace;(备份创建控制文件的脚本,在udump目录下)
然后从这个备份的位置直接把文件拷贝回之前的目录覆盖就好了。
利用spfile文件创建多路控制文件
(spfile以二进制文本形式存在,不能用vi等编辑器对其中参数进行修改。文件格式为spfileSID.ora。如果要对spfile文件进行修改,可以采用SQL语言)
1.利用SYS帐号登陆SQL*PLUS,查询一下控制文件信息视图
SQL>select name from v$controlfile;
结果显示为:
NAME
----------------------------------
d:/oracle/oradata/oradb/control01.ctl
d:/oracle/oradata/oradb/control02.ctl
d:/oracle/oradata/oradb/control03.ctl
这里列出了控制文件的名称以及位置
2.更改spfile中控制文件的信息:(增加了一个新的控制文件)
SQL>alter system set control_files=
'd:/oracle/oradata/oradb/control01.ctl',
'd:/oracle/oradata/oradb/control02.ctl',
'd:/oracle/oradata/oradb/control03.ctl',
'd:/oracle/oradata/oradb/control04.ctl'
scope=spfile
结果显示为:
系统已经更改。
(第二步的操作需要注意的是:进行这些操作,必须是在DB启动的时候,否则会弹出“ORACLE not available”错误。)
3.关闭数据库
4.在操作系统中将已有的控制文件复制,修改名称保存到刚才增加控制文件的指定位置。(这步必须做的,否则数据库无法启动)
5.重新启动控制文件,使控制文件改变生效。
6.还可以使用pfile的方法来修改控制文件,使用create pfile from spfile;来生成pfile,然后使用vi等编辑器编译pfile,先手工拷贝控制文件修改相应的名称,然后把新的控制文件的路径增加到pfile中,使用pfile启动数据库,然后使用pfile创建spfile即可.
删除控制文件(删除某一路的控制文件)
spfile文件
1.利用SYS帐号登陆SQL*PLUS,查询一下控制文件信息视图
SQL>select name from v$controlfile;
结果显示为:
NAME
----------------------------------
d:oracle/oradata/oradb/control01.ctl
d:oracle/oradata/oradb/control02.ctl
d:oracle/oradata/oradb/control03.ctl
d:oracle/oradata/oradb/control04.ctl
这里列出了控制文件的名称以及位置
2.更改spfile中控制文件的信息,删除一个新的控制文件
SQL>alter system set control_files=
'd:oracle/oradata/oradb/control01.ctl',
'd:oracle/oradata/oradb/control02.ctl',
'd:oracle/oradata/oradb/control03.ctl',
scope=spfile
3.关闭数据库
4.在操作系统中删除控制文件
5.重新启动数据库,使控制文件生效

当你看到提示“PAM is enabled. You may need to install a PAM control file for sshd, otherwise password authentication may fail.”时,这意味着系统启用了Pluggable Authentication Modules (PAM),并且为了确保SSH服务能够正常处理密码认证,你需要配置相应的PAM控制文件。 ### 什么是PAM? PAM(可插拔认证模块)是一种允许系统管理员将各种身份验证机制集成到应用程序中的框架。它使得更改系统的认证方式变得非常简单而不必修改应用程序本身。对于SSH来说,启用PAM意味着它可以利用系统级的身份验证策略来进行用户的登录验证。 ### 解决方案 为了让SSHD正确地使用PAM进行密码认证,通常有以下几个步骤: #### 步骤 1: 确认已有的PAM配置 首先检查现有的 `/etc/pam.d/sshd` 文件是否存在以及其内容是否合适。该文件应该位于 `/etc/pam.d/` 目录下,并包含适合您环境的一系列规则行。如果你找不到此文件或不确定现有配置是否正确,可以从提供的示例文件开始着手调整。 #### 步骤 2: 使用示例PAM文件 在很多Linux发行版中,会有一个名为 `contrib/` 的目录存放了一些例子供参考。例如,在某些环境中可以在 `/usr/share/doc/packages/openssh/contrib/` 或类似路径下的子目录里找到这些样本文件。它们通常是预构建好的、适用于大多数情况的标准模板。 你可以按照以下命令复制一个样例文件作为起点: ```bash cp /path/to/contrib/sshd_pam_example /etc/pam.d/sshd ``` 然后编辑新创建的 `/etc/pam.d/sshd` 文件以适应您的需求。常见的条目包括但不限于: - 控制账户锁定状态 (`auth required pam_unix.so`) - 设置用户环境变量 (`session optional pam_env.so`) - 应用安全策略 (`account required pam_nologin.so`) #### 步骤 3: 修改sshd_config以支持PAM 确保你的 SSHD 配置文件(`/etc/ssh/sshd_config`) 中包含如下选项来开启对PAM的支持: ```plaintext UsePAM yes ChallengeResponseAuthentication no # 如果不需要挑战响应式认证的话可以禁用 PasswordAuthentication yes # 允许基于密码的登陆 ``` #### 步骤 4: 测试并重启服务 最后一步是对所做的改动进行全面测试。建议先尝试从另一台机器上连接服务器看看能否成功登录;同时也可以通过日志文件(`/var/log/auth.log` 或者 `/var/log/secure`)监控认证过程是否有异常信息。 一旦确认一切正常,请记得保存所有更改并将 SSHD 服务重启生效: ```bash systemctl restart sshd.service ``` --- ### 提醒注意事项 - 操作前备份重要文件以防出错。 - 对于生产环境的操作尽量选择非高峰时段,并做好回滚计划。 - 若有任何疑问最好查阅官方文档获取最新指导方针。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值