Oralce架构专家 - 9i,10g,11g编程技巧和方法
04 - 内存结构
摘要:Oracle的3个主要内存结构系统全局区SGA进程全局区PGA用户全局区UGA管理Oracle内存的2中方法自动内存管理手动内存管理重要参数PGA_AGGREGATE_TARGETMEMORY_TARGETSORT_AREA_SIZESORT_AREA_RETAINED_SIZEHASH_AREA_SIZESGA分为不同的池Java poolLarge PoolShared PoolStream PoolNull PoolDB_CACHE_SIZELOG_BUFFERSGA_TARGETSGA_MAX_SIZEMEMORY_TARGETMEMORY_MAX_SIZE
阅读全文
03 - Oracle文件概述
摘要:构成Oracle数据库的8种文件类型. 可以把这些文件分成以下几类.Instance相关参数文件 parameter, initOra file, spfile跟踪文件 trace file警告文件 alert file构成数据库的文件数据文件 data file临时文件 temp file控制文件 control file重做日志文件 redo log file密码文件 password file其他两种可选文件(备份和恢复相关)修改跟踪文件 change tracking file闪回日志文件 flashback log file其他文件转储文件 dump file, DMP file数据
阅读全文
02 - 体系结构概述
摘要:1. Oracle体系结构的内容包括, 文件,内存,进程三个部分,后面再慢慢细说。本文是概述。2. 数据库和实例Oracle的两个容易混淆的术语数据库: 物理存储在磁盘上的文件instance: 一组后台进程,以及共享内存区。在 UNIX环境下可以通过ps, ipcs命令查看Oracle进程和进程间通信设备(共享内存,信号量等)3. Oracle可以配置城专用服务器和共享服务器4.客户端通过tnsname.ora, 连接Oracle 的监听器, 即Net Listener.这一章内容少,而且简单,详细的在3,4,5章节中细说。
阅读全文
01 - 开发成功的Oracle应用
摘要:笔记1. 开发数据库应用,不能把数据库当黑盒。需要了解数据库的一下内容数据库的体系结构并发控制开发的时候就要调优你的代码数据库有哪些特性,不要在你的代码里重复实现深入的学习SQL2. 我的方法以数据库为中心的方法.如果能在数据库中实现,就不去自己实现. 原因是Oracle在各种平台上都可用,自己实现的话,移植性可能会不好.一些最佳实践尽量使用一条SQL完成工作如果一条SQL没法完成工作,那么就是用PL/SQL尽量保持代码简单,要知道代码越多越容易出错如果PL/SQL不能完成工作,就试试JAVA存储过程如果Java不行,那么就试试C例程再不行,就要考虑这个工作的可行性了。3. 一个bitmap
阅读全文
00 - Oracle体系结构课程内容
摘要:1.导论自己把本书内容分为几个部分, (1)体系结构,(2)并发控制和事务,(3)物理存储, (4)其他。 嗯,拿到一个新的数据库,我们也要从这几个方面去认识它。2.体系结构3.Oracle文件4.内存结构5.进程6.锁和闩7.并发和多版本8.事务9.redo和undo10.表11.索引12.数据类型13.分区14.并行执行15.数据的加载和卸载16.数据加密
阅读全文
Oracle 6 - 锁
摘要:Oracle锁没有额外的开销?Oracle的锁是怎么实现的?因为其他数据库,锁都是一种稀有资源和开销。答:代码级实现??没有锁的话,并发更新就会有丢失更新的问题。悲观锁和乐观锁悲观锁一般用于有状态,有连接的环境下,通常是客户/服务器系统。在更新会话中使用SELECT FOR UPDATE 锁定要更新的那一行。乐观锁,只有在要更新的时候,才去锁定行。为了防止出现丢失更新,乐观锁一般采用如下方法。1.在DML中带上旧值, 比如UPDATE EMPSET SALARY = :salWHERE empno= :no AND salary= :old_sal这样的话,如果其他用户已经修改了这一行,那么这
阅读全文
Oracle 10 - 数据库表
摘要:Oracle数据库表类型1.堆表2.索引组织表3.索引clustered表4.散列clustered表5.有序散列clustered表6.嵌套表7.临时表8.对象表9.外部表Oracle不同类型表的一些共同特性1. 一个表最多可以用1000个列。多于254列的行会被存储在多个单独的行段中,这些行相互指向, 每次必须重新组装为完整的行映像。2. 行数是没有限制的。但是有一些硬件或操作系统上的限制, 比如一个表空间最多可以有1024个data file, 每个data file 大小是32GB。 那么就能计算出这个表空间最大容量,然后根据每个行占用的字节,就可以计算出这个表空间中的表最大的行限制了
阅读全文
Oracle 9 - 分析undo和snapshot too old错误
摘要:什么操作会生成undoINSERT生成的UNDO最少,只要记录新的rowidUPDATE生成的undo多一点,它要记录修改前的数据中的那部分。DELETE生成最多的undo, 因为它要记录整行被删除的数据。如果修改的数据上带有index,那么讲生成更多的undo。ORA-01555: snpashot too old错误什么原因导致这个错误? undo段太小提交过于频繁查询时间太长出现snapshot too old错误详解(1) 比如undo设置15MB,假设基于这个数据库的事物每分钟生成3.5MB的undo,那么大约3~4分钟,undo段就会被循环重用一次undo段空间。 再这种环境下设置
阅读全文
Oracle 9 - redo和undo
摘要:1.redoredo 有在线redo日志和归档redo日志, 从Oracle 10g开始还新增加了flashback技术。每个Oracle数据库至少有2个在线重做日志组,循环写。只有INSERT, DELETE, UPDATE,MERGE才会生成redo日志,redo日志用于数据库故障恢复,比如系统崩溃,磁盘介质问题。2.undoundo 与redo相反, 修改数据时,会生成undo信息,以便回到更改前的状态。undo存放在数据库中一组undo变空间和undo段中。每次用undo恢复数据时,只是逻辑回滚,就是将数据恢复到更改前的状态。 物理变化不会被回滚,比如执行INSERT, 数据库为之创建
阅读全文
Oracle 6 - 锁和闩 - 锁类型
摘要:Oracle锁大类1.DML锁 (SELECT, INSERT, UPDATE, DELETE, MERGE是对数据库加的锁, 可能是行锁,也可能是表锁)2.DDL锁 (Create, Alter时对数据库加的锁, 保护对象结构定义)3.内部锁和闩latchDML锁TX锁(事物锁), 事物开始时持有这个锁,知道事物提交或回滚。注意:Oracle锁不会对系统带来更多的开销,原因是Oralce没有一个传统的锁管理器。通过查询V$transaction, v$session, v$lock可以得到当前事物,会话和被锁定的表。实验可以通过打开两个sqlplus 回话,然后update同一行数据,然后查
阅读全文
Oracle 6 - 锁和闩 - 并发问题和隔离级别
摘要:并发带来的问题1.脏读dirty read脏读的问题是transaction读到了没有被提交的数据。例如,T1更新了data1,还没提交,这时T2读取了更新后的data1, 用于计算和更新别的值, 然后T1又回滚了data1。如果是隔离级别是read commited, 那么T1就会对data1加exclusive lock, T2要等待T1释放锁才能读取到,就避免了脏读。2. 不可重复读 nonrepeatable read,不可重复读就是, transaction每次读一行都会得到不同的值。例如, T1读了一行数据data1, 这时T2更新或删除了data1,并提交,T1再次读取data1
阅读全文
Oracle 6 - 锁和闩 - transaction的可串行化
摘要:本文主要内容1.transaction的可串行化2.数据库并发带来的问题, dirty read, Nonrepeatable reads, Phantoms幻读3.隔离级别和2中的问题4. 悲观锁和乐观锁5. 锁类型,DML锁,DDL锁,闩,手动锁和用户定义锁什么是transaction可串行化通常,不管数据库初态怎样,一个调度对数据库状态的影响都和某个串行调度相同,我们就说这个调度是可串行化的。理想情况下,transaction就应该是可串行化的。 意思就是几个transaction同时执行和串行执行的结果应该是一样的。 所以,同时执行的时候,哪个先执行,哪个后执行无关。例子, T1和T2
阅读全文
Oracle 体系结构2 - 共享和专用服务器
摘要:1. 怎么查看自己的oracle是共享还是专用服务器2. 怎么修改设置3.各有什么优缺点4.适用环境对于专用服务器,每一个数据库连接,oracle都会分配一个专门的进程为其服务oracle@ora10g:~$ ps -aef | grep orcloracle 2096 2064 0 08:38 ? 00:00:01 oracleorcl (DESCRIPTION=(LOCAL=YES)(ADDRESS=(PROTOCOL=beq)))oracle 2252 2251 2 09:09 ? 00:00:00 oracleorcl (DESCRIPTION=(LOCAL=YES)(ADDRESS=
阅读全文
Oracle 体系结构2 - 实例和数据库
摘要:Oracle最最基本的概念: 实例和数据库实例就是oracle进程和一块共享内存,数据库就是静态的文件,如datafile, log file, redo logfile, control file, spfile等下面通过一些实验看看这些进程和文件1. 刚启动你的linux server的时候,还没有打开任何oracle 进程或服务, 查看进程: ps -aef | grep orcl返回结如下,可以看到什么oracle进程都没有oracle@ora10g:~$ ps -aef | grep orcloracle 1988 1825 0 08:32 pts/2 00:00:00 grep o
阅读全文
Oracle - 位图索引的适用条件
摘要:位图索引的适用条件位图索引适合只有几个固定值的列,如性别、婚姻状况、行政区等等,而身份证号这种类型不适合用位图索引。位图索引适合静态数据,而不适合索引频繁更新的列。举个例子,有这样一个字段busy,记录各个机器的繁忙与否,当机器忙碌时,busy为1,当机器不忙碌时,busy为0。这个时候有人会说使用位图索引,因为busy只有两个值。好, 我们使用位图索引索引busy字段!假设用户A使用update更新某个机器的busy值,比如update table set table.busy=1 where rowid=100;,但还没有commit,而用户B也使用update更新另一个机器的busy值,
阅读全文
0环境设置 - Statspack设置
摘要:简单说明Statspack主要用于永久存储performance statistics 信息只有作为sysdba连接时才能安装Statspack。然后改目录到#cd $ORACLE_HOME/rdbms/admin>@spcreate.sql然后它会自动提示你输入密码,使用的表空间,临时表空间。然后安装成功。详细说明Statspack是oracle强大的状态收集及性能诊断工具,是DBA及数据库相关人员进行问题诊断的重要手段,是DBAD的一大利器1、系统参数设置先查询系统参数show parameter job_queue_processesshow parameter timed_sta
阅读全文
0环境设置 - AUTOTRACE设置
摘要:Autotrace是sqlplus的一个工具,用来显示所执行查询的查询计划设置步骤• cd [ORACLE_HOME]/rdbms/admin• log into SQL*Plus as SYSTEM• run @utlxplan• run CREATE PUBLIC SYNONYM PLAN_TABLE FOR PLAN_TABLE;• run GRANT ALL ON PLAN_TABLE TO PUBLIC;创建PLUSTRACE角色cd [ORACLE_HOME]/sqlplus/admin• log into SQL*Plus as SYS or AS SYSDBA• run @pl
阅读全文
0环境设置 - SQLPLUS设置
摘要:define _editor=vi - SQL*PLUS默认编辑器set serveroutput on size 1000000 - 默认打开DBMS_OUTPUT, 不用每次使用都执行这个命令来启用set trimspool on - 假脱机输出文本时,会去除文本行两端的空格set long 5000 - LONG和BLOB显示的长度set linesize 100 - SQL*PLUS显示的行字符宽度set pagesize 9999 - 设置多久打印一次标题column plan_plus_exp format a80 - 设置有AUTOTRACE 得到的执行计划输出宽度, a80通常
阅读全文
|
|
|