時間:2015-06-28 00:00:00 來源:IT貓撲網(wǎng) 作者:網(wǎng)管聯(lián)盟 我要評論(0)
# 查看當(dāng)前數(shù)據(jù)庫模式
連接進入數(shù)據(jù)庫,鍵入以下命令:
SQL> archive log list;
可查看當(dāng)前數(shù)據(jù)庫的模式,若"數(shù)據(jù)庫日志模式 非存檔模式"則有必要進行以下的切換流程。
# 在切換之前,請確保以下參數(shù)的設(shè)置
log_archive_dest_n 參數(shù)設(shè)置歸檔日志目標(biāo),其中n用數(shù)字替換。在Oracle9i中n的范圍是1~5,在Oracle10g中n可以取值1~10。設(shè)置方式如下:
SQL> alter system set log_archive_dest_1="location=path" scope=both;
其中,path是存儲歸檔日志文件的文件夾路徑。最后的scope=both是為了將設(shè)置應(yīng)用到當(dāng)前數(shù)據(jù)庫實例,以及將參數(shù)設(shè)置保存到SPFILE中,數(shù)據(jù)庫重啟時直接加載SPFILE中的參數(shù)信息。
可以設(shè)置多個歸檔日志目標(biāo)。設(shè)置多個目標(biāo),在進行歸檔的時候歸檔日志文件可以同時保存成多個歸檔版本,設(shè)置多個目標(biāo)是個好習(xí)慣,雖然在問題出現(xiàn)之前似乎沒有必要^_^
# 關(guān)閉數(shù)據(jù)庫
SQL> shutdown immediate
關(guān)閉數(shù)據(jù)庫一般不會出現(xiàn)什么問題,但在數(shù)據(jù)庫投入使用之后,關(guān)閉數(shù)據(jù)庫必須是迫不得已的(即使你是故意關(guān)閉它也要表現(xiàn)得很迫不得已,呵呵)——最好確保關(guān)閉是沒有人正在使用數(shù)據(jù)庫,要不然,有你等的^_^。
# 啟動數(shù)據(jù)庫為掛起(mount)狀態(tài)
SQL> startup mount
行至此步,真正的問題才出現(xiàn)。mount了無數(shù)次始終startup不上,說是監(jiān)聽程序無法監(jiān)聽到你當(dāng)前的例程了。當(dāng)然,如果監(jiān)聽程序配置得當(dāng),此類問題是不會在這里出現(xiàn)的。既然是監(jiān)聽程序出現(xiàn)問題,那么就從這里入手進行解決。在oracle數(shù)據(jù)庫的安裝目錄下(路徑可能如:E:\oracle \product\10.2.0\db_1\NETWORK\ADMIN)可以找到listener.ora這種參數(shù)文件,可用記事本打開它們進行編輯和保存。當(dāng)然直接手工修改這個文件并非明智之舉,因為其中的括號可以扼殺你無數(shù)的腦細(xì)胞。在安裝oracle時一般都會默認(rèn)安裝Net Manager這個組件,它可以幫助你輕松地配置監(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文件在同一個目錄下)。保存,則在listener.ora中就會多出一些設(shè)置,如下:
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)的問題就可以解決了。注意,以上假設(shè)tnsnames.ora文件中的SERVICE_NAME就是ORCL。當(dāng)然,配置好監(jiān)聽程序參數(shù)后并未馬上應(yīng)用到監(jiān)聽程序中,我們還需要重新載入監(jiān)聽程序,進入命令行:
C:\>lsnrctl
LSNRCTL> reload
重新連接一次數(shù)據(jù)庫,則結(jié)果是"已連接到空閑例程"。此時再startup mount,則可順利進入掛起狀態(tài)。
# 在掛起狀態(tài)的數(shù)據(jù)庫例程中切換模式
SQL> alter system archivelog;
提示"數(shù)據(jù)庫已更改"。在打開數(shù)據(jù)庫后,用archive log list可以查看當(dāng)前模式:數(shù)據(jù)庫日志模式 存檔模式。
# 打開數(shù)據(jù)庫
SQL> alter database open;
掛起狀態(tài)的數(shù)據(jù)庫并非真實可用的狀態(tài),只有打開的數(shù)據(jù)庫才是運行中可使用的例程。
# 結(jié)尾工作
打開自動歸檔
SQL> alter system set log_archive_start = true; scope=both;
手工歸檔;
SQL> alter system switch logfile; --可進行手工歸檔檢測以上設(shè)置是否已經(jīng)被應(yīng)用到當(dāng)前數(shù)據(jù)庫中
設(shè)置快閃區(qū)大小
SQL> alter system set db_recovery_file_dest_size=5368709102; --5G
# 其他問題
在切換模式的過程中我還碰到一個問題,即在我用寫字板打開SPFILE時無意中按了保存。小小的保存帶來大大的問題,SPFILE是一種二進制文件,寫字板雖然能打開正常瀏覽大部分內(nèi)容卻無法讀取文件中第一行的文件標(biāo)識(正常情況下用寫字板打開文件第一行是亂碼,關(guān)鍵?。14?,得,SPFILE就被改成普通文本了,人是好讀了,但Oracle不認(rèn)識。沒辦法,重新建一個唄。
重建SPFILE需要系統(tǒng)中的PFILE。PFILE 好的地方是它是文本文件^_^一般在建數(shù)據(jù)庫的同時就已經(jīng)創(chuàng)建了它,它所在的路徑可能如下:E:\oracle\product\10.2.0 \admin\orcl\pfile\。在此路徑下有一個以init.ora.為文件名開頭的文件,該文件的文件名結(jié)尾的部分是一串?dāng)?shù)字(默認(rèn)情況下)。以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)容。
關(guān)鍵詞標(biāo)簽:Oracle
相關(guān)閱讀
熱門文章 Oracle中使用alter table來增加,刪除,修改列的語法 oracle中使用SQL語句修改字段類型-oracle修改SQL語句案例 誤刪Oracle數(shù)據(jù)庫實例的控制文件 為UNIX服務(wù)器設(shè)置Oracle全文檢索
人氣排行 oracle中使用SQL語句修改字段類型-oracle修改SQL語句案例 Oracle中使用alter table來增加,刪除,修改列的語法 ORACLE SQL 判斷字符串是否為數(shù)字的語句 ORACLE和SQL語法區(qū)別歸納(1) oracle grant 授權(quán)語句 ORACLE修改IP地址后如何能夠使用 如何加速Oracle大批量數(shù)據(jù)處理 Oracle刪除表的幾種方法