Oracle進階培訓 第1課 學習筆記 修正版本課筆記中的頁碼與《Oracle9i 資料庫管理基礎II Ed 1.1 Vol.1.pdf》對應
指南:http://blog.csdn.net/magus_yang/archive/2006/10/10/1328283.aspx 作者:JackYang (JackYang.sh@gmail.com)時間:2006-10-10 P151還原(restore)和恢複(recovery)的區別:還原,僅是把備份的檔案拷回來。恢複,不僅把備份的檔案拷回來,而且把備份時間到還原為至的資料恢複出來。 P153備份和恢複的目標盡量延長MTBF(平均故障間隔時間)盡量縮短MTTR(平均恢復)盡量減少資料損失 P154故障類別:語句故障,通常不需要DBA幹預,P156使用者進程故障,通常不需要DBA幹預,P158使用者錯誤,通常需要DBA幹預,P160網路故障常式故障,通常需要DBA幹預,P162介質故障,通常需要DBA幹預,P165 使用者會話/使用者進程先建立串連,Oracle伺服器在驗證了使用者後,啟動會話。 Instance(執行個體)
Oracle Instance是一種訪問Oracle資料庫的方式;一個Instance = 一組後台進程 + 一個SGA一組後台進程至少有5個進程,其中一個是PROGRAM MONITOR(PMON),用於監測使用者進程。SGA是系統全域區,本質是一個記憶體結構。一組後台進程用於管理資料庫。 Oracle的記憶體結構由系統全域區(SGA)和程式全域區(PGA)組成。兩者的區別:SGA在Oracle常式啟動時分配;PGA在伺服器處理序啟動時分配; SGA用於儲存資料庫進程共用資料庫資訊(包含有關Oracle伺服器的資料和控制資訊)。其實就是一大塊共用記憶體。SGA包括的記憶體結構有:共用池;資料庫緩衝區快取;重做日誌緩衝區;其它結構;大型共用池;Java池;查看SGA記憶體配置情況的命令:SQL>SHOW SGA; 事務(TSN) Transaction回退 Rollback / 撤銷 還原事務由PMON負責 P160DROP TABLE、TRUNCATE、DELETE之間存在的區別DROP TABLE 刪除表,包括定義TRUNCATE 刪資料,不能Rollback,釋放空間。當資料量大時,執行速度快;DELETE 僅刪資料,能Rollback,不釋放空間。當資料量大時,執行速度慢; P161使用“時間點恢複”功能進行恢複,可恢複被刪除的表,但時間點之後的新資料就沒有了。 DBPITR 基於時間點的資料恢複TSPITR 基於時間點的資料表空間恢複,範圍小。 常式故障 Oracle的運行模式共用模式崩潰恢複常式故障恢複 介質發生故障使用備份恢複
圖中38是故障點;32是重做日誌的順序號(記錄檔號);32到37時歸檔重做記錄檔; P167定義備份和恢複的策略制定備份和恢複策略不是一個人的事情而是與整個公司和管理層有關的事情。與業務要求和老闆的決定有密切關係。 操作要求測試和驗證備份在複製的DB上,類比故障,並進行恢複。 OLTP(online transaction process)資料倉儲用於DSS(決策支援系統) P173災難恢複(容災)比備份要求高許多 Oracle內建的DataGuard機制來實現容災功能。其實就是一種異地歸檔機制。 P179回顧《Oracle9i資料庫管理基礎I》中提到的概念,重點介紹備份和恢複要求。SGA(System Global Area) 系統全域區查詢執行計畫為了便於Oracle對SQL語句的執行效能進行最佳化,要做到同樣SQL語句。同樣SQL語句的定義是格式要一樣,空格都不能多或少,大小寫都要一樣。 redo log buffer(重做日誌緩衝區) 實現重傳,資料庫恢複online redo log file check point(CKPT) 的作用是保持data file和control file的同步data file和control file的系統提交號(SCN)是一致的。 P179Oracle基本組件概覽圖。 圖的上面是Instance(常式),邏輯部分;由記憶體結構(SGA)和後台進程組成;圖的下面是Oracle(物理)資料庫,物理部分;Oracle伺服器包括一個Oracle常式和一個Oracle資料庫。Oracle常式和Oracle資料庫之間的關係,一個Oracle常式始終開啟一個,並且只開啟一個Oracle資料庫。 P180各種記憶體結構和各種後台進程的說明。記憶體結構(SGA)包括:資料庫緩衝區高速緩衝、日誌緩衝區、大型共用池、共用池、Java池。後台進程包括:資料庫寫入器(DBWn)、日誌寫入器(LGWR)、系統監視器(SMON)、進程監視器(PMON)、檢查點(CKPT)、歸檔程式(ARCn)。 P181Oracle資料庫一般用途是儲存和檢索相關資訊。包含三類檔案:資料檔案、重做記錄檔和控制檔案。Oracle伺服器的其它檔案還包括:參數檔案、口令檔案和歸檔的重做記錄檔。 Oracle採用多進程的方式來提高並行性。 P181當Oracle工作在專用伺服器模式下時,一個使用者進程對一個伺服器處理序;當Oracle工作在共用伺服器模式(Shared Server)下時,多個使用者進程共用一個伺服器處理序; 初始化參數檔案用於初始化Instance。大多數參數有預設值。 P181Oracle伺服器提供的標準視圖以擷取有關資料庫和常式的資訊:V$SGA、V$INSTANCE、V$PROCESS、V$BGPROCESS、V$DATABASE、V$DATAFILE P182大型共用池通過LARGE_POOL_SIZE參數設定大型共用池大小。確定大型共用池的使用方法,查詢V$SGASTAT,條件使用pool = ‘large pool’ P184DBWn 只負責資料庫緩衝區的髒資料(灰資料)寫入資料檔案,使兩邊一致。髒資料(灰資料)是已修改過的資料可以設定多個DBWn,以提高效能,但對單一處理器系統不起作用。 CheckPoint進程會通知DBWn和LGWRDBWn隔長時間執行一次,資料量大LGWR每時每刻的執行,資料量小 Commit的作用是對DB的修改進行永久化;Commit時LGWR執行,而DBWn不執行,所以Commit的執行速度很快。 P185建立資料表空間的策略 P187兩個重做日誌組大小一致,且分兩個硬碟。 P188與重做日誌相關的動態試圖包括:V$LOG、V$LOGFILE、V$LOG_HISTORY P189第3個重做日誌組用完迴圈到第1重做日誌組時,做Check Point和歸檔(處于歸檔模式下)。歸檔是一個同步操作,所以需要等待。 非歸檔模式,一般採用2組歸檔模式,一般採用3組 每組至少兩個重做日至成員,各成員位於不同的磁碟上以防出現故障。 P190重新置放重做記錄檔的方法向重做日誌組中新增成員的方法從重做日誌組中刪除成員的方法 P192檢查點Check Point之後,資料同步緩衝中的髒資料寫入資料檔案。 3種類型檢查點和版本有關,9.2版本之後,有全部這三種類型檢查點。完全檢查點增量檢查點部分檢查點 ALTER TABLE SPACE BEGIN BACKUP 進行只對錶空間備份。 控制檔案非常重要,所以要分別放在兩個硬碟上。 RESET LOG 使記錄檔順序號又從1開始。 歸檔如果來不及做,那麼LGWR進程就要等待。 由於前滾會把沒有提交的資料寫入資料檔案,所以前滾之後要進行回退。 MTTR僅是指前滾時間,不包括恢復。 Check Point 頻繁的話,恢復是短了,但資料庫正常的運行速度就降低了。 Check Point 可以自動,也可以人工發命令。 P196可以獲得控制檔案的位置和名稱的動態視圖:V$PARAMETER、V$CONTROLFILE 建立資料庫的三種方法1. 安裝Oracle時,順帶建立資料庫2. 用DBCA(DB Config Assistance)建立資料庫3. 使用Create database手工建立資料庫前2種方法適合中小型資料庫,最後1種方法適合中大型資料庫,因為可以多設定很多參數。
在
Oracle10g
中手工建立資料庫的步驟如下:可參考《Oracle9i 資料庫管理基礎I Ed 1.1 Vol.1.pdf》的第四章“建立資料庫”。
指南:
http://blog.csdn.net/magus_yang/archive/2006/10/10/1328283.aspx
1. 假設:Oracle10g的安裝目錄為D:/ora10g 所建立資料庫的SID是DB3 2. 建立下列目錄:D:/ora10g/oradata/db3 D:/ora10g/oradata/db3/udump D:/ora10g/oradata/db3/cdump D:/ora10g/oradata/db3/bdump D:/backup/db3D:/backup/db3/arc 歸檔D:/backup/db3/hot 熱備D:/backup/db3/cold 冷備 3. 把初始化參數檔案initdb1.ora拷貝到D:/ora10g/database/initdb3.ora然後修改initdb3.ora檔案。需要修改的內容有:DB1都改為DB3;路經都要修改;幾個name都使用大寫 initdb3.ora檔案被修改後的內容如下:background_dump_dest='D:/ora10g/oradata/DB3/bdump'compatible='10.1.0.2.0'control_files=('D:/ora10g/oradata/DB3/con1.ctl','D:/ora10g/oradata/DB3/con2.ctl')core_dump_dest='D:/ora10g/oradata/DB3/cdump'db_name='DB3'#dispatchers='(PROTOCOL=TCP) (SERVICE=GDB1)'remote_login_passwordfile='EXCLUSIVE'sessions=20undo_management='AUTO'undo_tablespace='undotbs'user_dump_dest='D:/ora10g/oradata/DB3/udump'log_archive_dest_1='location=E:/backup/DB3/arc'log_archive_format='%s_%t_%r.arc'service_names='DB3'instance_name='DB3' 其中:log_archive_dest是歸檔目標;log_archive_format是歸檔格式; 初始化參數檔案的命名規則 initSID.ora 4. 修改credb10g.sql檔案需要修改的內容有:DB1都改為DB3;路經都要修改; credb10g.sql檔案被修改後的內容如下:create database DB3maxinstances 8maxloghistory 1maxlogfiles 16maxlogmembers 3maxdatafiles 100LOGFILE GROUP 1 ('D:/ora10g/oradata/DB3/redo01a.log','D:/ora10g/oradata/DB3/redo01b.log')size 10M, GROUP 2 ('D:/ora10g/oradata/DB3/redo02a.log','D:/ora10g/oradata/DB3/redo02b.log')size 10Mdatafile 'D:/ora10g/oradata/DB3/system01.dbf' size 220M autoextend on next 10M extent management localSYSAUX datafile 'D:/ora10g/oradata/DB3/sysaux01.dbf' size 45M autoextend on next 10MDEFAULT TEMPORARY TABLESPACE temptempfile 'D:/ora10g/oradata/DB3/temp.dbf' size 25Mautoextend on next 10MUNDO TABLESPACE undotbs datafile 'D:/ora10g/oradata/DB3/undotbs.dbf' size 30M CHARACTER SET ZHS16GBKnational CHARACTER SET AL16UTF16user SYS identified by ora123user SYSTEM identified by ora123; 其中:SYSAUX是10g新增的輔助資料表空間。 5. 設定環境變數D:/>SET ORACLE_SID=DB3 SID必須大寫,等號兩邊不許有空格。 通過網路連接就不用設這個環境變數離線就要設這個環境變數 如果需要在9i和10g的環境變數之間切換,可以建立一個批次檔setenv.bat,檔案內容如下: SET ORACLE_HOME=D:/ora9iSET PATH=d:/ora9i/bin;%PATH% 6. 建立Oracle服務進程Windows需要執行這個步驟,而Linux不需要執行這個步驟D:/>oradim –new –sid DB3 –intpwd ora123 –startmode auto Instance created 其中:ora123是初始密碼 -startmode auto的選項可選 建立完畢後,開啟控制台->管理工具->服務,看一下Oracle服務進程是否建立成功,服務進程名應該是OracleServiceDB3。 同時,Oracle安裝目錄的database目錄下自動產生了一個相應的口令檔案。 7. D:/>sqlplus /nologSQL> connect sys/ora123 as sysdbaSQL> startup nomountOracle Instance started.這個時候已經建立了SGA。 8. 建立資料庫SQL>@credb10gDatabase created 如果credb10g.sql檔案不在目前的目錄下,就需要帶上絕對路徑。 這時候只是建立了資料字典內部表(這是所有表的祖宗),資料字典的視圖還沒有建立。 9. SQL>@?/RDBMS/ADMIN/catalog;產生資料字典視圖?號代表Oracle安裝目錄catalog後面預設了”.sql”這條命令的輸出是PL/SQL procedure Successfully Completed. 下面的語句可以驗證一下資料庫是否建立成功。SQL>select name from v$controlfile;SQL>select * from v$log; 10. SQL>@?/rdbms/admin/catproc;在DB中產生系統程式包,包括內建PL/SQL程式包,這個很重要,且產生很耗時。