`
wsql
  • 浏览: 11780849 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
文章分类
社区版块
存档分类
最新评论

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的Session

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

    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权限全集

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

    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日志alter.log每天切割脚本

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

    如何安全快速的批量删除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