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