前言
正常生產環境下往往是通過應用服務器來與Oracle數據庫相連接,大多數使用Oracle的開發語言以Java爲主,針對於Java的中間件有很多,我們這裏具體來看一下Oracle整體產品線的WLS產品
安裝Weblogic
執行上圖所示命令,啓動WLS安裝頁面
在歡迎頁面中點擊下一步繼續
選擇中間件主目錄,點擊下一步繼續
這裏根據實際情況即可,點擊下一步繼續
選擇典型安裝,點擊下一步繼續
確定WLS Server等安裝目錄,點擊下一步繼續
確定安裝所需空間,點擊下一步繼續
安裝完畢後,不勾選快速啓動,直接點擊完成按鈕退出即可
配置WLS域
安裝好WLS後,切換到上圖所示目錄,執行config.sh腳本來進行域的創建
選擇創建新的WLS域,點擊下一步繼續
按照默認即可(下面三項均無需勾選),點擊下一步繼續
域名可以根據自己實際情況即可,點擊下一步繼續
配置管理員的用戶名與密碼(PS:12C會溫馨提示需要8位以上具有字母和數據的混合密碼),點擊下一步繼續
選擇生產模式(否則無法部署發佈項目),點擊下一步繼續
單實例情況下就不做特殊變更了,點擊下一步繼續
確認無誤後,點擊創建即可
創建完畢後,點擊完成退出頁面
啓動Weblogic
創建完域以後,可以按上圖所示路徑,執行startWebLogic.sh腳本來啓動WLS(PS:會提示用戶名密碼,這個可以寫在一個boot啓動腳本里,就可以自動加載了)
打開瀏覽器鍵入地址(http://ip:7001/console) 鍵入用戶名與密碼進行登錄
出現上圖所示頁面,至此WLS 12C就完全安裝創建完畢
Oracle的管理工具SQLPLUS
1、數據庫的啓動和關閉
2、數據庫的管理工作
靜態參數文件
Oracle9i以前,數據庫只是提供靜態參數文件
靜態參數文件的啓動順序
在sql> startup的時候,Oracle默認去哪尋找參數文件?
對於Linux或者Unix系統來說,默認尋找順序是$ORACLE_HOME\dbs
1、initSID.ora 2、init.ora
我們可以手工的指定參數文件的位置
SQL>startup pfile=/u01/app/oracle/11g/dbs/init.ora
靜態參數文件只是在數據庫啓動的時候讀取一次,然後釋放。
手工修改任何參數,都需要重新啓動數據庫才能生效。
對於Windows系統來說,默認目錄是%ORACLE_HOME%\database
動態參數文件
1、Oracle9i開始,Oracle引入了動態參數文件spfile
裏面的很多參數是可以動態調整的,這區別於pfile
2、RMAN可以自動的備份spfile
3、spfile是一個二進制的文件,可以使用寫字板打開,但是不能修改,否則會破壞這個參數文件
4、Oracle 9i開始,參數文件的尋找順序如下
1、spfileSID.ora
2、spfile.ora
3、initSID.ora
4、init.ora
這個實例使用的是動態參數文件。
動態參數文件的建立
通過動態參數文件建立了一個靜態參數文件。我們可以認爲是做了一個動態參數文件的文本備份。
上面的pfile在默認的路徑下,默認的名字
上面的spfile在默認的路徑下,默認的名字
在另外一個目錄建立了一個動態參數文件。
動態參數文件中參數的修改
只能使用ALTER SYSTEM SET命令進行修改
ALTER SYSTEM SET parameter_name=parameter_value
[comment=‘註釋’] scope=[memory|spfile|both] [sid=‘sid’|’*’]
默認是’*’,在RAC環境中有意義
只是修改內存|只是修改spfile|同時修改spfile和內存,默認是both
一個常見錯誤的解決流程
錯誤了的修改了spfile裏面的參數,數據庫啓動失敗,因爲沒有辦法直接修改spfile,該怎麼辦?
1、sql>create pfile='/u01/app/oracle/11g/dbs/initbear.ora' from spfile
2、手工的在pfile裏面編輯和修改錯誤的參數
3、sql>create spfile from pfile='/u01/app/oracle/11g/dbs/initbear.ora'
4、sql>startup
使用spfile啓動時的位置問題
1、將spfile放在默認位置dbs或者database目錄下面
2、在pfile下面指定spfile的位置,然後使用starup pfile進行指定
實例的啓動和關閉
nomount階段
1、尋找參數文件
2、打開參數文件
3、打開告警日誌alterSID.log
4、在這個階段可以重建控制文件
我們要經常的關注這個文件(告警日誌)
mount階段
根據參數文件中控制文件的路徑和名字,打開所有的控制文件
如果有一個控制文件不能打開,那麼不能進入mount狀態
從控制文件中讀取數據文件、日誌文件的路徑和名字,不校驗這些文件的存在
再來看一下日誌
open階段
根據控制文件中對數據文件、日誌文件的記錄,打開所有的文件
有一個文件不能打開,就不能進入這個狀態
最後看一下日誌
實例的關閉
shutdown normal | transactional | immediate | abort
有四個選項可以選擇,默認是normal
1、abort
模擬突然掉電
內存被清空、內存中的數據沒有寫入數據文件
事務被立即中斷
沒有提交、沒有回滾
2、immediate
強制中斷當前正在運行的所有事務,回滾這些事務
回滾完畢,強制中斷所有的連接
將實例中的所有數據寫入數據文件
3、transactional
等待正在運行的事務,一直到他們提交或者回滾
所有事務主動結束以後(提交或者回滾),強行中斷連接
將實例裏面的數據寫入數據文件
清空緩存
如果有事務一直沒有提交或者回滾,實例無法關閉
4、normal
等待事務的主動提交或者回滾
等待用戶主動斷開連接
如果有一個用戶沒有斷開連接,那麼數據庫無法關閉
關閉時間快慢
abort——immedaite——transactional——normal,速度由快到慢
1、除了abort以外的關閉方式
觸發一個checkpoint,內存中數據寫入到數據文件中
一致性數據庫
2、abort關閉、突然掉電、數據庫崩潰down、等
沒有觸發一個檢查點
髒數據庫
數據庫需要恢復
SMON負責數據庫的恢復
建議:採用shutdown immediate進行數據庫的關閉
EM管理工具:database control
1、dbca創建數據庫的時候,可以選擇安裝db control
2、安裝完成數據庫以後,採用emca創建db control
刪除db control
1、emca –deconfig dbcontrol db
2、emca –repos drop
建立db control
1、emca –repos create
創建repository(創建了一些表),屬主是sysman
2、emca –config dbcontrol db
管理db control
1、emctl start dbconsole
2、emctl stop dbconsole
3、emctl status dbconcole
SQL*Plus工具
SQL*Plus是一個命令行工具,我們可以按交互方式或在批處理模式下使用該工具。
可以使用SQL*Plus 的命令行界面來編寫SQL*Plus、SQL 和PL/SQL 命令,以便:
輸入、編輯、運行、存儲、檢索和保存SQL 命令和PL/SQL 塊
格式化、計算、存儲和打印查詢結果
列出任何表的列定義
向最終用戶發送消息或接受來自最終用戶的響應
執行數據庫管理
初始化參數文件
數據庫的引導需要初始化參數文件來控制,我們現在來具體看一下
數據庫啓動後,我們來看一下參數信息
通過上圖,我們可以看到,我們目前使用的動態初始化參數文件spfileSID.ora
我們來做一個實驗,刪除這個動態參數文件,看一下數據庫能否啓動
數據庫正常啓動,但是我們可以看到,目前使用的初始化參數文件已經不是動態的spfile文件,那麼現在使用的是哪個初始化參數文件呢,我們再來做一個實驗
這次,我們把靜態初始化參數文件initSID.ora也刪除,再來看一下數據庫還能否啓動
我們看到,數據庫無法啓動,會報錯提示initSID.ora文件未找到,由這個簡單的實驗,我們可以得出結論,數據庫首先搜索的是動態初始化參數文件spfleSID.ora,如果沒有該文件,則搜索spfile.ora,如果也沒有默認的動態初始化參數文件,則搜索靜態初始化參數文件initSID.ora,如果也找不到,則返回錯誤。
重新更改回靜態初始化參數文件後,數據庫已經可以啓動
靜態初始化參數文件(pfile)
靜態初始化參數文件,是我們在使用手工建庫時候必須建立的,來引導數據庫啓動的一個重要的參數文件,通常的命名模式爲initSID.ora,存放路徑爲ORACLE_HOME/dbs目錄下
我們可以看到,使用靜態參數文件,不能夠修改任何參數(無論動態與靜態),但是我們可以通過修改該文件本身,來實現我們的目的
重新編譯initvfast.ora文件,在其中增加一行processes=200,重新啓動數據庫
我們可以看到,雖然還是靜態初始化參數模式,但是進程數已經變爲了200
動態初始化參數文件(spfile)
從Oracle 9i開始,推出了動態初始化參數文件spfile,使得DBA可以更方便的在線更改所需的參數,而無需重新啓動數據庫,我們來看一下動態參數文件的創建方法。
我們可以看到,現在的數據庫已經由動態初始化參數文件啓動,現在來做一個小實驗看一下靜態初始化參數文件與動態初始化參數文件的區別。
重新啓動後,可以看到進程已經變爲150。
進程參數屬於靜態參數,只能夠用scope=spfile寫入到初始化參數文件中,當下次啓動後則更改完成,我們再來看一下如何直接修改動態參數。
可以看到,open_cursors參數屬於動態參數,可以使用scope=both選項馬上更改過來,而session_cached_cursors參數屬於靜態參數,不能使用scope=both選項,只能使用scope=spfile選項寫入到spfile文件中,在下次啓動數據庫時會自動改爲新的數值。
課後練習
瞭解初始化參數文件(pfile與spfile)
如何使用sqlplus修改spfile中的參數,如果區分參數是靜態的還是動態的?
以實際的例子演示說明
描述常見的每個參數的含義及其作用
數據字典
什麼叫數據字典?
數據字典指的是描述數據的數據。
舉個例子:
我們在數據庫裏面創建了一個表
這個表位於哪個數據文件
這個表有哪些列
這個表的每一個列的數據類型
這個表的約束
。
。
。
這些信息都是描述這個表的,這些信息也存放在一些表中,這些表就是數據字典,數據字典中的數據描述的是整個數據庫的各種各樣的信息。
數據庫要能夠訪問,數據字典必須能夠被訪問。
數據字典
1、數據字典由兩部分組成
數據字典基本表、數據字典視圖
2、數據字典基本表
和普通的表沒有什麼區別,只不過裏面存放的是數據字典數據
create database的時候,調用了一個腳本sql.bsp,數據字典基本表的創建就是通過這個腳本實現的
這些數據字典基本表的所有者是sys
這些數據字典基本表存放在system表空間中
數據字典基本表中的信息非常難懂,而且非常的重要、一致性非常的複雜,因此千萬不要使用DML語句直接去操作數據字典基本表
通過這個腳本,我們發現大多數的數據字典基本表是以$結尾的
數據字典視圖
1、列名含義清楚
2、視圖隱藏了基本表之間的複雜關係
3、數據字典視圖的所有者是sys
4、Oracle還爲所有的數據字典視圖建立了公共的同義詞,這樣用戶就可以通過別名來訪問數據字典視圖
5、數據字典視圖和同義詞通過catalog.sql來建立
6、數據庫內建的存儲過程通過catproc.sql來建立
總結一句話,我們最主要的工作就是通過數據字典視圖和同義詞來訪問數據字典
數據字典視圖分類
1、DBA_:包含整個數據庫範圍內的對象的信息,例如DBA_TABLES包括了數據庫範圍內所有表的信息,用戶具有一定的權限才能查看這個視圖
2、ALL_:當前登錄用戶有權限查看的對象的信息,例如ALL_TABLES包括了當前用戶有權限查看的所有表的信息
3、USER_:當前登錄用戶所擁有的對象的信息,例如USER_TABLES包括了當前用戶擁有的所有表的信息
數據字典視圖的查找
數據字典視圖非常的多,該怎麼樣去查找呢?
有一個視圖,通過這個視圖可以查找所有的數據字典視圖,這個視圖就是dictionary,這個視圖的同義詞是dict
動態性能視圖
有一些數據,例如內存中的數據、控制文件中的數據,Oracle提供了一些訪問這些數據的方式:以表的方式展現這些數據。
這些數據並沒有存在實際的表中,只是以表的形式展現出來,因此是一些虛擬的表。
數據庫在運行、控制文件和內存中的數據在不斷地變化,那麼動態性能視圖中的數據也在不停的變化,數據庫重新啓動以後,動態性能視圖中的數據全部丟失。
所有的動態性能視圖的名稱都存放在v$fixed_table裏面。
動態性能視圖的名字都是以v_$開始的,屬主是sys。
Oracle爲每一個動態性能視圖提供了一個同義詞,都以v$開頭,例如v$session
SCN淺析
我們重點討論幾個SCN
控制文件中的SCN
1、系統檢查點SCN
當一個檢查點動作完成以後,Oracle就把系統檢查點的SCN存儲到控制文件中
2、數據文件檢查點SCN
當一個檢查點動作完成以後,Oracle就把每一個數據文件的SCN單獨存放在控制文件中
1、爲了顯示,首先看一下DESC,確定每一個列的大小
2、設置linesize,保證一行中能夠容納所有的列
當然也要考慮實際的大小
同時還可以設置pagesize的大小
3、終止SCN
聯機讀寫模式下面的所有的數據文件的終止SCN爲空或者無限大
數據文件中的SCN
啓動SCN
數據文件的檢查點信息寫入到每一個數據文件的頭部
1、數據庫正常運行期間,控制文件中的系統檢查點SCN、控制文件中數據文件檢查點信息、每個數據文件頭部的數據文件檢查點SCN,都是相同的
2、控制文件中每個數據文件的終止SCN都爲NULL
數據庫正常關閉,系統執行一個CHECKPOINT,將所有的數據文件的終止SCN(位於控制文件中)設置成數據文件頭部的啓動SCN
數據庫安全關閉以後,四個SCN應該是相同的
數據庫啓動
1、數據文件頭部的啓動SCN與控制文件中數據文件檢查點SCN比較
如果相同,繼續
2、數據文件頭部的啓動SCN與控制文件中數據文件終止SCN比較
如果相同,那麼表示正常關機,不需要恢復
3、數據庫打開,控制文件中數據文件終止SCN被設置爲NULL
數據庫被打開,並且正常使用