2022年我的oraclei学习日志归纳 .pdf
《2022年我的oraclei学习日志归纳 .pdf》由会员分享,可在线阅读,更多相关《2022年我的oraclei学习日志归纳 .pdf(18页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、Oracle 内存结构 (01)-实例、数据库与SGA 1. 实例与数据库实例 (Instance):名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 1 页,共 18 页 - - - - - - - - - 数据库启动后在内存中的映像,管理数据库正常运行;在 OS中以 ORACLE_SID 标识,在 DB中以 Instance_name 标识;组成:( System Global Area + Background Process);查看实例名:$ set | grep -i ora
2、cle_sid SQL show parameter instance_name 数据库 (Database) :实例所存取的一个数据库文件的集合;在 DB中以 db_name标识;组成: ( 初始化参数文件,控制文件,数据文件,日志文件等) 查看数据库名:SQL show parameter db_name; 2.SGA(System Global Area)SGA是一组包含着一个Oracle 实例的数据库和控制信息的共享内存结构。是为 oracle系统分配的共享内存;是实例的主要组成部分;是影响数据库性能的重要因素;随实例的启动 /关闭而被分配 / 回收;SGA自动对所包含的各种缓冲自动进
3、行动态管理;SGA主要包含 6 类缓存:1.db_buffer_cache 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 2 页,共 18 页 - - - - - - - - - 2.shared_pool 3.large_pool 4.java_pool 5.redo_log_buffer 6.streams_pool 查看 SGA :SQL show sga; SQL select * from v$sga; SGA相关参数:pre_page_sga :启动时是否将全部SGA都
4、绑定到物理内存,而不使用交换分区。lock_sga :运行过程中是否也将全部SGA都绑定到物理内存,而不使用交换分区。sga_max_size :SGA总大小上限值。sga_target: 启用自动共享内存管理ASMM(Automatic Shared Memory Management), 指定分配给db_buffer_cache、shared_pool 、 java_pool 、large_pool这四项内存大小之和。注意: sga_max_size 可以改大,改小则受sga_target的限制。另外,sga_target应尽量接近sga_max_size 。当 sga_target小于
5、sga_max_size 时,上述指定的四项动态缓存合计值以sga_target为实际上限。如果sga_target被修改为大于sga_max_size 的值或 sga_max_size 小于 sga_target时,则数据库在下次启动时sga_max_size 值会自动调整为与sga_target值相等。调整 sga_target前,应先查看四项缓存默认值是否都0,若为 0 表示可由 ASSM 在 0 到 sga_target值所规定的区间内自动调整各缓存区大小。查看:SQL show parameter db_cache_size; SQL show parameter shared_po
6、ol_size; SQL show parameter large_pool_size; 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 3 页,共 18 页 - - - - - - - - - SQL show parameter java_pool_size; 更改:SQL alter system set db_cache_size=0 scope=both/memory/spfile; 若某项缓存区大小默认设置不为0,而为某一具体值,代表ASMM 在动态调整各缓存区时,该缓冲
7、区不能分配低于该指定值的大小。SGA内存按照颗粒度大小granule_size分配内存,若手工分配内存大小非整数倍于granule_size,则自动凑为granule_size的整数倍大小,常见granule_size如下:若 SGA1G,granule_size=8M(for WIN)或 16M(for Other);redo_log_buffer以512K 为粒度分配内存。查看 SGA粒度大小:SQL select bytes from v$sgainfo where name=Granule Size; 相关操作:SQL show sga Total System Global Area
8、 201326592 bytes Fixed Size 1218532 bytes Variable Size 83888156 bytes Database Buffers 113246208 bytes Redo Buffers 2973696 bytes Fixed Size:固定值,包括一些开销等其他空间大小。是shared pool内 dictionary cache的一部分与其他部分附加内存信息(如数据库和实例的状态信息)会被实例的后台进程所访问,在实例启动后即被固定在SGA中,是 SGA中固定组件(在编译oracle数据库本身时就固定在其中),大小不变,故该部分缓存又称为固定SG
9、A (Fixed SGA)。名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 4 页,共 18 页 - - - - - - - - - Variable Size:可用大小。为sga_max_size log_bufferdb_buffer_cachefixed_size,剩下的包含 Library cache、Java pool 、 Large pool 、cursor area、control file content等缓存区大小。Database Buffers:db_buffe
10、r_cache实际大小。Redo Buffers:redo_buffer实际大小。SQL select current_size from v$buffer_pool; #查看 data_buffer_cache实际大小(单位M )。SQL select pool,sum(bytes) from v$sgastat group by pool; #查看 java pool, streams pool,shared pool,large pool实际大小。SQL alter system set sga_target=120M scope=both; #修改 sga_target自动管理缓冲区合
11、计值,在sga_max_size 范围内调整可动态生效。各缓存区大小也将自动调整以适应修改后的sga_target总值。SQL show parameter sga_targe; SQL select current_size from v$buffer_pool; SQL select pool,sum(bytes) from v$sgastat group by pool; #查看修改,可见已跟随sga_target而变化,注意sga 的值是 granule的整数倍。SQL alter system set sga_target=400M scope=both; alter system
12、set sga_target=400M scope=both * ERROR at line 1: ORA-02097: parameter cannot be modified because specified value is invalid ORA-00823: Specified value of sga_target greater than sga_max_size #若修改 sga_target值大于 sga_max_size ,则 sga_target只能作为静态参数修改:SQL alter system set sga_target=400M scope=spfile; S
13、QL alter system set sga_max_size=200M scope=spfile; #修改 sga_max_size 值,静态参数,重启生效。名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 5 页,共 18 页 - - - - - - - - - SQL alter system set large_pool_size=10M scope=memory; #修改制定缓冲区最小值。若想在ASMM 管理下,为某缓存区规定一个最小分配下限值(指示ASMM 该区的分配不能
14、低于该指定值),则可通过设定默认值来达到目的。SQL select pool,sum(bytes) from v$sgastat group by pool; #查看,可见修改已生效。未完,待续。Oracle 内存结构 (02)-缓冲区1、Data_buffer_cache用来保存频繁访问的数据的内存缓冲区域,以便于oracle用户进程需访问的某块数据可以首先到data_buffer_cache中来寻找能命中( cache hit),从而大大减少从磁盘读取数据所需要的IO 时间。两个不同的列表:待写列表( write list):包含已被修改的,但尚未写入磁盘的脏缓存块的指示列表。最近最少使用
15、( Least recently used/LRU list):包含空闲缓存块、命中缓存块,及还未移入待写列表的脏缓存块的指示列表。四个不同缓冲池:Default pool Keep pool Recycle pool DB_nk_cache_size 查看 data_buffer_cache:SQL select current_size from v$buffer_pool; #查看当前分配大小。SQL show parameter db%cache_size; #查看最低分配限制( ASMM 下)(1)Default pool名师资料总结 - - -精品资料欢迎下载 - - - - -
16、- - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 6 页,共 18 页 - - - - - - - - - 数据库对象未特别指定时所使用的默认缓冲池。分别以不同算法处理缓冲区数据,使缓冲数据能尽长或尽短时间地占用default pool缓冲区。工作方式:当 oracle进程访问一块缓冲区后,会将该缓冲区移动到LRU列表的 MRU 端(下图中的 hot area),随着更多被访问的缓冲区移动到LRU列表的 MRU 端, 较早前被访问过的缓冲区就会逐渐向LRU列表的 LRU端(下图中的Cold area )移动。当用户进程执行全表扫描时,数据首次将会
17、从磁盘被读入内存缓冲区,之后将该缓冲区移动到LRU列表的 LRU端,以使这些通常只是暂时需要的全表扫描数据所占用的缓冲区能被尽快地移出数据缓冲区,为其他使用频率更高的数据块腾出空间。查看当前分配的大小: SQL select component,current_size from v$sga_dynamic_components where component=DEFAULT buffer cache; 或 SQL select name,current_size from v$buffer_pool; 如何指定对象使用default pool缓冲区:默认使用default pool。测试 d
18、efault pool使用效果:SQL shutdown immediate SQL startup #重启数据库,清空缓存。SQL show parameter db%cache_size #查看 data_buffer_cache大小。SQL conn system/oracle #以非 sysdba 用户登录。名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 7 页,共 18 页 - - - - - - - - - SQL create table t1 as select *
19、from dba_objects; #创建测试表。SQL select object_name,a.status,count(*) from v$bh a,user_objects b 2 where a.objd=b.object_id and object_name in (T1) group by object_name,a.status; OBJECT_NAME STATUS COUNT(*) - - - T1 xcur 1 #查看指定对象在default pool中所占用的缓冲区块数目。SQL set autotrace on statistics #开启显示统计信息功能。SQL s
20、elect count(*) from t1; #全表扫描。 COUNT(*) - 49807 Statistics - 28 recursive calls 0 db block gets 761 consistent gets 684 physical reads #有物理读。 0 redo size 413 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
21、) 1 rows processed 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 8 页,共 18 页 - - - - - - - - - SQL select count(*) from t1; #再次全表扫描。 COUNT(*) - 49807 Statistics - 0 recursive calls 0 db block gets 689 consistent gets 0 physical reads #无物理读。 0 redo size 413 bytes sent
22、 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 select object_name,a.status,count(*) from v$bh a,user_objects b 2 where a.objd=b.object_id and object_name in (T1) group by object_name,a.status;
23、 OBJECT_NAME STATUS COUNT(*) - - - T1 xcur 685 #查看指定对象在default pool中所占用的缓冲区块数目。(2)Keep pool名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 9 页,共 18 页 - - - - - - - - - 将存储在该缓存的数据一直保存在缓存中。该缓存不参与ASMM 的动态管理,不能自动调整大小。默认未启用,大小为0. 手工修改指定值后,default pool的空间将被相应的消减。经常访问的热点表应该专
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 2022年我的oraclei学习日志归纳 2022 oraclei 学习 日志 归纳
限制150内