1.修改Shared pool(共享池)
alter system shared_pool_size = 64M;
注意:不能单独修改库缓冲区和数据字典缓冲区,oracle会按一定的比例分配,优先分配数据字典缓冲区。只能通过修改共享池的方法进行。
2. Database Buffer Cache(数据库缓冲区)
1)stores copies of data blocks that have been retrieved from the data files
从数据文件读取到的数据块的拷贝放到数据库缓冲区中
2)Managed through an LRU(最近最少使用) algorithm(算法)
3)修改Database Buffer Cache alter system set db_cache_size=96M
3. IO操作
1)物理I/O:从数据缓冲区搜索不到所要的数据,就要从磁盘中读取;
2)逻辑I/O:从数据缓冲区搜索到所要的数据。
4. Redo Log Buffer(重做日志缓冲区)
1)Records all changes made to the database data blocks
用来记录被修改数据库的数据块
2)Primary prupose is recovery
主要目的是恢复
3)Changes recorded within are called redo entris(日志条目)
改变的记录翻译成的日志条目
4)Redo entries contain information to reconstruct(组织) or redo changes
日志条目包含重新组织日志信息
5)Size defined by log_buffer
(不能指定M),不要过大的设置。
5.设置SGA alter system set SGA_max_size
颗粒是分配SGA的最小单位
6.oracle执行sql的过程
a.parse(解析)
软解析/硬解析(第一次执行sql需要进行硬解析)
1)从共享池的库缓冲区搜索,确定该语句是否曾经执行过,凡是执行过的sql语句,oracle会使用hash函数进行计算,产生一个很小的文本记录。如果是第一次执行,则进入第二步;
2)检查语法、权限等等(权限的信息是存放在oracle的数据字典中),oracle先从共享池的数据字典缓冲区中搜索,如果没有找到,再从数据文件(system表空间的数据文件)中读取,然后存放在共享池的数据字典缓冲区中,以便共享;
3)分析过程中,对访问到的表进行锁操作,目的是为了保护表的结构不被修改;
4)oracle优化器会根据数据的存储结构(表的存储结构、索引)统计信息等。计算各种读取的代价,选择一条最佳路径(代价最低),生成执行计划,同时编译并存储在共享池的库缓冲区中,以便共享。
b.bind(绑定变量)
c.execute(执行)
先从数据缓冲区查找数据,如果没有,再从数据文件中读取数据到数据缓冲区、保持,以便共享。
d.fetch
把结果返回给用户。
7.oracle进程分为:user process、server process和Backgroud process。
8.Backgroud process包括:DBWR,LGWR,PMON,SMON,CKPT,OTHERS。
9. Database Writer(DBWn)保存、释放
将脏数据块从数据库缓冲区通过DBWn写入到数据文件中
DBWn writes when:
1)Checkpoint occurs 检查点的发生
2)Dirty buffers reach threshold 脏缓冲区数据达到一定的阀值
3)There are no free buffers 没有可用的空间(没有空闲空间)
4)Timeout occurs 超时
5)RAC ping request is made
6)Tablespace OFFLINE 表空间为offline
7)Tablespace READ ONLY
8)Table DROP OR TRUNCATE 表的删除
9)Tablespace BEGIN BACKUP
10. Log Writer(LGWR)
将日志条目从log buffer写入到Redo log files文件中
LGWR Writes When:
1)At commit 提交
2)When one-third full 达到1/3
3)When there is 1MB of redo 日志缓冲区达到1MB
4)Every three seconds 每隔3秒
5)Before DBWn writes 在DBWn写之前
11. System Monitor(SMON)系统监视进程
Responsibilities(责任):
1)Instance recovery 实例恢复
a)Rolls forward changes in online redo log files 前滚,把redo log重做一下
b)Opens database for user access 把数据库打开
c)Rolls back uncommitted transactions 回滚没有完成的事务
2)Coalesces free space 整合空闲空间
3)Deallocates temporary segments 释放临时段
12. Process Monitor(PMON)进程监视进程
Cleans up after failed processes by(进程失败以后需要的工作):
1)Rolling back the transaction 回滚事务
2)Releasing locks 释放锁
3)Releasing other resources 释放其他资源(释放server process和PGA)
4)Restarting dead dispatchers
13. Checkpoint(CKPT)
Responsible for(职责):
1)Signaling DBWn at checkpoints 给DBWn写的信号
2)Updating datafile headers with checkpoint information用checkpoint信息更新数据文件头
3)Updating control files with checkpoint information 用checkpoint信息更新控制文件
14. 日志组的状态
1)unused:表示该日志组从未被使用;
2)current:当前正在使用的日志组,当前lgwr正在写的日志组;
3)active:表示记录在该日志组的事务所造成的数据块的改变,没有完全从数据缓冲区中写入到数据文件。日志组属于这种状态,是允许被覆盖,一旦写完成,则变成inactive状态;
4)inactive:记录在该日志中的事务所造成的数据块的改变,完全从数据缓冲区中写入数据文件,日志组属于这种状态,可以被覆盖。
15. alter system switch logfile
是强制日志切换,不一定就是归档当前的重要日志文件(若自动归档打开,就归档当前的重做日志,若自动归档没有打开,就不归档当前重做日志)
16.alter system archive log current
是归档当前的重做日志文件,不管自动归档有没有打开都归档,这条命令导致oracle切换到一个新的日志文件,当前联机重做日志文件归档,并且oracle归档所有未被归档的重做日志文件。
17. SCN(System Change Number),用来标识事务的前后顺序,比如进行一个updae,oracle为这个操作分配了scn号为100,如果这个update操作修改了某个数据块,那么该数据块的scn号就会被修改为100
18.查看事务commit的日志记录
select sequence#,to_char(first_time,'yyyy-MM-dd hh24:mi:ss') from v$log_history;
通过这条语句看出一段时间内的事务commit的繁忙情况
19. 保证lgwr始终都有可用的日志组去写日志
20. 添加日志组(Adding Online Redo Log File Groups)
alter database add logfile group 3('$HOME/ORADATA/u01/log3a.rdo','....') size 1m
注意:保证日志组的大小一致,个数一致,放在不同的磁盘上
21. 添加