




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
1、!) O數(shù)據(jù)庫基礎(chǔ)20XX年XX月多年的企業(yè)咨詢豉問經(jīng)驗.經(jīng)過實戰(zhàn)驗證可以落地機行的卓越管理方案,值得您下載擁有Oracle 數(shù)據(jù)庫基礎(chǔ)數(shù)據(jù)庫是我們安裝完產(chǎn)品后建立的,可以在同一臺主機上存在8i,9i,10g,11g 等多個數(shù)據(jù)庫產(chǎn)品, 一套產(chǎn)品可以建立多個數(shù)據(jù)庫, 每個數(shù)據(jù)庫是獨立的。 每個數(shù)據(jù)庫都有自己的全套相關(guān)文件,有各自的控制文件、數(shù)據(jù)文件、重做日志文件、參數(shù)文件、歸檔文件、口令文件等等。其中控制文件、數(shù)據(jù)文件、重做日志文件、跟蹤文件及警告日志( tracefiles,alertfiles )屬于數(shù)據(jù)庫文件;參數(shù)文件( parameterfile )口令文件( passwordfile
2、 )是非數(shù)據(jù)庫文件我們的表存儲在數(shù)據(jù)庫中數(shù)據(jù)庫不能直接讀取我們通過實例( instance) 來訪問數(shù)據(jù)庫數(shù)據(jù)庫實例實例由內(nèi)存和后臺進程組成實例是訪問數(shù)據(jù)庫的方法初始化參數(shù)控制實例的行為一個實例只能連接一個數(shù)據(jù)庫啟動實例不需要數(shù)據(jù)庫產(chǎn)品安裝好有初始化參數(shù)文件就可以啟動實例與是否存在數(shù)據(jù)庫無關(guān)實例內(nèi)存分為SGA和PGASGA:是用于存儲數(shù)據(jù)庫信息的內(nèi)存區(qū),該信息為數(shù)據(jù)庫進程所共享。它包含Oracle 服務器的數(shù)據(jù)和控制信息,它是在Oracle 服務器所駐留的計算機的實際內(nèi) 存中得以分配,如果實際內(nèi)存不夠再往虛擬內(nèi)存中寫。PGA : 包含單個服務器進程或單個后臺進程的數(shù)據(jù)和控制信息, 與幾個進程共
3、享的SGA正相反,PGA是只被一個進程使用的區(qū)域,PGA在創(chuàng)建進程時分配,在終止進程時回收.后臺進程是實例和數(shù)據(jù)庫的聯(lián)系紐帶分為核心進程和非核心進程當前后臺進程的查看SQL>selectname,descriptionfromv$bgprocesswherepaddr<>'00'NAMEDESCRIPTIONPMONprocesscleanupDIAGdiagnosibilityprocessPSP0processspawner0LMONglobalenqueueservicemonitorLMD0globalenqueueservicedaemon0LMS0
4、globalcacheserviceprocess0LMS1globalcacheserviceprocess1MMANMemoryManagerDBW0dbwriterprocess0ARC0ArchivalProcess0ARC1ArchivalProcess1NAMEDESCRIPTIONLGWRRedoetc.LCK0LockProcess0CKPTcheckpointSMONSystemMonitorProcessRECOdistributedrecoveryCJQ0JobQueueCoordinatorQMNCAQCoordinatorMMONManageabilityMonito
5、rProcessMMNLManageabilityMonitorProcess2 20rowsselected.也可以在操作系統(tǒng)下查看oracledb-rac1db01$ps-ef|grepora_ oracle85881007:53?00:00:00ora_j001_gfdb1 oracle108161004:58?00:00:08ora_j000_gfdb1 oracle1699810Apr18?00:00:00ora_pmon_gfdb1 oracle1701710Apr18?00:00:00ora_diag_gfdb1 oracle1703010Apr18?00:00:00ora_ps
6、p0_gfdb1 oracle1704210Apr18?00:00:00ora_lmon_gfdb1 oracle1705710Apr18?00:00:00ora_lmd0_gfdb1oracle1707710Apr18?00:00:00ora_lms1_gfdb1 oracle1708110Apr18?00:00:00ora_mman_gfdb1 oracle1708310Apr18?00:00:00ora_dbw0_gfdb1 oracle1708510Apr18?00:00:00ora_lgwr_gfdb1 oracle1708710Apr18?00:00:00ora_ckpt_gfdb
7、1 oracle1708910Apr18?00:00:03ora_smon_gfdb1 oracle1709110Apr18?00:00:00ora_reco_gfdb1 oracle1709310Apr18?00:00:06ora_cjq0_gfdb1oracle1709510Apr18?00:00:02ora_mmon_gfdb1 oracle1709710Apr18?00:00:00ora_mmnl_gfdb1 oracle1709910Apr18?00:00:00ora_d000_gfdb1 oracle1710110Apr18?00:00:00ora_s000_gfdb1 oracl
8、e1714210Apr18?00:00:01ora_lck0_gfdb1 oracle175177593007:55pts/200:00:00grepora_ oracle2618210Apr18?00:00:00ora_arc0_gfdb1 oracle2618410Apr18?00:00:00ora_arc1_gfdb1oracle2652310Apr18?00:00:00ora_qmnc_gfdb1 oracle2715610Apr18?00:00:00ora_q000_gfdb1 oracle2717210Apr18?00:00:00ora_q001_gfdb1 oracle29308
9、1005:53?00:00:00ora_q002_gfdb1 oracle308781007:42?00:00:00ora_q004_gfdb1oracle318821007:26?00:00:00ora_q003_gfdb1核心進程,必須存在,有一個終止,所有數(shù)據(jù)庫進程全部終止非核心進程完成數(shù)據(jù)庫的額外功能歸檔調(diào)度作業(yè)Databasewriter(DBWn)數(shù)據(jù)庫寫進程將數(shù)據(jù)庫的變化寫入到文件最多20個DBW0-DBW9DBWa-DBWj應該和cpu的個數(shù)對應由參數(shù) DB_WRITER_PROCESSES描述因為dbwr是哪里來的數(shù)據(jù)寫回到哪里,所以可以多個進程一起工作。Logwriter(
10、LGWR)日志寫進程將日志緩沖寫入到磁盤的日志文件只有一個,因為日志寫是順序?qū)懀砸粋€就可以了,因為是順序?qū)懰砸膊荒転槎鄠€。Checkpoint(CKPT)檢查點進程存盤點觸發(fā)dbwn ,寫臟數(shù)據(jù)塊更新數(shù)據(jù)文件頭,更新控制文件Systemmonitor(SMON)系統(tǒng)監(jiān)測進程 實例崩潰時進行自動恢復消除作廢的排序臨時段Processmonitor(PMON)進程監(jiān)測進程消除死進程重新啟動部分進程監(jiān)聽的自動注冊我們連接到數(shù)據(jù)庫其實是連接到實例這個過程叫建立一個會話實驗1 :數(shù)據(jù)庫的最高帳號sys的操作系統(tǒng)認證模式該實驗的目的是進入數(shù)據(jù)庫的最高帳號sys.掌握操作系統(tǒng)認證的兩個條件.操作系統(tǒng)認
11、證,因為數(shù)據(jù)庫是在 OS上的軟件能進入ORACLE帳號,就可以進入 到數(shù)據(jù)庫的最高帳號。Conn/assysdbaShowuser無論數(shù)據(jù)庫處于何種狀態(tài),sys用戶總可以進入到數(shù)據(jù)庫因為sys是外部操作系統(tǒng)認證的操作系統(tǒng)認證的兩條件。一、操作系統(tǒng)的用戶要屬于dba組;二、和數(shù)據(jù)庫問的連接是安全的。實驗2 :數(shù)據(jù)庫的最高帳號sys的密碼文件認證模式該實驗的目的是使用密碼文件的認證方式進入到最高sys帳號,如何建立和維護密碼文件.在遠程,或者操作系統(tǒng)認證不可以使用的情況下,請使用密碼文件來認證sys用戶 在unix下密碼文件路徑/oracle_home/dbs密碼文件名稱orapw+sidsid
12、為實例名稱,查看實例名稱selectinstance_namefromv$instance;select'orapw'|instance_namefromv$instance;密碼文件必須存在,即使你以操作系統(tǒng)認證, 因為參數(shù)remote_login_passwordfile 默認的值是要使用密碼文件的, 除非你將 remote_login_passwordfile 的值改為 none,這樣就禁止了密碼文件的使用,你想進入到 sys 用戶必須使用操作系統(tǒng)認證模式。密碼文件丟失必須重新建立Orapwd 為 oracle 的命令,用于建立密碼文件,命令的格式如下Orapwdfile
13、=.Password=密碼文件中含有sys 用戶的密碼建立密碼文件的步驟1 .確定實例的名稱2 .確定密碼文件的路徑和名稱3 .停止數(shù)據(jù)庫,刪除老的密碼文件4 .在操作系統(tǒng)下運行orapwdfile=/dbocfs/gfdb/orapwgfdb1password=manager1其中 gfdb1為實例的名稱, manager1 為密碼,是sys 用戶的密碼5 .連接的sysConnsys/maanger1assysdba顯示為連接的空閑實例,因為數(shù)據(jù)庫還沒有啟動。但這并沒有證明你使用了密碼文件.SQL>connsys/addasassysdba Connected.SQL>conn
14、asfdsf/adafassysdbaConnected.SQL>conn/assysdbaConnected.SQL>connsys/manager1assysoperConnected.SQL>connsys/adsssdassysoperERROR:ORA-01031:權(quán)限不足原因很簡單,因為操作系統(tǒng)認證的優(yōu)先級高于密碼文件.所以你只要寫assysdba 就可以進入,但sysoper不能使用操作系統(tǒng)來認證,它只能使用密碼文件認證,上 面的實驗證明managed是正確的密碼.6 .啟動數(shù)據(jù)庫startup建立密碼文件要重新啟動數(shù)據(jù)庫,因為內(nèi)存中保留有原來的密碼.初始化參數(shù)
15、remote_login_passwordfile=none則數(shù)據(jù)庫設置為禁止使用密碼文件,只能使用操作系統(tǒng)認證登錄到最高的老大用戶.即使你以密碼認證連接到數(shù) 據(jù)庫,也不能啟動和停止數(shù)據(jù)庫,報權(quán)限不足.實驗3:數(shù)據(jù)庫的兩種初始化參數(shù)文件該實驗的目的是認識參數(shù)文件,兩類參數(shù)文件的相互轉(zhuǎn)換.如何修改參數(shù).初始化參數(shù)文件是描述實例的行為的文件,文件大小很小.初始化參數(shù)文件在unix操作系統(tǒng)中存在于oracle_home/dbs 目錄下.純文本參數(shù)文件修改參數(shù)的時候直接編輯文件,再保存就可以了 .Initsid.ora二進制參數(shù)文件,必須存在于服務器端.使用命令來修改.spfilesid.oraser
16、verparameterfile純文本參數(shù)文件和二進制參數(shù)文件的差別1。修改參數(shù)的方式不同2。優(yōu)先級不同3。是否動態(tài)存儲修改的參數(shù)4。存在的位置不同純文本可以存在于客戶端二進制文件一定存在于server端5.rman可以備份二進制參數(shù)文件,不能備份純文本參數(shù)文件.驗證現(xiàn)在數(shù)據(jù)庫使用的參數(shù)文件類型,我們一定要知道我們使用的是什么類型的參數(shù)文件,涉及到我們?nèi)绾涡薷膮?shù)的手段.selectdistinctISSPECIFIEDfromv$spparameter;如果含有true就是使用二進制參數(shù)文件如果只有false就是使用的純文本參數(shù)文件SQL>selectdistinctisspecifi
17、edfromv$spparameter;ISSPECIFIEDTRUEFALSE因為上面的選擇有true,所以這個數(shù)據(jù)庫使用的是二進制參數(shù)文件.我們修改參數(shù)要使用命令而不是編輯文件,千萬不要編輯二進制參數(shù)文件,你編輯以后會報ora-00600 的錯誤.SQL>selectisspecified,count(*)fromv$spparametergroupbyisspecified;ISSPECCOUNT(*)TRUE31FALSE232上面的查詢表示有31個參數(shù)存在于二進制參數(shù)文件,213個參數(shù)為默認值.兩類參數(shù)文件的相互轉(zhuǎn)換Createpfilefromspfile;Createspf
18、ilefrompfile;上面的命令在連接的sys就可以使用,而不必啟動數(shù)據(jù)庫.當我們轉(zhuǎn)換不了的時候請將數(shù)據(jù)庫停止,再轉(zhuǎn)換兩重新啟動數(shù)據(jù)庫,再驗證.參數(shù)文件的優(yōu)先級Spfilesid.oraSpfile.oraInitsid.oraSQL>colvaluefora40SQL>selectname,valuefromv$spparameterwhereisspecified='TRUE'NAMEVALUEprocesses400sessions445sga_target1610612736control_files/dbocfs/gfdb/control01.ctlc
19、ontrol_files/dbocfs/gfdb/control02.ctlcontrol_files/dbocfs/gfdb/control03.ctldb_block_size8192patible10.2.0.3.0log_archive_dest_1LOCATION=/dbocfs/archivedb_file_multiblock_read_count16cluster_databasetrueNAMEVALUE cluster_database_instances2thread2thread1instance_number1instance_number2undo_manageme
20、ntAUTOundo_tablespaceUNDOTBS2undo_tablespaceUNDOTBS1 remote_login_passwordfileexclusive db_domaindispatchers(PROTOCOL=TCP)(SERVICE=gfdbXDB) NAMEVALUE remote_listenerLISTENERS_GFDBjob_queue_processes10 background_dump_dest/home/oracle/app/oracle/admin/gfdb/bdump user_dump_dest/home/oracle/app/oracle/
21、admin/gfdb/udumpcore_dump_dest/home/oracle/app/oracle/admin/gfdb/cdumpaudit_file_dest/home/oracle/app/oracle/admin/gfdb/adumpdb_namegfdbopen_cursors300pga_aggregate_target95944704031rowsselected.我們修改參數(shù)有三個選項SQL>showparameterpga_aggregate_targetNAMETYPEVALUE pga_aggregate_targetbiginteger915MSQL>
22、;altersystemsetpga_aggregate_target=950mscope=memory;只修改內(nèi)存的值,不改變參數(shù)文件的設置,下回再次啟動數(shù)據(jù)庫時值還是老的,能修改的前提是該參數(shù)可以動態(tài)修改,如果是靜態(tài)參數(shù)只能使用下面的方法.Systemaltered.SQL>altersystemsetpga_aggregate_target=950mscope=spfile;只修改二進制文件,而不修改內(nèi)存,靜態(tài)參數(shù)只能先改文件再重新啟動數(shù)據(jù)庫.Systemaltered.SQL>altersystemsetpga_aggregate_target=950mscope=both
23、;同時修改二進制文件和內(nèi)存,該參數(shù)必須是可以動態(tài)修改的.Systemaltered.SQL>altersystemsetpga_aggregate_target=950m;如果沒有指明修改哪里,默認為參數(shù)文件和內(nèi)存同時修改,默認就是both.Systemaltered.我們可以從參數(shù)文件中刪除一個參數(shù),當然你也可以先轉(zhuǎn)化為純文本再轉(zhuǎn)化為二 進制參數(shù)文件. altersystemresettrace_enabledscope=spfilesid='*'selectname,valuefromv$spparameterwhereISSPECIFIED='TRUE
24、9;orderby1;驗證一下,果然少了一行,下回啟動后該參數(shù)就按默認值來處理.二進制參數(shù)文件在修改的時候有的時候會報錯誤,我們可以先該文本文件后再建立二進制參數(shù)文件.我估計是bug,我們原諒它了,但確實對我們的學習造成一定 的困惑.如果你認為參數(shù)配置的沒有問題,但就是不讓修改,那就先改純文本,再變 為二進制.總的來說二進制的參數(shù)文件好于純文本,你到底選擇哪種類型的參數(shù)文 件都沒有關(guān)系.實驗4:啟動數(shù)據(jù)庫的三個臺階nomount,mount,open該實驗的目的是細化啟動數(shù)據(jù)庫的三個步驟,徹底的明白還要等到學習完冷備份之后.啟動數(shù)據(jù)庫到nomount狀態(tài)的條件如下.有環(huán)境變量.存在正確的密碼文
25、件和參數(shù)文件有足夠的內(nèi)存參數(shù)文件中描述的路徑必須存在數(shù)據(jù)庫產(chǎn)品軟件安裝正確connsys/sysassysdba Shutdownabort;Startup nomount;selectinstance_name,statusfromv$instance;啟動數(shù)據(jù)庫到第一個臺階nomount狀態(tài)做了如下的工作.1 .讀參數(shù)文件2 .分配內(nèi)存3 .啟動后臺進程4 .初始化部分v$視圖將數(shù)據(jù)庫帶到mount狀態(tài)selectvaluefromv$spparameterwherename='control_files'Alterdatabasemount;Mount數(shù)據(jù)庫的過程是讀參數(shù)
26、文件中描述的控制文件,校驗控制文件的正確性, 將控制文件的內(nèi)容讀入到內(nèi)存,mount是掛接的意思,是操作系統(tǒng)中的概念.一旦 mount之后,就是將一個沒有意義的實例和一個數(shù)據(jù)庫發(fā)生了聯(lián)系.因為實例是 空殼.沒有任何數(shù)據(jù)庫和該實例發(fā)生關(guān)系,我們可以理解為實例是水泵,放到哪個 水塘里就會抽取哪里的數(shù)據(jù),實例是通用的.mount的意思是將一個通用的水泵 放入到指定的水塘.mount是讀控制文件,控制文件中有數(shù)據(jù)文件和日志文件的 信息.selectinstance_name,statusfromv$instance;打開數(shù)據(jù)庫Alterdatabase open;讀控制文件中描述的數(shù)據(jù)文件驗證數(shù)據(jù)文件
27、的一致性,如果不一致,使用日志文件將數(shù)據(jù)庫文件恢復到一致的狀 態(tài).數(shù)據(jù)庫open后,普通用戶才可以訪問數(shù)據(jù)庫 用戶的表才為可見只讀方式open數(shù)據(jù)庫Alterdatabaseopenreadonly;selectOPEN_MODEfromv$database;默認的 open 方式為 readwrite想改readonly為readwrite必須重新啟動數(shù)據(jù)庫我們現(xiàn)在回想一下數(shù)據(jù)庫啟動的三個臺階,我們先讀的是參數(shù)文件,參數(shù)文件可以有我們來編寫.讀完參數(shù)文件后又讀了控制文件,控制文件描述了數(shù)據(jù)文件和日志文件的信息 ,如果控制文件丟失可以重新建立,最后是讀數(shù)據(jù)文件.數(shù)據(jù)文件里才存放了我們的數(shù)據(jù).數(shù)
28、據(jù)庫將啟動分為三個臺階,目的是我們可以準確的知道哪里有問題 ,迅速的排除.有點象老鼠拖木釬,大頭在后面.由最開始的一個1k 的參數(shù)文件 ,最后到幾個t 的大型數(shù)據(jù)庫.當我們只打startup 而不加任何參數(shù)的時候.默認是到 open, 等于 startupopen;SQL>startupORACLEinstancestarted.TotalSystemGlobalArea167772160bytesFixedSize1247900bytesVariableSize75498852bytesDatabaseBuffers88080384bytesRedoBuffers2945024byte
29、sDatabasemounted.Databaseopened.我們從屏幕顯示的結(jié)果可以清楚的看出,有三個臺階.還有一個命令是startupforce 強制啟動數(shù)據(jù)庫,等于強制停止數(shù)據(jù)庫再啟動數(shù)據(jù)庫.實驗 5 :停止數(shù)據(jù)庫的四種模式該實驗的目的是區(qū)分不同的停止數(shù)據(jù)庫的方式.四種停止數(shù)據(jù)庫的方式各不相同,用于不同的情況,一般我們采用shutdownimmediate 方式停止數(shù)據(jù)庫,下面是每種停止數(shù)據(jù)庫方式的差別 .ShutdownTRANSACTIONALShutdownIMMEDIATEShutdownabortShutdownNORMAL新的會話不接受等待非活動的會話結(jié)束等待事務結(jié)束產(chǎn)生檢
30、查點停止數(shù)據(jù)庫ShutdownTRANSACTIONAL新的會話不接受不等待非活動的會話結(jié)束等待事務結(jié)束產(chǎn)生檢查點停止數(shù)據(jù)庫Shutdownimmediate新的會話不接受不等待非活動的會話結(jié)束不等事務物結(jié)束產(chǎn)生檢查點停止數(shù)據(jù)庫Shutdownabort新的會話不接受 不等待非活動的會話結(jié)束不等待事務結(jié)束不產(chǎn)生檢查點停止數(shù)據(jù)庫一致性shutdown ,產(chǎn)生檢測點ShutdownNORMALShutdownTRANSACTIONALShutdownIMMEDIATE數(shù)據(jù)庫再次啟動的時候不要恢復不一致性shutdown ,不產(chǎn)生檢測點ShutdownabortStartupforceInstanc
31、e崩潰(停電)數(shù)據(jù)庫再次啟動的時候需要恢復,自動的,透明的。實驗6:查找你想要的數(shù)據(jù)字典該實驗的目的是了解什么是數(shù)據(jù)字典,字典的來源和如何查找到我們關(guān)心的數(shù)據(jù) 字典.數(shù)據(jù)字典是oracle的核心分為兩大類存在于system 表空間 $結(jié)尾的基本表Dba_.,all_ .,user_ 視圖存在于內(nèi)存中X$.的虛表V$的動態(tài)性能視圖數(shù)據(jù)字典是哪里來的呢?是我們建立數(shù)據(jù)庫的時候運行腳本建立的.%oracle_home%rdbmsadmincatalog.sql;腳本當中含有建立數(shù)據(jù)字典的語句.而丫$的字典是數(shù)據(jù)庫在啟動實例的時候初始化的.數(shù)據(jù)字典的使用數(shù)據(jù)庫自己使用字典獲取信息數(shù)據(jù)庫自動維護我們查看
32、字典來獲得數(shù)據(jù)庫的有關(guān)信息基本表,是字典得基本表,在建立system表空間的時候建立的.selecttable_name,ownerfromdba_tableswheretable_namelike'%$'andow ner='SYS'視圖,是在建立數(shù)據(jù)庫以后運行catalog.sql;腳本建立的.查看哪些字典中含有TABLE關(guān)鍵字,一定要大寫.selecttable_namefromdictwheretable_namelike'%TABLE%'查看哪些字典中含有VIEW關(guān)鍵字,一定要大寫.selecttable_namefromdictwhe
33、retable_namelike'%VIEW%'查看哪些字典中的一列含有FILE#這一列,一定要大寫.selecttable_namefromdict_COLUMNSWHERECOLUMN_NAME='FILE#'查看所有的乂$和丫$的表的信息.SELECT*FROMV$FIXED_TABLE;三大類視圖,*代表可以替換為某個單詞.Dba *All*User *我們拿tables說明上面得含義.訪問的表.dba tables其中user tables 是查看當前用戶所擁有的表.all tables 是查看當前用戶可以 是查看當前整個數(shù)據(jù)庫擁有的表,但是你得有權(quán)限
34、,如果沒 有權(quán)限會報沒有這個表.控制文件控制文件是二進制文件(不會超過 100m , 一般是幾m大小) 控制文件記錄了數(shù)據(jù)庫的結(jié)構(gòu)和行為 在mount 時候讀 在數(shù)據(jù)庫open時一直使用 丟失需要恢復 相關(guān)字典SQL>Select*fromv$controlfile;STATUSNAMEIS BLOCK SIZEFILE SIZE BLKS/dbocfs/gfdb/control01.ctlNO16384932 /dbocfs/gfdb/control02.ctlNO16384932 /dbocfs/gfdb/control03.ctlNO16384932 selectCONTROLFI
35、LE_SEQUENCE#fromv$database;selectTYPE,RECORD_SIZE,RECORDS_TOTAL,RECORDS_USEDfromV$CONTROLFILE_RECORD_SECTION;selectvaluefromV$spparameterwherename='control_files'控制文件的位置在參數(shù)文件中描述control_files= file1 , file2 多個控制文件是鏡像的關(guān)系最多八個,最少一個實驗 7 :減少控制文件的個數(shù)該實驗的目的是初步認識如何修改參數(shù)文件,如何減少控制文件.減少控制文件, 實驗的目的, 有一個控制文
36、件損壞, 我們要將損壞的控制文件剔除。1 .修改參數(shù)文件,并驗證2 .停止數(shù)據(jù)庫3 .啟動數(shù)據(jù)庫4 .驗證,查看 v$controlfileSQL>select*fromv$controlfile;驗證現(xiàn)在內(nèi)存中的控制文件個數(shù)STATUSNAMEIS_BLOCK_SIZEFILE_SIZE_BLKS /dbocfs/gfdb/control01.ctlNO16384932/dbocfs/gfdb/control02.ctlNO16384932/dbocfs/gfdb/control03.ctlNO16384932SQL>altersystemsetcontrol_files=
37、9;/dbocfs/gfdb/control01.ctl','/dbocfs/gfdb/control02.ctl'scope =spfile;Systemaltered.驗證參數(shù)文件已經(jīng)被修改SQL>selectvaluefromv$spparameterwherename='control_files'VALUE/dbocfs/gfdb/control01.ctl/dbocfs/gfdb/control02.ctl驗證內(nèi)存中的值沒有被修改,因為 control_files 是靜態(tài)參數(shù),想要改變必須重新啟動數(shù)據(jù)庫。SQL>select*fr
38、omv$controlfile;STATUSNAMEIS_BLOCK_SIZEFILE_SIZE_BLKS/dbocfs/gfdb/control01.ctlNO16384932/dbocfs/gfdb/control02.ctlNO16384932/dbocfs/gfdb/control03.ctlNO16384932SQL>startupforceORACLEinstancestarted.TotalSystemGlobalArea1610612736bytesFixedSize1262044bytesVariableSize687869476bytesDatabaseBuffers
39、905969664bytesRedoBuffers15511552bytesDatabasemounted.Databaseopened.SQL>select*fromv$controlfile;驗證內(nèi)存被修改了VALUE/dbocfs/gfdb/control01.ctl/dbocfs/gfdb/control02.ctlSQL>selectvaluefromv$spparameterwherename='control_files'驗證參數(shù)文件中的值和內(nèi)存中的值相同VALUE/dbocfs/gfdb/control01.ctl/dbocfs/gfdb/contr
40、ol02.ctl如果你在啟動的時候看到 ora-00205 錯誤,說明你修改的參數(shù)不正確,可能是路徑寫的不對或者在路徑前面多寫了空格, 請重新修改為正確的值再重新啟動數(shù)據(jù)庫。實驗 8 :增加控制文件的個數(shù)實驗的目的是增加控制文件的個數(shù), 1 到 8 個,保護控制文件。認識控制文件的一致性 .什么是控制文件的版本.控制文件的結(jié)構(gòu).增加控制文件1 .修改參數(shù)文件2 .停止數(shù)據(jù)庫3 .復制控制文件4 .啟動數(shù)據(jù)庫5 .驗證,查看v$controlfile修改二進制的初始化參數(shù)文件中的 control_files 選項SQL>altersystemsetcontrol_files='/d
41、bocfs/gfdb/control01.ctl','/dbocfs/gfdb/control02.ctl','/dboc fs/gfdb/control03.ctl'scope=spfile;Systemaltered.SQL>selectvaluefromv$spparameterwherename='control_files'驗證參數(shù)文件已經(jīng)被修改VALUE/dbocfs/gfdb/control01.ctl/dbocfs/gfdb/control02.ctl/dbocfs/gfdb/control03.ctlSQL>
42、select*fromv$controlfile;驗證現(xiàn)在內(nèi)存中的控制文件個數(shù)STATUSNAMEIS_BLOCK_SIZEFILE_SIZE_BLKS/dbocfs/gfdb/control01.ctlNO16384932 /dbocfs/gfdb/control02.ctlNO16384932重新啟動數(shù)據(jù)庫,使修改的參數(shù)起作用SQL>startupforce;ORACLEinstancestarted.TotalSystemGlobalArea1610612736bytesFixedSize1262044bytesVariableSize687869476bytesDatabaseB
43、uffers905969664bytesRedoBuffers15511552bytesORA-00214:controlfile'/dbocfs/gfdb/control01.ctl'version9178inconsistentwithfile'/dbocfs/gfdb/ control03.ctl'version9164因為 CONTROL03.CTL 剛才脫離了數(shù)據(jù)庫,沒有參加修改, CONTROL01.CTL和 CONTROL02.CTL 已經(jīng)變化了, 二 CONTROL03.CTL 沒有變化, 所以時間戳不正確了。SQL>hostcp/dboc
44、fs/gfdb/control01.ctl/dbocfs/gfdb/control03.ctl 使用操作系統(tǒng)的命令將老的控制文件覆蓋SQL>alterdatabaseopen;alterdatabaseopen*ERRORatline1:ORA-01507:databasenotmounted因為我們處于數(shù)據(jù)庫的 nomount 狀態(tài),想要open 不能跨越 mount 臺階,所以必須先 mount 數(shù)據(jù)庫。SQL>alterdatabasemount;啟動到 mount 狀態(tài)Databasealtered.SQL>alterdatabaseopen;啟動到 open 狀態(tài)D
45、atabasealtered.SQL>selectvaluefromv$spparameterwherename='control_files'驗證參數(shù)文件中 control_files 選項的值VALUE/dbocfs/gfdb/control01.ctl/dbocfs/gfdb/control02.ctl/dbocfs/gfdb/control03.ctlSQL>select*fromv$controlfile;驗證現(xiàn)在內(nèi)存中的控制文件個數(shù)SQL>select*fromv$controlfile;STATUSNAMEIS_BLOCK_SIZEFILE_SI
46、ZE_BLKS/dbocfs/gfdb/control01.ctlNO16384932/dbocfs/gfdb/control02.ctlNO16384932/dbocfs/gfdb/control03.ctlNO16384932日志文件日志文件是二進制文件它記錄了數(shù)據(jù)文件的變化Select*fromv$logfile;查看日志文件的位置等信息SQL>Select*fromv$logfile;GROUP#STATUSTYPEMEMBERIS_ 1STALEONLINE/dbocfs/gfdb/redo01.logNO2ONLINE/dbocfs/gfdb/redo02.logNO3ONL
47、INE/dbocfs/gfdb/redo03.logNO4ONLINE/dbocfs/gfdb/redo04.logNO日志文件是物理存在的文件它的組織模式是組組是邏輯的組織方式每個實例至少要兩個組Select*fromv$log;Select*fromv$log_history;查看日志組的信息SQL>Select*fromv$log;GROUP#THREAD#SEQUENCE#BYTESMEMBERSARCSTATUSFIRST_CHANGE#FIRST_TIME11329524288001YESINACTIVE1.2381E+1316-APR-1221330524288001NOC
48、URRENT1.2381E+1316-APR-12 327552428801YESINACTIVE1.2381E+1316-APR-1242765242881NOCURRENT1.2381E+1316-APR-12SQL>selectto_char(FIRST_TIME,'yyyy/mm/dd')day,count(*)fromv$log_historygroupbyto_char(FIRST_TIME,'yyyy/mm/dd');DAYCOUNT(*)2012/03/2792012/03/2992012/04/05102012/04/09102012/0
49、3/3192012/04/0392012/04/11102012/03/261132012/04/0192012/03/2892012/04/029DAYCOUNT(*)2012/04/0892012/04/1372012/04/1532012/04/1642012/03/3092012/04/04112012/04/0692012/04/144 2012/04/07102012/04/1010 2012/04/121022rowsselected.該語句可以查看每天產(chǎn)生日志的多少, 估計我們應用的日志量, 可以估計歸檔的大小。組和組間是平等的關(guān)系實例同一時刻只能向一個組寫入日志一個組寫滿后,
50、寫下一個組這個過程叫切換( switch )自動切換:日志寫滿oracle 會寫下一個組手工切換: altersystemswitchlogfile;日志組的切換要產(chǎn)生檢查點 (checkpoint)檢查點有增量檢查和完全檢查兩種完全檢查1 .一致性 shutdown 數(shù)據(jù)庫的時候。2 .Altersystemcheckpoint;結(jié)果為:所有的臟數(shù)據(jù)塊都寫入數(shù)據(jù)文件,改寫文件的頭除了完全檢查點以外的所有其它檢查點都是增量檢查點,增量檢查是查找檢查點列表,將某一個時間點做標記,該時間點前的臟塊寫入到數(shù)據(jù)文件, 增量檢查不一定馬上執(zhí)行, 根據(jù)我們臟的塊多少來決定,這就出現(xiàn)了檢查點滯后的情況。參數(shù)
51、 log_checkpoints_to_alert 決定是否將檢查點的信息寫入報警日志。默認為假,不寫日志。我們可以將這個參數(shù)改為真,可以看到檢查點的信息。日志的部分信息如下BeginninglogswitchcheckpointuptoRBA0x14b.2.10,S:12380769291235Thread1advancedtologsequence331Currentlog#1seq#331mem#0:/dbocfs/gfdb/redo01.logSystemchangenumber(S) , 數(shù)據(jù)庫的更改號碼, 如果你不懂 S 就絕對不懂數(shù)據(jù)庫,這句話一點都不夸張,因為數(shù)據(jù)庫中的一切運轉(zhuǎn)
52、都離開不了 S, S 的地位在數(shù)據(jù)庫中就向我們生活中的時間一樣,你覺察不到,但又處處離不開。 S 存在于數(shù)據(jù)塊的塊頭,文件頭,也可以建立特殊的表,使S 存在于表的行頭, S 存在內(nèi)存中, 它是維護數(shù)據(jù)庫的運行基本保證。 備份和恢復更是根據(jù)S 來決定我們要重做那些操作和交易。 S 的發(fā)生機制在不同版本會不同,我們也不用去關(guān)心,我們可以理解為數(shù)據(jù)庫的一切進程操作都要有一個時間的標志,這就是S 。select,update,delete,insert 數(shù)據(jù)庫的一切操作都有S。數(shù)據(jù)庫內(nèi)的任何操作都產(chǎn)生 S。 S 小的就是先操作的, S 大的就是后操作的,數(shù)據(jù)庫使用 S 來維護因果關(guān)系。我們可以將S 理
53、解為數(shù)據(jù)庫的內(nèi)部時間。S 的最大值為SQL>selectto_number('ffffffffffff','xxxxxxxxxxxxxxxxxxxxxxxxxxxx')fromdual;TO_NUMBER('FFFFFFFFFFFF','XXXXXXXXXXXXXXXXXXXXXXXXXXXX')2.8147E+14為什么最大值是'ffffffffffff' 呢 ?SQL>altersystemdumpdatafile1block2;Systemaltered.我們隨便將一個數(shù)據(jù)文件的塊轉(zhuǎn)存到 udum
54、p 的跟蹤文件.Startdumpdatablockstsn:0file#:1minblk2maxblk2buffertsn:0rdba:0x00400002(1/2)s:0x0b42.9f1f55dbseq:0x02flg:0x04tail:0x55db1d02frmt:0x02chkval:0x2851type:0x1d=KTFBBitmappedFileSpaceHeaderHexdumpofblock:st=0,typ_found=1我們看到了吧.最大就是12 位的十六進制數(shù)值.數(shù)據(jù)文件頭會保存一個特殊的 SSTOPS 記錄在數(shù)據(jù)文件頭上。當數(shù)據(jù)庫處在打開狀態(tài)時, STOPS 被設成最
55、大值Oxffff.ffffffff 。在數(shù)據(jù)庫正常關(guān)閉過程中,stops被設置成當前系統(tǒng)的最大 S值。在數(shù)據(jù)庫打開過程中, Oracle 會比較各文件的 STOPS 和 checkpointS , 如果值不一致,表明數(shù)據(jù)庫先前沒有正常關(guān)閉,需要做恢復。查看數(shù)據(jù)庫當前sselectcurrent_sfromV$database;(10g 才有 )selectdbms_flashback.get_system_change_number()fromdual;( 9i 以后才有)檢查點的S,檢查點是一個特殊的S,小于該號碼的塊都已經(jīng)存盤了,數(shù)據(jù)庫的恢復只需要恢復該S 號碼以后的操作就可以了。S 號碼
56、和物理的時間有對照表。 SMON_S_TIMEselect*fromSMON_S_TIME;這個表在每個版本的結(jié)果會不同, 9I 的信息較少, 10G 的信息更多一些。selectname,checkpoint_change#fromv$datafile;NAMECHECKPOINT_CHANGE#/dbocfs/gfdb/system01.dbf12380769470672/dbocfs/gfdb/undotbs01.dbf12380769470672/dbocfs/gfdb/sysaux01.dbf12380769470672/dbocfs/gfdb/undotbs02.dbf12380769470672/dbocfs/gfdb/users01.dbf12380769470672/dbocfs/gfdb/STRMADMIN01.dbf123807694706726rowsselec
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 地鐵工程檔案資料集中管理措施
- 小學普通話節(jié)慶活動推廣計劃
- 網(wǎng)球培訓機構(gòu)教學計劃
- 裝飾工程施工技術(shù)質(zhì)量保證體系及措施
- 小學乒乓球社團多樣化訓練計劃
- 科技企業(yè)人力資源部創(chuàng)新激勵計劃
- 金融行業(yè)風險資源配備計劃
- 腫瘤科輸血流程與規(guī)范管理
- 綜藝節(jié)目腳本策劃書范文
- 拆除施工塵土污染防治文明措施
- 2025年高考數(shù)學全國新課標Ⅱ卷試卷評析及備考策略(課件)
- 黑龍江司法警官職業(yè)學院2025年招生政治考察表
- (正式版)CB∕T 4549-2024 船舶行業(yè)企業(yè)加油-駁油作業(yè)安全管理規(guī)定
- 公司扣款單據(jù)模板
- 文獻檢索與閱讀方法課件
- 髂內(nèi)動脈解剖特點PPT
- 螺旋槳加工與安裝工藝
- 校長競聘試題
- LED顯示屏合同范本
- 初中化學實驗探究教學方法講座
- 燃機發(fā)電機轉(zhuǎn)子一點接地保護全部校驗作業(yè)指導書
評論
0/150
提交評論