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記錄的情況: