DBA的最大悲哀莫過於沒有備份好檔案。 eygle稱之為DBA的惡夢。此言甚是!
儘管很多人認為對參數檔案的備份並不重要,但你往往就因此吃虧!
參數檔案,10.2.0 windows版本Oracle的spfile和pfile預設在E:\oracle\product\10.2.0\db_1\database目錄下,SPFILEsid.ORA和INITsid.ORA,oracle預設用spfile,若spfile損壞,則自動用pfile,如果 兩個都壞了,則提示錯誤。如果沒有備份,那怎麼辦呢?
當然,你可以找到oracle內建的init模板,一個個參數地設定自己系統的參數檔案。那這將是一件很糟的事情,它會浪費你寶貴的時間。有什麼辦法吧?關鍵是要快速的!
正如題所示,我有個好辦法。
從alert_alaska.log警告日誌裡著手,因為它記錄著一直以來資料庫啟動並執行情況,當然也包括每次啟動的參數資訊啦,我們要的就是
processes = 150
__shared_pool_size = 75497472
__large_pool_size = 4194304
__java_pool_size = 4194304
__streams_pool_size = 0
nls_language = AMERICAN
nls_territory = AMERICA
sga_target = 167772160
control_files = E:\ORACLE\PRODUCT\10.2.0\ORADATA\ALASKA\CONTROL01.CTL, E:\ORACLE\PRODUCT\10.2.0\ORADATA\ALASKA\CONTROL02.CTL, E:\ORACLE\PRODUCT\10.2.0\ORADATA\ALASKA\CONTROL03.CTL
db_block_size = 8192
__db_cache_size = 79691776
compatible = 10.2.0.1.0
db_file_multiblock_read_count= 16
db_recovery_file_dest = e:\oracle\product\10.2.0/alash_recovery_area
db_recovery_file_dest_size= 1073741824
log_checkpoints_to_alert = TRUE
undo_management = AUTO
undo_tablespace = UNDOTBS1
undo_retention = 900
remote_login_passwordfile= EXCLUSIVE
db_domain = com.cn
dispatchers = '(PROTOCOL=TCP) (SERVICE=alaskaXDB)'
#用 ' ' 引起它們
job_queue_processes = 10
audit_file_dest = E:\ORACLE\PRODUCT\10.2.0\ADMIN\ALASKA\ADUMP
background_dump_dest = E:\ORACLE\PRODUCT\10.2.0\ADMIN\ALASKA\BDUMP
user_dump_dest = E:\ORACLEPRODUCT\10.2.0ADMIN\ALASKA\UDUMP
core_dump_dest = E:\ORACLE\PRODUCT\10.2.0\ADMIN\ALASKA\CDUMP
db_name = alaska
open_cursors = 300
pga_aggregate_target = 16777216
複製以前成功啟動的參數語句(如上程式碼片段)到一個文本中,只需把dispatchers = (PROTOCOL=TCP) (SERVICE=alaskaXDB)的值加上''(單引號),變成dispatchers = '(PROTOCOL=TCP) (SERVICE=alaskaXDB)',儲存為c:\pfile.txt
然後運行,startup pfile='c:\pfile.txt'; 即可
是不是很快速,很另類呢!如你所願。