当前位置:数据库 > Oracle >>

Oracle的物理、逻辑结构概览

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_elvis  
oracle    7638    1  0 06:22 ?        00:00:01 ora_diag_elvis  
oracle    7642    1  0 06:22 ?        00:00:00 ora_dbrm_elvis  
oracle    7646    1  0 06:22 ?        00:00:01 ora_psp0_elvis  
oracle    7650    1  0 06:22 ?        00:00:35 ora_dia0_elvis  
oracle    7654    1  0 06:22 ?        00:00:05 ora_mman_elvis  
oracle    7658    1  0 06:22 ?        00:00:03 ora_dbw0_elvis  
oracle    7662    1  0 06:22 ?        00:00:02 ora_lgwr_elvis  
oracle    7666    1  0 06:22 ?        00:00:16 ora_ckpt_elvis  
oracle    7670    1  0 06:22 ?        00:00:06 ora_smon_elvis  
oracle    7674    1  0 06:22 ?        00:00:00 ora_reco_elvis  
oracle    7678    1  0 06:22 ?        00:00:11 ora_mmon_elvis  
oracle    7682    1  0 06:22 ?        00:00:07 ora_mmnl_elvis  
oracle    7686    1  0 06:23 ?        00:00:00 ora_d000_elvis  
oracle    7690    1  0 06:23 ?        00:00:00 ora_s000_elvis  
oracle    9125    1  0 10:26 ?        00:00:00 ora_arc0_elvis  
oracle    9129    1  0 10:26 ?        00:00:00 ora_arc
Oracle
MySQL
Access
SQLServer
DB2
Excel
SQLite
SYBASE
Postgres
如果你遇到数据库难题:
请访问www.zzzyk.com 试试
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,