百度360必应搜狗淘宝本站头条
当前位置:网站首页 > 技术文章 > 正文

从零开始学习Oracle之控制文件和日志

ccwgpt 2024-12-03 10:17 24 浏览 0 评论

Oracle控制文件主要用来存放数据库的名字、数据库的位置等信息。日志记录了Oracle数据库日常操作。控制文件和日志文件都存储了Oracle数据库中的重要信息。

1.控制文件简介

控制文件是数据库中最小的文件,是一个二进制文件,其中包括了数据库的结构信息,同时也包括了数据文件和日志文件的一些信息。控制文件虽小,但可以说是Oracle中最重要的文件,只有Oracle进程才能够更新控制文件中的内容。控制文件中主要包括数据库名称、位置、联机或者脱机状态、Redo Log File的位置和名称、表空间名称、Archive Log File信息、CheckPoint信息、Undo信息、RMAN信息等,从控制文件中包含的内容也可以看出控制文件在整个 Oracle 中的重要性。

控制文件在每个数据库中都存在,但是一个控制文件只能属于一个数据库。这就像是工作证,每个员工都有工作证,但是一个工作证只能属于一个员工。在创建数据库时,控制文件被自动创建,如果数据库的信息发生变化,控制文件也会随之改变。控制文件不能手动修改,只能由Oracle数据库本身来修改。控制文件在数据库启动和关闭时都要使用,如果没有控制文件,数据库将无法工作。

2.控制文件的应用案例

2.1查看控制文件的内容

通过数据字典v$controlfile,可以查看控制文件的存放位置和状态。

在数据字典中查看控制文件的存放位置和状态。实现代码如下:

SELECT name,status FROM v$controlfile;

2.2更新控制文件的内容

当数据文件出现增加、重命名和删除等操作时,Oracle服务器会立刻更新控制文件以反映数据库结构的这种变化。每次在数据库的结构发生变化后,为了防止数据丢失都要备份控制文件。各进程根据分工的不同分别把更改后的数据库信息写入到控制文件中:日志写入进程负责把当前日志序列号记录到控制文件中;校验点进程负责把校验点的信息记录到控制文件中;归档进程负责把归档日志的信息记录到控制文件中。

为了应对磁盘损坏等数据灾难的情况,用户可以把控制文件进行镜像操作,这样即使一个文件被破坏,其他的控制文件依然存在,数据也不会丢失,数据库还可以正常运行。

2.3使用init.ora多路复用控制文件

控制文件虽然由数据库直接创建,但是在数据库初始化之前,用户可以修改初始化文件init.ora。要修改init.ora,需要先找到它的存放位置,这个文件的位置在安装目录的admin\orcl\pflie下,如下图所示:

在修改 init.ora文件之前,先通过复制操作把控制文件复制到不同的位置,然后用记事本打开init.ora文件,找到control files参数后即可进行修改。修改时需要注意,在每个控文件之间是通过逗号分隔的,并且每一个控制文件都是用双括号括起来的。在修改控制文件的路径之前,需要把控制文件复制一份进行保存,以免数据库无法启动。

2.4使用SPFILE多路复用控制文件

除了修改init.ora初始化参数的方式可以实现多路复用控制文件外,还可以通过SPFILE方式实现多路复用,它们的原理和修改参数是一样的。

使用SPFILE多路复用控制文件。具体操作步骤如下:

STEP1:修改control files参数。

在确保数据库是打开状态时,使用以下命令修改control_files参数,语句如下:

ALTER SYSTEM SET control_files='文件的路径1',
‘文件的路径2’,
‘文件的路径3’,…,
'文件的路径n' scope=spfile;

STEP2:关闭数据库。

在数据库打开时,数据库中的文件是无法操作的。关闭数据库的命令如下:

shutdown immediate;

STEP3:在DOS下复制文件到指定位置。

在DOS窗口下使用复制命令在指定位置增加一个控制文件。具体命令如下:

copy 旧文件,新文件

STEP4:启动数据库实例并验证。

文件复制完成后,使用startup命令重新启动数据库。

Startup;

在数据字典controlfile中重新查询现存的控制文件,命令如下:

SELECT name, status FROM v$controlfile;

2.5创建控制文件

虽然有多种保护控制的方法,但是仍然不能完全保证控制不出现丢失和损坏的情况。特别是以下两种情况出现时:

  1. 需要永久地修改数据库的参数设置。
  2. 当控制文件全部损坏,无法修复时。

手动创建控制文件。具体操作步骤如下:

STEP1:找原有的数据文件和重做日志的路径。

获取数据文件和重做日志路径的方法有两种:

一种方法是,当控制文件没有损坏时,从控制文件中直接获取;

另外一种方法是,如果控制文件损坏了,从数据字典v$datafile

中获取数据文件的信息,从数据字典v$logfile中获取日志文件的信息。

当然,使用上面两种方法的前提是数据库能够正常启动。如果数据库不能正常启动,那么需要根据系统的错误信息来查找原因。在创建新的控制文件并且使用它打开数据库以后,Oracle会对数据字典和控制文件的内容进行检查。如果发现数据字典包含了某个数据文件而控制文件没有列出这个数据文件,Oracle数据库就会报错。数据库管理员可以根据这些信息来判断是否缺少必要的数据文件,一步步查找到真正的数据文件。

获取数据文件的命令如下:

SELECT name FROM v$datafile;

获取日志文件的命令如下:

SELECT member FROM v$logfile;

STEP2:关闭数据库

在创建控制文件之前,需要先关闭数据库。命令如下:

shutdown immediate;

为了保证数据库的安全,关闭数据库后,应该把数据库的日志文件、数据库文件、参数文件等备份到其他硬盘上。

STEP3:创建新的控制文件

把原来的控制文件备份到其他位置后,还需要启动一个数据库实例。启动实例的语句如下:

startup nomount;

参数nomount表示只启动实例。

启动实例后就可以创建控制文件了。创建控制文件的语句如下:

create controlfile
reuse database'数据库实例名'noresetlogs//是否重做日志或重命名数据库noarchivelog//
归档状态
maxlogfiles //最大日志文件大小
maxlogmembers //日志文件组的成员数
maxinstances //最大实例的个数
maxloghistory //最大历史日志文件个数
logfile //日志文件
group1'日志文件的路径1'size 日志文件的大小,
..
groupn、日志文件的路径n'size日志文件的大小
datafile //数据文件
路径1',
...
路径n'
character set we8dec

参数 noresetlogs 表示在创建控制文件时不需要重做日志文件和重命名数据库,否则可以使用 resetlogs 参数。

STEP4:使用SPFILE方法修改init.ora中control files参数。

STEP5:验证控制文件。

重启数据库后,查询v$controlfile数据字典,检查控制文件是否全部正确加载。如果数据库加载不了,可以重新启动数据库服务。验证的命令如下:

SELECT name FROM v$controlfile;

至此,控制文件创建成功。

3.日志简介

Oracle日志主要分为两类包括重做日志文件和归档日志文件。重做日志文件是Oracle数据库正常运行不可缺少的文件。重做日志文件主要记录数据库操作的过程。在需要恢复数据库时,重做日志文件可以从备份还原的数据库上再执行一次,从而达到数据库的最新状态。

Oracle系统在运行时有归档模式和非归档模式。在归档模式下,如果重做日志文件全部写满后,就把第一个重做日志文件写入归档日志文件中,再把日志文件写到第一个重做日志文件中,使用归档方式可以方便以后的恢复操作;在非归档模式下,所有的日志文件都写在重做日志文件中,如果重做日志文件写满了,那么就把前面的日志文件覆盖掉。

在归档模式下,Oracle的性能会受到一定的影响,所以Oracle 默认情况下采用的是非归档模式。获取当前Oracle的归档模式可以从v$database 数据字典中查看。

如果需要查看当前数据库的模式,可以通过查看当前数据库的log_mode的值实现。

查看当前数据库的模式。实现代码如下:

SELECT name, log_mode FROM v$database;

从结果可以看出,当前模式为非归档模式。如果结果为ARCHIVELOG,则表示当前模式为归档模式。

4.管理日志文件

在Oracle数据库中,日志文件全部存放在日志文件组中。

4.1新建日志文件组

通过日志文件组,数据库管理员可以轻松地管理日志文件。创建日志文件组的语法如下:

ALTER DATABASE [database_name]
ADD LOGFILE GROUP n
filename SIZE m;
  • 参数database_name为要修改的数据库名,如果省略,表示为当前数据库;
  • 参数n为创建日志工作组的组号,组号在日志组中必须是唯一的;
  • 参数filename表示日志文件组的存在位置;
  • 参数m表示日志文件组的大小,默认情况下大小为50MB。

4.2添加日志文件到日志文件组

添加日志文件和添加日志文件组的语法非常类似。语法规则如下:

ALTER DATABASE [database_name]
ADD LOGFILE MEMMER
filename TO GROUP n;
  • 参数database name为要修改的数据库名,如果省略,则表示为当前数据库;
  • 参数filename表示日志文件的存在位置;
  • 参数n为日志文件填入的组号。

4.3删除日志文件组和日志文件

使用ALTER DATABASE语句可以删除日志文件组,具体的语法规则如下:

ALTER DATABASE [database_name]
DROP LOGFILE
GROUP n;
  • 参数n为日志文件组的组号。

删除日志文件的方法与删除日志文件组的方法类似。语法格式如下:

ALTER DATABASE [database name]
DROP LOGFILE MEMBER
filename;
  • 参数filename 表示日志文件的名称,当然也包括日志文件的路径。

4.4查询日志文件组和日志文件

用户可以查询已经存在的日志文件组和日志文件。查询日志文件组主要是通过V$LOG来实现。

查询V$LOG中的组号(GROUP#)、成员数(MEMBERS)和状态(STATUS)的信息。实现代码如下:

SELECT GROUP#, MEMBERS,STATUS FROM V$LOG;

查询日志文件主要通过V$LOGFILE来实现,

查询V$LOGFILE中的组号(GROUP#)、成员(MEMBER)的信息。实现代码如下:

SELECT GROUP#, MEMBER FROM V$LOGFILE;

在Oracle 日志文件中,最容易模糊的就是日志文件的3个状态,它们的含义如下:

  • current: 表示LGWR正在写的日志文件。
  • active:表示LGWR正在写的日志文件,实例恢复时需要这种文件。
  • inactive:表示LGWR正在写的日志文件,实例恢复时也不会用到这种文件。

通过参数ARCHIVE LAGTARGET可以控制日志切换的时间间隔,以秒为单位。通过减少时间间隔,从而实现提高日志的切换频率。例如以下代码:

SQL> ALTER SYSTEM SET ARCHIVE_LAG_TARGET=50 SCOPE=both;

通过上面的命令,可以实现日志每50秒切换一次。

相关推荐

自己动手写Android数据库框架_android开发数据库搭建

http://blog.csdn.net/feiduclear_up/article/details/50557590推荐理由关于Android数据库操作,由于每次都要自己写数据库操作,每次还得去...

谷歌开源大模型评测工具LMEval,打通谷歌、OpenAI、Anthropic

智东西编译|金碧辉编辑|程茜智东西5月28日消息,据科技媒体TheDecoder5月26日报道,当天,谷歌正式发布开源大模型评测框架LMEval,支持对GPT-4o、Claude3.7...

工信部:着力推动大模型算法、框架等基础性原创性的技术突破

工信部新闻发言人今日在发布会上表示,下一步,我们将坚持突出重点领域,大力推动制造业数字化转型,推动人工智能创新应用。主要从以下四个方面着力。一是夯实人工智能技术底座。通过科技创新重大项目,着力推动大模...

乒乓反复纠结“框架不稳定”的三个小误区

很多球友由于对框架的认知不清晰,往往会把“框架不稳定”当成一种心理负担,从而影响学球进度,其典型状态就是训练中有模有样,一旦进入实战,就像被捆住了手脚。通过训练和学习,结合“基本功打卡群”球友们交流发...

前AMD、英特尔显卡架构师Raja再战GPU,号称要全面重构堆栈

IT之家8月5日消息,知名GPU架构师拉贾科杜里(RajaKoduri)此前曾先后在AMD和英特尔的显卡部门担任要职。而在今日,由Raja创立的GPU软件与IP初创企...

三种必须掌握的嵌入式开发程序架构

前言在嵌入式软件开发,包括单片机开发中,软件架构对于开发人员是一个必须认真考虑的问题。软件架构对于系统整体的稳定性和可靠性是非常重要的,一个合适的软件架构不仅结构清晰,并且便于开发。我相...

怪不得别人3秒就知道软考案例怎么做能50+

软考高级统一合格标准必须三科都达到45分,案例分析也一直是考生头疼的一门,但是掌握到得分点,案例能不能50+还不是你们说了算吗?今天就结合架构案例考点,分享实用的备考攻略~一、吃透考点,搭建知识框架从...

UML统一建模常用图有哪些,各自的作用是什么?一篇文章彻底讲透

10万+爆款解析:9大UML图实战案例,小白也能秒懂!为什么需要UML?UML(统一建模语言)是软件开发的“蓝图”,用图形化语言描述系统结构、行为和交互,让复杂需求一目了然。它能:降低沟通成本避...

勒索软件转向云原生架构,直指备份基础设施

勒索软件组织和其他网络犯罪分子正越来越多地将目标对准基于云的备份系统,对久已确立的灾难恢复方法构成了挑战。谷歌安全研究人员在一份关于云安全威胁演变的报告中警告称,随着攻击者不断改进数据窃取、身份泄露和...

ConceptDraw DIAGRAM:释放创意,绘就高效办公新未来

在当今数字化时代,可视化工具已成为提升工作效率和激发创意的关键。ConceptDrawDIAGRAM,作为一款世界顶级的商业绘图软件,凭借其强大的功能和用户友好的界面,正逐渐成为众多专业人士的首选绘...

APP 制作界面设计教程:一步到位_app界面设计模板一套

想让APP界面设计高效落地,无需繁琐流程,掌握“框架搭建—细节填充—体验优化”三步法,即可一步到位完成专业级设计。黄金框架搭建是基础。采用“三三制布局”:将屏幕横向三等分,纵向保留三...

MCP 的工作原理:关键组件_mcp部件

以下是MCP架构的关键组件:MCP主机:像ClaudeDesktop、GitHubCopilot或旅行助手这样的AI智能体,它们希望通过MCP协议访问工具、资源等。MCP主机会...

软件架构_软件架构师工资一般多少

软件架构师自身需要是程序员,并且必须一直坚持做一线程序员。软件架构应该是能力最强的一群程序员,他们通常会在自身承接编程任务的同时,逐渐引导整个团队向一个能够最大化生产力的系统设计方向前进。软件系统的架...

不知不觉将手机字体调大!老花眼是因为“老了吗”?

现在不管是联系、交友,还是购物,都离不开手机。中老年人使用手机的时间也在逐渐加长,刷抖音、看短视频、发朋友圈……看手机的同时,人们也不得不面对“视力危机”——老花眼,习惯眯眼看、凑近看、瞪眼看,不少人...

8000通用汉字学习系列讲座(第046讲)

[表声母字]加(续)[从声汉字]伽茄泇迦枷痂袈笳嘉驾架咖贺瘸(计14字)嘉[正音]标准音读jiā。[辨形]上下结构,十四画。会意形声字,从壴从加,加也表声。注:从壴,字义与鼓乐有关;从加,字义与...

取消回复欢迎 发表评论: