oracel體系結構梳理----控制檔案以及pfile和spfile

lff1530983327發表於2015-01-26

----控制檔案

它是一個二進位制檔案,它描述了資料庫的結構,當資料庫處於mountopen狀態的時候,它必須能被oracle 服務來寫,它的名字預設每個作業系統都不一樣的,也可以自己取,

沒有這個檔案,資料庫不能mount,也不能恢復資料

物理結構改變的時候就會寫控制檔案

SQLshow parameter control

NAME                                 TYPE        VALUE

------------------------------------ ----------- ------------------------------

control_file_record_keep_time        integer     7

control_files                        string      E:\APP\ADMINISTRATOR\ORADATA\ORG11G\CONTROL01.CTL, E:\APP\ADMINISTRATOR\FAST_RECOVERY_AREA\ORG11G\CONTROL02.CTL

control_management_pack_access       string      DIAGNOSTIC+TUNING

11g兩個,一般會分別放在不同磁碟上面!

在資料庫進行持續執行時,將不斷修改控制檔案資訊,如:

每次線上日誌檔案、資料檔案的新增、修改、刪除,歸檔等都會更新控制檔案

熱備份的時候

觸發系統事件時

增量檢查點將每三秒會喚醒DBWR,並將當前資料庫的一致性資訊更新到控制檔案,包括例項恢復的起點REDO地址(RBA TARGET),或稱LOWER RBA

STATUS 列有兩種狀態:

INVALID,NULL.

如果控制檔案不能被檢測到,就會顯示為INVALID。 

如果可以檢測到,就會顯示NULL

 控制檔案(control file)中主要包含以下內容: 

l The database name

l The timestamp of database creation

l The names and locations of associated datafiles and redo log files

l Tablespace information

l Datafile offline ranges

l The log history

l Archived log information

l Backup set and backup piece information

l Backup datafile and redo log information

l Datafile copy information

l The current log sequence number

l Checkpoint information

---修改控制檔案資訊

alter system set

control_files='E:\APP\ADMINISTRATOR\ORADATA\ORG11G\CONTROL01.CTL''E:\APP\ADMINISTRATOR\FAST_RECOVERY_AREA\ORG11G\CONTROL02.CTL' scope=spfile;

-----pfilespfile

create spfile='E:\app\Administrator\product\11.2.0\dbhome_1\database\SPFILEORG11G.ORA' from pfile='E:\app\Administrator\product\11.2.0\dbhome_1\database\INITorg11g.ORA';

org11g.__db_cache_size=419430400

org11g.__java_pool_size=16777216

org11g.__large_pool_size=16777216

org11g.__oracle_base='E:\app\Administrator'#ORACLE_BASE set from environment

org11g.__pga_aggregate_target=587202560

org11g.__sga_target=1124073472 ----例項名.表示單個的例項下

org11g.__shared_io_pool_size=0

org11g.__shared_pool_size=620756992

org11g.__streams_pool_size=33554432

*.audit_file_dest='E:\app\Administrator\admin\org11g\adump'

*.audit_trail='db'

*.compatible='11.2.0.0.0'

*.control_files='E:\app\Administrator\oradata\org11g\control01.ctl','E:\app\Administrator\fast_recovery_area\org11g\control02.ctl'

*.db_block_size=8192

*.db_domain=''

*.db_name='org11g'

*.db_recovery_file_dest='E:\app\Administrator\fast_recovery_area'

*.db_recovery_file_dest_size=4322230272

*.db_writer_processes=3

*.diagnostic_dest='E:\app\Administrator'

*.dispatchers='(PROTOCOL=TCP) (SERVICE=org11gXDB)'

*.log_archive_dest_1='location=D:\oracle\archive'

*.memory_target=1698693120

*.open_cursors=300 ----前面加*表示rac環境就是所有例項環境中有效

*.processes=150

*.remote_login_passwordfile='EXCLUSIVE'

*.undo_tablespace='UNDOTBS1'

--pfile

pfile是文字檔案,可以手動編輯,有預設值如果設定錯誤則會直接忽略,使用預設值!

pfile是文字檔案,是靜態的,在作業系統級別手動修改,是在資料庫啟動的時候讀,修改的引數,必須重新啟動才能有效,不能立即生效

---spfile

spfile是二進位制檔案,是服務端引數檔案,要用命令來修改。

修改一些系統引數時有時候會涉及到該檔案:

alter system set parameter = value [comment=text][deferred][scope = memory | spfile | both]

[sid=sid | *]

1MEMORY(預設):改變馬上修改記憶體,並生效,但是SPFILE沒有修改,下次啟動引數被還原。

2SPFILE:只是修改了SPFILE,下次啟動新的引數值,當前執行引數值不生效。

3BOTH: MEMORYSPFILE都生效。

alter system set open_cursors=1000 scope=spfile;

alter system set open_cursors=1000 scope=memory

alter system set open_cursors=888 scope=both;

----pfilespfile的區別

1spfile 二進位制檔案,只能用命令修改,減少出錯.不像pfile可以用編輯器隨便改,錯了也可能不報錯.pfile文字檔案

2. spfile的引數改動,有可能立即生效,但是pfile,改動後只能在下次啟動的時候生效.

3. pfile是客戶端的,spfile是在伺服器端的.

4. spfile可以用rman備份,pfile不可以.

SELECT distinct ISMODIFIED, ISSYS_MODIFIABLE FROM V$PARAMETER;

MODIFIED  --- > 在會話級修改了

SYSTEM_MOD --- > 在系統級修改了

FALSE   --- > 例項啟動後沒有修改

alter session set

alter system set 

SELECT ISMODIFIED, ISSYS_MODIFIABLE FROM V$PARAMETER WHERE NAME='open_cursors';

ISSYS_MODIFIABLE

DEFERRED   -----&gt也是動態引數,對於當前session無效,下一個session生效

FALSE      -----&gt靜態引數,需要重啟db才能生效

IMMEDIATE  -----&gt動態引數,立即生效

SQLSELECT distinct ISMODIFIED, ISSYS_MODIFIABLE FROM V$PARAMETER;

ISMODIFIED           ISSYS_MODIFIABLE

-------------------- ------------------

FALSE                DEFERRED

FALSE                FALSE

FALSE                IMMEDIATE

MODIFIED             FALSE

SQLSELECT ISMODIFIED, ISSYS_MODIFIABLE FROM V$PARAMETER WHERE NAME='open_cursors';

ISMODIFIED           ISSYS_MODIFIABLE

-------------------- ------------------

FALSE                IMMEDIATE ----例項啟動後沒有修改,而且為動態引數,立即生效

--========================================================================================

---引數的類別

1顯式引數:在引數檔案中寫了的

2.  隱式引數:預設的

3.  隱含引數:_開頭的,oracle內部人員用的。

v$parameter  --- > 顯示當前session的引數值。

v$system_parameter --- > 顯示instance的引數值。

v$spparameter --- > 顯示spfile中記錄的引數值。

SELECT isdefault,name,VALUE FROM v$parameter ORDER BY name;

--查隱含引數 ---false表示你已經配置過的,true表示系統預設的,你沒有配置過得

1.過時引數:在 Oracle 以前的版本中存在,但在新版本中已經淘汰了的引數,已經不再使用;

2.強調引數:就是在新版本中保留了下來,但是不希望使用者使用的那些引數。

------檢視過時引數

select name, isspecified from v$obsolete_parameter;--false在引數檔案中沒有配置,true已經過時但是還在被使用

------檢視強調引數

SELECT kspponm, DECODE (ksppoflg,  1'Obsolete',  2'Underscored')FROM x$ksppo ORDER BY kspponm;--Obsolete  過時   Underscored  強調

show parameter spfile---有值則是spfile啟動的!10g之後均為spfile啟動的,判斷是spfile啟動的,還是pfile啟動

select ISSPECIFIED, count(*)from v$spparameter where ISSPECIFIED = 'TRUE' group by ISSPECIFIED;

-----ISSPECIFIED = true.就是在spfile中對應的引數是否被指定,只要有true即表示是spfile啟動的

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/30018455/viewspace-1416047/,如需轉載,請註明出處,否則將追究法律責任。

相關文章