「java数据字典缓存」java 缓存数据
今天给各位分享java数据字典缓存的知识,其中也会对java 缓存数据进行解释,如果能碰巧解决你现在面临的问题,别忘了关注本站,现在开始吧!
本文目录一览:
- 1、请问Oracle的库高速缓存、数据字典高速缓存的作用分别是什么?请给予详细点的解答,谢谢
- 2、SGA是什么?
- 3、如何区分Oracle的数据库,实例,服务名,SID
- 4、Oracle数据库物理组建件的类型有什么?
- 5、下面哪个内存区域是用来缓存数据字典信息的
请问Oracle的库高速缓存、数据字典高速缓存的作用分别是什么?请给予详细点的解答,谢谢
库高速缓存
是用来存放你实际表的数据块的,如表TAB_A里实际存放的若干条数据记录,一般都存放在用户的表空间里。
数据字典高速缓存
用来存放表的定义,如表TAB_A,有几个字段,每个字段的类型、长度,表空间等,这类信息在你建表后会存放在系统表里,都是在SYSTEM表空间下,ORACLE运行时,这些信息被装入
数据字典高速缓存里。
SGA是什么?
是一组包含一个Oracle实例的数据和控制信息的共享内存结构。主要是用于存储数据库信息的内存区,该信息为数据库进程所共享(PGA不能共享的)。它包含Oracle服务器的数据和控制信息,它是在Oracle服务器所驻留的计算机的实际内存中得以分配,如果实际内存不够再往虚拟内存中写。
SGA几个很重要的特性:
1、SGA的构成--数据和控制信息,我们下面会详细介绍;
2、SGA是共享的,即当有多个用户同时登录了这个实例,SGA中的信息可以被它们同时访问(当涉及到互斥的问题时,由latch和enquence控制);
3、一个SGA只服务于一个实例,也就是说,当一台机器上有多个实例运行时,每个实例都有一个自己的SGA尽管SGA来自于OS的共享内存区,但实例之间不能相互访问对方的SGA区。
它主要包括:
1.数据库高速缓存(the database buffer cache),
2.重演日志缓存(the redo log buffer)
3.共享池(the shared pool)
4.数据字典缓存(the data dictionary cache)以及其它各方面的信息。
1.数据高速缓冲区(Data Buffer Cache)
在数据高速缓冲区中存放着Oracle系统最近使用过的数据块(即用户的高速缓冲区),当把数据写入数据库时,它以数据块为单位进行读写,当数据高速缓冲区填满时,则系统自动去掉一些不常被用访问的数据。如果用户要查的数据不在数据高速缓冲区时,Oracle自动从磁盘中去读取。数据高速缓冲区包括三个类型的区:1) 脏的区(Dirty Buffers):包含有已经改变过并需要写回数据文件的数据块。
2) 自由区(Free Buffers):没有包含任何数据并可以再写入的区,Oracle可以从数据文件读数据块该区。
3) 保留区(Pinned Buffers):此区包含有正在处理的或者明确保留用作将来用的区。
2.Redo Log Buffer Cache缓存对于数据块的所有修改。
主要用于恢复其中的每一项修改记录都被称为redo 条目。利用Redo条目的信息可以重做修改。
3. Shared Pool用于缓存最近被执行的SQL语句和最近被使用的数据定义。
它主要由两个内存结构构成:Library cache和Data dictionary cache
修改共享池的大小:ALTER SYSTEM SET SHARED_POOL_SIZE = 64M;
Libray Cache缓存最近被执行的SQL和PL/SQL的相关信息。实现常用语句的共享,使用LRU算法进行管理
,由以下两个结构构成:Shared SQL area、Shared PL/SQL area、Data Dictionary Cache、Data dictionary cache缓存最近被使用的数据库定义。它包括关于数据库文件、表、索引、列、用户、权限以及其它数据库对象的信息。在语法分析阶段,Server Process访问数据字典中的信息以解析对象名和对存取操作进行验证。数据字典信息缓存在内存中有助于缩短响应时间。
4.数据字典缓存(the data dictionary cache)
如何区分Oracle的数据库,实例,服务名,SID
Oracle的数据库:
一系列物理文件的集合
包括控制文件、数据文件、联机日志文件、参数文件、密码文件等
即:Oracle Database = Controlfile + datafile + logfiel + spfile +..
1.控制文件(controlfile)
数据库的名字,检查点信息,数据库创建的时间戳
所有的数据文件,联机日志文件,归档日志文件信息
备份信息等
2.数据文件(datafile)
包含了用户和应用程序的所有数据
--查看数据文件信息
3.联机日志文件
记录了用户对数据库的所有操作,一个数据库中至少要有两个日志组文件,每个日志组中至少有一个日志成员
日志组中的多个日志成员是互为镜相关系
4.归档日志文件
Oracle可以运行在两种模式之中,归档模式和非归档模式。在归档模式中,为了保存用户的所有修改,
在联机日志文件切换后和被覆盖之间系统将他们另外保存成一组连续的文件系列,该文件系列就是归档日志文件。
用户恢复意外情况出现的数据丢失、异常等。
5.参数文件(pfile和spfile)
initSID.ora或init.ora文件,通常位于:$ORACLE_BASE/admin/SID/pfile
初始化文件记载了许多数据库的启动参数,如内存,控制文件,进程数等,在数据库启动的时候加载(Nomount时加载)
6.其他文件
密码文件:用于Oracle 的具有sysdba权限用户的认证.
告警日志文件:报警日志文件(alert.log或alrt.ora),记录数据库启动,关闭和一些重要的出错信息
查看路径:select value from v$PARAMETER where name =‘background_dump_dest’;
7.数据库逻辑组织结构
表空间、段、区、块
一个数据库由一个或多个表空间组成,一个表空间只能属于一个数据库
一个表空间由一个或多个多个数据文件组成,一个数据文件只能属于一个表空间
一个数据文件由一个或多个操作系统块组成,每一个操作系统块只能数以一个数据文件
一个表空间可以包含一个或多个段,一个段只能属于一个表空间
一个段由一个或多个区组成,每一个区只能属于一个段
一个区由一个或多个Oracle 块组成,每一个Oracle块只能属于一个区
一个区只能属于一个数据文件,数据文件的空间可以分配到一个或多个区
一个Oracle 块由一个或多个操作系统块组成,一个操作系统块是一个Oracle块的一部分
oracle实例:
一个Oracle Server由一个Oracle实例和一个Oracle数据库组成。
即:Oracle Server = Oracle Instance + Oracle Database
Oracle实例
包括了内存结构(SGA)和一系列后台进程(Background Process),两者合起来称为一个Oracle实例
即:Oracle Instance = SGA + Background Process
Oracle内存结构
包含系统全局区(SGA)和程序全局区(PGA)
即Oracle Memory Structures = SGA + PGA
SGA由服务器和后台进程共享
PGA包含单个服务器进程或单个后台进程的数据和控制信息,与几个进程共享的SGA 正相反,PGA是
只被一个进程使用的区域,PGA 在创建进程时分配在终止进程时回收。即由服务器进程产生。
1.SGA
系统全局区SGA,SGA = 数据缓冲区+ 重做日志缓冲区+ 共享池+ 大池+ Java 池+ 流池
系统全局区是动态的,由参数SGA_MAX_SIZE决定。
查看当前系统的SGA大小:show parameter sga_max_size;
要修改:alter system set sga_max_size=1200m scope=spfile;
因为实例内存的分配是在数据库启动时进行的,所以要让修改生效,要重启数据库。
ORACLE 10G 引入了ASMM(自动共享内存管理),DBA只需设置SGA_TARGET,ORACLE就会
自动的对共享池、JAVA池、大池、数据缓冲区、流池进行自动调配。取消自动调配就是
sga_target设为。
数据缓冲区(Database buffer cache):存储从数据文件中获得的数据块的镜像
大小由db_cache_size 决定
查看:show parameter db_cache_size;
设置:alter system set db_cache_size=800M;
重做日志缓冲区(Redo log buffer):对数据库的任何修改都按顺序被记录在该缓冲,然后由LGWR进程将
它写入磁盘,大小由LOG_BUFFER决定
共享池(Shared pool):是SGA中最关键的内存片段,共享池主要由库缓存(共享SQL区和PL/SQL区)和数据
字典缓存组成,它的作用是存放频繁使用的sql,在有限的容量下,数据库系统根据一定的算法决
定何时释放共享池中的sql。
库缓存大小由shared_pool_size 决定
查看:show parameter shared_pool_size
修改:alter system set shared_pool_size=120m;
数据字典缓存:
存储数据库中数据文件、表、索引、列、用户和其它数据对象的定义和权限信息
大小由shared_pool_size 决定,不能单独指定
大池(Large pool):是一个可选的区域,用于一些大型的进程如Oracle的备份恢复操作、IO服务器进程等
Java 池:该程序缓冲区就是为Java 程序保留的。如果不用Java程序没有必要改变该缓冲区的默认大小
流池(Stream pool):被Oracle流所使用
2.PGA
是为每个用户进程连接ORACLE数据库保留的内存
进程创建时分配,进程结束时释放,只能被一个进程使用
PGA包括了以下几个结构:
()排序区
()游标状态区
()会话信息区
()堆栈区
由参数:pga_aggregate_target 决定
3.几类进程:用户进程,服务器进程,后台进程,其它可选进程
用户进程
在用户连接数据库产生,请求oracle服务器连接,必须要先建立一个连接,不会直接和oracle服务器连接
服务器进程
当连接实例并建立用户会话时产生,独立服务器或者提供共享服务器都能产生
后台进程
维持物理和内存之间的联系,用来管理数据库的读写,恢复和监视等工作。
Server Process主要是通过他和user process进行联系和沟通,并由他和user process进行数据的交换。
在Unix机器上,Oracle后台进程相对于操作系统进程,也就是说,一个Oracle后台进程将启动一个操作
系统进程。
在Windows机器上,Oracle后台进程相对于操作系统线程,打开任务管理器,我们只能看到一个
ORACLE.EXE的进程,但是通过另外的工具,就可以看到包含在这里进程中的线程。
必须要有的后台进程
DBWn --数据库写进程
PMON --程序监控进程
SMON --系统监控进程
LGWr --日志写进程
CKPT --检查点进程
可选进程:
ARCN 归档进程
RECO
Snnn
pnnn
DBWn(数据库写进程)
负责将修改过的数据块从数据库缓冲区高速缓存写入磁盘上的数据文件中
写入条件:
发生检查点
脏缓存达到限制
没有自由的缓存
超时发生
表空间离线
表空间只读
表被删除或者截断
开始备份表空间
可以修改数据写进程的数量
alter system set db_writer_processes=3 scope=spfile;
PMON(程序监控进程)
清除失效的用户进程,释放用户进程所用的资源。
如PMON将回滚未提交的工作,释放锁,释放分配给失败进程的SGA资源。
清除失败的进程
回滚事务
释放锁
释放其他资源
SMON(系统监控进程)
检查数据库的一致性,当启动失败时完成灾难恢复等
实列恢复时,前滚所有重做日志中的文件,打开数据库为了用户能访问,回滚未提交的事务,释放临时表空间
清除临时空间,聚结空闲空间,从不可用的文件中恢复事务的活动,OPS中失败节点的实例恢复
清除OBJ$表
缩减回滚段
使回滚段脱机
LGWr(日志写进程)
将重做日志缓冲区中的更改写入在线重做日志文件
条件:
提交的时候(commit)
redo log buffer达到1/3满
每隔3秒
有大于1MB 重做日志缓冲区未被写入磁盘
DBWR需要写入的数据的SCN号大于LGWR 记录的SCN号,DBWR 触发LGWR写入
超时
在dbwr进程些之前写日志
CKPT(检查点进程)
DBWR/LGWR的工作原理,造成了数据文件,日志文件,控制文件的不一致,CKPT进程负责同步数据文件,
日志文件和控制文件
CKPT会更新数据文件/控制文件的头信息
条件:
在日志切换的时候
数据库用immediate ,transaction ,normal选项shutdown数据库的时候
根据初始话文件LOG_CHECKPOINT_INTERVAL、LOG_CHECKPOINT_TIMEOUT、FAST_START_IO_TARGET 的设置的数值来确定
用户触发
ARCN(归档进程)
在每次日志切换时把已满的日志组进行备份或归档
条件:
数据库以归档方式运行的时候
RECO
负责解决分布事物中的故障。Oracle可以连接远程的多个数据库,当由于网络问题,有些事物处于悬而未决的状态。
RECO进程试图建立与远程服务器的通信,当故障消除后,RECO进程自动解决所有悬而未决的会话。
Server Process(服务进程)
分为专用服务进程(Dedicated Server Process)和共享服务进程(MultiTreaded Server Process)
专用服务进程:一个服务进程对应多个用户进程,轮流为用户进程服务。
用户进程(User Process)、服务进程(Server Process)、后台进程(Background Processes)的启动
用户进程: 数据库用户请求Oralce server会话时被启动
服务进程:当用户会话启动后,连接到Oracle实例时该进程被启动
后台进程:当Oracle实例被启动时,启动相关的后台进程
Oracle数据库物理组建件的类型有什么?
Oracle两部分:实例和数据库
实例由以下组成:SGA,Sharedpool,Databasebuffercache,Redologbuffercache。数据库由物理文件组成,其中必须有的文件是:数据文件,控制文件,重做日志,另外还有:参数文件,口令文件,归档日志文件(这三个不是必须的)。
用户建立连接后,启动一个服务器进程,用来将来代替用户进程完成SQLCOMMAND,再通过Oracle实例实现对数据库的相关文件进行改变(数据进行读取或修改)。
用户进程不可以直接操作数据库,而必须通过建立连接后,再通过服务器进程来完成。
OracleSERVER由两个部分组成,
1、INSTANCE:又由内存结构和后台进程。
2、DATABASE:又由数据文件,日志文件和控制文件组成这三个文件是必需的。
CONTROLFILE是用来连接实例和DATABASE:
SQLSHUTDOWNIMMEDIATE
SQLSTARTUPNOMOUNT
SQLALTERDATABASEMOUNT
以上三个过程就是通过CONTROLFILE来连接实例和数据库。
SQLALTERDATABASEOPEN:在OPEN的过程对DATABASE的数据文件和重做日志文件进行一次性的验证,验证它们的状态。
OracleINSTANCE:存取数据库的一个手段。
一个DATABASE与INSTANCE之间是1:N的关系,一个INSTANCE只能操作一个DATABASE,由内存结构(共享池,
BUFFERCACHE,REDOLOGBUFFERCACHE)及相应的进程结构组成(PMON程序监控进程,SMON系统监控进程,CKPT检查点进程)。
SQLSHOWSGA---显示DATABASE内存结构信息
SQLSETWRAPOFF
SQLSETLINESIZE200
以上这两个是设置行宽。
SQLSELECT*FROMV$BGPROCESS;
将看到在这个系统中所有可能使用到的进程,其中PADDR并不每个进程都分配到有效的地址,即并不是每个进程都是必须的。
SQLSELECT*FROMV$BGPROCESSWHEREPADDR''00''
将显示所有必需的进程。
ESTABLISHINGACONNECTIONANDCREATINGASESSION
连接到Oracle实例包括建立一个用户连接及创建会话。
SQLSELECT*FROMV$CONTROLFILES;--显示现系统下由几个控制文件组成。
SQLSELECT*FROMV$DATAFILE;--显示由几个数据文件组成。
SQLSELECT*FROMV$LOGFILE;--显示由几个日志文件组成。
OracleMEMORYSTRUCTURE(内存结构)
由两部分组成:
1、SGA是动态的,其最大值由SGA_MAX_SIZE指定,SGA的内存由SGACOMPONENTS来动态调整。
2、PGA是不共享的,即其包含的信息是不一样的,有两个可享的内存可以由SGA配置:
1LARGEPOOL
2JAVAPOOL
SQLSHOWPARAMETERSHARED
SQLSHOWPARAMETERDB_CACHE
SQLSHOWPARAMETERLOG
以上三个命令是用于查看相关内存信息。
SQLALTERSYSTEMSETDB_CACHE_SIZE=20M;
所有内存大小总和不能大于SGA_MAX_SIZE的值,当提示信息出现?号或乱码时,是由于系统的语言问题。
可以通过ALTERSESSIONSETNLS_LANGUAGE=''AMERICAN''或ALTERSESSIONSETNLS_LANGUAGE="SIMPLE
CHINESE"。
SHAREDPOOL(共享池)
1LIBRARYCACHE库缓存;
2DATADICTIONARYCACHE数据字典缓存,有的地方又称行CACHE,由SHARED_POOL_SIZE指定大小。
SQLALTERSYSTEMSETSHARED_POOL_SIZE=64M;
LIBRARYCACHE主要为提高代码的共享,存储的是最近使用的SQL和PL/SQL代码。
1用最近最少使用(LRU)算法;
2包括两个结构1:共享SQL代码2:共享PL/SQL代码;
3不可直接定义,而由SHAREDPOOLSIZE决定。
DATADICTONARYCACHE。
如:SQLSELECT*FROMAUTHORS;
执行此命令的过程是:首先确认是否存在AUTHORS,,然后确认字段存不存在,再检查语法,最后验证权限,而这些信息就属于DATADICTIONARYCACHE的内容。其包含的信息有:DATABASEFILES,表,索引,字段,用户,权限和其他数据库对象。
1主要用来改变系统的感应时间和性能。
2通过改变SHAREDPOOL大小来设置,DATADICTIONARYCACHE不能单独设置大小
下面哪个内存区域是用来缓存数据字典信息的
您好,很高兴为您解答。
Shared Pool常用来缓存数据字典信息
如若满意,请点击右侧【采纳答案】,如若还有问题,请点击【追问】
希望我的回答对您有所帮助,望采纳!
~ O(∩_∩)O~
关于java数据字典缓存和java 缓存数据的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站。