分类: Oracle
2008-09-09 10:26:46
Oracle 初始化参数文件管理: (pfile文件 和 spfile 文件)
Pfiel参数文件:
pfile 参数文件也叫文本参数文件,在oracle9i 版本之前只有这种参数文件,可以直接编辑它.
oracle新建立一个数据库就会建立一个pfile参数文件,默认的名字是init
pfile的创建有2中方法:
简单的方法: 由dbca工具生成一个数据库,其为图形化向导,简单易懂.其生成数据库过程中有一个选项:保存要生成的数据库的配置文件,这个就是我们想要的pfile文件.
麻烦一点的方法: 自己根据oracle联机文档一点点的找个各个pfile参数文件中的每个选项的含义.手工生成pfile参数文件.
Spfile参数文件:
因为修改pfile参数文件使其生效必须restart database;所以就有了spfile参数文件.
spfile 参数文件 :
server parameter file, 是binary 文件,所以不能编辑它.其默认文件名为:
spfile
spfile参数文件的内容和pfile参数文件的内容是一样的,只是文件类型不一样而以.
pfile 和spfile 之间是可以转化的:命令为: create spfile from pfile;反之也可以.
Database 启动的时候先找spfile
如果要启动自定义的参数文件,这样:
Sql>startup pfile=/home/oracle/conf/你要用的参数文件.ora
配置/修改 参数文件:
Sql>alter system set 参数名=参数值 scope=spfile|memory|both scope默认是both.
----------------------------------------------------------------------------------------------------------------------
密码文件orapw
作用: 认证哪些用户有权限 开启和关闭 oracle实例
密码文件: $oracle_home / dbs / orapw
密码命令:
Sql>orapwd file=orapw
参数含义:
Filenamee: 密码文件名
Password: 设置internal / sys 帐号的口令.
Entries: 密码文件中可以存放的最大用户数,对应允许以sysdba/
Sysoper权限登陆数据库的最大用户数.如果超过此限制,必须重建密码文件.
向密码文件中增加/删除用户的命令:
当init
系统允许除sysoper/sysdba以外的用户以管理员身份从远端或本机登陆
这些用户的用户名必须存在于密码文件orapw
以sysdba权限登陆;
启动实例并打开数据库
Startup
创建相应的用户帐号, 对其授权
Sql>create user 用户名 identified by 密码; // 创建用户命令
Sql>grant connect,resource,session,dba<权限> to user;// 赋予权限给用户
权限代码: connect 连接shujk
Resource 访问资源
Create session 系统特权:为用户提供连接数据库的能力
Dba 一个具有超过120个系统特权的角色.
改变用户的密码:
Sql>alter user 用户名 identified by 新密码; // 要有dba的权限才行
锁定帐号 和 解锁帐号:
Sql>alter user 用户名 account unlock; //解锁帐号,新密码=用户名
5.
密码文件orapw
Init
None : 指示oracle系统不使用密码文件, 特权用户通过操作系统进行身份认证.
Exclusive : 指示只有一个实例使用密码文件, 在此设置下的密码文件可以包含除了internal / dba以外的用户,即允许将系统的sysoper / sysdba 的权限赋予sys/internal 以外的用户
Shared : 指示可以有多个数据库实例可以使用此密码文件,在此设置下只有sysoper / sysdba帐号能被密码文件识别,即使密码文件中有其他用户信息,也不允许他们以sysoper/sysdba权限登陆.
Oracle 实例(instance)详解:
oracle instance 是由内存区域和后台进程组成的.分为:单进程实例和多进程实例
SGA: oracle实例的共享内存区域.
后台进程: 在数据库启动后常驻内存的oracle 进程.如:pmon, smon, dbwr,等
最大数量不能超过参数 process 设定的值.
SQL> show parameter process
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
aq_tm_processes integer 0
db_writer_processes integer 1
gcs_server_processes integer 0
job_queue_processes integer 10
log_archive_max_processes integer 2
processes integer 150
用户进程:一个用户运行一个应用程序如sqlplus,为用户的应用建立一个进程..
服务进程: 用于处理用户连接到该实例的用户进程的请求.
---------------------------------------------------------------------------------------------
DBWR进程:
dbwr进程即: database writer进程; 将缓冲区的数据写入数据文件,负责数据缓冲区的管理.当数据缓冲区中的一个数据被修改后,被标记为’durty’(脏),改进程放在将脏数据磁盘. Dbwr进程采用LRU算法来替换数据缓冲区的数据.
作用:
1.管理数据缓冲区,让服务器进程总能找到空闲缓冲区.
2将dirty buffer中的数据写入到datafile中,目的是腾出sga内存空间和advance checkpoint.
3使用LRU 算法将最近使用过的块保留在缓冲区.
4通过延迟写数据来优化i/o性能.
5.当发生log switch时,会发出checkpoint.
6.当online log file需要被重用时,checkpoint还没有做完的话,alert文件里会有checkpoint note complet的警告.
7.当dbwr的性能低下时,我们会发现很多free buffer waits和write complete waits的的等待.
8. 可以配置多个dbwr进程,最多20个,参数:db_writer_processer.可以利用多个并行cpu
9.如果操作系统支持AIO,dbwr可以不用的等待操作系统写完,而继续下一个dbwr请求.
10.如果操作系统不支持AIO,可以用dbwr slaves来模拟.参数为:dbwr_io_slaves
运行机制:
数据缓冲区中的’脏’表到一定程度(由DB_BLOCK_WRITE_BATCH参数
决定)写入数据文件.
当一个服务器进程在LUR表中查找DB_BLOCK_MAX_SCAN_CNT缓冲区时.
没找到空闲的缓冲区时
出现超时
检查点发生时.
可以启动多个dbwr进程在一个实例中,该进程数由 DB_WRITE_PROCESSS
指定,上限=20,命名依次为:DBW0,DBW1,DBW2,DBW3等
LGWR进程:
Lgwr进程(log writer) 将日志数据从日志缓冲区写入到磁盘日志文件中
(Redo log buffer ----à redo log file)
Lgwr进程采用sequenctial(连续的,有顺序的)写入file.而dbwr进程是scatter(
分散的),所以lgwr的性能要高很多.
运行机制:
当发生提交,commit.
日志缓冲区达到1/3时; 3S , commit, redolog buffer > 1/3 时.都会触发lgwr
超时
dbwr进程需要为checkpoint清除缓冲区时
一个instance 只有一个lgwr进程
lgwr进程将日子信息同步写到日子文件组的多个日志文件中,如果一个日志文件不可用,将继续写入下一个日志文件中.不影响系统
SMON进程:
Smon 进程(system monitor) 系统监控进程,在实例启动时执行实例恢复
并清理不在使用的临时段.
1. 清理连市空间,真正的临时段不需要清理,由系统自动清理.但是:某些操作如create index 产生的临时段的昂create index的session不正常中止时,此时需要smon来清理
2. 如果使用字典管理表空间,smon负责降连续的空闲extent(范围)合并.
3. recovers trancaction active against unavailable files,
这个过程和实例启动时进行的instance crash recovery(自动前滚和回滚)相似.但是:
由于实例启动时某些文件无法访问,而实例启动后的某个时间点可以访问这些文件,smon就会对其执行recover.
4. performs instance recovery of a failed node in Rac:
当rac的某个节点失败时,某个剩余的节点就会打开失败节点对应的redo log,进行recovery.
5. cleans up OBJ$:
Obj$是个底层的数据字典,include all 数据库对象信息.某些对象被删除时,由smon进程来clean up该视图.
6. shrinks roolback segment :
如果设置了optimal size参数,smon进程负责执行回滚段的自动收缩.
7. offlins rollback segment:
当用户offline某个回滚段时,单此时该回滚段有active trancsation,这是回滚段的状态其实是pengding offline,而smon进程会定期的检查该回滚段的事务是否完成,完成即将其变成offline.
PMON 进程:
Process monitor: 进程监控,在服务进程出现故障时执行进程恢复,负责清理
内存和释放该进程使用的资源.
1. 连接在不正常中止时,pmon负责释放资源,rollback事务.
监控后台进程,如果backgroud process不正常中止时,负责restart 进程.如:dispatchers
或者中止实例.
2. instance 启动时,pmon负责注册实例到监听上,在实例启动时检查监听进程是否启动.
相关参数:local_listener
ARCH进程:
Archive process: 归档进程,在日志存满时将日志信息写入到磁盘,用于介质
失败时的恢复.
日志信息首先产生于log buffer区,再由lgwr进程写入到log group中,
Log switch时由arch进程将log data write to archive file from log group.
一个实例中最多有10个arch进程,相关参数:
CKPT: checkpoint pracess
1. ckpt 进程不是作checkpoint的,(a checkpoint is the writing if dirty(modified) blocks from the buffer cache to disk)而是在发生checkpoint时,修改数据文件头的
2. 在oracle8 以前,ckpt的任务可以由lgwr进程执行.在oracle8以后.ckpt进程必选.
ASMB: automatic storage management background
1. 当使用asm存储database file时,启用该进程
2. 该进程负责和asm实例进行通讯
Rbal: rebalance
1. 当使用asm存储database file时,启用该进程
2. 改进程负责当从asm diskgroup中增加/减少 disk时.reblance数据
Lmon: lock monitor
1. rac下的进程
2.负责监控rac集群中的实例是否fail
3. 方rac中实例增加/减少时,负责重新分配lock和其他资源
Lmd: lock management daemon
1.rac下的进程
2.将global cache service(keep he block buffer consistent between instance)的锁请求发送给lmsn控制的队列中.
LCK0:Lock
1)RAC下的进程
2)作用和LMD类似,但它不仅处理data block
buffer的请求,也处理其它的global resource
DIAG:Diagnosability
daemon
1)RAC下的进程
2)监控各个实例是否health,并且在发生fail时,进行capture