在
修改需要重起實例才能生效
來動態修改那些可動態修改的參數
例還是同時應用到spfile
告別手工修改初始化參數文檔
SPFILE 是個二進制文檔
納入了備份恢復管理
除了第一次啟動數據庫需要PFILE(然後能夠根據PFILE 創建SPFILE)
要PFILE
一
缺省的
在下一次啟動數據庫時生效
語法如下
CREATE SPFILE[=
例
SQL> create spfile from pfile;
缺省的
(Unix: $ORACLE_HOME/dbs; NT: $ORACLE_HOME\database)
假如SPFILE 已存在
SQL> create spfile from pfile;
create spfile from pfile
*
ERROR 位於第
ORA
這也能夠用來判斷當前是否使用了SPFILE 文檔
然而意外的時
SQL> host rename SPFILEEYGLEN
SQL> alter system set db_cache_size=
系統已更改
SQL> host dir *
驅動器E 中的卷是Doc
卷的序列號是
E:\Oracle\Ora
SQL> alter system set db_cache_size=
alter system set db_cache_size=
*
ERROR 位於第
ORA
OSD
O/S
SQL> host rename SPFILEEYGLEN
SQL> alter system set db_cache_size=
系統已更改
SQL>
估計Oracle 以後會想辦法來鎖定這個文檔
二
重新啟動數據庫
數文檔
a
缺省目錄UNIX: ${ORACLE_HOME}/dbs/
NT: ${ORACLE_HOME}\database
b
缺省目錄UNIX: ${ORACLE_HOME}/dbs/
NT: ${ORACLE_HOME}\database
c
缺省目錄UNIX: ${ORACLE_HOME}/dbs/
NT: ${ORACLE_HOME}\database or
${ORACLE_HOME}\admin\db_name\pfile\
創建了spfile
三
假如您想使用pfile 啟動數據庫
SQL> startup pfile=
您不能以同樣的方式指定spfile
spfile
SPFILE 是個自Oracle
義非缺省路徑的spfile 文檔
您能夠在PFILE 鏈接到SPFILE 文檔
後讀取的參數將取代先前的配置
PFILE 參數的使用
這是我們使用SPFILE 啟動的情況
SQL> startup
ORACLE 例程已啟動
Total System Global Area
Fixed Size
Variable Size
Database Buffers
Redo Buffers
數據庫裝載完畢
數據庫已打開
SQL> show parameter log_archive_start
NAME TYPE
VALUE
log_archive_start boolean
TRUE
SQL> show parameter spfile
NAME TYPE
VALUE
spfile string
%ORACLE_HOME%\DATABASE\SPFILE%
ORACLE_SID%
SQL>
我們修改PFILE 文檔內容如下
#Pfile link to SPFILE
SPFILE=
log_archive_start = false
能夠預見這個log_archive_start 參數配置將會代替SPFILE 中的配置
SQL> startup pfile=
ORACLE 例程已啟動
Total System Global Area
Fixed Size
Variable Size
Database Buffers
Redo Buffers
數據庫裝載完畢
數據庫已打開
SQL> show parameter spfile
NAME TYPE
VALUE
spfile string
E:\Oracle\Ora
ILEEYGLEN
SQL> show parameter log_archive_start
NAME TYPE
VALUE
log_archive_start boolean
FALSE
然後我們能夠使用ALTER SYSTEM 方式將修改固定到SPFILE
SQL> alter system set log_archive_start=false scope=spfile;
系統已更改
所以您也能夠通過如上方式在啟動時修改初始化參數
出方法要簡便的多
四
能夠通過ALTER SYSTEM 或導入導出來更改SPFILE 的內容
ALTER SYSTEM 增加了一個新選項
MEMORY
MEMORY:只改變當前實例運行
SPFILE:只改變SPFILE 的配置
BOTH:改變實例及SPFILE
SQL> show parameter timed_statistics
NAME TYPE
VALUE
timed_statistics boolean
TRUE
SQL> ALTER SYSTEM SET timed_statistics=FALSE SCOPE=MEMORY;
系統已更改
SQL> show parameter timed_statistics
NAME TYPE
VALUE
timed_statistics boolean
FALSE
SQL> shutdown immediate
數據庫已關閉
已卸載數據庫
ORACLE 例程已關閉
SQL> startup
ORACLE 例程已啟動
Total System Global Area
Fixed Size
Variable Size
Database Buffers
Redo Buffers
數據庫裝載完畢
數據庫已打開
SQL> show parameter timed_statistics
NAME TYPE
VALUE
timed_statistics boolean
TRUE
SQL> show parameter timed_statistics
NAME TYPE
VALUE
timed_statistics boolean
TRUE
SQL> ALTER SYSTEM SET timed_statistics=FALSE SCOPE=SPFILE;
系統已更改
SQL> show parameter timed_statistics
NAME TYPE
VALUE
timed_statistics boolean
TRUE
SQL> shutdown immediate
數據庫已關閉
已卸載數據庫
ORACLE 例程已關閉
SQL> startup
ORACLE 例程已啟動
Total System Global Area
Fixed Size
Variable Size
Database Buffers
Redo Buffers
數據庫裝載完畢
數據庫已打開
SQL> show parameter timed_statistics
NAME TYPE
VALUE
timed_statistics boolean
FALSE
SQL>
使用BOTH 選項實際上等同於不帶參數的ALTER SYSTEM 語句
注意
SQL> show parameter timed_statistics
NAME TYPE
VALUE
timed_statistics boolean
FALSE
SQL> ALTER SYSTEM SET timed_statistics=TRUE SCOPE=BOTH;
系統已更改
SQL> show parameter timed_statistics
NAME TYPE
VALUE
timed_statistics boolean
TRUE
SQL> shutdown immediate
數據庫已關閉
已卸載數據庫
ORACLE 例程已關閉
SQL> startup
ORACLE 例程已啟動
Total System Global Area
Fixed Size
Variable Size
Database Buffers
Redo Buffers
數據庫裝載完畢
數據庫已打開
SQL> show parameter timed_statistics
NAME TYPE
VALUE
timed_statistics boolean
TRUE
SQL> ALTER SYSTEM SET sql_trace=FALSE SCOPE=BOTH;
ALTER SYSTEM SET sql_trace=FALSE SCOPE=BOTH
*
ERROR 位於第
ORA
SQL> ALTER SYSTEM SET sql_trace=FALSE SCOPE=SPFILE;
系統已更改
SQL> show sga
Total System Global Area
Fixed Size
Variable Size
Database Buffers
Redo Buffers
SQL> shutdown immediate
數據庫已關閉
已卸載數據庫
ORACLE 例程已關閉
SQL> create pfile from spfile;
文檔已創建
SQL> create spfile from pfile;
文檔已創建
SQL>
五
判斷是否使用了SPFILE
SQL> SELECT name
NAME
VALUE
spfile
%ORACLE_HOME%\DATABASE\SPFILE%ORACLE_SID%
麼說明您在使用pfile:
SQL> SHOW PARAMETER spfile
NAME TYPE
VALUE
spfile string
%ORACLE_HOME%\DATABASE\SPFILE%
ORACLE_SID%
假如以下查詢返回
SQL> SELECT COUNT(*) FROM v$spparameter WHERE value IS NOT NULL;
COUNT(*)
From:http://tw.wingwit.com/Article/program/Oracle/201311/17305.html