3个后台进程触发时机
激活DBWn进程进行写盘的可能条件有:(1)缓存中的脏缓存块总数达到一个上限值.(2)执行增量检查点或完全检查点.(3)空闲缓存块少到一定数量.(4)发生超时(3秒)(5)表空间状态改变,如置为脱机状态,只读状态.(6)删除或者截断一个表.(7)利用alter tablespace...begin backup命令将表空间置为备份状态.数据库高速缓存将使用LRU算法(最近最少使用)选择要写的缓存块.*******************LGWR进程在以下情况发生时被触发:(1)提交事务(commit);(2)每隔3秒;(3)重做日志缓冲区已有三分之一填满(4)在dbwr进程将脏缓冲区数据写入到数据文件之前.
系统配置的优化:实例的初始配置
Oracle实例在运行时将先读取参数文件,获得参数值.这些参数会影响实例的运行,也会对性能产生影响。需要特别关注10g中29个基本参数,其他参数的设置可以使用默认值。在进行性能调整时,只需要特别关注某些参数即可,其他了解即可。db_name:数据库名,与oracle_sid匹配。control_files:控制文件的位置,文件名。推荐2个以上。越多越安全,但维护的开销也越大。open_cursors:每个会话可以打开的最大游标数,也就是SQL语句数。推荐500。db_files:可以分配到oracle的最大文件数。******以下几个参数对性能有显著影响:compatible:指定当前o
阅读sg日记
5月23日成果:共享池:库缓存区:存储最近执行的代码。数据字典缓存区:存储最近使用的对象定义。高速缓存区:Oracle执行sql的工作区,所有被频繁访问的数据都位于此。日志缓冲区:高速缓存区的一个分级区域。SMON(系统监视),PMON(进程监视),DBWN(数据写入器),LGWR(日志写入器),CKPT(检查点),其中LGWR是把数据变化实时写入联机重做日志文件,这样就保证了不丢失任何数据。对控制文件的添加,删除,移动操作,必须在停机时间进行。一个数据库一个控制文件,但一般必须创建其副本。联机重做日志文件的大小固定,当前组的文件成员会满,所以必须执行
4个问题与解答
1.对于sql,有几种方法查看执行计划,每种方法有什么区别,对于一条正在执行的sql,如何查看真实的,正在使用的执行计划?答:第一种方法:explain plan for…,生成指定sql语句的执行计划,并把执行计划保存到用户指定的表中,供用户查询,但不作为真正运行时的执行计划,因为并没有保存在library cache中,得到的执行计划也不只library cache中的,所以不是真正的执行计划。(1)SQL>explain plan for select * from emp(2)SQL>select * from table(dbms_xplan.display);第二种方法:SQL trace 和10046事件。查看trace文件,跟踪某个
AIX常用命令
# prtconf:输出aix服务器的物理构造信息# lscfg:列出系统中的设备信息# lscfg -l hdisk0:列出逻辑设备hdisk0的信息,l代表logical# lsdev -p -h:查看预定义库中设备信息(-p 参数),带有标题行显示(-H参数),lsdev:查看设备信息.# lsdev -c -h:查看定制库中设备信息(-c参数)#lsdev -C -c adapter -S a:显示定制库中所有处于可用状态的适配卡情况#uname -a:关于aix系统的安装环境信息#oslevel -r:aix操作系统版本信息.# lslpp -l -a | more:在系统中已安装的所有软件产品# lspv:列出物理卷的信息#lsvg -o:列出系统中的卷组信息,-o选项指明激活卷
日常技术积累
提个问题:局部索引和全局索引区别这类问题有什么区别?全局分区索引,全局非分区索引,本地分区索引,本地非分区索引...pctfree: 一般把该参数设置为10,参数表示块中预留的空余空间比例。比如 pctfree 20 pctused 80.这样空间的空闲比不能超过20%,超过将无法作update,insert操作。也就是说当这个块大于20%的时候,这个块就不可用。只有小于这个值,这个块才可用。注意单位为:数据块。initrans: 一般把该参数设置为1或者2。表示初始化了一个block的同时能并发进行的事务数,随着事务数量增加可以达到maxtrans上界(trans = transaction)如
熟悉SQL tuning
--优化总原则:按语句执行顺序,先过滤掉最容易过滤到的记录.--优化规则:1:数据比较多的表应该先进行连接,数据比较少的表应该尽可能后进行连接。 --原理:你从一堆沙子里找针难,还是几粒沙子里面找针难。--2 from后面写表的顺序时,选择小表作为驱动表,放在右端。如果有3个以上的表连接查询,--那就需要选择交叉表作为基础表,交叉表是指被其他表所引用的表.--3 where后的条件:表之间的连接必须写在其它where条件之前.那些可以过滤掉最大数量记录--的条件必须写在where字句的末尾.一般tablename.columnname = '多少'字句放到最后面.--