直接如題
查看當(dāng)前數(shù)據(jù)庫模式
連接進(jìn)入數(shù)據(jù)庫,鍵入以下命令:
復(fù)制代碼 代碼如下:
SQL> archive log list;
可查看當(dāng)前數(shù)據(jù)庫的模式,若“數(shù)據(jù)庫日志模式 非存檔模式”則有必要進(jìn)行以下的切換流程。
在切換之前,請(qǐng)確保以下參數(shù)的設(shè)置
log_archive_dest_n 參數(shù)設(shè)置歸檔日志目標(biāo),其中n用數(shù)字替換。在Oracle9i中n的范圍是1~5,在Oracle10g中n可以取值1~10。設(shè)置方式如下:
復(fù)制代碼 代碼如下:
SQL> alter system set log_archive_dest_1="location=path" scope=both;
其中,path是存儲(chǔ)歸檔日志文件的文件夾路徑。最后的scope=both是為了將設(shè)置應(yīng)用到當(dāng)前數(shù)據(jù)庫實(shí)例,以及將參數(shù)設(shè)置保存到SPFILE中,數(shù)據(jù)庫重啟時(shí)直接加載SPFILE中的參數(shù)信息。
可以設(shè)置多個(gè)歸檔日志目標(biāo)。設(shè)置多個(gè)目標(biāo),在進(jìn)行歸檔的時(shí)候歸檔日志文件可以同時(shí)保存成多個(gè)歸檔版本,設(shè)置多個(gè)目標(biāo)是個(gè)好習(xí)慣,雖然在問題出現(xiàn)之前似乎沒有必要^_^
關(guān)閉數(shù)據(jù)庫
復(fù)制代碼 代碼如下:
SQL> shutdown immediate
關(guān)閉數(shù)據(jù)庫一般不會(huì)出現(xiàn)什么問題,但在數(shù)據(jù)庫投入使用之后,關(guān)閉數(shù)據(jù)庫必須是迫不得已的(即使你是故意關(guān)閉它也要表現(xiàn)得很迫不得已,呵呵)——最好確保關(guān)閉是沒有人正在使用數(shù)據(jù)庫,要不然,有你等的^_^。
啟動(dòng)數(shù)據(jù)庫為掛起(mount)狀態(tài)
復(fù)制代碼 代碼如下:
SQL> startup mount
行至此步,真正的問題才出現(xiàn)。mount了無數(shù)次始終startup不上,說是監(jiān)聽程序無法監(jiān)聽到你當(dāng)前的例程了。當(dāng)然,如果監(jiān)聽程序配置得當(dāng),此類問題是不會(huì)在這里出現(xiàn)的。既然是監(jiān)聽程序出現(xiàn)問題,那么就從這里入手進(jìn)行解決。在oracle數(shù)據(jù)庫的安裝目錄下(路徑可能如:E:\oracle\product\10.2.0\db_1\NETWORK\ADMIN)可以找到listener.ora這種參數(shù)文件,可用記事本打開它們進(jìn)行編輯和保存。當(dāng)然直接手工修改這個(gè)文件并非明智之舉,因?yàn)槠渲械睦ㄌ?hào)可以扼殺你無數(shù)的腦細(xì)胞。在安裝oracle時(shí)一般都會(huì)默認(rèn)安裝Net Manager這個(gè)組件,它可以幫助你輕松地配置監(jiān)聽程序的煩人參數(shù):
Oracle Net配置 》監(jiān)聽程序 》LISTENER,在窗體右邊最上邊的下拉框中選擇“數(shù)據(jù)庫服務(wù)”。如果你尚未監(jiān)聽數(shù)據(jù)庫服務(wù),那么這就是你解決問題的關(guān)鍵所在。添加數(shù)據(jù)庫,全局?jǐn)?shù)據(jù)庫和SID設(shè)置為與tnsnames.ora文件中的SERVICE_NAME相同的值(注:tnsnames.ora文件與listener.ora文件在同一個(gè)目錄下)。保存,則在listener.ora中就會(huì)多出一些設(shè)置,如下:
復(fù)制代碼 代碼如下:
SID_LIST_LISTENER =
(SID_LIST =
(SID_DESC =
(GLOBAL_DBNAME = ORCL)
(ORACLE_HOME = E:\oracle\product\10.2.0\db_1)
(SID_NAME = ORCL)
)
)
紅色部分正式監(jiān)聽程序中未配置完整的內(nèi)容,現(xiàn)在配置好它,則以上無法使數(shù)據(jù)庫進(jìn)入掛起狀態(tài)的問題就可以解決了。注意,以上假設(shè)tnsnames.ora文件中的SERVICE_NAME就是ORCL。當(dāng)然,配置好監(jiān)聽程序參數(shù)后并未馬上應(yīng)用到監(jiān)聽程序中,我們還需要重新載入監(jiān)聽程序,進(jìn)入命令行:
復(fù)制代碼 代碼如下:
C:\&;lsnrctl
LSNRCTL> reload
重新連接一次數(shù)據(jù)庫,則結(jié)果是“已連接到空閑例程”。此時(shí)再startup mount,則可順利進(jìn)入掛起狀態(tài)。
在掛起狀態(tài)的數(shù)據(jù)庫例程中切換模式
復(fù)制代碼 代碼如下:
SQL> alter system archivelog;
提示“數(shù)據(jù)庫已更改”。在打開數(shù)據(jù)庫后,用archive log list可以查看當(dāng)前模式:數(shù)據(jù)庫日志模式 存檔模式。
打開數(shù)據(jù)庫
復(fù)制代碼 代碼如下:
SQL> alter database open;
掛起狀態(tài)的數(shù)據(jù)庫并非真實(shí)可用的狀態(tài),只有打開的數(shù)據(jù)庫才是運(yùn)行中可使用的例程。
結(jié)尾工作
打開自動(dòng)歸檔
復(fù)制代碼 代碼如下:
SQL> alter system set log_archive_start = true; scope=both;
手工歸檔;
復(fù)制代碼 代碼如下:
SQL> alter system switch logfile; --可進(jìn)行手工歸檔檢測以上設(shè)置是否已經(jīng)被應(yīng)用到當(dāng)前數(shù)據(jù)庫中
設(shè)置快閃區(qū)大小
復(fù)制代碼 代碼如下:
SQL> alter system set db_recovery_file_dest_size=5368709102; --5G
其他問題
在切換模式的過程中我還碰到一個(gè)問題,即在我用寫字板打開SPFILE時(shí)無意中按了保存。小小的保存帶來大大的問題,SPFILE是一種二進(jìn)制文件,寫字板雖然能打開正常瀏覽大部分內(nèi)容卻無法讀取文件中第一行的文件標(biāo)識(shí)(正常情況下用寫字板打開文件第一行是亂碼,關(guān)鍵啊)。保存,得,SPFILE就被改成普通文本了,人是好讀了,但Oracle不認(rèn)識(shí)。沒辦法,重新建一個(gè)唄。
重建SPFILE需要系統(tǒng)中的PFILE。PFILE好的地方是它是文本文件^_^一般在建數(shù)據(jù)庫的同時(shí)就已經(jīng)創(chuàng)建了它,它所在的路徑可能如下:E:\oracle\product\10.2.0\admin\orcl\pfile\。在此路徑下有一個(gè)以init.ora.為文件名開頭的文件,該文件的文件名結(jié)尾的部分是一串?dāng)?shù)字(默認(rèn)情況下)。以sysdba的身份連接到數(shù)據(jù)庫空閑例程(沒有SPFILE數(shù)據(jù)庫無法啟動(dòng)打開,只能連接到空閑例程如:conn / as sysdba),重建SPFILE的命令如下:
復(fù)制代碼 代碼如下:
SQL> create spfile='E:\oracle\product\10.2.0\db_1\dbs\SPFILEORCL.ORA' from pfile='E:\oracle\product\10.2.0\admin\orcl\pfile\init.ora.************';
若重建成功,則提示“文件已創(chuàng)建”。創(chuàng)建新的SPFILE后數(shù)據(jù)庫就能正常啟動(dòng)了,但是,以后請(qǐng)記住用系統(tǒng)命令alter system set...... scope=spfile;去修改SPFILE的內(nèi)容。
您可能感興趣的文章:- oracle日志操作模式(歸檔模式和非歸檔模式的利與弊)
- oracle的歸檔模式 ORACLE數(shù)據(jù)庫歸檔日志常用命令
- 數(shù)據(jù)庫ORA-01196故障-歸檔日志丟失恢復(fù)詳解