`
java-mans
  • 浏览: 11467252 次
文章分类
社区版块
存档分类
最新评论

alter system flush "oracle的缓存"

 
阅读更多

下面3条语句,旨在刷新oracle的缓存。这里总结一下。

1)alter system flush global context

下图说明:

对于多层架构的,如上图:应用服务器和数据块服务器通过连接池进行通信,对于连接池的这些信息被保留在SGA中,这条语句便是把这些连接信息清空。

2)alter system flush shared_pool

将使library cache和data dictionary cache以前保存的sql执行计划全部清空,但不会清空共享sql区或者共享pl/sql区里面缓存的最近被执行的条目。刷新共享池可以帮助合并碎片(small chunks),释放少数共享池资源,暂时解决shared_pool中的碎片问题。但是,这种做法通常是不被推荐的。原因如下:

·Flush Shared Pool会导致当前未使用的cursor被清除出共享池,如果这些SQL随后需要执行,那么数据库将经历大量的硬解析,系统将会经历严重的CPU争用,数据库将会产生激烈的Latch竞争。
·如果应用没有使用绑定变量,大量类似SQL不停执行,那么Flush Shared Pool可能只能带来短暂的改善,数据库很快就会回到原来的状态。
·如果Shared Pool很大,并且系统非常繁忙,刷新Shared Pool可能会导致系统挂起,对于类似系统尽量在系统空闲时进行。

下面测试一下,刷新对共享池碎片的影响:

SQL> select count(*) from x$ksmsp;

  COUNT(*)
----------
     41637

SQL> alter system flush shared_pool;

系统已更改。

SQL> select count(*) from x$ksmsp;

  COUNT(*)
----------
      9276



3)alter system flush buffer_cache

为了最小化cache对测试实验的影响,需要手动刷新buffer cache,以促使oracle重新执行物理访问(统计信息里面的:physical reads)。

测试环境

SQL> select count(*) from tt;

  COUNT(*)
----------
   1614112

SQL> show user;
USER 为 "HR"
SQL> exec dbms_stats.gather_table_stats('HR','TT');

PL/SQL 过程已成功完成。

SQL> select blocks,empty_blocks from dba_tables where table_name='TT' and owner='HR';

    BLOCKS EMPTY_BLOCKS
---------- ------------
     22357            0
表TT共有22357个block


借助x$bh,观察state=0的情况

SQL> select count(*) from x$bh where state=0;

  COUNT(*)
----------
         0

SQL> alter system flush buffer_cache;

系统已更改。

SQL> select count(*) from x$bh where state=0;

  COUNT(*)
----------
     40440


state=0表示buffer状态是free,flush cache后,所有的buffer都被标志为free

观察flush cache后,对查询的影响:

SQL> set autot on statistics
SQL> select count(*) from tt;

  COUNT(*)
----------
   1614112


统计信息
----------------------------------------------------------
          0  recursive calls
          0  db block gets
      22288  consistent gets
      22277  physical reads
          0  redo size
        416  bytes sent via SQL*Net to client
        385  bytes received via SQL*Net from client
          2  SQL*Net roundtrips to/from client
          0  sorts (memory)
          0  sorts (disk)
          1  rows processed

SQL> /

  COUNT(*)
----------
   1614112


统计信息
----------------------------------------------------------
          0  recursive calls
          0  db block gets
      22288  consistent gets
          0  physical reads
          0  redo size
        416  bytes sent via SQL*Net to client
        385  bytes received via SQL*Net from client
          2  SQL*Net roundtrips to/from client
          0  sorts (memory)
          0  sorts (disk)
          1  rows processed

SQL> alter system flush buffer_cache;

系统已更改。

SQL> select count(*) from tt;

  COUNT(*)
----------
   1614112


统计信息
----------------------------------------------------------
          0  recursive calls
          0  db block gets
      22288  consistent gets
      22277  physical reads
          0  redo size
        416  bytes sent via SQL*Net to client
        385  bytes received via SQL*Net from client
          2  SQL*Net roundtrips to/from client
          0  sorts (memory)
          0  sorts (disk)
          1  rows processed


分享到:
评论

相关推荐

    kill system session(解决oracle死锁)

    kill system session(解决oracle死锁)

    oracle修改字符集

    SQL> ALTER SYSTEM ENABLE RESTRICTED SESSION; System altered. SQL> ALTER SYSTEM SET JOB_QUEUE_PROCESSES=0; System altered. SQL> ALTER SYSTEM SET AQ_TM_PROCESSES=0; System altered. 启动数据库...

    oracle日志alter.log每天切割脚本

    oracle 的alter日志切割脚本,有需要的可自行改造

    oracle权限全集

    囊括了oracle所有权限管理的命令 oracle权限全集 alter any cluster 修改任意簇的权限 alter any index 修改任意索引的权限 alter any role 修改任意角色的权限 alter any sequence 修改任意序列的权限 alter ...

    如何快速的杀掉Oracle的Session

    当我们用alter system kill session ‘sid,serial#’进行清除时,这些session的状态又变成了killed,这些就由Pmon进程来慢慢进行清除了,而你恰恰又是个急脾气。  3、 系统忽然慢了现来,你发现是某个session在做怪...

    oracle归档日志步骤+RMAN步骤

    alter system set db_recovery_file_size=20G; SQL> shutown immediate SQL> conn / as sysdba SQL> startup mount SQL> alter database archivelog; 启动归档 SQL> alter database open; SQL> archive...

    oracle11g密码敏感取消

    alter system set sec_case_sensitive_logon=false ; --Oracle11g中Exp空表的问题:禁用插入数据时才分配空间功能 show parameter deferred_segment_creation alter system set deferred_segment_creation=false; ...

    如何安全快速的批量删除Oracle数据库外部会话session

    1:ALTER SYSTEM KILL SESSION 关于KILL SESSION Clause ,官方文档描述alter system kill session实际上不是真正的杀死会话,它只是将会话标记为终止。等待PMON进程来清除会话。 可以使用如下方式来快速回滚事物、...

    Oracle 9i数据库的动态SGA特性探索

    与8i不同的是,原来都将初始化参数放到一个文本文件中,并且在数据库启动的时候读取,Oracle9i却可以通过ALTER DATABASE和ALTER SYSTEM命令复位全部的Oracle参数。对于需要停止和重新启动Oracle数据库来修改参数来说...

    最全的oracle常用命令大全.txt

    su - oracle -c "exp system/manager full=y inctype=complete file=/oracle/export/db_comp$rq.dmp" 累计备份的SH文件:exp_cumu.sh rq=` date +"%m%d" ` su - oracle -c "exp system/manager full=y inctype=...

    oracle锁表该如何解决

    废话不多说 上语句: 查询锁表语句: select object_name,...alter system kill session 'sid,serial#'; 例如: alter system kill session '20,182'; 如果杀不掉可以加个 immediate 立即杀掉 试试; alter sys

    oracle jobs 导出为执行脚本

    设置 file_dir file_name 参数  导出文件内容如最后附所视 <br> 局限性 要设置utl_file_dir(alter system set utl_file_dir=) ,file_dir要包括在  文件生成在服务端 <br> 其实可以封装成过程,...

    oracle实时在线备份工具-rman

    1、 启用快速恢复区域 将 oracle 数据库置于“安装模式”以启用快速恢复区域,以存储 rman 备份 ...SQL> alter system set db_recovery_file_dest=/opt/oracle/fast_recovery_area; SQL> startup force

    ORACLE initialization or shutdown in process

    碎片处理工具,处理碎片至使oracle数据库不能启动, 解决方法: 进入dos: 以DBA用户登录,具体命令是 sqlplus /NOLOG SQL>connect sys/change_on_install as sysdba 提示:已成功 SQL>shutdown normal 提示:...

    Oracle常用命令大汇总

    sql> alter system switch logfile; 2.forcing checkpoints sql> alter system checkpoint; 3.adding online redo log groups sql> alter database add logfile [group 4] sql> ('/disk3/log4a.rdo','/...

    oracle常用命令

    sql> alter system switch logfile; 2.forcing checkpoints sql> alter system checkpoint; 3.adding online redo log groups sql> alter database add logfile [group 4] sql> ('/disk3/log4a.rdo','/disk4/...

    oracle系统状态trace文件分析器

    oracle系统状态trace文件分析器 当系统hang住时,或者进程间有阻塞时,你可以产生下面两种跟踪文件,一种是进程状态跟踪文件,一种是系统状态跟踪文件:  process state dumps ==> 一个进程的所有对象状态,...

    oracle.txt

    select SESS.sid, SESS.SERIAL#, LO.ORACLE_USERNAME, LO.OS_USER_NAME, AO.OBJECT_NAME, LO.LOCKED_MODE from V$LOCKED_OBJECT LO, DBA_OBJECTs AO, V$SESSION SESS where AO.OBJECT_ID = LO.OBJECT_ID and lo....

    oracle - answer

    习题 Ch3 (1) CREATE SPFILE FROM PFILE=path (2) CREATE PFILE FROM SPFILE (3) SELECT NAME,VALUE FROM V$PARAMETER (4) ALTET SESSION SET NLS_DATE_FORMAT=’YYYY-...ALTER SYSTEM ARCHIVE LOG START ……

    oracle 常用命令大全

    oracle 常用命令大全 oracle dba 常用命令 1 运行 SQLPLUS 工具 sqlplus 2 以 OS 的默认身份连接 / as sysdba ...show user 4 直接进入 SQLPLUS 命令提示符 ...alter user scott account unlock(lock);

Global site tag (gtag.js) - Google Analytics