Oracle B OCM体系结构复习一
oracle进程查询:
ps -ef | grep ora_ | grep -v grep
select paddr,name,description from v$pgprocess;
内存地址,名称,描述等信息
进程1:SMON:系统监控进程,system monitor--实例启动的时候的恢复,释放不再使用的临时段,合并空闲资源。
进程2:PMON:进程监控,监控进程的进程,如果没有起来的进程会被PMON拉起来,process monitor,监测后台进程,并检测会话的问题,动态注册实例监听
因此日常会首先查看PMON进程是否启动来排障
ps -ef | grep pmon* |grep -v grep
进程3:DBWn--database writer ,数据落盘,有多个进程,将脏数据写入磁盘,懒惰写,能不启动就不启动,延迟写。那么有几种情况会触发这个进程,
a 】 检查点发生的时候
b】 bd_buffer自由空间不够
c】 脏数据太多
d】 超时
e】 表空间脱机,offline,只读,,热备时
f】 表DROP/TRUNCATE的时候
进程4:LGWR log writer 日志写进程,将脏数据写入在线日志里,redo log buffer --redo online logfile
ps -ef | grep LGWR |grep -v grep
循环写入,当前是group#是3
满足以下条件写日志
A】commit以后将写日志
B】 redo log buffer 满三分之一,或者1M ,将开始写日志
C】 3秒写一次
D] 脏数据
切日志:sqlplus下
alter system switch logfile;
再次查看V$log后会发现status已经切换了group#了,active代表还未落盘,inactive则代表已经落盘
进程5: CKPT 检查点进程,生成检查点,通知或督促dbwr写脏块,更新数据文件头部和控制文件中的检查点信息。full checkpoint, increment checkpoint, tablespace /datafile checkpoint
ps -ef | grep ckpt |grep -v grep
进程6:ARCn 归档进程 archive,数据库分为归档模式和非归档模式,那么如何查看当前的模式呢?可以通过sqlplus 命令行查看
sqlplus> archive log list
oracle存储结构 storage structures
查看某个参数
show parameter dump
查看数据库启动的日志,alert_你的sid.log
一般路径是在$oracle_home/diag/rdbms/xx/xx/trace/下
通过查看该日志可以获取数据库启动过程中的警告和错误信息
逻辑结构:
数据库的数据的处理发生在instance内存中,但是数据的存储发生在磁盘的database上
oracle数据库逻辑存储结构可分为数据库,表空间,段,区,块几个层次
查看表空间
select * from dba_tablespaces;
可以看到,表空间有system ,sysaux undotbs1,temp.users,example 等,其中用户的表空间都在users下,状态status如果是offline就脱机了
查看数据文件
select * from dba_data_files
数据在物理上是存储在数据文件中,即datafiles中,逻辑上是存储在段上,一个表为一个段,表只能在一个表空间中,不能存在于多个表空间中,一个表空间可以有多个数据文件。
数据对象都是段,有表,同义词,索引,undo段等等
要查看段segment可以通过dba_segments数据字典查看
select * from dba_segments where owner='SCOTT';
oracle块是数据库I/O的基本单位。
show parameter db_block
oracle 常见目录
$ORACLE_BASE,$ORACLE_HOME
env |grep ORA
其中$ORACLE_BASE目录里面包含了admin,cfgtoollogs,checkpoints,diag,fast_recovery_area,oradata,product
diag存放一些进程,oradata存放数据文件,日志文件,redo日志,控制文件等,background_dump_dest;告警日志和后台的trace文件,core_dump_dest核心的一些存储内核,user_dump_dest 用户dump出来的文件
$ORACLE_HOME安装数据库软件的目录
show parameter pfile
pfile和spfile
pfile是静态文件,spfile是动态二进制文件不可直接编辑,启动时可以指定pfile或者spfile来启动,如果以spfile启动,那么可以通过alter等方式来动态地修改配置文件,而如果修改pfile那么只有等到数据库重新启动后,再次读取才能生效。
启动时候可以通过startup spfile=" "来指定启动方式
在启动次序上,spfile是优先于pfile的
orapwPROD是密码文件,$ORACLE_HOME/rdbms/admin下有很多sql和脚本。network/admin目录下存放的是监听的文件
监听日志:$ORACLE_BASE/diag/tnslsnr/主机名/listener/alter/log.xml,这个日志满4个G 以后就不写了,会出现故障,因此要定时清理监听日志
进入监听命令行lsnrctl,查看状态status,
A】将日志置为off,set log_status off
B】备份监听日志 mv log.xml log.xml.bak
C】set log_status on
D】status
quit
就可以重新生成一个新的log.xml
数据库名称:
#在sqlplus下查看
show parameter name
oracle server包含了 database + instance
database:datafile control file redolog file
instance : sga + backgroud process
oracle memory: SGA+PGA,SGA:系统全局区,共享的,所有server process和backgroud process共享,PGA:程序全局区,私有的,每个server process和backgroud process拥有自己的pga
SGA:一个instance只有一个sga,sga为所有session共享,随着instance启动而分配,instance关闭,sga释放。
数据文件:可以通过查询看到
select * from v$datafile
select sum(BYTES)/1024/1024/1024 from v$datafile #查看目前数据库数据文件的大小容量
控制文件
select * from v$controlfile
在线日志文件
select * from v$logfile
IS_RECOVERY_DEST_FILE 字段代表是否开启了镜像,如果开启了镜像,那么就可以在损坏的时候恢复。
内存:
show parameter memory
SQL> show parameter memory NAME TYPE VALUE ------------------------------------ ----------- ------------------------------ hi_shared_memory_address integer 0 memory_max_target big integer 6432M memory_target big integer 6432M shared_memory_address integer 0
SGA:
shared pool 共享池,共享池是对sql 等程序进行语法分析,编译,执行的内存区域
select * from v$sql --内存表,所有执行过的sql都在内存中,内存刷新则消失
database buffer cache 数据缓冲区
读取磁盘数据放入缓存中
redo log buffer 日志缓冲区
记录数据变更写入日志
large pool 大池
为了进行大的后台进程操作而分配的内存空间,与shared pool管理不同,主要用于RMAN备份恢复及并行查询操作
java pool java池
代码和数据
streams pool 流池
PGA:
主要用来缓存oracle服务器进程和后台进程的数据和控制信息
进程结构:
1.用户进程 2 服务器进程 3 后台进程(写日志,LGWR,落盘DBWR)
select username,sid,serial# from v$session where username='XXX' #杀进程 alter sytem kill sessin 'sid,serial#'
ps -ef |gre[ LOCAL-YES |grep -v grep