oracle给用户解锁 alter user scott account unlock; 设定密码:alter user scott identified by tiger;
sql语句的三大能力:投影(projection),选择(select),连接(join);
查看oracle表空间 :select * from dba_tablespaces;
一般来讲 默认表空间:users, 临时表空间:temp
create user student identified by oracle
default tablespace users temporary tablespace temp
创建用户student默认表空间为users临时表空间为temp
grant connect,resource to student; 授予student用户select和resource权限
show user查看当前用户
@I:\Users\eko\Desktop\test.sql; 在命令窗口直接执行test.sql;
SGA是sql,plsql程序进行语法分析编译执行的内存区域 由库缓存(library_chche),控制结构(control_struncture)
shared_polol_size决定大小 ,oracle10g自后采用自动管理的方式。如果过小会导致latch争用
alter system set flush shared_pool 可以清楚shared_poll内存中的信息
对于sql语句 如果以前执行过,则按照以前执行的计划执行,通常是软分析或快速软分析
通过pga提交sql语句>parse语句>softparse>执行语句>通过PGA输出
没执行过 ,oracle开始分析语句的语法,语义,按照优化器规则获得最佳执行计划,在内存中保存这个语句的执行计划等相关信息,便于下次快速调用
通过pga提交语句>parse语句>hard parsw>分析与得到优化方案cbo或rbo>根据优化方案制定执行计划>执行语句>通过pga输出
sqlplus 查看共享池大小 show parameter shared_pool_size;
show parameter sga_target :查看sga_target大小 sga_target=0即为SGA手动管理
databuffercache :通常情况下,数据块读写,undo块读写,都会经过这个区,并适当保存在缓冲区,下一次操作同样数据在缓冲区会提高相应速度
oracle11g采用了更简化的内存管理 show parameter memory
MEMORY_TARGET--操作系统的角度上 Oracle 所能使用的最大内存值。动态参数 MEMORY_MAX_TARGET--MEMORY_TARGET所能设定的最大值。非动态可调。
oracle服务器是由数据库和实例组成的,实例是内存和后台进程的总称,但是数据库是实例和文件的总称
oracle rac多个实例,一个库
ipcs -m可以查看oracle占用的共享内存段
共享池:主要是存放sql语句
数据库缓冲区:db_cache_size 存放数据库的数据块 db_block_size为最小单元
日志缓冲区 log_buffer
大型池:large_pool_size
show large
PGA:私有全局区
用户进程:在数据库用户请求连接到oracle服务器时启动
服务器进程:可以连接到oracle实例,它在用户建立会话时启动
后台进程:在启动oracle实例时启动
smon:处理数据库,undo,temp,表空间回收
dbwr:主要处理数据库缓冲区的数据写到硬盘
lgwr:把log_buffer的数据写到日志文件
ckpt::出发dbwr的写脏数据到数据文件
pmon:清空用户连接上来的哪些进程
用户进程:客户端或客户发起的连接进程
服务进程:服务器端期东方的为客户发起连接的进程
数据库的连接模式:专有模式,共享模式
服务器端的内存:
数据库sqa,数据库pga,服务器端的进程
共享模式:一定是连接处理速度要快,
select * from v$controlfile; 查看控制文件的存储
show parameters control
ps -ef|grep ora_ :查看oracle后台进程
闩锁(latch)概述
Oracle数据库使用闩锁(latch)来管理SGA内存的分配和释放.Latch是用于保护SGA区中共享数据结构的一种串行化锁定机制。Latch的实现是与操作系统相关的,尤其和一个进程是否需要等待一个latch、需要等待多长时间有关。
Latch是一种能够极快地被获取和释放的锁,它通常用于保护描述buffer cache中block的数据结构。与每个latch相联系的还有一个清除过程,当持有latch的进程成为死进程时,该清除过程就会被调用。Latch还具有相关级别,用于防止死锁,一旦一个进程在某个级别上得到一个latch,它就不可能再获得等同或低于该级别的latch。
Latch 不会造成阻塞,只会导致等待。 阻塞是一种系统设计上的问题,等待是一种系统资源争用的问题。