Oracle DBA 的个人复习笔记——一些简单的Oracle内部简介(2)。
2009-11-23 19:57
507 查看
做事要有始有终。前面看到了Oracle的查询语句那里了。今天接着来。
1.Oracle执行查询语句的步骤:
a。编译:在编译的时候,服务器进程会把sql语句的政务放入共享池,和库高速缓存中,然后进行下面的:
1):首先在共享池里面搜索是不是有相同的sql语句。有的话,当然就将就拿来用了撒。没有接下面。
2):检查sql语句是不是正确的。
3):通过查看数据字典来检查表和列的定义。
4):对所操作的对象加编译锁。--编译时以防对象改变。
5):检查所引用对象的用户权限。
6):生成执行sql语句所需的优化的执行计划。
7):将sql语句和执行计划装入共享的sql区。
b。执行sql语句。
c。提取数据。
附:update语句执行过程:
1):如果数据和回滚数据不在数据库高速缓冲区(见下),服务器进程吧他们先从数据文件中读到数据库高速缓冲区中。
2):服务器在数据修改的行上加行锁。
3):服务器进程把数据变化的信息和恢复数据所需要的信息记录在重做日志文件(见下)中。
4):服务器进程把回滚所需的原始值和对数据所作的修改都写入数据库高速缓冲区。INSERT,DELECT 类似。
2.共享池(shared pool)
SGA的共享池由两部分组成。库高速缓存,数据字典高速缓存。
要想共享sql或PL/SQL,1,库高速缓存要足够大。不然语句很快就会被淘汰。2,语句要能被共享。
比较下面:
select * from emp where sql >=1200;
select * from emp where sql >=1201;
不同的语句哦。
select * from emp where sql >=&var;通用的哦。
在执行SQL语句时,服务器进程将把数据文件,表,索引,列,用户和其它数据对象的定义和权限放在数据字典高速缓存中。
改变共享池大小的命令:
alter system set shared_pool_size = 100 m;
3.数据库高速缓冲区(database buffer cache)
数据库在提取数据的时候,首先在这里查找,如果没有,才进行磁盘操作。
4.内存缓冲区顾问(v$db_cache_advice)
Oracle 9i以上的版本引入的一个工具。用来获得调整数据库高速缓冲区的统计信息。
状态三种:ON , READY , OFF。
改变状态,如:alter system set db_cache_advice =OFF;
5。重做日志缓冲区(redo log buffer)
用于在数据库崩溃的时候恢复数据用的。在DDL,DML操作数据前都将恢复所需的信息,即在写入数据库高速缓冲区之前,先写入这里。
6.大池(large pool)和java池(java pool)
large pool提高效率。java pool 能够编译java语言的命令。
7.内存缓冲区大小的设定。
DB_BLOCK_BUFFERS,LOG_BUFFER,SHARED_POOL_SIZE.SGA_MAX_SIZE 等等。
设置: ALTER SYSYTEM SET *******;
8.内存缓冲区信息的获取。
show sga;
select * from v$parameter where name ='sga_max_size';
还有一些进程没有看。明天看,跑步去了。
1.Oracle执行查询语句的步骤:
a。编译:在编译的时候,服务器进程会把sql语句的政务放入共享池,和库高速缓存中,然后进行下面的:
1):首先在共享池里面搜索是不是有相同的sql语句。有的话,当然就将就拿来用了撒。没有接下面。
2):检查sql语句是不是正确的。
3):通过查看数据字典来检查表和列的定义。
4):对所操作的对象加编译锁。--编译时以防对象改变。
5):检查所引用对象的用户权限。
6):生成执行sql语句所需的优化的执行计划。
7):将sql语句和执行计划装入共享的sql区。
b。执行sql语句。
c。提取数据。
附:update语句执行过程:
1):如果数据和回滚数据不在数据库高速缓冲区(见下),服务器进程吧他们先从数据文件中读到数据库高速缓冲区中。
2):服务器在数据修改的行上加行锁。
3):服务器进程把数据变化的信息和恢复数据所需要的信息记录在重做日志文件(见下)中。
4):服务器进程把回滚所需的原始值和对数据所作的修改都写入数据库高速缓冲区。INSERT,DELECT 类似。
2.共享池(shared pool)
SGA的共享池由两部分组成。库高速缓存,数据字典高速缓存。
要想共享sql或PL/SQL,1,库高速缓存要足够大。不然语句很快就会被淘汰。2,语句要能被共享。
比较下面:
select * from emp where sql >=1200;
select * from emp where sql >=1201;
不同的语句哦。
select * from emp where sql >=&var;通用的哦。
在执行SQL语句时,服务器进程将把数据文件,表,索引,列,用户和其它数据对象的定义和权限放在数据字典高速缓存中。
改变共享池大小的命令:
alter system set shared_pool_size = 100 m;
3.数据库高速缓冲区(database buffer cache)
数据库在提取数据的时候,首先在这里查找,如果没有,才进行磁盘操作。
4.内存缓冲区顾问(v$db_cache_advice)
Oracle 9i以上的版本引入的一个工具。用来获得调整数据库高速缓冲区的统计信息。
状态三种:ON , READY , OFF。
改变状态,如:alter system set db_cache_advice =OFF;
5。重做日志缓冲区(redo log buffer)
用于在数据库崩溃的时候恢复数据用的。在DDL,DML操作数据前都将恢复所需的信息,即在写入数据库高速缓冲区之前,先写入这里。
6.大池(large pool)和java池(java pool)
large pool提高效率。java pool 能够编译java语言的命令。
7.内存缓冲区大小的设定。
DB_BLOCK_BUFFERS,LOG_BUFFER,SHARED_POOL_SIZE.SGA_MAX_SIZE 等等。
设置: ALTER SYSYTEM SET *******;
8.内存缓冲区信息的获取。
show sga;
select * from v$parameter where name ='sga_max_size';
还有一些进程没有看。明天看,跑步去了。
相关文章推荐
- Oracle DBA 的个人复习笔记——一些简单的Oracle内部简介(1)。
- Oracle DBA 的个人复习笔记——一些简单的Oracle内部简介(3)
- Oracle DBA 个人笔记
- oracle 一些简单的笔记
- 04Redis入门指南笔记(内部编码规则简介)
- 【图形化编程软件】 sikuli常用函数、简单事件操作 键盘操作 个人总结笔记
- sqlserver2005和oracle一些简单常见的问题
- Oracle 和 mysql 的一些简单命令对比参照
- 对.Net 垃圾回收的C#编程相关方面(Finalize 和Dispose(bool disposing)和 Dispose())的一些理解体会【个人复习+zz】
- Windows平台自动化测试工具基于的一些技术简介(笔记)
- 《php---ajax简单示例---jquery内部运行原理》---jquery只是就ajax的一些功能进行了封装
- Oracle 和 mysql 的一些简单命令对比参照
- Oracle 和 mysql 的一些简单命令对比参照
- 一些简单的linux习题(可做复习用)三
- Oracle解析函数(Analytic Functions)的一些笔记
- 个人笔记-oracle
- Ubuntu中安装MongoDB及执行一些简单操作笔记
- [转]简单批处理内部命令简介
- oracle的笔记,凑合着看吧! 2 简单的运用技巧
- git clone 一些简单笔记