1.启动关闭
1.1:启动:主要分为三个阶段
nomount:用于读取DB的基础信息,如数据库名等basic info
mount: 用于读取控制文件信息ctl ,主要为数据文件存储器信息等
open: 用于根据ctl信息,打开Data信息
1.2:关闭:
shutdown inmmediatly :最快捷的关闭方式
shutdown normal: 正常关闭
shutdown Transactional:事务执行完成再关闭
2.Oracle与mysql索引存储
mysql:指定主键,利用主键来建立B+树索引
Oracle:是堆表,其索引结构也是利用B+索引,同样是B+树索引
注:索引的格式很多,比如B+树索引,Hash索引等等
经索引后的数据是排序的,升序降序是可以通过索引的扫描顺序来确定
3.statement 与 preparestatement
oracle当中有共享池的概念,会缓存相同的sql语句.用带参数的sql执行(preparestatement)相当于执行同一条语句,复用同一个执行实例。在mysql或者其它数据库当中也有类似的作用(其内部实现用hash) 。所以preparestatement比statement执行更有效率。同时preparestatement还可以有效防sql注入,安全性能更高。
4.orcale数据一致性
先写relog,再写data block.
事务commit时,必须保证relog写成功
事务执行未成功时执行undo.log,rollback数据文件.
5.sql语句的隐性转换
5.1:select * from table1 where name=3
||此时3为数值类型,name为string,则会发生转换,toNum(string) = 3
5.2:java的date类型到oracle会转换为timestamp,解决方法为直接设置date类型为string,在插入oracle时用toDate(String)进行转换。
6.SGA:System Global Area是Oracle Instance的基本组成部分,在实例启动时分配;
系统全局域SGA主要由三部分构成:共享池、数据缓冲区、日志缓冲区。
共享池:Shared Pool用于缓存最近被执行的SQL语句和最近被使用的数据定义,
主要包括:Library cache(共享SQL区)和Data dictionary cache(数据字典缓冲区)
共享SQL区是存放用户SQL命令的区域,数据字典缓冲区存放数据库运行的动态信息
缓冲区高速缓存:Database Buffer Cache用于缓存从数据文件中检索出来的数据块,可以大大提高查询和更新数据的性能
大型池:Large Pool是SGA中一个可选的内存区域,它只用于shared server环境
Java池:java Pool为Java命令的语法分析提供服务
PGA:Program Global Area是为每个连接到Oracle database的用户进程保留的内存。
7.oracle数据容灾概念
1.块复制概念:直接复制块内容,类似于mysql的行复制
2.sql复制: 通过执行sql进行恢复,类似内存数据库如derby等的恢复机制