Oracle的物理、逻辑结构概览(一)

2014-11-24 15:05:23 · 作者: · 浏览: 1
Oracle的物理、逻辑结构概览
声明:版本11gR2,CentOS5.8
1 物理结构(文件)
主要性能影响在IO上
(1)controlfile
[sql]
select * from v$controlfile
(2)datafile
[sql]
select * from dba_data_files
(3)redo (online logfile)
[sql]
select * from v$logfile
select * from v$log
(4)password file(sys)
[sql]
select * from dba_users
(从11g开始password项里变为空了,以免被破解)
2 逻辑结构
2.1 实例
instance(memory[sga]+process[background])
实例=内存(sga)+后台进程(background)
查看内存,可以通过以下视图
select * from v$sga_dynamic_components
后台进程,可以通过下面视图查看
[sql]
select * fromv$bgprocess where paddr!='00';
我们只关心paddr不等于0的就可以了,等于0的都是没启用
2.2实例的管理
参数文件spfilesid.ora,initsid.ora
两个文件可以互相转化
[sql]
create spfile from pfile;
create pfile from spfile;
(1)开启实例分为nomount,mount,open三个阶段
l nomount阶段
在开启到nomount阶段需要使用到参数文件,而从9i版本开始默认优先使用spfile参数文件,如果spfile文件没有就去使用pfile文件,如果pfile文件还没有,就会报找不到pfile文件的错误。
11g有一个新功能,也许是我才发现吧!!!首先先说下 数据库开启时,如果参数文件丢失或者损坏,不会导致数据库直接宕掉,但是如果数据库重新启动的话,就会报错,而且如果要是没有个好的备份的话,那是非常麻烦的事情,如果数据库在运行时及时发现了参数文件丢失或者损坏,可以使用如下方法处理:
[sql]
create pfile from memory;
所以参数文件一定要有个良好的备份。
可以通过v$instance视图查看数据库状态
[sql]
select status from v$instance;
通过v$bgprocess视图可以查看后台进程的情况
[sql]
select * from v$bgprocess where paddr<>’00’;
l mount阶段
开启mount阶段需要用到控制文件
可以使用参数control_files查看控制文件所在位置:
[sql]
show parameter control_files
如果控制文件损坏,在开启数据库的时候就会报错,而且告诉你去alert_sid.log里看具体错误信息,而这个文件所在位置,可以通过background_dump_dest参数去查看:
[sql]
show parameter background
注:alert_sid.log最大支持到2G大小,所以当业务特殊繁忙或者文件变的比较大的时候需要备份。
l open阶段
11gR2版本—经测试,其他版本不确定
可以从open阶段到mount阶段在到nomount阶段
[sql]
alter database close;
alter database dismount;
shutdown immediate
(2)关闭实例
1.normal
2.transactional
系统有事务的时候就关闭不了
系统有没有事务可以查看v$transaction视图
3.immediate
4.abort
2.3 参数的粗略概述
用db_cache_size和processes两个参数举例
首先查看v$parameter视图可以查看是否是静态参数或者是动态
[sql]
select name,issys_modifiablefromv$parameter wherename in ('db_cache_size','processes');
NAME ISSYS_MOD
-------------------- ---------
processes FALSE
db_cache_size IMMEDIATE
从ISSYS_MOD字段可以看出db_cache_size参数是立即生效,所以从这个可以看出db_cache_size字段是动态参数。
注意:其中processes参数如果过多比如更改为50000个数量的时候,数据库在重新启动的时候会挂住。
2.4 session(process)
A)process
[sql]
select * from v$process;
包含v$bgprocess
l 通过如下以下方法可以追溯到OS系统的进程
[sql]
SQL> select distinct sid fromv$mystat;
SID
----------
37
SQL> select sid,paddr fromv$session where sid=37;
SID PADDR
---------- --------
37 43BC365C
SQL> select addr,pid,spidfrom v$process where addr='43BC365C';
ADDR PID SPID
-------- ----------------------------------
43BC365C 20 11633
[root@elvis ~]# ps -ef | grepora
root 3762 3732 0 May30 00:01:02 hald-addon-storage: polling/dev/hdc
oracle 4604 1 0 May30 00:00:02/u01/oracle/product/11.2.0/dbhome_1/bin/tnslsnr LISTENER -inherit
oracle 7624 1 0 06:22 00:00:07 ora_pmon_elvis
oracle 7628 1 0 06:22 00:00:35 ora_vktm_elvis
oracle 7634 1 0 06:22 00:00:00 ora_gen0_elv