該數據庫在企業裏普遍應用
1.Oracle的發展史
1.1:1970年IBM的codd提出關係模型理論。
1.2:Larry Ellison、Bob Miner、Ed Oates+Bruce Scott組成的SDL(software development laboratories)研究出的第一個Demo產品取名爲Oracle
1.3:SDL更名爲RSI(relational software Inc),併發布了用於特定系統的商用Oracle2.0。
1.4:RSI更名爲Oracle;Oracle3.0具有可移植性、事務處理單元、非阻塞查詢、SQL語句。
1.5:Oracle4.0、Oracle5.0改善數據庫的穩定性。
1.6:重寫數據庫核心的Oracle6.0bug衆多,性能不穩。具有行級鎖、PL/SQL語言、聯機熱備份
1.7:Oracle7.0具有分佈式處理、基於開銷的優化器
1.8:Oracle8i支持Internet、java;Oracle9i支持RAC(多機單服務器)
1.9:Oracle10g數據庫網格計算功能。
1.10:Oracle11g數據壓縮技術、
2.Oracle的結構——實例與數據庫是怎樣的對應關係一對一還是多對一
2.1:實例——內存結構和後臺進程
2.1.1:內存
2.1.1.1:PGA(program global area)——存放服務器進程的數據和控制信息。
2.1.1.1.1:排序區(sort area)——排序的信息。
2.1.1.1.2:會話信息(session informaiton)——會話的權限、角色,會話的性能統計信息
2.1.1.1.3:遊標狀態(cursor state)——當前SQL的狀態;指針
2.1.1.1.4:堆棧空間(stack space)——會話的變量信息
2.1.1.2:SGA(system global area)——可以提高效率和性能
2.1.1.2.1:數據庫緩存區(database buffer cache)——緩存命中;減少數據存取時造成的磁盤讀寫動作。
2.1.1.2.2:重做日誌緩衝區(redo log buffer)——對數據庫的修改按序記錄在緩衝區中。
2.1.1.2.3:共享池(shared pool)——library cache(SQL編譯代碼)+dictionary cache(數據字典)
2.1.1.2.4:java pool
2.1.1.2.5:large pool
2.1.2:進程
2.1.2.1:數據寫進程(DBWR)
2.1.2.2:日誌寫進程(LGWR)
2.1.2.3:系統監控(SMON)——Oracle非正常關閉後,由smon進行必要的數據庫修復。
2.1.2.4:進程監控(PMON)——失敗進程的清除。
2.1.2.5:檢查點進程(CKPT)——當數據永久記錄時,更新控制文件和數據文件的數據庫狀態信息。
2.1.2.6:歸檔進程(ARCH)——將已滿的日誌組備份或歸檔。
2.2:數據庫——一系列的物理文件和與之對應的邏輯結構
2.2.1:物理(操作系統)——文件
2.2.1.1:數據文件——邏輯數據庫對象
*Oracle數據——沒有Boolean和%type類型,對大小寫敏感,
2.2.1.2:日誌文件——聯機重做日誌文件、歸檔重做日誌文件
2.2.1.3:參數文件——激活前的配置參數
2.2.1.4:控制文件——數據庫的實體信息
2.2.1.5:口令文件——指令
2.2.2:邏輯(數據庫內部)
2.2.2.1:表空間()——業務系統
2.2.2.2:段()——數據類型
2.2.2.3:區(4塊)——最小分配(存取)單位;DB的塊與OS的塊成整倍數關係。
2.2.2.4:塊(8k)——最小存儲單位
2.2.2.5:
3.特點
3.1:跨操作系統和硬件
3.2:穩定性
3.3:安全性
3.4:高效率
3.5:爲什麼選擇Oracle
3.5.1:安全。
3.5.2:數據量可以很大
3.5.3:分析特別靈活,例如不同應用中的排名。
3.5.4:性能調優手段很多
3.5.5:Oracle發展好,國內應用廣泛。
3.5.6:
4.數據字典中的數據庫對象
4.1:數據字典(系統表)——對象描述的信息庫;只讀對象;
4.2:模式(schema)——數據庫對象組合的一個集合;一個數據用戶只能有一個schema且與用戶同名。
4.3:數據庫對象
4.3.1:用戶:
4.3.2:角色
4.3.3:表空間
4.3.4:表
4.3.4.1:數據類型——char;varchar2;number默認38位;date;
4.3.5:視圖(view)=虛表——從一個或多個表中通過查詢語句得到的結果,以表的形式存在。
4.3.4.1:視圖對應的數據未實際存儲在數據庫中,只是在字典裏存放了視圖的定義。
4.3.4.2:作用——封裝查詢語句;簡化複雜查詢;簡化權限管理;
4.3.4.3:格式——create view 視圖名 as 查詢語句;
4.3.6:簇
4.3.7:類型
4.3.8:同義詞(synonym)=別名——儘量避免直接引用表、視圖、其它數據庫對象。
4.3.8.1:分類——分爲公用的和私有(默認)的。
4.3.8.2:格式——create public synonym 同義詞名 for 數據庫對象;
4.3.8.3:數據庫對象組成——SYSTEM(px上的用戶).auths(SYSTEM用戶的對象)@PX(服務器).orcl(實例)
4.3.9:序列(sequence)——與identity類似,但sequence解決了高併發的問題。
4.3.9.1:格式——create sequence 序列名 increment by 步頻 start with 起數 maxvalue 止數
4.3.9.2:屬性——nextVal/currVal(只是獲得當前的固定值,沒有nextval的輔助是無意義的)【SELECT ABC.NEXTVAL FROM DUAL;初始序列——>SELECT ABC.NEXTVAL FROM DUAL;獲得下一個序列——>SELECT ABC.CURRVAL FROM DUAL;】
4.3.9.3:DUAL——默認只有一行一列;任何用戶都可使用;類似java中的超類object;屬於SYS schema的一個表,然後以PUBLIC SYNONYM的方式供其他數據庫USER使用 ;
*dual包含的信息——user(當前用戶);sysdate(系統日期);表達式計算後的值;序列號;
*
*
4.3.9.4:查看序列信息——SELECT SEQUENCE_NAME,MIN_VALUE,MAX_VALUE,INCREMENT_BY,LAST_NUMBER FROM
USER_SEQUENCES;
4.3.10:索引
4.3.11:數據庫鏈接
4.3.12:存儲過程
4.3.13:函數
4.3.13.1:sysdate——作用於數據的函數
4.3.13.2:to_date(日期串,日期格式,地區語言)——
4.3.13.2.1:日期格式—— 'DD/MM/yyyy HH24:MI:SS ';
*YEAR——y;y的個數代表年的位數
*MONTH——mm(純2位數)/mon(縮寫詞)/month spelled out(全詞)
*DAY——dd(月中天)/ddd(年中天)/dy abbreviated(星期的縮寫)/day spelled out(星期的全詞)
*HOUR——hh(1:00:00~12:59:59)/hh24(24小時制0:00:00~23:59:59)
*MINUTE——mi
*SECONDE——ss
*Q(季度)/W(月中周)/WW(年中周)
4.3.13.2.2設置時間語言——alter session set NLS_DATE_LANGUAGE='AMERICAN';==TO_DATE('2002-4-3','YYYY-MM-DD','NLS_DATE_LANGUAGE=AMERICAN');
4.3.13.2.3:時間差—— select floor(sysdate-to_date('20020405','yyyymmdd'))from dual;
4.3.13.2.4:next_day(date,day);
4.3.13.2.5:extract()——找出時間段或日期的字段值
4.3.13.2.
4.3.13.3:to_char(數字值,格式,返回字符)
*NLS_NUMERIC_CHARACTERS="d(小數點)g(分組)"
*NLS_CURRENCY="NUD"——本地貨幣
* NLS_ISO_CURRENCY =TERRITORY——國際貨幣
*格式——fm:去空格;0起佔位作用,9對應的位置有才顯示無則影藏。
4.3.13.
4.3.13.
4.3.13.
4.3.14:包
4.3.15:觸發器
5.Oracle執行SQL
5.1:語法檢查
5.2:語義檢查——訪問數據字典,檢查訪問對象存在否+是否有權限
5.3:SQL解析——生成解析樹、執行計劃——存放在library cache的共享SQL區
*私有SQL——專用服務器連接(PGA)/共享服務器連接(SGA)
5.4:執行SQL,返回結果。
6.遠程訪問oracle的配置
6.1:打開工具net manager
6.2:配置LISTENER——監聽的遠程服務器和端口(1521)
6.3:在服務命名中新建服務——給予引用名,服務器ip,oracle服務名(從oracleservice服務的屬性中的可執行文件路勁的最後一個單詞)
6.4:打開服務TNSListener;