oracle数据库DBA笔记

oracle分两个大块:
instance和database

instance就是memory structures,多个instance可以对一个database。
background process structures就是进程,主要是oracle的内部进程。

connection先通过tcp连接server process,server process主要处理客户端和服务器的连接,然后是session连接oracle server。

oracle database:
a collection of file,三种基本文件;data files,control files,redo log files(重做日志,恢复data files)。
周围的文件:parameter file参数文件。archived log files 归档日志。

上机:ps -ef查看进程
进入u01目录,进入oradata目录,就可以看到control01.ctl就是control files,redo01.log,system01.dbf就是data files。可以看到385000000就是300多MB。

启动oracle:sqlplus /nolog
进入后SQL> conn / as sysdba
clear scr 清屏
startup就可以启动了。
!就可以切换到shell模式

ps -ef

oracle就可以看到instance。

memory structure:system global area SGA,在instance里只有一个SGA。
program global area PGA,在server process里有一个PGA,PGA有很多。
oracle很吃内存,会用掉所有可以用的内存。大量内存消耗到SGA上。

ipcs查看ipc状态。进程状态。

oracle使用的是shared memory segment,共享字节,相对应的show sga可以看到total system global area 的大小和共享字节有关系。

SGA:shared pool\database buffer cache\redo log buffer\large pool\java pool

SGA:is dynamic。SGA_MAX_SIZE可以设置最大SGA。granules是最小单位。SGA小于128M,granule就是4M;SGA超过128M,granule就是16M。
查看granule:SELECT component,granule_size from v$sga_dynamic_components;

客户的数据库目前sga配置为64G,processes需要从6000提高到8000,因为根据ORACLE文档processes越大,_ksmg_granule_size设置的也要越大,把_ksmg_granule_size设置为64M。

SGA:DB_CACHE_SIZE;LOG_BUFFER;SHARED_POOL_SIZE;LARGE_POOL_SIZE;JAVA_POOL_SIZE

oracle11后可以自动调整,大大简化了oracle的管理。

shared pool:包含library cache和data dictionary cache。可以改变性能。library,是包含历史的sql语句编译。data dictionary是存储数据库控制信息。

database buffer cache:访问或者即将写入数据的cache,最小单位是DB_BLOCK_SIZE来决定。

database buffer cache:DB_CACHE_SIZE;DB_KEEP_CACHE_SIZE;DB_RECYCLE_CACHE_ZISE。改变ALTER SYSTEM SET DB_CACHE_SIZE = 96M; 
收集的不同cache信息行为使用V$DB_CACHE_ADVICE统计信息。

redo entries就是每一个操作,都会记录等待恢复。大小由LOG_BUFFER。

large pool和jave pool都是辅助的可选项。

PGA:是每个进程都会有PGA。而且只用在一个进程。

process structure:user process连接服务器的客户端,可以有多个;server process负责连接客户端的服务器进程,可以有多个,连接后oraclewilson local=no;background process,也可以用很多个ora_xxx_wilson wilson是SID。

通过客户端和本机连接服务器的区别:两台计算机连接使用tcp/ip连接,同一个计算机连接使用ipc连接,同时也可以使用tcp/ip模拟连接通过l0的本地回路。

background process:mandatory和optional。
mandatory:DBWn,PMON,CKPT,LGWR,SMON.
optional:ARCn,LMDn,QMNn,CJQ0,LMON,RECO,Dnnn,LMS,Snnn,LCKn,Pnnn.

database writer DBWn:dbw0,把database buffer cache写入到data files,oracle支持20个dbw。
log writer LGWR:和dbw类似,是把redo log buffer写入到redo log files,before dbwn writes,and lgwr and redo log files is a circle always。

system monitor SMON:负责回收,清理作用。intance recovery。

process monitor PMON:负责监控进程。定期查看process,如果有问题重新生成process。

checkpoint CKPT:和LGWR相似,但是工作内容更琐碎。

Archiver ARCn:把redo log files归档到archived redo log files。

logical structure:1个server只有一个database,1个database可以有多个tablespace表空间,1个tablespace可以有多个segment或者多个datafile,segment可以横跨datafile,1个segment多个extent,1个extent是连续的blocks,block是最小的逻辑单位。1个block对应系统的block的整数倍。

连接oracle的状态:1.先做安全检查 2.语句解析 3.binding 变量4.execute

SQL:queries return rows查询,DML修改,commit等,会有差异。

DB Administration tools:很多工具,oracle universal installer(install,upgrade,remove components);oracle database configuration assistant(OUI);SQL Plus;oracle enterprise manager:变化比较大,需要另外学习。

批量安装:准备myrespfile
./runInstaller -responsefile myrespfile -silent
例子在安装文件内的response目录内的.rsp文件。
 
dbca工具,初学管理表创建表工具,目录bin下ll dbca可以看到dbca
./dbca
sys and system两个账号。sys相当于root,system仅次sys。
sys owner of the database data dictionary。password:change_on_install
system owner of additional internal tables and views used by oracle tools.password:manager
最好改密码并且多使用system。

SQL*Plus:
sqlplus /nolog
connect / as sysdba 
startup 启动oracle

lsnrctl start 启动listener

oracle enterprise manager:oracle management server中增加agent(oracle server),同时对用户提供console,来控制oem。
oem暂时不稳定,还在迭代中。

initialization parameter files:启动oracle时,读取spfiledb01.ora,里面设置了oracle instance。

parameter:explicit显示参数,implicit隐式参数。
parameter可以有多个。对应的两种不同参数文件:PFILE和SPFILE,

desc v$parameter;

select name,value from v$parameter;
col name format a20 //整理为20个字符
col value format a30 //整理为30个字符
/ //重新打印两列

查找其中一个值,也就是筛选出来。
select name,value from v$parameter where name='pga_aggregate_target';

还可以模糊查找
show parameter pga_ag;

PFILE:是一个普通记事本文件,可以手动修改,无法立即生效,只能关闭oracle,再开启才能使用。目录:$oracle_home/dbs windows目录:database

env | grep oracle_home 查看$oracle_home

SID:site identifier,oracle_home and SID are hashed together in unix.then on the same oracle_home and uniquely identify SID.

推荐使用dbca工具来创建,如果手工创建,最好找一个created a sample in other server。
cp init.ora $oracle_home/dbs/initwelson.ora

实验:mkdir old
mv * old //把所有文件放到old文件夹内
cp init.ora $oracle_home/dbs/initwilson.ora
vi initwilson.ora
查看modified看到修改日期,找到对应测试的版本。确定是否实用当前版本。

查看文件,目录:oradata/wilson/control01.ctl
修改control_files
vi initwilson.ora
control_files = ('/u01/oradata/wilson/control01.ctl','/u01/oradata/wilson/control02.ctl')

修改db_name和db_block_size=8192
db_name = 'wilson' 就是目录:oradata/wilson

real application clusters:RAC

SPFILE:二进制文件,不允许直接修改,只能通过sqlplus,但是修改后马上可以启用,现在大部分都使用spfile。

通过pfile创建spfile
create spfile = '$oracle_home/dbs/spfileDBA01.ora'
from pfile = '$oracle_home/dbs/initDBA01.ora';
或者直接create spfile from pfile;

strings spfilewilson.ora | more 就可以把二进制提取字符串,可以查看。

spfile也可以创建pfile,来vi查看内部信息修改。通过create pfile/spfile  from spile/pfile来进行相互转换
create pfile from spfile='spfileorcl.ora';

spfile中前面会有SID.或者*.是rac对于不同数据库不同instance对应一个数据库。

修改parameter pfile 或者 spfile:
alter system set parameter = value <comment='text'> <deferred> <scope=memory|spfile|both><sid='sid|*'>
comment 注释
deferred 下次登录再更改
scope 缺省为both
sid 为唯一标示

show parameter fast_

alter system set fast_start_mttr_target = 250;

desc v$parameter; //所有参数都保存在这个表内

deferred:desc v$parameter 中ISSYS_MODIFIABLE中为deferred就是deferred

select name,issys_modifiable from v$parameter where issys_modifiable = 'DEFERRED';

如果查看参数查看reference,如果查看语句查看SQL reference的帮助文档。

deleting or resetting values:删除或者使用缺省值。
alter system reset fast_start_mttr_target scope = both sid = '*';

oracle的启动
STARTUP顺序:spfileSID.ora or default spfile.ora or initSID.ora or default pfile
override default pfile:startup pfile = $oracle_home/dbs/initDBA1.ora

PFILE can indicate to use SPFILE.
PFILE.ora add : SPFILE = /database/startup/spfileDAB1.ora
最后pfile和spfile兼容就是在pfile内增加spfile,然后启动startup时 pfile启动。

most popular文档中concepts介绍概念,administrator's guide主要的DBA内。

查看用户信息,输入id

startup nomount //开启所有oracle的服务,启动ipcs进程,但是没有启动数据

alter database mount; //参数化中controlfile文件启动。普通用户还是无法访问。

alert database open; //如果无法打开数据库,需要再次回到mount状态,进行recovery datafiles or redo log files。之前offline的tablespace还是会offline,需要手动打开。

startup [force][restrict]
open <READ {ONLY | WRITE [RECOVER]} | RECOVER>
restrict是一个特权用户才能连接的状态

alert system enable restricted session; //system用户可以访问

alert database db01 mount;

startup mount;
alert database db01 open read only; //read-only

create user boobooke identified by bbk; //create boobooke/bbk

grant connect,resource to boobooke;//授权boobooke用户connect,resource权利,没有restricted

desc v$session; //查看所有session连接用户

select username,sid,serial# from v$session;//查看sid 和serial#,注意sys是本地用户

alter system kill session '15,6';//kill system用户的session

shutdown immediate //关闭数据库,abort,immediate,transactional,normal

测试一下 select * from dual;

log file:alertSID.log file and background trace files and user trace files。
background:SID_processname_PID.trc
user:SID_ora_PID.trc
alertSID.log:

show parameter dump //参数包含dump
查看background_dump_dest的位置alertSID.log的位置、

在ORACLE 11g 以及ORACLE 12c中,告警日志文件的位置有了变化。主要是因为引入了ADR(Automatic Diagnostic Repository(自动诊断仓库):一个存放数据库诊断日志、跟踪文件的目录,关于ADR对应的目录位置可以通过查看v$diag_info系统视图。

select * from v$diag_info;
Diag Trace对应的目录为文本格式的告警日志文件所在的目录,
而Diag Alert对应的目录为XML格式的警告日志(对应为log_x.xml)
alert_walnut.log

vi alert_walnut.log 
/normal //search normal查找 instance启动
查看alert database close normal为正常关闭

background trace files,后台出现错误进程就会写入,目录也是background_dump_dest的位置

user trace files,只要有用户连接就写入。大小由MAX_DUMP_FILE_SIZE决定,位置user_dump_dest的位置

可以改变user trace files记录的情况:

 


 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章