標籤:spfile oracle
Oracle啟動分三個階段:
nomount:
首先尋找參數檔案(pfile/spfile),根據檔案建立執行個體。Nomount的過程是啟動資料庫執行個體的過程。
沒有參數檔案無法nomount
mount:
從參數檔案中獲得控制檔案的位置資訊,然後開啟控制檔案。
--沒有控制檔案無法mount
open:
開啟控制檔案中所有描述的檔案。
--沒有資料檔案無法open
-------------------------------------------------------------------------------------
NLS_LANG設定要點:
Chcp = 936 表示gbk,nls_lang設定如下:
set NLS_LANG=simplifiedchinese_china.zhs16gbk
用戶端系統的編碼是什麼,nls_lang就需要設成什麼編碼。Oracle在儲存資料時,會對接收到的資料根據nls_lang的編碼進行解碼,然後再以oracle資料的編碼存入資料庫。
一、參數檔案產生
空閑執行個體可以把pfile與spfile互轉
Pfile(文字檔):用戶端檔案,可以放在其它位置 。
Spfile(二進位檔案):服務端檔案,只能放在database下,但可以用pfile中指定位置。
Create pfile from spfile;
Create spfile from pfile;
注意點:修改參數前,最好先產生一個pfile檔案。
650) this.width=650;" src="http://s3.51cto.com/wyfs02/M01/49/4A/wKioL1QSdb2TqkbnAAXCiVz0YHI712.jpg" title="1.png" alt="wKioL1QSdb2TqkbnAAXCiVz0YHI712.jpg" />
把spfile 與pfile移動到別的地方啟動:
650) this.width=650;" src="http://s3.51cto.com/wyfs02/M00/49/48/wKiom1QSdemCtFD7AACVOJaj8DY724.jpg" title="2.png" alt="wKiom1QSdemCtFD7AACVOJaj8DY724.jpg" />
若是有initsid.ora檔案,則可以把initsid.ora檔案放到database目錄下,或者用指定方法啟動:
650) this.width=650;" src="http://s3.51cto.com/wyfs02/M01/49/48/wKiom1QSdi6y7tFdAAEEfulkLZo945.jpg" title="3.png" alt="wKiom1QSdi6y7tFdAAEEfulkLZo945.jpg" />
SQL> startup nomountpfile=‘D:\ORACLE\PRODUCT\11.2.0\DBHOME_1\DATABASE\bak\inith
xw168.ora‘
指定參數啟動的,不能直接create spfile from pfile;
650) this.width=650;" src="http://s3.51cto.com/wyfs02/M02/49/48/wKiom1QSdnPAD8aKAADJG0deABA153.jpg" style="float:none;" title="4.png" alt="wKiom1QSdnPAD8aKAADJG0deABA153.jpg" />
650) this.width=650;" src="http://s3.51cto.com/wyfs02/M01/49/4A/wKioL1QSdoSTEjoaAACBgAp47BU187.jpg" style="float:none;" title="5.png" alt="wKioL1QSdoSTEjoaAACBgAp47BU187.jpg" />
關掉執行個體,重新 startup nomount即可啟動。
二、spfile檔案移動位置
在database目錄下建立initsid.ora檔案,在裡面唯寫以下內容:
spfile=‘D:\oracle\product\11.2.0\dbhome_1\database\bak\SPFILEHXW168.ORA‘
spfile檔案的位置。如:
show parameter spfile;後可以查到現在使用的spfile是在bak目錄下面。
650) this.width=650;" src="http://s3.51cto.com/wyfs02/M00/49/48/wKiom1QSdsqiUrD1AATxIfkrZxw299.jpg" title="6.png" alt="wKiom1QSdsqiUrD1AATxIfkrZxw299.jpg" />
三、添加或刪除控制檔案
參數檔案記錄控制檔案位置,控制檔案位置:
D:\ORACLE\ORADATA\HXW168\CONTROL01.CTL
D:\ORACLE\FLASH_RECOVERY_AREA\HXW168\CONTROL02.CTL
650) this.width=650;" src="http://s3.51cto.com/wyfs02/M01/49/48/wKiom1QSd0KiZ7jAAAElgdi0vNo345.jpg" style="float:none;" title="7.png" alt="wKiom1QSd0KiZ7jAAAElgdi0vNo345.jpg" />
把其中D:\ORACLE\ORADATA\HXW168\CONTROL01.CTL檔案移走,啟動如下:
650) this.width=650;" src="http://s3.51cto.com/wyfs02/M02/49/4A/wKioL1QSd1Oj2CU1AAGXHhQeIQ4271.jpg" style="float:none;" title="8.png" alt="wKioL1QSd1Oj2CU1AAGXHhQeIQ4271.jpg" />
650) this.width=650;" src="http://s3.51cto.com/wyfs02/M02/49/48/wKiom1QSd0KCSaX5AADTn6M3iLQ875.jpg" style="float:none;" title="9.png" alt="wKiom1QSd0KCSaX5AADTn6M3iLQ875.jpg" />
Alter日誌如下:
650) this.width=650;" src="http://s3.51cto.com/wyfs02/M00/49/4A/wKioL1QSd5aQ_rMvAAGIHhPinXg980.jpg" title="10.png" alt="wKioL1QSd5aQ_rMvAAGIHhPinXg980.jpg" />
有二個方法可以解決:
1、由於控制檔案是互相鏡像,把另一個控制檔案複製過來並改名,即可。
2、在參數檔案中把這個控制檔案資訊刪除,操作步驟如下:
查看control_files參數類型,可以看到false:表示修改後需要重啟生效。
650) this.width=650;" src="http://s3.51cto.com/wyfs02/M01/49/48/wKiom1QSd8Lj00ZoAAEd489pg70668.jpg" title="11.png" alt="wKiom1QSd8Lj00ZoAAEd489pg70668.jpg" />
SQL> alter system setcontrol_files=‘D:\ORACLE\FLASH_RECOVERY_AREA\HXW168\CONTRO
L02.CTL‘;這樣會報錯,所以需要加上scope=spfile;
650) this.width=650;" src="http://s3.51cto.com/wyfs02/M01/49/4A/wKioL1QSeAiCMuKbAAE60xNonDE659.jpg" title="12.png" alt="wKioL1QSeAiCMuKbAAE60xNonDE659.jpg" />
關閉資料庫再啟動到nomount下,可以看到只有一個控制檔案了:
650) this.width=650;" src="http://s3.51cto.com/wyfs02/M02/49/4A/wKioL1QSeE_QjUzvAAE0GgqQsgI693.jpg" title="13.png" alt="wKioL1QSeE_QjUzvAAE0GgqQsgI693.jpg" />
可以正常進入mount狀態
650) this.width=650;" src="http://s3.51cto.com/wyfs02/M02/49/48/wKiom1QSeFOxFLxUAACGkpmgeXE709.jpg" title="14.png" alt="wKiom1QSeFOxFLxUAACGkpmgeXE709.jpg" />
把D:\ORACLE\ORADATA\HXW168\CONTROL01.CTL添加回去。命令如下:
SQL> alter system set control_files=‘D:\ORACLE\FLASH_RECOVERY_AREA\HXW168\CONTRO
L02.CTL’,’D:\ORACLE\ORADATA\HXW168\CONTROL01.CTL‘scope=spfile;
關閉資料庫,把D:\ORACLE\FLASH_RECOVERY_AREA\HXW168\CONTROL02.CTL檔案複製到並改名D:\ORACLE\ORADATA\HXW168\CONTROL01.CTL。
650) this.width=650;" src="http://s3.51cto.com/wyfs02/M02/49/4A/wKioL1QSeH6S1NEYAAHq2y3I3RM013.jpg" title="15.png" alt="wKioL1QSeH6S1NEYAAHq2y3I3RM013.jpg" />
三、參數設定
1、 修改session的參數
Alter nls_date_format=’yyyy/mm/ddhh24:mi:ss’;
2、 修改系統的參數
Alter system set control_files=’path1’,‘path2‘scope=spfile;
3、 查看參數預設值
--查看參數有什麼值
select * from v$parameter_valid_valueswhere name=‘audit_trail‘
--查看參數是什麼靜態還是動態
select * from v$system_parameter wherename=‘audit_trail‘
ISSYS_MODIFIABLE:
False:重啟後生效,需要指定scope=spfile;
IMMEDIATE:更改後馬上生效。
本文出自 “儘管錯,讓我錯到死!” 部落格,請務必保留此出處http://hxw168.blog.51cto.com/8718136/1551541
【Oracle】資料庫啟動階段參數檔案、控制檔案的問題處理