ORACLE启动原理
Checkpoint
很多人都把checkpoint的概念给复杂化了,其实checkpoint这个数据库概念引入的真正意义就是用来减少在数据库
恢复过程中所花的时间(instance recovery),那么checkpoint是由谁来做的呢?我们都知道数据库中有个CKPT进程,这是个
可选进程,但是真正执行检查点的任务并不是由ckpt来完成的,而是ckpt在更新控制文件和数据文件头的有关信息后,通知
DBWn进程,产生一个检查点,在产生检查点的时候,DBWn进程会将buffer cache中的脏数据(当前online redo log对应的脏
数据),写入我们的数据文件当中。这个时候如果数据库此时崩溃(比如我们做个shutdown abort),那么在进行实例恢复的
时候就可以不需要当前online redo log的内容了,会很快就做完。因此ckpt进程只是个辅助进程,他的任务更多的是用来
在系统做checkpoint的时候更新控制文件和数据文件头中的信息。其实在oracle 8i的时候呢,ckpt的任务一般都是由lgwr
进程来完成,到了8i以后,随着CKPT进程的引入,lgwr的工作负担就减轻了很多(commit的速度加快了)
那么如何来产生检查点呢?
有三种方法,可以通过
1.alter system checkpoint
2.alter system switch logfile
3.DBWn进程写出脏块
SCN
在Oracle中理解为一个内部同步时钟,是系统改变号的缩写(system change number),在Oracle数据库中我们可以
通过dbms_flashback包来查询当前系统的改变号:select dbms_flashback.get_system_change_number from dual;一般来
讲SCN主要是用来标识数据库所做的所有改变,这个SCN的改变是只能前进,不能回退,除非我们打算重建库,数据库中的
SCN永远不会归0,一般来说SCN的前进触发是由commit来进行的,除了这些据我观察每隔3秒种系统也都会刷新一次SCN.
需要注意的是:
1.CKPT一定是是在checkpoint发生的时候将数据库当前的SCN更新入数据库文件头和控制文件当中,同时DBWn进程
将buffer cache中的脏数据块(dirty blo
相关文档:
http://www.anysql.net/oracle/query_rewrite_01.html
Query Rewrite 在数据仓库是是一个非常有用的技术, Tom在<<Effective Oracle by Design>>一书中将实体化视图(MView)称为是数据仓库的索引, 这是再贴切不过的了, 在OLTP中当SELECT语句的所有的字段都在索引中时, Oracle可以不从表读数据, 而直 ......
Oracle 创建序列:
create sequence SEQ_Tablename_id
increment by 1 &nbs ......
// 建立表空间(指定文件路径)。
create TABLESPACE EAS_D_sptcc0_STANDARD DATAFILE 'F:\oracledb\EAS_D_sptcc0_STANDARD.dbf' size 10000M EXTENT MANAGEMENT local;
// 删除表空间(指定文件路径)。
DROP TABLESPACE temp_data INCLUDING CONTENTS AND DATAFILES;
// 建立临时表空间。
CREATE TEMPORARY TABLESPA ......
linux下oracle安装:
Oracle公司宣称在Linux下安装Oracle9i数据库至少要有512MB的内存和至少1GB或者两倍
内存大小的交换空间,对于系统内存大于2GB的服务器,交换空间可以介于2GB—4GB之间。
如果是为了在一台仅有256M内存的普通PC机上试用Oracle9 ......
你是否为等待你的查询返回结果而感到疲惫?你是否已经为增强索引和调优SQL而感到疲惫,但仍然不能提高查询性能?那么,你是否已经考虑创建物化视图?有了物化视图,那些过去需要数小时运行的报告可以在几分钟内完成。物化视图可以包括联接(join)和集合(aggregate)
你是否为等待你的查询返回结果而感到疲惫?你是否已 ......