程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 數據庫知識 >> Oracle數據庫 >> Oracle數據庫基礎 >> Oracle切換為歸檔模式的流程及遇到的問題

Oracle切換為歸檔模式的流程及遇到的問題

編輯:Oracle數據庫基礎

不廢話,直接如題了。

  1. 查看當前數據庫模式

    連接進入數據庫,鍵入以下命令:

     SQL> archive log list;

    可查看當前數據庫的模式,若“數據庫日志模式    非存檔模式”則有必要進行以下的切換流程。

  2. 在切換之前,請確保以下參數的設置

    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中的參數信息。

    可以設置多個歸檔日志目標。設置多個目標,在進行歸檔的時候歸檔日志文件可以同時保存成多個歸檔版本,設置多個目標是個好習慣,雖然在問題出現之前似乎沒有必要^_^

  3. 關閉數據庫  SQL> shutdown immediate

    關閉數據庫一般不會出現什麼問題,但在數據庫投入使用之後,關閉數據庫必須是迫不得已的(即使你是故意關閉它也要表現得很迫不得已,呵呵)——最好確保關閉是沒有人正在使用數據庫,要不然,有你等的^_^。

  4. 啟動數據庫為掛起(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,則可順利進入掛起狀態。

  5. 在掛起狀態的數據庫例程中切換模式  SQL> alter system archivelog;

    提示“數據庫已更改”。在打開數據庫後,用archive log list可以查看當前模式:數據庫日志模式    存檔模式。

  6. 打開數據庫  SQL> alter database open;

    掛起狀態的數據庫並非真實可用的狀態,只有打開的數據庫才是運行中可使用的例程。

  7. 結尾工作

    打開自動歸檔

     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

  8. 其他問題

    在切換模式的過程中我還碰到一個問題,即在我用寫字板打開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的內容。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved