直接如題
查看當前資料庫模式
串連進入資料庫,鍵入以下命令:
複製代碼 代碼如下:
SQL> archive log list;
可查看當前資料庫的模式,若“資料庫記錄模式 非存檔模式”則有必要進行以下的切換流程。
在切換之前,請確保以下參數的設定
log_archive_dest_n 參數設定歸檔日誌目標,其中n用數字替換。在Oracle9i中n的範圍是1~5,在Oracle10g中n可以取值1~10。設定方式如下:
複製代碼 代碼如下:
SQL> alter system set log_archive_dest_1="location=path" scope=both;
其中,path是儲存歸檔記錄檔的檔案夾路徑。最後的scope=both是為了將設定應用到當前資料庫執行個體,以及將參數設定儲存到SPFILE中,資料庫重啟時直接載入SPFILE中的參數資訊。
可以設定多個歸檔日誌目標。設定多個目標,在進行歸檔的時候歸檔記錄檔可以同時儲存成多個歸檔版本,設定多個目標是個好習慣,雖然在問題出現之前似乎沒有必要^_^
關閉資料庫
複製代碼 代碼如下:
SQL> shutdown immediate
關閉資料庫一般不會出現什麼問題,但在資料庫投入使用之後,關閉資料庫必須是迫不得已的(即使你是故意關閉它也要表現得很迫不得已,呵呵)——最好確保關閉是沒有人正在使用資料庫,要不然,有你等的^_^。
啟動資料庫為掛起(mount)狀態
複製代碼 代碼如下:
SQL> startup mount
行至此步,真正的問題才出現。mount了無數次始終startup不上,說是監聽程式無法監聽到你當前的常式了。當然,如果監聽程式配置得當,此類問題是不會在這裡出現的。既然是監聽程式出現問題,那麼就從這裡入手進行解決。在oracle資料庫的安裝目錄下(路徑可能如:E:\oracle\product\10.2.0\db_1\NETWORK\ADMIN)可以找到listener.ora這種參數檔案,可用記事本開啟它們進行編輯和儲存。當然直接手工修改這個檔案並非明智之舉,因為其中的括弧可以扼殺你無數的腦細胞。在安裝oracle時一般都會預設安裝Net Manager這個組件,它可以協助你輕鬆地配置監聽程式的煩人蔘數:
Oracle Net配置 》監聽程式 》LISTENER,在表單右邊最上邊的下拉框中選擇“資料庫服務”。如果你尚未監聽資料庫服務,那麼這就是你解決問題的關鍵所在。添加資料庫,全域資料庫和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)
)
)
紅色部分正式監聽程式中未配置完整的內容,現在配置好它,則以上無法使資料庫進入掛起狀態的問題就可以解決了。注意,以上假設tnsnames.ora檔案中的SERVICE_NAME就是ORCL。當然,配置好監聽程式參數後並未馬上應用到監聽程式中,我們還需要重新載入監聽程式,進入命令列:
複製代碼 代碼如下:
C:\>lsnrctl
LSNRCTL> reload
重新串連一次資料庫,則結果是“已串連到空閑常式”。此時再startup mount,則可順利進入掛起狀態。
在掛起狀態的資料庫常式中切換模式
複製代碼 代碼如下:
SQL> alter system archivelog;
提示“資料庫已更改”。在開啟資料庫後,用archive log list可以查看當前模式:資料庫記錄模式 存檔模式。
開啟資料庫
複製代碼 代碼如下:
SQL> alter database open;
掛起狀態的資料庫並非真實可用的狀態,只有開啟的資料庫才是運行中可使用的常式。
結尾工作
開啟自動歸檔
複製代碼 代碼如下:
SQL> alter system set log_archive_start = true; scope=both;
手工歸檔;
複製代碼 代碼如下:
SQL> alter system switch logfile; --可進行手工歸檔檢測以上設定是否已經被應用到當前資料庫中
設定快閃區大小
複製代碼 代碼如下:
SQL> alter system set db_recovery_file_dest_size=5368709102; --5G
其他問題
在切換模式的過程中我還碰到一個問題,即在我用寫字板開啟SPFILE時無意中按了儲存。小小的儲存帶來大大的問題,SPFILE是一種二進位檔案,寫字板雖然能開啟正常瀏覽大部分內容卻無法讀取檔案中第一行的檔案標識(正常情況下用寫字板開啟檔案第一行是亂碼,關鍵啊)。儲存,得,SPFILE就被改成普通文本了,人是好讀了,但Oracle不認識。沒辦法,重建立一個唄。
重建SPFILE需要系統中的PFILE。PFILE好的地方是它是文字檔^_^一般在建資料庫的同時就已經建立了它,它所在的路徑可能如下:E:\oracle\product\10.2.0\admin\orcl\pfile\。在此路徑下有一個以init.ora.為檔案名稱開頭的檔案,該檔案的檔案名稱結尾的部分是一串數字(預設情況下)。以sysdba的身份串連到資料庫空閑常式(沒有SPFILE資料庫無法啟動開啟,只能串連到空閑常式如: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.************';
若重建成功,則提示“檔案已建立”。建立新的SPFILE後資料庫就能正常啟動了,但是,以後請記住用系統命令alter system set...... scope=spfile;去修改SPFILE的內容。