您好,登錄后才能下訂單哦!
重要說明:由于本文由本人測試并完成,其中可能還有不足之處,另外不同的環境可能也有不同的解決方法,本文僅供參考,并歡迎指證
問題描述:
在11G單機ASM中修改sga大小,修改完后,關閉instance并startup時,提示sga沒有達到最小值,因些無法啟動,而此時數據庫實例已經關閉,已不能在之前的那種模式修改參數,具體的操作如下:
1、查詢sga大小
SQL> show parameter sga NAME TYPE VALUE ------------------------------------ ----------- ------------------------------ lock_sga boolean FALSE pre_page_sga boolean FALSE sga_max_size big integer 1G sga_target big integer 1G
2、修改sga大小為500M
SQL> alter system set sga_target=500M scope=spfile; System altered.
3、因為是指定參數為spfile,因此要重啟instance才能使參數生效
SQL> shutdown immediate; Database closed. Database dismounted. ORACLE instance shut down.
4、重啟instance 時,提示sga最小值應該為668M
SQL> startup ORA-01078: failure in processing system parameters ORA-00821: Specified value of sga_target 500M is too small, needs to be at least 668M
解決細路:
首先我們要理解一下oracle數據庫在啟動過程中調用 的參數,其順序為:
spfilesid.ora -> spfile.ora ->initsid.ora-> init.ora 從這條啟動線來說,如果第一個spfilesid.ora文件找不到的話,它會找到二個spfile.ora文件,如果能找到就能正常啟動,若找不到,再繼續找下一個initsid.ora文件,一直找到最后一個init.ora文件,說明:如果找到其中一個則會正常啟動instance
解決方法:
通過創建pfile文件方式來啟動數據庫,然后再以pfile文件為模板創建spfile,具體步驟是:
1、以spfile模板創建pfile文件,并指定路徑為本地硬盤位置
create pfile='/oracle/initudevasm.ora' from spfile='+DGDATA02/udevasm/spfileudevasm.ora';
2、修改initudevasm.ora文件,找到sga_target字段,修改大于668M
vi /oracle/initudevasm.ora
udevasm.__db_cache_size=826277888
udevasm.__java_pool_size=4194304
udevasm.__large_pool_size=8388608
udevasm.__oracle_base='/oracle/app/oracle'#ORACLE_BASE set from environment
udevasm.__pga_aggregate_target=629145600
udevasm.__sga_target=1073741824
udevasm.__shared_io_pool_size=0
udevasm.__shared_pool_size=222298112
udevasm.__streams_pool_size=0
*.audit_file_dest='/oracle/app/oracle/admin/udevasm/adump'
*.audit_trail='db'
*.compatible='11.2.0.4.0'
*.control_files='+DGDATA02/udevasm/controlfile/current.256.945212019'
*.db_block_size=8192
*.db_create_file_dest='+DGDATA02'
*.db_domain=''
*.db_name='udevasm'
*.db_recovery_file_dest_size=3221225472
*.diagnostic_dest='/oracle/app/oracle'
*.dispatchers='(PROTOCOL=TCP) (SERVICE=udevasmXDB)'
udevasm.log_archive_dest_1='LOCATION=+DGRECOVERY/'
*.nls_language='AMERICAN'
*.nls_territory='AMERICA'
*.open_cursors=300
*.pga_aggregate_target=629145600
*.processes=1000
*.remote_login_passwordfile='EXCLUSIVE'
*.sessions=170
*.sga_target=754288000 --大于668M
*.undo_tablespace='UNDOTBS1'
3、以pfile文件啟動instance
SQL> startup pfile='/oracle/initudevasm.ora' ORACLE instance started. Total System Global Area 751595520 bytes Fixed Size 2257032 bytes Variable Size 603983736 bytes Database Buffers 142606336 bytes Redo Buffers 2748416 bytes Database mounted. Database opened.
4、以pfile文件為模板創建spfile文件
SQL> create spfile='+DGDATA02/udevasm/spfileudevasm.ora' from pfile='/oracle/initudevasm.ora'; File created.
5、關閉實例,并重新啟動spfile,因為在在創建spfile時已經默認指定原來的路徑,并把原來的spfile文件覆蓋了,所以只要直接啟動即可
SQL> shutdown immediate; Database closed. Database dismounted. ORACLE instance shut down. SQL> startup ORACLE instance started. Total System Global Area 751595520 bytes Fixed Size 2257032 bytes Variable Size 603983736 bytes Database Buffers 142606336 bytes Redo Buffers 2748416 bytes Database mounted. Database opened.
6、查詢修改后的sga大小
SQL> show parameter sga NAME TYPE VALUE ------------------------------------ ----------- ------------------------------ lock_sga boolean FALSE pre_page_sga boolean FALSE sga_max_size big integer 720M sga_target big integer 720M
通過上面查詢則判斷已經修改并恢復成功
總結:
1、當數據庫發生因為有關參數文件異常無法啟動正常時,可以先把原理理解,然后通過創建pfile與spfile文件方式解決啟動問題。
2、要備份有關數據庫參數文件以防止誤操作導致數據庫無法正常啟動
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。