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

 

posted @ 2022-07-22 22:36  BlackData  阅读(118)  评论(0编辑  收藏  举报