溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點(diǎn)擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

ORACLE 10G OCA 042 筆記(一)

發(fā)布時(shí)間:2020-08-16 09:58:01 來源:ITPUB博客 閱讀:134 作者:kunlunzhiying 欄目:建站服務(wù)器

ORACLE 10G OCA 042 筆記
 
************$1 oracle Database 10g 構(gòu)件和體系結(jié)構(gòu)***********************
構(gòu)件
oracle Database 10g
oracle Application Server 10g;
oracle Developer Suite;
oracle Applications 11i;
oracle Collaboration Suite;
oracle Services;
 
 
應(yīng)該用標(biāo)準(zhǔn)語法.使用JOIN,CROSS JOIN,NATURAL JOIN等關(guān)鍵字的ANSI SQL:1999語法,
一個(gè)Segment被定義為任何一個(gè)消耗數(shù)據(jù)庫內(nèi)物理存儲空間的實(shí)體.常見的段類型:
表,索引,回退,分區(qū).每個(gè)Segment由數(shù)據(jù)庫內(nèi)連續(xù)存儲空間塊(盤區(qū))構(gòu)成.
操作系統(tǒng)塊-->數(shù)據(jù)庫塊-->盤區(qū)-->段
PL/SQL:Oracle Procedural Language for SQL對象:匿名代碼塊,過程,函數(shù),程序包,觸發(fā)器
除了SQL,Web工具,PL/SQL和JAVA之外,Oracle公司還提供了把SQL命令及數(shù)據(jù)庫連通性集成到傳統(tǒng)編程語言中的能力.這種集成是通過使用Oracle預(yù)編譯器和Oracle Call Interface(OCI)來實(shí)現(xiàn)的.
 
 
要想成為一名成功的Oracle數(shù)據(jù)庫管理員(DBA),首先需要徹底了解Oracle的基礎(chǔ)體系架構(gòu)及其機(jī)制.了解Oracle的內(nèi)存結(jié)構(gòu),后臺進(jìn)程和I/O活動之間的關(guān)系是至關(guān)重要的,然后才能學(xué)習(xí)怎樣管理這些方面.
 
 
Oracle體系結(jié)構(gòu)
按以下三個(gè)類別來描述
用戶相關(guān)進(jìn)程
總稱為Oracle Instance 的邏輯邏輯內(nèi)存結(jié)構(gòu)
總稱為Database的物理文件結(jié)構(gòu)
 
 
用戶進(jìn)程
User Process:要么在用戶自己的PC上,要么在中間層應(yīng)用服務(wù)器上.然后這個(gè)User Process啟動一個(gè)與實(shí)例的連接.Oracle把啟動和管理User Precess與實(shí)例間通信的這個(gè)進(jìn)程稱作一個(gè)Connection.一旦這個(gè)Connection建立了起來,用戶就在實(shí)例中建立了一個(gè)Session.當(dāng)建立一個(gè)會話之后,每個(gè)用戶就在主機(jī)服務(wù)器自身上啟動了一個(gè)Server Process(共享服務(wù)器多個(gè)User Process共享Server Process).然后,由這個(gè)Server Process負(fù)責(zé)執(zhí)行實(shí)際允許用戶與數(shù)據(jù)庫進(jìn)行交互的各項(xiàng)任務(wù).
PGA(Process Global Area):程序全局區(qū),數(shù)據(jù)庫給每個(gè)用戶創(chuàng)建了一個(gè)PGA的輔助內(nèi)存結(jié)構(gòu).PGA存儲與用戶具體相關(guān)的會話信息,比如Bind variable和Session variable.
 
 
Orcle實(shí)例
一個(gè)Oracle實(shí)例由Oracle的主內(nèi)存結(jié)構(gòu)和幾個(gè)Oracle后臺進(jìn)程所組成;主內(nèi)存結(jié)構(gòu)又叫做SGA(System Global Area).當(dāng)用戶訪問數(shù)據(jù)庫中的數(shù)據(jù)時(shí),Server Process就是和SGA進(jìn)行通信.
SGA構(gòu)件
Oracle把SGA內(nèi)存劃分成叫做Granule(區(qū)組)的組快來實(shí)現(xiàn)動態(tài)的空間分配.4MB,8MB OR 16MB
共享存儲池:高速緩存由數(shù)據(jù)庫用戶已經(jīng)發(fā)布的最常用的SQL語句(LRU)
數(shù)據(jù)庫緩沖器告訴緩存:高速緩存由數(shù)據(jù)庫用戶最近訪問過的數(shù)據(jù)(LRU)
重做日志緩沖器:存儲事務(wù)信息以用于恢復(fù)目的
Java存儲池:可選,在Oracle的JVM選件得到使用時(shí),高速緩存最近使用的Java對象和應(yīng)用軟件代碼
大存儲池:為諸如RMAN備份與恢復(fù)之類的大型操作和Shared Server 構(gòu)件高速緩存數(shù)據(jù)
流存儲池:當(dāng)Oracle的Advanced Queuing選件得到使用時(shí),高速緩存跟排隊(duì)的信息請求相關(guān)聯(lián)的數(shù)據(jù)
 
 
參數(shù):基本參數(shù)和高級參數(shù)
如:SGA_TARGET
SQL>select * from V$SGA
Fixed Size:用來存儲由實(shí)例的后臺進(jìn)程所使用的信息的輔助空間
Variable Size:Shared Pool,Large Pool,Java Pool
Database Buffers Cache:
Redo Log Buffer
SQL>select component,current_size from v$sga_dynamic_components;
或用EM DatabaseControl來查看每個(gè)SGA構(gòu)件的大小.
 
 
Oracle的后臺進(jìn)程
必需:SMON(System Monitor),PMON(Process Monitor),DBWn(Database Writer),CKPT(Checkpoint)
任選:ARCn(Archive),RECO(Recover),CJQn(Job Queue Monitor),Jnnn(Job Queue),Qnnn(Parallel Queue Slave),Dnnn(Dispatcher),Snnn(Shared Server),MMAN(Memory Manager),MMON(Memory Monitor),MMNL(Memory Monitor Light),RVWR(Recover Writer),CTWR(Change Tracking Writer)
Unix下查看后臺進(jìn)程 $ps -ef | grep PROD
在windows環(huán)境中,還有一個(gè)叫做OracleServiceInstanceName的Windows服務(wù)與每個(gè)實(shí)例相關(guān)聯(lián).必須啟動這個(gè)服務(wù),才能啟動實(shí)例.
 
 
Oracle數(shù)據(jù)庫
一個(gè)實(shí)例就是一個(gè)臨時(shí)的內(nèi)存結(jié)構(gòu),但是Oracle數(shù)據(jù)庫是由駐留在主機(jī)服務(wù)器的磁盤驅(qū)動器上的一組物理文件所構(gòu)成的.這些物理文件稱做Control File,Data File,Redo File.跟Oracle數(shù)據(jù)庫有關(guān),但從技術(shù)上看不屬于Oracle數(shù)據(jù)庫的附加物理文件有Password File,PFILE,SPFILE,以及Archived redo log file.
Control File:
Data File:
Redo File:
了解Database Writer,Log Writer進(jìn)程何時(shí)工作的.
 
 
安裝Oracle 10g
檢查技術(shù)文檔->檢查系統(tǒng)需求->制定安裝計(jì)劃(OFA)->使用OUI 詳細(xì)看書已經(jīng)文檔
 
 
************$2 創(chuàng)建與控制數(shù)據(jù)庫*****************************************
Oracle企業(yè)管理框架
oracle Enterprise Management Framework 提供了一個(gè)全面的集成工具集,以便DBA不均那能夠使用這些工具更輕松更有效的完成傳統(tǒng)任務(wù),而且還能夠更有效的監(jiān)視企業(yè)中的各種構(gòu)件.DBA可以定制這個(gè)管理框架.
Oracle企業(yè)管理器框架的各個(gè)目標(biāo)之間的通信均由Oracle Management Agent(Oracle管理代理程序)處理.
Oracle企業(yè)管理框架分成下面這些功能區(qū).
受管理目標(biāo):DBA使用Database Manager來管理受管理目標(biāo).包括數(shù)據(jù)庫,應(yīng)用服務(wù)器,Web服務(wù)器,應(yīng)用軟件以及象Oracle Net監(jiān)聽器和Connection Manager之類的Oracle代理程序.
oracle Management Service:一個(gè)基于Java的Web構(gòu)件,該構(gòu)件是DBA用來監(jiān)視和控制Oracle企業(yè)管理器框架內(nèi)各個(gè)受管理目標(biāo)的實(shí)際界面.
Oracle管理儲存庫:已收集到并與受管理目標(biāo)有關(guān)的配置和監(jiān)視信息被存儲在一個(gè)Oracle管理儲存庫中.
oracle Enterprise Manager 10g 網(wǎng)格控制:一個(gè)基于Web的用戶界面,管理許多數(shù)據(jù)庫,應(yīng)用服務(wù)器,Web服務(wù)器和其他構(gòu)件
oracle Enterprise Manager 10g數(shù)據(jù)庫控制:允許DBA監(jiān)視和管理單個(gè)Oracle數(shù)據(jù)庫實(shí)例或單個(gè)RAC(Real Application Cluster)環(huán)境.
oracle Application Control:
 
 
啟動和關(guān)閉Oracle管理代理程序
一個(gè)Oracle管理代理程序就是一個(gè)運(yùn)行在每個(gè)受管理目標(biāo)服務(wù)器上的后臺進(jìn)程.代理程序收集與受管理目標(biāo)有關(guān)的數(shù)據(jù),然后與中心管理服務(wù)進(jìn)行通信.
bin>emctl start agent 在集中式的Grid Control框架內(nèi)
bin>emctl start dbconsole 把數(shù)據(jù)庫作為單獨(dú)的實(shí)體來管理(含apache啟動)
bin>emctl status dbconsole
使用Database Control訪問數(shù)據(jù)庫:http://hostname:portnumber/em
使用iSql*Plus:bin>isqlplus start(Unix) windows下有相應(yīng)程序
獲取Oracle構(gòu)件所用端口的清單:檢查$ORACLE_HOME/install directory目錄portlist.ini文件
把iSql*Plus設(shè)置成SYSOPER,SYSDBA特權(quán),必須執(zhí)行許多步驟.....看幫助
使用Oracle Database Conifguration Assitant
使用EM Database Control啟動Oracle 實(shí)例測試
查看和了解Oracle報(bào)警日志的內(nèi)容 google多看看
 
 
************$3 數(shù)據(jù)庫存儲和模式對象************************************
創(chuàng)建大文件和小文件表空間
CREATE BIGFILE TABLESPACE hist2004apr DATAFILE '/ORADATA/PROD/HIST2004APR.DBF' SIZE 25G
處理Oracle管理文件表空間
ALTER SYSTEM SET db_create_file='d:\oracle\oradata\omf' scope=BOTH;
選擇盤區(qū)管理方式
CREATE TABLESPACE hist2004apr
DATAFILE '/ORADATA/PROD/HIST2004APR.DBF' SIZE 25G
EXTENT MANAGEMENT LOCAL UNIFORM;
 
 
CREATE TABLESPACE hist2004apr
DATAFILE '/ORADATA/PROD/HIST2004APR.DBF' SIZE 25G
EXTENT MANAGEMENT LOCAL AUTOALLOCATE;
 
 
選擇段空間管理方式 MANUAL ,AUTO
CREATE TABLESPACE hist2004apr
DATAFILE '/ORADATA/PROD/HIST2004APR.DBF' SIZE 25G
EXTENT MANAGEMENT LOCAL AUTOALLOCATE;
SEGMENT SPACE MANAGEMENT MANUAL;(默認(rèn)MANUAL)
 
 
CREATE TABLESPACE hist2004apr
'/ORADATA/PROD/HIST2004APR.DBF' SIZE 25G
EXTENT MANAGEMENT LOCAL AUTOALLOCATE;
SEGMENT SPACE MANAGEMENT AUTO; 數(shù)據(jù)庫使用位圖而不是自由列來標(biāo)識哪些數(shù)據(jù)塊可用于插入操作,忽略PCT_FREE和PCT_USED參數(shù)
備注:PCT_FREE和PCT_USED針對MANUAL手工段空間管理方式...自由快列表....
我的oracle10g默認(rèn)是extent management:local
segment space mangement:auto
系統(tǒng)表,臨時(shí)表,undo表空間必定是MANUAL的.
 
 

創(chuàng)建臨時(shí)表空間 (我的系統(tǒng)初始都分配了空間,某些UNIX系統(tǒng)是延遲分配空間的)
CREATE TEMPORARY TABLESPACE temp
TEMPFILE 'C:\ORACLE\ORADATA\ORA10\TEMP01.DBF' SIZE 2G;
 
 
創(chuàng)建撤銷表空間
設(shè)置UNDO_MANAGEMENT=AUTO
CREATE DATABASE TEST
...
UNDO TABLESPACE undo
DATAFILE 'C:\ORADATA\TEST\undo01.dbf' SIZE 500M
AUTOEXTENT ON NEXT 100M MAXSIZE UNLIMITED
EXTENT MANAGEMENT LOCAL
...
 
 
CREATE UNDO TABLESPACE undo
DATAFILE '/ORADATA/PROD/UNDO01.DBF' SIZE 2G;
 
 
刪除表空間
DROP TABLESPACE hr_data INCLUDING CONTENTS AND DATAFILES;
 
 
修改表空間
ALTER TABLESPACE fin RENAME TO payables;
 
 
給表空間添加數(shù)據(jù)文件
ALTER TABLESPACE receivables ADD DATAFILE
'/u02/oradata/ORA10/receivables01.dbf'
SIZE 2G;
 
 
脫機(jī),聯(lián)機(jī)receivables表空間
ALTER TABLESPACE receivables OFFLINE;
ALTER TABLESPACE receivables ONLINE;
只讀
ALTER TABLESPACE sales2003 READ ONLY;
ALTER TABLESPACE sales2003 READ WRITE;
置入備份模式
ALTER TABLESPACE sales2003 BEGIN BACKUP;
ALTER TABLESPACE sales2003 END BACKUP;
轉(zhuǎn)移文件:windows中的COPY 或 UNIX 的cp命令
新位置
ALTER TABLESPACE receivables RENAME DATAFILE 'H:\ORACLE\ORADATA\ORA10\RECEIVABLES02.DBF'
TO 'C:\ORACLE\ORADATA\ORA10\RECEIVABLES02.DBF';
獲取表空間信息
DBA_TABLESPACE;
DBA_DATA_FILES;
DBA_TEMP_FILES;
V$TABLESPACE.
 
 
使用Schema(模式)對象
一個(gè)Schema就是一個(gè)特定數(shù)據(jù)庫用戶所擁有的數(shù)據(jù)庫對象集.模式具有和數(shù)據(jù)庫用戶相同的名稱,因此兩個(gè)術(shù)語是同義的.
模式對象包括讀者已在表空間中所見過的段(表,索引等),以及一個(gè)用戶所擁有的非段數(shù)據(jù)庫對象.如約束,視圖,同義詞,過程,程序包.
Oracle指定數(shù)據(jù)類型:略
字符
數(shù)字
日期數(shù)字
LOB
ROWID
二進(jìn)制
The database LOB datatypes are as follows:
CLOB Stores variable-length character data.
NCLOB Stores variable-length character data using the Unicode character set.
BLOB Stores binary variable-length data inside the database. BLOB data does not undergo character
set conversion when passed between databases or between client and server processes.
BFILE Stores binary variable-length data outside the database. BFILEs are limited to a maximum
of 4GB of data and even less in some operating systems.
Here is an example of the LOB datatypes in use:
CREATE TABLE lob_examples
( id NUMBER
, name VARCHAR2(32)
, description VARCHAR2(4000)
, definition CLOB
, mp3 BLOB
)TABLESPACE USERS
LOB (definition) STORE AS
(TABLESPACE user3_data);
 
 
除了表和視圖所共用的名稱空間之外,數(shù)據(jù)庫還有單獨(dú)用于如下各項(xiàng)的名稱空間:
索引
約束
聚類
數(shù)據(jù)庫觸發(fā)器
專用數(shù)據(jù)庫鏈接
量綱
角色
公用數(shù)據(jù)庫鏈接
表空間
概況
參數(shù)文件(PFILE)
 
 
創(chuàng)建表
CREATE TABLE change_log
NOLOGGING COMPRESS
TABLESPACE archive
(log_id NUMBER
,who VARCHAR2(64)
,when TIMESTAMP
,what VARCHAR2(200)
);
NOLOGGING選項(xiàng)告訴數(shù)據(jù)庫,不要把改表的內(nèi)容記錄到重做日志上,也不要把后續(xù)的直接路徑插入操作記錄到重做日志上.
COMPRESS選項(xiàng)告訴數(shù)據(jù)庫,使用數(shù)據(jù)庫壓縮把數(shù)據(jù)添加到表中,因而需要較少的磁盤空間.
 
 
創(chuàng)建臨時(shí)表:兩種 ON COMMIT DELETE ROWS ,ON COMMIT PRESERVE ROWS
給表或列添加注釋
COMMENT ON TABLE change_log IS
'this table is where you record changes to the configuration of the DEMO system';
DBA_COL_COMMENTS
 
 
重命名表:ALTER TABLE CHANGE_LOG RENAME TO DEMO_CHANGE_LOG;
 
 
添加和刪除表中的列
ALTER TABLE change_log ADD how VARCHAR2(45);
ALTER TABLE CHANGE_LOG ADD
(HOW VARCHAR2(45),
WHY VARCHAR2(60)
);
 
 
修改列
ALTER TABLE CHANGE_LOG MODIFY
(WHAT VARCHAR2(250),
WHO VARCHAR2(50) DEFAULT USER
);
 
 
以下如果9i中出現(xiàn),略.加快速度
 
 
索引
B樹索引是默認(rèn)的索引類型,適用于中或大基數(shù)列,B樹索引支持行級加鎖,因此適用于多用戶的事務(wù)應(yīng)用.支持PRIMARY KEY 或UNIQUE約束的索引是B樹索引.
位圖索引最適用于低到中基數(shù)列的多種組合(不能創(chuàng)建一個(gè)唯一性位圖索引),而且它們不支持行級加鎖.位圖索引在數(shù)據(jù)修改受到限制和控制的環(huán)境中最佳,比如許多數(shù)據(jù)倉庫應(yīng)用軟件.由于位圖索引不能有效的對被索引數(shù)據(jù)做修改,所以它們在數(shù)據(jù)裝入開始之前被刪去,在數(shù)據(jù)裝入完成后被重建.
 
 
處理序列
create sequence employee_seg start with 100500 nomaxvalue nominvalue;
 
 
************$4 oracle Net服務(wù)*****************************************
Interprocess Communication 進(jìn)程間通信(IPC) 進(jìn)程間通信(IPC)是運(yùn)行在多任務(wù)操作系統(tǒng)中或聯(lián)網(wǎng)計(jì)算機(jī)上的程序和進(jìn)程使用的一組技術(shù)
程序使用IPC的一個(gè)好處是,能有效地利用其它程序或計(jì)算機(jī)的過程
雖然網(wǎng)絡(luò)變得越來越復(fù)雜,但也變得越來越容易使用和管理.
DBA的網(wǎng)絡(luò)責(zé)任
了解可以采用的網(wǎng)絡(luò)配置選項(xiàng),并根據(jù)本組織的需求知道應(yīng)該怎樣使用那些選項(xiàng).
了解本組織的基礎(chǔ)網(wǎng)絡(luò)體系結(jié)構(gòu),以便制定有遠(yuǎn)見卓識的設(shè)計(jì)決策.
于網(wǎng)絡(luò)工程師緊密合作來保證與oracle服務(wù)器的一致而又可靠的連接.
了解可以用來配置和管理網(wǎng)絡(luò)的各種工具
診斷并排除與用戶,中間層和服務(wù)器有關(guān)的連接問題.
保證安全的連接,并在必要時(shí)使用現(xiàn)有網(wǎng)絡(luò)配置來獲得敏感數(shù)據(jù)傳輸?shù)妮^高安全度
緊跟可能對網(wǎng)絡(luò)設(shè)計(jì)決策有影響的最新行業(yè)趨勢和Oracle體系結(jié)構(gòu)的最新變化
 
 
網(wǎng)絡(luò)配置
單層終端直接連接到主機(jī)計(jì)算機(jī),不存在網(wǎng)絡(luò)協(xié)議與多操作系統(tǒng)的復(fù)雜性.
雙層經(jīng)常叫做客戶/服務(wù)器計(jì)算.可縮放性不行.
n層引進(jìn)了位于客戶與數(shù)據(jù)庫服務(wù)器之間的中間件[MIDDLEWARE]構(gòu)件,比如應(yīng)用服務(wù)器或Web服務(wù)器.這個(gè)模型是可縮放的,并且把表示,業(yè)務(wù)邏輯和路由選擇以及數(shù)據(jù)庫處理等任務(wù)分配給許多計(jì)算機(jī).許多因素正驅(qū)動著n層計(jì)算,比如Internet和網(wǎng)格計(jì)算;后者使用大量的后端處理器來縮放數(shù)據(jù)庫服務(wù)和連接.
 
 
Oracle特性綜述
連通性:客戶可以使用許多方法與一個(gè)oracle數(shù)據(jù)庫進(jìn)行交互(多協(xié)議支持,多操作系統(tǒng),JDBC)
可管理性:Web應(yīng)用,位置透明性(數(shù)據(jù)庫表現(xiàn)為一個(gè)或多個(gè)數(shù)據(jù)庫服務(wù)),目錄命名(Directory Naming)
可縮放性:Oracle Shared Server,Oracle Connectiion Manager(多路復(fù)用,網(wǎng)絡(luò)訪問,交叉協(xié)議連通性
安全:Oracle Advanced Security,防火墻支持
可訪問性:Heterogeneous Service(異構(gòu)服務(wù)),外部過程
目錄命名:Directory Naming使得服務(wù)名稱能夠通過一個(gè)集中式命名儲存庫來解析.這個(gè)中心儲存庫采取LDAP(Lightweight Direcory Access Protocol)服務(wù)器的形式.LDAP是一個(gè)協(xié)議和一種語言,它定義一種用來存儲,標(biāo)識和檢索服務(wù)的標(biāo)準(zhǔn)方法,同時(shí)提供了一種管理信息目錄的簡化方式,無論這些信息是與一個(gè)組織內(nèi)的用戶有關(guān),還是與已連接到一個(gè)網(wǎng)絡(luò)的Oracle服務(wù)有關(guān).
 
 
在服務(wù)器上配置Oracle Net
了解Oracle監(jiān)聽器,監(jiān)聽器響應(yīng)連接請求.
4種連接方法類型:
專用連接:直接握手方法
專用連接:重定向方法
oracle Shared Server:直接握手方法
oracle Shared Server:重定向方法
 
 
管理Oracle監(jiān)聽器
用Oracle Net Manager 管理監(jiān)聽器.
用Oracle Enterprise Manager管理監(jiān)聽器測試
用lsnrctl管理監(jiān)聽器:
啟動:lsnrctl start
重新裝入監(jiān)聽器::lsnrctl reload
顯示監(jiān)聽器的狀態(tài):lsnrctl status
列舉服務(wù):lsnrctl service
 
 
動態(tài)地注冊服務(wù)
實(shí)例向本地計(jì)算機(jī)上鎖定義的監(jiān)聽器進(jìn)行了注冊.動態(tài)服務(wù)注冊使得管理員能夠利用其他特性,比如符負(fù)荷均衡和自動故障切換.PMON進(jìn)程負(fù)責(zé)向監(jiān)聽器注冊這些信息.
當(dāng)使用了動態(tài)服務(wù)注冊后,管理員將看不到listener.ora中鎖列舉得服務(wù)器.要想查看文件中所列舉得服務(wù),運(yùn)行l(wèi)snrctl service命令.
配置參數(shù):INSTANCE_NAME,SERVICE_NAME
如:Instance_name=DBA
Service_name=DBA.GR.COM
該監(jiān)聽器必須被配置為默認(rèn)監(jiān)聽器,否則需指定參數(shù)LOCAL_LISTENER.
如:local_listener="(ADDRESS_LIST=(ADDRESS=(PROTOCOL=TCP)(HOST=WEISHAN)(PORT=1522)))
 
 
使用多個(gè)監(jiān)聽器時(shí)的附加配置
如果用戶擁有一個(gè)含有大量并發(fā)連接請求的復(fù)雜網(wǎng)絡(luò)環(huán)境,或者正在使用一個(gè)ORACLE RAC這樣的高級數(shù)據(jù)庫設(shè)計(jì),則可以配置多個(gè)監(jiān)聽器更好的管理連接負(fù)荷.讀者由此增大了功能度.這些特性包括:
Connect-Time Failover,Transparent Application Failover,Client Load Balancing,Connection Load Balancing.
Connect-Time Failover(連接時(shí)間故障切換)
客戶tnsnames.ora中指定多個(gè)監(jiān)聽器位置.如果連接到第一個(gè)監(jiān)聽器失敗,則嘗試連接監(jiān)聽器列表中的下一個(gè)監(jiān)聽器.
Transparent Application Failover(透明應(yīng)用故障切換TAF)
如RAC中,TAF進(jìn)行故障切換,并重新建立應(yīng)用軟件到服務(wù)連接.它允許客戶應(yīng)用軟件自動重新連接到數(shù)據(jù)庫(如果連接出現(xiàn)故障),而且可選地繼續(xù)執(zhí)行一條已在運(yùn)行中的SELECT語句.重新連接從OCI庫中自動發(fā)生. 測試
Client Load Balancing(客戶負(fù)載平衡)
允許客戶從一個(gè)監(jiān)聽器列表中隨機(jī)地挑選.Oracle Net遍歷這個(gè)監(jiān)聽器列表,并在現(xiàn)有監(jiān)聽器之間平衡連接請求地符合.
測試
Connection Load Balancing(連接負(fù)荷平衡)
允許更好地在一個(gè)Oracle Shared Server環(huán)境內(nèi)的一組調(diào)度程序之間分布連接
 
 

診斷服務(wù)器段連接問題
服務(wù)器端計(jì)算機(jī)與數(shù)據(jù)庫檢查
檢查服務(wù)器計(jì)算機(jī):ping
檢查數(shù)據(jù)庫:sql*plus嘗試本地連接
檢查數(shù)據(jù)庫對所有用戶是開放的
檢查用戶權(quán)限
 
 
服務(wù)器段網(wǎng)絡(luò)檢查
檢查監(jiān)聽器:lsnrctl status
檢查GLOBAL_DBNAME
檢查監(jiān)聽器協(xié)議:lsntctl service
檢查服務(wù)器協(xié)議:ping(tcp/ip)
檢查服務(wù)器協(xié)議適配器:調(diào)用OUI程序,并檢查已安裝協(xié)議的列表.在Unix平臺上,可以使用Adapters實(shí)用工具來保證適當(dāng)?shù)膮f(xié)議適配器被鏈接到Oracle.
[xxx]./adapters oracle
檢查連接超時(shí)設(shè)置
INBOUND_CONNECT_TIMEOUT設(shè)置成一個(gè)較大的值,加大有效響應(yīng)的等待時(shí)間.
 
 
服務(wù)器上Oracle Net日志和跟蹤
服務(wù)器日志:監(jiān)聽器日志,Unix系統(tǒng)上是$oracle_home/network/log,windows下是%oracle_home%\network\log. 測試
服務(wù)器跟蹤啟用,查看,測試
 
 
配置客戶Oracle Net
客戶端名稱解析:該客戶必須提供3段信息:用戶ID,密碼和網(wǎng)絡(luò)服務(wù)名稱.網(wǎng)絡(luò)服務(wù)名稱用一個(gè)連接描述符的形式提供在網(wǎng)絡(luò)中查找一個(gè)oracle服務(wù)所必須的信息.
網(wǎng)絡(luò)服務(wù)的5種解析方法.
oracle Internet Directory,External Naming,Host Naming,Oracle easy connect, Local Naming.
oracle Internet Directory:處理含有許多oracle服務(wù)器的復(fù)雜網(wǎng)絡(luò)時(shí)有優(yōu)勢.管理員可以在一個(gè)集中位置上配置和管理Net service Names和路徑描述符信息.
External Naming:使用一個(gè)非oracle工具管理和解析Oracle服務(wù)名稱,例如:NIS
主要考察以下三種
Host Naming:
oracle Easy Connect Naming:
10g新引進(jìn)的,指定主機(jī),端口,服務(wù)名稱
如:connect scott/tiger@jlsjls:1522/orcl.com
Local Naming:也叫做tnsnames.ora方法.網(wǎng)絡(luò)服務(wù)名稱,網(wǎng)絡(luò)協(xié)議,主機(jī)名和端口,服務(wù)名,測試網(wǎng)絡(luò)服務(wù)名連接
使用EM配置本地命名, 測試
 
 
診斷并解決客戶端連接問題
檢查客戶/服務(wù)器聯(lián)系:ping
確定客戶正用來到達(dá)服務(wù)器的網(wǎng)絡(luò)路由:
xxx:/home/oracle>traceroute 10.15.9.11
cmd>tracert 10.20.3.3
檢查客戶/監(jiān)聽器聯(lián)系
cmd>tnsping orcl 2 (tnsping工具嘗試連接一個(gè)oracle監(jiān)聽器)
檢查本地命名配置文件
查找多客戶網(wǎng)絡(luò)配置文件(略)
檢查網(wǎng)絡(luò)文件位置
檢查NAMES.DIRECTORY_PATH
檢查NAMES.DEFAULT_DOMAIN
檢查客戶協(xié)議適配器
檢查客戶端錯(cuò)誤碼
 
 
************$5 oracle 共享服務(wù)器**************************************
oracle Shared Server適用于"高思維"應(yīng)用.高思維應(yīng)用由再事務(wù)模式中使用自然暫停的小事務(wù)組成.許多基于Web的應(yīng)用適合這個(gè)模型.要確定一個(gè)應(yīng)用是不是Oracle Shared Server的候選者時(shí),檢查該應(yīng)用,并考慮一個(gè)與數(shù)據(jù)庫服務(wù)器的典型客戶交互所生成的網(wǎng)絡(luò)通信量.如果給定最流行網(wǎng)絡(luò)的速度,并且一個(gè)典型的客戶交互包含16kb或更少的數(shù)據(jù),那么它是一個(gè)適合使用Oracle Shared Server的候選者.
 
 
oracle Shared Server的基礎(chǔ)結(jié)構(gòu)
使用Oracle Shared Server時(shí)的PGA與SGA變化
當(dāng)Oracle Shared Server得到配置時(shí),Oracle給SGA增加兩種新型的結(jié)構(gòu);請求隊(duì)列喝響應(yīng)隊(duì)列.專用服務(wù)器中是不存在這兩種結(jié)構(gòu)的.對于所有的調(diào)度程序,只存在一個(gè)請求隊(duì)列,但每個(gè)調(diào)度程序都有各自的響應(yīng)隊(duì)列.
專用服務(wù)器環(huán)境中,每個(gè)服務(wù)器中有一個(gè)叫做PGA的內(nèi)存段,是維護(hù)關(guān)于每個(gè)客戶會話信息的地方,包括賦值變量,游標(biāo)信息以及客戶的分類數(shù)據(jù).在oracle shared server環(huán)境中,這個(gè)信息被轉(zhuǎn)移到SGA中一個(gè)叫做UGA的區(qū)域.讀者可以配置SGA中一個(gè)Large Pool的特殊區(qū)域來容納UGA的大部分.
 
 

專用服務(wù)器PGA:游標(biāo)狀態(tài),用戶會話數(shù)據(jù),??臻g
共享服務(wù)器PGA:??臻g
由上可知:專用服務(wù)器,UGA是在PGA中分配的.而在SHARED SERVER中,UGA在LARGE POOL池中分配.
Virtual circuit:正由一個(gè)調(diào)度程序所維護(hù)的每個(gè)連接都被分配給一個(gè)共享內(nèi)存段,并形成一個(gè)虛擬電路.調(diào)度程序使用這個(gè)共享內(nèi)存段來管理客戶Oracle數(shù)據(jù)庫之間的通信.
監(jiān)聽器收到一個(gè)連接請求,它檢查每個(gè)調(diào)度程序的當(dāng)前連接符合,并把客戶連接請求重定向到最小負(fù)荷調(diào)度程序.確定所有節(jié)點(diǎn)的最小負(fù)荷調(diào)度程序--如果RAC正得到使用.
 
 
配置Oracle Shared Server
oracle 10g不必指定DISPATCHERS參數(shù)就能啟用一個(gè)默認(rèn)網(wǎng)絡(luò)環(huán)境中的共享服務(wù)器(簡化了).
oracle 10g的一個(gè)優(yōu)點(diǎn)是管理Oracle Shared Server所需要的所有參數(shù)都能被動態(tài)地修改.
 
 
使用DISPATCHERS參數(shù)
只需指定ADDRESS,DESCRIPTION或PROTOCOL即可.數(shù)據(jù)越密集型地操作喝并發(fā)連接地?cái)?shù)量越大,每個(gè)調(diào)度程序處理地會話應(yīng)該越少.一般來說,起始點(diǎn)是為每個(gè)調(diào)度程序預(yù)留50個(gè)并發(fā)會話.
讀者可以用如下公式來確定最初要配置地調(diào)度程序數(shù)量:
Number of Dispatchers
=CEIL(maximum number of concurrent sessions/connections per dispatcher)
example:DISPATCHERS="(PRO=TCP)(DIS=3)(PRO=IPC)(DIS=2)"
由V$session視圖可確定并發(fā)連接地?cái)?shù)量
v$LICENSE
SESSION_CURRENT:會話的當(dāng)前數(shù)量
SESSION_HIGHWAITER:自實(shí)例啟動以來的最大并發(fā)會話數(shù)量
修改:ALTER SYSTEM SET DISPATCHERS="(PRO=TCP)(DIS=5)";
 
 
使用DISPATCHERS參數(shù)配置連接集儲特性
Connection Pooling(連接集儲):通過自動斷開空閑連接和使用空閑連接為一個(gè)輸入連接請求提供服務(wù),給Oracle Shared server賦予了較大數(shù)量連接的能力.
設(shè)置Pool,Tick屬性具體看書
DISPATCHERS="(PROTOCOL=TCP)(DISPATCHERS=1)(POOL=ON)(TICK=1)(CONNECTIONS=500)(SESSIONS=1000)"
 
 
使用MAX_DISPATCHERS參數(shù)
使用SHARED_SERVERS參數(shù):默認(rèn)1,0或者未設(shè)置禁用.一般來說,對于將要使用共享服務(wù)器連接的各種高思維應(yīng)用軟件,每個(gè)共享服務(wù)器擁有25個(gè)并發(fā)連接應(yīng)該是足夠使用的.
SHARED_SERVER_SESSIONS:使用這個(gè)參數(shù)限制共享服務(wù)器會話的總數(shù)量.
MAX_SHARED_SERVER:
 
 
管理共享服務(wù)器
>lsnrctl service 顯示關(guān)于調(diào)度程序進(jìn)程的信息
動態(tài)性能視圖
V$DISPATCHER:關(guān)于調(diào)度程序的信息,活動情況,正在處理的連接數(shù)量,自實(shí)例啟動以來已經(jīng)處理的總連接數(shù)量.
sql>select name,status,messages,idle,busy,bytes,breaks from v$dispatcher;
V$DISPATCHER_CONFIG 新增的視圖,關(guān)于調(diào)度程序的配置信息.
sql>select conf_indx,dispatchers,connections,sessions sess,service from v$dispatcher_config where network like '%TCP%';
V$DISPATCHER_RATE:調(diào)度程序的統(tǒng)計(jì)信息
sql>select name,cur_event_rate,cur_msg_rate,cur_svr_byte_rate from v$dispatcher_rate;
V$QUEUE:請求和響應(yīng)隊(duì)列的信息,比如請求在隊(duì)列中等待多長時(shí)間
sql>select * from v$queue;
V$CIRCUIT:顯示oracle shared server虛擬電路的信息,
sql>select circuit,dispatcher,server,waiter WTR,status,queue,bytes from v$circuit;
V$SHARED_SERVER:顯示共享服務(wù)器進(jìn)程的信息
sql>select name,status,messages,bytes,idle,busy,requests from v$shared_server;
V$SHARED_SERVER_MONITOR:...最大并發(fā)連接數(shù),啟動的服務(wù)起數(shù)..等信息,有助于調(diào)節(jié)oracle shared server.
sql>select maximum_connections "MAX CONN",maximum_sessions "MAX SESS",servers_started "STARTED" from v$shared_server_monitor;
V$SESSION:有關(guān)客戶會話的豐富信息.
sql>select username,program,server from v$session;
 
 

在共享服務(wù)器環(huán)境中請求一個(gè)專用連接
本地命名中添加....略
 
 
調(diào)節(jié)共享服務(wù)器選項(xiàng)測試
確定Large Pool 大小:Large Pool應(yīng)該大得足以容納讀者的所有共享服務(wù)器連接的有關(guān)信息.一般所來,每個(gè)連接需要1MB到3MB之間的空間,但這取決于該客戶的活動類型.正在做大量分類操作或打開許多游標(biāo)的對象將使用更多的內(nèi)存.
sql>alter system set large_pool_size=10m;
sql>select * from v$sgastat where pool = 'large pool';
確定是否有足夠的調(diào)度程序:如果調(diào)度程序的繁忙的時(shí)間百分比超過50%,則需要考慮啟動更多的調(diào)度程序.
sql>select name,(busy/(busy+idle)) *100 "Dispatcher %busy Rate" from v$dispatcher;
sql>alter system set dispatchers ="(PRO=TCP)(DIS=4)";
測量用戶等候調(diào)度程序多長時(shí)間:數(shù)值過大,需要增加更多的調(diào)度程序
sql>select decode(sum(totalq),0,'No response',Sum(wait)/sum(totalq)) "Average ait time" from v$queue q,v$dispatcher d where q.type='DISPATCHER' AND q.paddr=d.paddr;
監(jiān)視一段時(shí)間,如果不斷增大,則需要考慮增加更多的調(diào)度程序.
確定是否有足夠的共享服務(wù)器:....
sql>select decode(totalq,0,'No Requests') "Wati Time", Wait/totalq || ' hundredths of seconds' "Average wait time per request" from v$queue where type='COMMON';
監(jiān)視之,如果不斷增大,考慮增加更多共享服務(wù)器.
查詢當(dāng)前的sql>select name,status,requests,messages,bytes,breaks from v$shared_server;
 
 
以上標(biāo)記測試的,大都未測試,趕時(shí)間看書
*************$6 用戶管理與安全******************************************
術(shù)語"用戶賬號","賬號","用戶","模式"均是可以互換的,并且指一個(gè)擁有模式對象的數(shù)據(jù)庫用戶賬號.
配置身份驗(yàn)證:密碼驗(yàn)證,外部驗(yàn)證,全局驗(yàn)證
密碼驗(yàn)證式用戶:略
外部驗(yàn)證式用戶:當(dāng)一個(gè)外部驗(yàn)證式用戶連接到數(shù)據(jù)庫時(shí),數(shù)據(jù)庫核實(shí)用戶名是一個(gè)有效的數(shù)據(jù)庫賬號,并確信操作系統(tǒng)已經(jīng)完成了身份驗(yàn)證.這些賬號有時(shí)稱作OPS$(發(fā)音為ahps dollar)賬號,引進(jìn)這些賬號時(shí),他們必須加上前綴.(一般OPS$,有參數(shù)可以設(shè)置)
CREATE USER OPS$ORACLE IDENTIFIED EXTERNALLY
外部驗(yàn)證經(jīng)常用于管理性腳本,以便密碼不必嵌入在一個(gè)人類可以可理解的腳本中.
全局驗(yàn)證式用戶:當(dāng)一個(gè)全局驗(yàn)證式用戶試圖連接到數(shù)據(jù)庫時(shí),數(shù)據(jù)庫驗(yàn)證用戶名時(shí)一個(gè)有效的數(shù)據(jù)庫賬號,并把連接信息傳遞給高級安全選項(xiàng)以供驗(yàn)證.高級安全選項(xiàng)支持幾個(gè)用于身份驗(yàn)證的機(jī)制,其中包括生物測定,X.509證書,Kerberos和RADIUS.
CREATE USER SPY_MASTER IDENTIFIED GLOBALLY AS 'CN=SPY_MASTER,OU=TIER2,O=SECURITY,C=US';
 
 
分配默認(rèn)表空間
......default tablespace.....
 
 
分配臨時(shí)表空間
....temporary tablespace....
 
 
給用戶分配概況
...profile resource_profile;
 
 
授予和取消特權(quán)
對象特權(quán):模式對象上的特權(quán),比如表,視圖,序列,過程一級包等模式對象.
系統(tǒng)特權(quán):數(shù)據(jù)庫級操作上的特權(quán),比如連接到數(shù)據(jù)庫....
角色特權(quán):一個(gè)用戶作為一個(gè)角色所擁有的對象與系統(tǒng)特權(quán).
 
 
授予對象特權(quán)
各種權(quán)限以后細(xì)看....
grant....with grant option...當(dāng)是角色時(shí),不能使用with grant option
如果使用..with grant option后,又取消該特權(quán),該取消發(fā)生級聯(lián)作用.
一個(gè)被授權(quán)者可以從多個(gè)授權(quán)者那里獲得一個(gè)特權(quán),當(dāng)同一個(gè)特權(quán)的這種多次授權(quán)發(fā)生時(shí),取消這些授權(quán)之一將不刪除該特權(quán).
 
 
授予系統(tǒng)特權(quán)
Oracle有170多種系統(tǒng)特權(quán),并且所有這些系統(tǒng)特權(quán)均被列舉在SYSTEM_PRIVILEGE_MAP數(shù)據(jù)目錄視圖中.
熟悉以下幾組特權(quán).
數(shù)據(jù)庫:
ALTER DATABASE,ALTER SYSTEM,AUDIT SYSTEM(語句審計(jì)),AUDIT ANY(任意一個(gè)模式中對象上的對象審計(jì))
調(diào)試:
DEBUG CONNECT SESSION(允許被授權(quán)者把當(dāng)前會話連接到一個(gè)調(diào)度程序.)
DEBUG ANY PROCEDURE(允許被授權(quán)者調(diào)試數(shù)據(jù)庫中的所有PL/SQL和Java代碼.相當(dāng)于授予每個(gè)適用對象的DEBUG對象特權(quán).
索引:
CREATE ANY INDEX:允許被授權(quán)者在任意一個(gè)模式中創(chuàng)建一個(gè)索引.
ALTER ANY INDEX:允許被授權(quán)者更改任意一個(gè)模式中的索引
DROP ANY INDEX:允許被授權(quán)者從任意一個(gè)模式中刪除索引.
作業(yè)調(diào)度程序:
CREATE JOB:允許被授權(quán)者在他們自己的模式中創(chuàng)建作業(yè),程序和時(shí)間表.
CREATE ANY JOB:...
EXECUTE ANY PROGRAM:
EXECUTE ANY CLASS:
MANAGE SCHEDULER:
過程
CREATE PROCEDURE
CREATE ANY PROCEDURE
ALTER ANY PROCEDURE
DROP ANY PROCEDURE
EXECUTE ANY PROCEDURE
概況
CREATE PROFILE
USER語句(需要ALTER USER特權(quán))
ALTER PROFILE
DROP PROFILE
角色
CREATE ROLE
ALTER ANY ROLE
DROP ANY ROLE
GRANT ANY ROLE
序列
CREATE SEQUENCE
CREATE ANY SEQUENCE
ALTER ANY SEQUENCE
DROP ANY SEQUENCE
SELECT ANY SEQUENCE
會話
CREATE SESSION
ALTER SESSION
ALTER RESOURCE COST
RESTRICTED SESSION
同義詞
CREATE SYNONYM
CREATE ANY SYNONYM
CREATE PUBLIC SYNONYM
DROP ANY SYNONYM
DROP PUBLIC SYNONYM

CREATE TABLE
CREATE ANY TABLE
ALTER ANY TABLE
DROP ANY TABLE
COMMENT ANY TABLE
SELECT ANY TABLE
INSERT ANY TABLE
UPDATE ANY TABLE
DELETE ANY TABLE
LOCK ANY TABLE
FLASHBACK ANY TABLE
....略
 
 
.....
和對象特權(quán)相同的是,可以把系統(tǒng)特權(quán)授予特殊用戶PUBLIC.給PUBLIC授予特權(quán)允許任何一個(gè)擁有數(shù)據(jù)庫帳戶的人運(yùn)用這個(gè)特權(quán).
如果利用WITH ADMIN OPTION 關(guān)鍵字授予一個(gè)系統(tǒng)特權(quán),隨后又取消該特權(quán),那么被授權(quán)者的特權(quán)將不被取消.和對象特權(quán)不同的是,系統(tǒng)特權(quán)的取消不發(fā)生級聯(lián)作用.
 
 
角色特權(quán)
角色特權(quán)給被授權(quán)者授予一組系統(tǒng),對象和其他角色特權(quán).角色可以是密碼保護(hù)的,所以用戶可能擁有一個(gè)已授給他們的角色,但還不能在所有數(shù)據(jù)庫會話中使用該角色.
創(chuàng)建與管理角色
CREATE ROLE appl_dba
SET ROLE appl_dba IDENTIFIED BY seekwrit;
授予角色特權(quán)
GRANT oem_monitor TO charlie;
GRANT PLUSTRACE TO PUBLIC;
GRANT create ANY TABLE TO appl_dba with admin option;
當(dāng)提到給一個(gè)角色授予WITH ADMIN OPTION時(shí),角色的行為看起來象系統(tǒng)特權(quán),而且后續(xù)的取消不會發(fā)生級聯(lián)作用.
啟用角色
set role hr_admin identified by "my!seekrit",employee;
set role all except hr_admin;
查看當(dāng)前會話得到啟用的角色
select role from sessin_roles;
查看已分配給用戶或特殊用戶PUBLIC的角色.
USER_ROLE_PRIVS describes the roles granted to the current user.
select granted_role from user_role_privs where username in(USER,'PUBLIC');
查看已在讀者的會話中得到啟用和直接授給讀者或PUBLIC的角色,但不包括讀者所繼承的那些角色,執(zhí)行下列語句.
SELECT role FROM session_roles INTERSECT
SELECT granted_role FROM user_role_privs
WHERE username IN(USER,'PUBLIC');
 
 
禁用角色
SET ROLE NONE
SET ROLE ALL EXCEPT role_list
不存在任何有選擇性地禁用單個(gè)角色的方法.不能禁用自己作為另一個(gè)角色所繼承來的角色,除非禁用了父角色.
 
 
設(shè)置默認(rèn)角色
...ALTER USER scott DEFAULT ROLE ALL EXCEPT plustrace;
由于一個(gè)角色的創(chuàng)建者自動擁有該角色,并且該角色被配置為一個(gè)默認(rèn)角色,所以創(chuàng)建了許多角色的管理性用戶(比如SYS或SYSTEM)可能需要修改他們的默認(rèn)角色列表.
 
 
按用戶控制資源使用
分配表空間限額
....quota 100M ON USERS;
 
 

利用概況分配資源限額
一個(gè)數(shù)據(jù)庫調(diào)用是一個(gè)語法分析,一個(gè)執(zhí)行或一個(gè)取數(shù)據(jù)。通常,數(shù)據(jù)庫隱含地替讀者執(zhí)行這些調(diào)用。讀者可以明確地從JAVA,PS/SQL或OCI程序中做這些數(shù)據(jù)庫調(diào)用。一個(gè)邏輯讀是數(shù)據(jù)庫在執(zhí)行SQL語句期間所完成的工作量的一種度量。邏輯讀被計(jì)算為一致獲取與當(dāng)前模式獲取的總和。
Logical reads include blocks read from both memory and disk.
Logical reads :The sum of "db block gets" plus "consistent gets"
db block gets :Number of times a CURRENT block was requested
consistent gets:Number of times a consistent read was requested for a block
db_block_gets + consistent_gets = LOGICAL IO
physical_reads = PHYSICAL IO
http://www.oracledba.com.cn/blog/?p=37 一篇帖子很好,以后看
 
 

啟用(9i,10g默認(rèn)都沒啟用)
ALTER SYSTEM SET resource_limit=TRUE SCOPE=BOTH;
支持下列限定資源的字句
CONNECT_TIME sql>CREATE PROFILE agent LIMIT CONNECT_TIME 10;
CPU_PER_CALL sql>CREATE PROFILE agent LIMIT CPU_PER_CALL 3000; (以毫秒為單位,即1秒的百分?jǐn)?shù))
sql>ALTER PROFILE data_analyst LIMIT CPU_PER_CALL UNLIMITED;
CPU_PER_SESSION sql>CREATE PROFILE agent LIMIT CPU_PER_SESSION 30000;
IDLE_TIME sql>ALTER PROFILE agent LIMIT IDLE_TIME 10 (分鐘,運(yùn)行時(shí)間很長的SQL語句不受這個(gè)設(shè)置影響)
LOGICAL_READS_PER_CALL sql>ALTER PROFILE agent LIMIT LOGICAL_READS_PER_CALL 2500;
LOGICAL_READS_PER_SESSIONsql>ALTER PROFILE agent LIMIT LOGICAL_READS_PER_SESSION 1000000;
PRIVATE_SGA sql>以字節(jié)為單位限定一個(gè)連接到共享服務(wù)器的用戶能夠給PGA中的持久區(qū)域分配的SGA內(nèi)存量.(書解釋)
sql>用戶能夠在SGA中使用的私有的空間數(shù)單位bytes .共享服務(wù)器模式下PGA的一些區(qū)域(UGA)到了SGA中(網(wǎng)絡(luò)解釋)
sql>ALTER PROFILE agent LIMIT PRIVATE_SGA 2500;
SESSION_PER_USER sql>ALTER PROFILE agent LIMIT SESSION_PER_USER 2;
COMPOSITE_LIMIT :限定在一個(gè)用戶會話期間能夠被消費(fèi)的服務(wù)單元數(shù)量。服務(wù)單元被計(jì)算為CPU_PER_SESSION,LOGICAL_READS_PER_SESSION,CONNECT_TIME,PRIVATE_SGA的加權(quán)總和。加權(quán)使用ALTER RESOURCE COST 語句設(shè)立,for example: alter resource cost connect_time 0 ;并能夠從RESOURCE_COST數(shù)據(jù)目錄視圖中被查看。
sql>ALTER PROFILE agent LIMIT COMPOSITE_LIMIT 1000000;
sql>select * from dictionary where instr(comments,'profile')>0; DBA_PROFILES
 
 
應(yīng)用最少特權(quán)原則
DBA_TAB_PRIVS:DBA_TAB_PRIVS describes all object grants in the database
DBA_SYS_PRIVS:DBA_SYS_PRIVS describes system privileges granted to users and roles.
example:列出由用戶sys所擁有的,并且已經(jīng)把execute特權(quán)授給了public的各個(gè)包
select table_name from dba_tab_privs p,dba_objects o where p.owner=o.owner and p.table_name=o.object_name and p.owner='SYS' and p.privilege='EXECUTE' and p.grantee='PUBLIC' AND o.object_type='PACKAGE';
列出所有擁有SELECT ANY TABLE特權(quán)的用戶
select * from DBA_SYS_PRIVS WHERE PRIVILEGE='SELECT ANY TABLE';
保護(hù)數(shù)據(jù)目錄:確保擁有select_any_table特權(quán)的用戶無法通過設(shè)置:(第一個(gè)字母是歐)O7_dictionary_accessibility=false來訪問數(shù)據(jù)目錄的基礎(chǔ)表。這是默認(rèn)設(shè)置。
從PUBLIC中取消取消不必要的特權(quán):
REVOKE EXECUTE ON utl_tcp FROM PUBLIC;
REVOKE EXECUTE ON utl_smtp FROM PUBLIC;
REVOKE EXECUTE ON utl_http FROM PUBLIC;
REVOKE EXECUTE ON utl_file FROM PUBLIC;
REVOKE EXECUTE ON dbms_obfuscation_toolkit FROM PUBLIC;
REVOKE EXECUTE ON dbms_crypto FROM PUBLIC;
 
 
限定擁有管理特權(quán)的用戶
SYSDBA:最高,沒有任何理由授給SYS之外的用戶
DBA:允許被授權(quán)者在整個(gè)數(shù)據(jù)庫分配特權(quán)和操縱數(shù)據(jù),慎重。
ANY系統(tǒng)權(quán)限:select any table,grant any role,delete anyy table...
 
 
不啟用REMOTE_OS_AUTHENT 初始化參數(shù)REMOTE_OS_AUTHENT的默認(rèn)設(shè)置是FALSE.
 
 
每個(gè)用戶只應(yīng)該被授予執(zhí)行其工作所需要的最少特權(quán).這個(gè)原則是一個(gè)以初始封閉原理為中心的原則.
我們應(yīng)該采取幾個(gè)動作,同時(shí)設(shè)置或鎖定數(shù)據(jù)庫
保護(hù)數(shù)據(jù)目錄:確保擁有SELECT ANY TABLE特權(quán)的用戶無法通過設(shè)置07_DICTIONARY_ACCESSIBILITY=FALSE來訪問數(shù)據(jù)目錄的基礎(chǔ)表.
從PUBLIC中取消不必要的特權(quán).具體看書
限定擁有管理特權(quán)的用戶:
看DBA和SYSDBA的區(qū)別
不啟用REMOTE_OS_AUTHENT
 
 
管理默認(rèn)的用戶賬號
sys和system賬號分別是數(shù)據(jù)目錄擁有者和一個(gè)管理性帳戶.sysman和dbsnmp帳戶由Enterprise Manager使用.
 
 
實(shí)現(xiàn)標(biāo)準(zhǔn)密碼安全特性:找到這個(gè)腳本的位置,執(zhí)行。
$ORACLE_HOME/rdbms/admin/utlpwdmg.sql
@%ORACLE_HOME%\rdbms/admin\utlpwdmg.sql
 
 
顯示表空間限額
select tablespace_name,username,bytes,max_bytes from dba_ts_quotas;
顯示概要文件的信息
select profile,resource_name,limit from dba_profiles where profile='DEFAUTL';
 
 
審計(jì)數(shù)據(jù)庫活動()
 
 
審計(jì)記錄可以保存在數(shù)據(jù)庫中,也可以存儲在操作系統(tǒng)文件中以獲得更高的安全性
Audit_trail:把審計(jì)記錄寫到什么地方.默認(rèn)位置是NONE.
sql>alter system set AUDIT_TRAIL=DB scope=spfile;
寫到數(shù)據(jù)庫:大部分審計(jì)項(xiàng)被記錄在sys.aud$表中。
寫到OS中:unix--audit_file_dest ;windows--Event Viewer日志文件中
AUDIT_TRAIL=OS(不測試了)
....
四個(gè)審計(jì)級別:語句,特權(quán),對象和精細(xì)訪問.
 
 
管理語句審計(jì)
audit table;
audit table by cxy;
audit table by cxy whenever not successful;
audit insert table by cxy by access;
識別已啟用的語句審計(jì)選項(xiàng)
select audit_option,failure,success,user_name from dba_stmt_audit_opts order by audit_option,user_name;
禁用語句審計(jì)
noaudit session;
noaudit not exists;
noaudit table by cxy;
檢查審計(jì)跟蹤
select username,timestamp,action_name from dba_audit_trail where username='TEST01';
 
 
管理特權(quán)審計(jì)
啟用
audit create any table;
audit create any table by test01;
標(biāo)識已啟用的特權(quán)審計(jì)選項(xiàng)
select privilege,user_name from dba_priv_audit_opts order by privilege,user_name;
禁用
noaudit alter profile;
noaudit delete any table by juanita;
noaudit alter user by juanita;
 
 
管理對象審計(jì):監(jiān)視和記錄需要一個(gè)指定對象特權(quán)的sql語句的執(zhí)行,比如select,insert,update,delete或execute對象特權(quán)
和語句或系統(tǒng)特權(quán)審計(jì)不同的是,模式對象審計(jì)不能被限定于指定用戶--它針對所有用戶或者針對無用戶被啟用.
啟用
audit select on hr.EMP_DETAILS_VIEW BY ACCESS WHENEVER SUCCESSFUL;
AUDIT SELECT ON HR.EMP_DETAILS_VIEW BY SESSION WHENEVER NOT SUCCESSFUL;
標(biāo)識已啟用的對象審計(jì)選項(xiàng)
SELECT owner,object_name,object_type,ins,sel FROM dba_obj_audit_opts WHERE wner='HR' AND object_name='EMP_DETAILS_VIEW';
禁用對象審計(jì)
NOAUDIT SELECT ON HR.EMP_DETAILS_VIEW WHENEVER NOT SUCCESSFUL;
 
 
清除審計(jì)跟蹤
DELETE FROM SYS.AUD$ WHERE TIMESTAMP#<SYSDATE-90;< p>
 
 
管理精細(xì)審計(jì)(Fine-grained auditing,簡稱FGA)允許讀者基于數(shù)據(jù)的內(nèi)容監(jiān)視和記錄數(shù)據(jù)訪問.
可以使用PL/SQL包DBMS_FGA來配置和管理FGA
參數(shù)解釋:object_schema,object_name,policy_name,audit_condition,audit_column,handler_schema,handler_module,enable,audit_trail,audit_column_ops
object_schema:待審計(jì)對象的所有者,默認(rèn)NULL
object_name: 待監(jiān)視對象的名稱
policy_name:心策略的一個(gè)唯一性名稱
audit_condition:sql表達(dá)式,為真時(shí),一個(gè)審計(jì)記錄創(chuàng)建,語法有些限制,如不能使用一些函數(shù),子查詢或者序列.
audit_column: 逗號分隔的列列表,數(shù)據(jù)庫將要訪問這些列.如果audit_column被參考,且audit_condition為true,審計(jì)記錄得到創(chuàng)建.
handler_schema:事件處理程序的所有者
handler_module:事件處理程序過程的名稱.
enable:啟用,默認(rèn)true
statement_types:要監(jiān)視那些類型的sql語句.默認(rèn)是select
audit_trail:是否把sql語句和用于觸發(fā)sql的賦值變量記錄在審計(jì)跟蹤中.默認(rèn)值DBMS_FGA.DB_EXTENDED記錄之,應(yīng)該把參數(shù)設(shè)置成DBMS_FGA.DB,以便節(jié)省空間.
audit_column_ops: 兩個(gè)有效值:DBMS_FGA.ALL_COLUMNS DBMS_FGA.ANY_COLUMNS
創(chuàng)建FGA策略(未啟用)
EXECUTE DBMS_FGA.ADD_POLICY(object_schema=>'HR',object_name=>'EMPLOYEES',policy_name=>'COMPENSATION_AUD',audit_column=>'SALARY,COMMISSION_PCT',enable=>FALSE,statement_types=>'SELECT');
啟用
EXECUTE DBMS_FGA.ENABLE_POLICY(object_schema=>'HR',object_name=>'EMPLOYEES',policy_name=>'COMPENSATION_AUD');
禁用
DBMS_FGA.DISABLE_POLICY(object_schema=>'HR',object_name=>'EMPLOYEES',policy_name=>'COMPENSATION_AUD');
刪除FGA策略
EXECUTE DBMS_FGA.DROP_POLICY(object_schema=>'HR',object_name=>'EMPLOYEES',policy_name=>'COMPENSATION_AUD');
識別數(shù)據(jù)庫中的FGA策略
SELECT policy_name,object_name||'.'||object_name object_name,policy_column,enabled,audit_trail from dba_audit_policies;
制作FGA審計(jì)跟蹤數(shù)據(jù)項(xiàng)的報(bào)表
SELECT db_user,timestamp,userhost from dba_fga_audit_trail where policy_name='COMPENSATION_AUD';
 
 
************$7 使用SQL,PL/SQL和實(shí)用程序管理數(shù)據(jù)************************
大量的數(shù)據(jù)庫特性是作為PL/SQL程序來實(shí)現(xiàn)的,而且知道怎樣識別和處理這些PL/SQL程序?qū)?shù)據(jù)庫管理員的工作效率來說是至關(guān)重要的.
5種類型的命名的PL/SQL程序:Function,Procedure,Package,Package body,Trigger,這些程序通常被存儲在數(shù)據(jù)庫中.每個(gè)存儲式PL/SQL程序的
 
 
名稱和源代碼都可以從DBA_SOURCE和DBA_TRIGGERS數(shù)據(jù)目錄視圖中獲取,盡管有些供給的程序包經(jīng)過了"包裝",二進(jìn)制的.
看sql開發(fā)指南一書。
處理函數(shù)
DECLARE today DATE DEFAULT SYSDATE;
today:=SYSDATE;
IF TO_Char(SYSDATE,'Day')='Monday'
SELECT COUNT(*) FROM hr.employees WHERE hire_date>SYSDATE-30;
SELECT TRUNC(SYSDATE)
_____________________________________________________________
CREATE OR REPLACE FUNCTION is_weekend(
check_date IN DATE DEFAULT SYSDATE)
RETURN VARCHAR2 AS
BEGIN
CASE TO_CHAR(check_date,'DY')
WHEN 'SAT' THEN
RETURN 'YES';
WHEN 'SUN' THEN
RETURN 'YES';
ELSE
RETURN 'NO';
END CASE;
END;
-------------------------------------------------------------------
處理過程
CREATE OR REPLACE PROCEDURE archive_orders
(cust_id IN NUMBER
,retention IN NUMBER) IS
BEGIN
DELETE orders
WHERE customer = cust_id
AND order_date < SYSDATE - retention;
INSERT INTO maint_log
(action,action_date,who) VALUES
('archive orders '|| retention || ' for '|| cust_id
,SYSDATE,USER);
END;
---------------------------------------------------------------------
set serverout on
EXEC DBMS_OUTPUT.PUT_LINE('HELLO WROLD!');
--------------------------------------------------
CALL DBMS_OUTPUT.PUT_LINE('HELLO WROLD!');
---------------------------------------------------
處理程序包
一個(gè)程序包就是一個(gè)用于函數(shù),過程和數(shù)據(jù)結(jié)構(gòu)(比如記錄,游標(biāo),變量,和約束)的容器.一個(gè)程序包擁有一個(gè)叫做規(guī)約(簡寫為spec)的公用部分和
 
 
一個(gè)叫做程序包體的私有部分.
程序包規(guī)約:PACKAGE類型
程序包體:PACKAGE BODY類型
-----------------------------------------------------
CREATE OR REPLACE PACKAGE table_util IS
FUNCTION version RETURN VARCHAR2;
PROCEDURE truncate (table_name IN VARCAHR2);
END table_util;
--------------------------------------------------
CREATE OR REPLACE PACKAGE BODY table_util IS
version_string VARCHAR2(8) := '1.0.0';
FUNCTION version RETURN VARCHAR2 IS
BEGIN
RETURN version_string;
END;
PROCEDURE truncate(table_name IN VARCHAR2) IS
BEGIN
IF UPPER(table_name) = 'ORDER_STAGE'
OR UPPER(table_name) = 'SALES_ROLLUP'
THEN
EXECUTE IMMEDIATE 'trunate table ' || UPPER(table_name);
ELSE
RAISE_APPLICATION_ERROR(-20010,Invalid table for truncate: '|| table_name);
END IF;
END;
END table_util;
------------------------------------------------------------------------------------
處理觸發(fā)時(shí)間和管理觸發(fā)器
DML,DDL,數(shù)據(jù)庫事件
具體見書
--------------------------------------------------------------
CREATE OR REPLACE TRIGGER employee_trg
BEFORE INSERT OR UPDATE OF hire_date
ON employee FOR EACH ROW
BEGIN
log_update(USER,SYSTIMESTAMP); --這個(gè)函數(shù)查不到???
IF INSERTING THEN -- if fired due to insert
:NEW.create_user := User;
:NEW.create_ts :=SYSTIMESTAMP;
ELSIF UPDATING THEN -- if fired due to update
IF :OLD.hird_date <> :NEW.hire_date THEN
RAISE_APPLICATION_ERROR(-20013,'update of hire_date not allowed');
END IF;
END IF;
END;
-----------------------------------------------------------------------------------
事件:INSERT,UPDATE,DELETE
順序:在語句觸發(fā)器之前-->行觸發(fā)器之前-->行觸發(fā)器之后-->語句觸發(fā)器之后.
DDL事件觸發(fā)器:略
數(shù)據(jù)庫事件觸發(fā)器:略
 
 

使用和管理PL/SQL程序
desc 包
每當(dāng)一個(gè)依賴對象通過alter 語句被編譯時(shí),一個(gè)pl/sql程序就變得無效。下次調(diào)用是自動重新編譯。但我們可以選擇手工編譯無效的PL/SQL
 
 
程序,for example:
ALTER PROCEDURE archive_orders COMPILE;
ALTER FUNCTION is_weekend COMPILE;
alter package table_util compile body;
配置PL/SQL來獲取較佳的性能
PLSQL_WARNING:10G新引進(jìn)的,指出潛在問題,幫助開發(fā)人員創(chuàng)建更好的程序.生產(chǎn)中禁用,alter system set plsql_warning='DISABLE:ALL'
 
 
scope=both;
PLSQL_DEBUG:迫使后續(xù)的pl/sql編譯都得到翻譯并包含輔助的調(diào)試信息.生產(chǎn)中禁用它.
alter system set plsql_debug = false scope=both;
PLSQL_OPTIMIZE_MODE:一個(gè)優(yōu)化的編譯程序,啟用它.
alter system set plsql_optimize_level=2;
PLSQL_CODE_TYPE:指定將plsql代碼編譯成默認(rèn)翻譯的字節(jié)碼還是本級代碼.本機(jī)代碼較長編譯時(shí)間和較大一些的管理性開銷,較快速的運(yùn)行時(shí)性
 
 
能.
啟用本機(jī)編譯:c編譯程序,設(shè)置參數(shù)PLSQL_NATIVE_LIBRARY_DIR,并保證該目錄存在.設(shè)置參數(shù)PLSQL_CODE_TYPE='NATIVE' ...以后測試
 
 
創(chuàng)建目錄對象,需要擁有create any directory系統(tǒng)特權(quán),謹(jǐn)慎,這個(gè)數(shù)據(jù)庫采用數(shù)據(jù)庫實(shí)例所有者的操作系統(tǒng)憑證.
create directory dump_dir as '/home/oracle/data_pump/dumps';(用操作系統(tǒng)命令建立目錄,保證存在該目錄)
create directory log_dir as '/home/oracle/data_pump/logs';(用操作系統(tǒng)命令建立目錄,保證存在該目錄)
數(shù)據(jù)轉(zhuǎn)儲
Data Pump[數(shù)據(jù)轉(zhuǎn)儲]工具是10g引進(jìn)的一個(gè)特性.它是一種在數(shù)據(jù)庫之間或者在數(shù)據(jù)庫與操作系統(tǒng)文件之間傳輸數(shù)據(jù)或元數(shù)據(jù)的高速機(jī)制.Data
 
 
Pump采用目錄路徑上載和直接路徑裝入技術(shù).和exp和imp不同,Data Pump工具運(yùn)行在服務(wù)器上.因此數(shù)據(jù)庫管理員必須使用一個(gè)數(shù)據(jù)庫目錄來指定轉(zhuǎn)儲文件和目錄文件位置,給用戶操作目錄的權(quán)限.(grant read,write on directory XXXXXX to public | XXXXX)
使用Data Pump導(dǎo)出數(shù)據(jù)
運(yùn)行expdp :
數(shù)據(jù)庫導(dǎo)出方式: expdp system/cxx full=y dumpfile=chap7a:fulla%U.dmp,chap7b:fullb%U.dmp filesize 2G parallel=2 logfile=chap7:full.log
對象模式導(dǎo)出
expdp hr/hr dumpfile=chap7:hr.dmp logfile=chap7:hr.out
表導(dǎo)出方式
expdp hr/hr dumpfile=chap7:job_tabs.dmp nologfile=y content=metadata_only tables=jobs,job_history
表空間導(dǎo)出方式
expdp system/cxy110 dumpfile=chap7:users_ts.dmp logfile=chap7:users_ts.out tablespaces=users(ora-39139 錯(cuò)誤,data pump不支持xml....解決:用傳統(tǒng)的exp)
 
 

expdp test07/cxy110 dumpfile=chap7:tbs07_ts.dmp logfile=chap7:tbs_ts.out tablespaces=tbs07
 
 

DBMS_DTAPUMP
使用DBMS_DTAPUMP設(shè)置一個(gè)DATA PUMP比僅使用獨(dú)立程序麻煩一些,但是可提供較高的功能度和控制權(quán).
example:
 
 

DECLARE
h2 NUMBER; --HANDLE FOR THE dATE pUMP SESSION
BEGIN
-- Obtain a handle to an export Data pump session
h2 := dbms_datapump.open(
operation => 'EXPORT' --export not import
,job_mode => 'SCHEMA'); --schema mode
-- ,job_mode => 'FULL'); --database mode
-- ,job_mdoe => 'TABLE'); --table mode
-- ,job_mode => 'TABLESPACE'); --tablespace mode
--define the log file
dbms_datapump.add_file(
handle => h2 -- from the open call
,filename => 'hr.out' -- file name
,directory => 'CHAP7' --database directory object
,filetype => dbms_datapump.ku$_file_type_log_file);
--define the dump file
dbms_datapump.add_file(
handle => h2 -- from the open call
,filename => 'hr.dmp' -- file name
,directory => 'CHAP7' -- database directory object
,filetype => dbms_datapump.ku$_file_type_dump_file);
--define schemas to exprot
dbms_datapump.metadata_filter(
handle => h2 -- from the OPEN call
,name => 'SCHEMA_EXPR' --schema name filter
-- ,name => 'INCLUDE_NAME_EXPR' --TABLE NAME FILTER
-- ,name => 'EXCLUDE_NAME_EXPR' --table name filter
-- ,name => 'TABLESPACE_EXPR' -- tablespace name filter
,value => 'IN(''hr'')'); --name list
--invoke data pump
dbms_datapump.start_job(handle => h2); -- from the open call
-- run the job in the background
dbms_datapump.detach(handle => h2);
end;
 
 

EM Database Control(略,可從中生成PL/SQL代碼,熟悉DATAPUMP)
 
 
使用Data Pump 導(dǎo)入數(shù)據(jù)
impdp system/paasword full=y dumpfile=chap7:FULL.DMP nologfile=y sqlfile=chap7:FULL.SQL(只生成DDL語句,不導(dǎo)入數(shù)據(jù))
 
 

impdp system/password network_link=prod schema="HR" remap_schema="HR:HR_TEST" content=metadata_only logfile=chap7:HR_TEST.LOG(先創(chuàng)建好DB_LINK,是否不支持連接遠(yuǎn)程ORACLE 9I???)
 
 

impdp system/password full=y dumpfile=chap7:HR.DMP nologfile=y sqlfile=chap7:HR_proc_give.SQL include=PROCEDURE:"LIKE 'GIVE%'"
 
 
impdp system/password network_link=prod schema="HR" remap_schema="HR:HR_TEST" content=data_only include=TABLE:"= 'DEPARTMENTS'" logfile=chap7:HR_TEST.LOG
 
 

impdp system/cxyxxxx tablespaces=TBS07 dumpfile=chap7:tbs07_ts.dmp nologfile=y(導(dǎo)入表空間,先在目標(biāo)數(shù)據(jù)庫創(chuàng)建表空間和用戶,dumpfile是一個(gè)表空間的導(dǎo)出文件)
使用包和使用OEM略

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI