Oracle SMON进程的作用

      Oracle SMON进程会将各个表空间的空闲碎片合并在一起,让数据库系统更加容易分配。从而提高数据库的性能。另外,在数据库运行的过程中,会因为断电或者其他的原因而发生故障。此时由于数据高速缓存中的脏缓存块还没有来得及写入到数据文件中,从而导致数据的丢失。在数据库启动的时候,系统监视进程SMON会在下一次启动例程的时候,自动读取重做日志文件并对数据库进行恢复。也就是说,进行将已提交的事物写入数据文件(已经写入到日志文件中而没有写入到数据文件中的数据)、回退未提交的事务操作。可见,Oracle SMON进程是一个比较小但是却非常重要的角色。

  在管理这个进程的时候,主要需要注意两个问题。一是其启动的时机。一般情况下,例程重新启动的时候,会启动这个系统监视进程。然后在这个例程运行期间,这个进程也会被系统定期的唤醒,然后其会检查是否有工作需要其完成。最重要的是,在有需要的时候,数据库管理员可以通过其他进程来启动这个SMON系统系统监视进程,来完成一些特定的工作。

  第二需要注意表空间配置对这个进程的影响。在表空间管理中,有一个参数叫做PCTINCREASE。如果将这个参数设置为0的话,则这个SMON系统监视进程对于这个表空间的作用就要打折扣了。在设置为0的情况下,SMON进程就不会对这个表空间中的空闲碎片进行整理、合并操作。让Oracle SMON进程自动对表空间中的碎片进行管理,自动合并表空间中的空闲碎片。 (ASSM的情况下 最好设置uniform. size 初始化extented 的分配,以减少碎片的产生)不过如果某个表空间这个参数设置为0的话,不会影响到系统监视进程的其他用途,如不会影响到在例程非正常关闭时对数据的恢复操作。即即使这个参数设置为0 ,在有需要的时候其仍然可以利用重做日志文件中的记录来恢复相关的数据。

时间: 2024-09-27 16:34:44

Oracle SMON进程的作用的相关文章

关闭Oracle死锁进程的具体步骤

有效关闭Oracle死锁进程的具体步骤: 1.查哪个过程被锁 查V$DB_OBJECT_CACHE视图: SELECT * FROM V$DB_OBJECT_CACHE WHERE OWNER='过程的所属用户' AND CLOCKS!='0'; 2. 查是哪一个SID,通过SID可知道是哪个SESSION 查V$ACCESS视图: SELECT * FROM V$ACCESS WHERE OWNER='过程的所属用户' AND NAME='刚才查到的过程名'; 3. 查出SID和SERIAL#

归档内存-服务器内存告警,发现是oracle 归档进程arch 占用超过10G(每个arch进程)

问题描述 服务器内存告警,发现是oracle 归档进程arch 占用超过10G(每个arch进程) 服务器是aix: 如下归档进程占用的内存查询 arch1: Pid Command Inuse Pin Pgsp Virtual 64-bit Mthrd 16MB 917924 oracle 5316319 65600 71 5264722 Y N N PageSize Inuse Pin Pgsp Virtual s 4 KB 69375 0 71 17778 m 64 KB 323838 4

oracle的undo的作用

 undo表空间与redo日志文件在oracle中的作用非常重要,重做日志用于从一个实例故障或介质故障中恢复数据库.在应用程序试图回退(撤消)一个事务处理时,不使用重做日志.在这种情况下,oracle将从回退段恢复旧信息,它还有oracle的另一个强大的特性---多版本读取一致性(multi-version read consistency). undo中数据的特点: 是数据修改前的备份,主要是保证用户的读一致性,在事务修改数据时产生 至少保存到事务结束 undo数据的作用: 回滚(rollba

CBO中SMON进程与col_usage$的维护

从Oracle9i开始,为了监控column的使用信息,引入了一个对象col_usage$,用于记录运行时的COLUMN使用信息. 这部分信息由SMON维护,所以当看到SMON报出相关的死锁.错误时不要惊讶,SMON做的工作是越来越杂了. 在Oracle10g中,这个表的结构如下: create table col_usage$ ( obj#              number,                                 /* object number */ intc

如何杀死oracle死锁进程

方法一:Oracle的死锁非常令人头疼,总结了一些点滴经验作为学习笔记 1.查哪个过程被锁查V$DB_OBJECT_CACHE视图: SELECT * FROM V$DB_OBJECT_CACHE WHERE OWNER='过程的所属用户' AND LOCKS!='0'; 2. 查是哪一个SID,通过SID可知道是哪个SESSION.查V$ACCESS视图: SELECT * FROM V$ACCESS WHERE OWNER='过程的所属用户' AND NAME='刚才查到的过程名'; 3.

oracle的进程、会话、连接之间有什么差异

--======================== -- 进程.会话.连接之间的差异 --======================== 在使用Oracle database的时候,连接与会话是我们经常碰到的词语之一.咋一看貌似一回事,事实则不然.一个连接上可以建立零个. 一个.甚至多个会话.啊,咋这样呢?是的,没错.这也是我们经常误解的原因. 各个会话之间是单独的,独立于其他会话,即便是同一个连接的多个会话也是如此. 一.几个术语之间的定义(参照Oracle 9i &10g 编程艺术) 连

oracle 服务器进程中LOCAL=NO /YES

转自:http://blog.csdn.net/tianlesoftware/article/details/5675404 1. 先看2个命令执行的结果: [oracle@hfcc-svr-newccsdb1 ~]$ ps -ef | less UID        PID  PPID  C STIME TTY          TIME CMD oracle     469     1  0 May28 ?        00:00:05 oraclenewccs (LOCAL=NO) or

Oracle同义词创建及其作用

1 同义词的概念 Oracle数据库中提供了同义词管理的功能.同义词是数据库方案对象的一个别名,经常用于简化对象访问和提高对象访问的安全性.在使用同义词时,Oracle数据库将它翻译成对应方案对象的名字.与视图类似,同义词并不占用实际存储空间,只有在数据字典中保存了同义词的定义.在Oracle数据库中的大部分数据库对象,如表.视图.同义词.序列.存储过程.包等等,数据库管理员都可以根据实际情况为他们定义同义词. 同义词,顾名思义就是两个词的意思一样,可以互相替换.那它的作用有哪些呢:一个最明显的

使用Linux Strace跟踪调试Oracle程序进程

  所谓操作系统,是应用程序与服务器硬件进行沟通的中间层.应用程序的所有操作,都是和操作系统进行沟通交互.操作系统负责将所有交互转化为设备语言,进行硬件交互. 我们在进行Oracle故障调试和内核原理工作的时候,经常需要了解后台运行的动作和细节.一些故障场景,如程序进程hang住.无法登陆等问题,就需要操作系统级别监控,检查定位问题. Oracle自身已经提供了很多这类型的工具,如oradebug.各种等待事件和跟踪方式.此外,各类型的操作系统提供出很多系统级别工具,帮助我们进行监控.本篇主要介