Oracle 引數檔案(spfile和pfile)
Oracle 引數檔案(spfile和pfile)
--========================
-->Oracle 引數檔案
--========================
/*
引數檔案(10g中的引數檔案)
主要用來記錄資料庫的配置檔案,在資料庫啟動時,Oracle讀取引數檔案,並根據引數檔案中的引數設定來配置資料庫。
如記憶體池的分配,允許開啟的程式數和會話數等。
兩類引數檔案:
pfile:文字檔案的引數檔案,可以使用vi,vim等編輯器修改,檔名通常為init<sid>.ora
spfile:二進位制的引數檔案,不能直接修改,只能存放在Oracle伺服器端,可以使用EM或指令來修改
(alter system|session set parameter_name = values <>),
檔名通常為spfile<sid>.ora,支援RMAN備份。
優先順序別:
Oracle 啟動讀取引數檔案的順序,如果個檔案都不存在,則Oracle會報錯
spfile<sid>.ora --> spfile.ora -->init<sid>.ora
引數檔案的路徑:*/
spfle:$ORACLE_HOME/dbs/spfile$ORACLE_SID.ora
pfile(9i):$ORALCE_HOME/dbs/init$ORALCE_SID.ora /*10g以後一般不用init<sid>.ora*/
pfile(10g):$ORALCE_BASE/admin/$ORACLE_SID/pfile /*僅當資料庫初始化時使用*/
pfile:$ORACLE_HOME/dbs/init.ora /*預設*/
/*
引數檔案之間的轉化
spfile 轉化為pfile
pfile 轉換為spfile
從spfile來生成pfile
create pfile from spfile ,執行完畢後,pfile 將儲存為$ORACLE_HOME/dbs/init$ORACLE_SID.ora
也可以指定pfile 的路徑:create pfile = '<dir>' from spfile;
由pfile 生成spfile
create spfile from pfile
create spfile from pfile = '<dir>'
create spfile = '<dir>' from pfile
11g中的新指令,從memeory中生成
create spfile = '<dir>' from memeory */
/*
演示:*/
spfile --> pfile
SQL> create pfile from spfile;
File created.
SQL> ho ls -al /u01/app/oracle/10g/dbs/
total 56
drwxr-x--- 2 oracle oinstall 4096 Apr 8 13:49 .
drwxr-x--- 55 oracle oinstall 4096 Apr 7 09:48 ..
-rw-r----- 1 oracle oinstall 1544 Apr 6 12:06 hc_orcl.dat
-rw-r----- 1 oracle oinstall 8385 Sep 11 1998 init.ora
-rw-r----- 1 oracle oinstall 12920 May 3 2001 initdw.ora
-rw------- 1 oracle oinstall 1155 Apr 8 13:49 initorcl.ora
-rw-r----- 1 oracle oinstall 24 Apr 6 12:06 lkORCL
-rw-r----- 1 oracle oinstall 1536 Apr 7 15:50 orapworcl
-rw-r----- 1 oracle oinstall 3584 Apr 8 11:15 spfileorcl.ora
SQL> ho cat /u01/app/oracle/10g/dbs/initorcl.ora
orcl.__db_cache_size=251658240
orcl.__java_pool_size=4194304
orcl.__large_pool_size=4194304
orcl.__shared_pool_size=142606336
orcl.__streams_pool_size=0
*.audit_file_dest='/u01/app/oracle/admin/orcl/adump'
*.background_dump_dest='/u01/app/oracle/admin/orcl/bdump'
*.compatible='10.2.0.1.0'
*.control_files='/u01/app/oracle/oradata/orcl/control01.ctl','/u01/app/oracle/oradata/orcl/control02.ctl', '/u01/app/oracle/oradata/orcl/control03.ctl'
*.core_dump_dest='/u01/app/oracle/admin/orcl/cdump'
*.db_block_size=8192
*.db_create_file_dest='/u01/app/oracle/oradata/orcl'
*.db_create_online_log_dest_1='/u01/app/oracle/disk1'
*.db_create_online_log_dest_2='/u01/app/oracle/disk2'
*.db_domain=''
*.db_file_multiblock_read_count=16
*.db_name='orcl'
*.db_recovery_file_dest='/u01/app/oracle/flash_recovery_area'
*.db_recovery_file_dest_size=2147483648
*.dispatchers='(PROTOCOL=TCP) (SERVICE=orclXDB)'
*.job_queue_processes=10
*.open_cursors=300
*.pga_aggregate_target=135266304
*.processes=150
*.remote_login_passwordfile='EXCLUSIVE'
*.sga_target=406847488
*.undo_management='AUTO'
*.undo_tablespace='UNDOTBS1'
*.user_dump_dest='/u01/app/oracle/admin/orcl/udump'
pfile --> spfile
SQL> create spfile from pfile; /*使用該命令的時候不能轉換,如下報錯,因為當前的spfile正在使用*/
create spfile from pfile
*
ERROR at line 1:
ORA-32002: cannot create SPFILE already being used by the instance
SQL> create spfile = '/u01/app/oracle/spfileorcl.ora' from pfile;
File created.
SQL> ho cat /u01/app/oracle/spfileorcl.ora;
a*orcl.__db_cache_size=251658240
orcl.__java_pool_size=4194304
orcl.__large_pool_size=4194304
orcl.__shared_pool_size=142606336
orcl.__streams_pool_size=0
*.audit_file_dest='/u01/app/oracle/admin/orcl/adump'
*.background_dump_dest='/u01/app/oracle/admin/orcl/bdump'
*.compatible='10.2.0.1.0'
*.control_files='/u01/app/oracle/oradata/orcl/control01.ctl','/u01/app/oracle/oradata/orcl/control02.ctl','/u01/app/oracle/oradata/orcl/control03.ctl'
*.core_dump_dest='/u01/app/oracle/admin/orcl/cdump'
*.db_block_size=8192
*.db_create_file_dest='/u01/app/oracle/oradata/orcl'
*.db_create_online_log_dest_1='/u01/app/oracle/disk1'
*.db_create_online_log_dest_2='/u01/app/oracle/disk2'
*.db_domain=''
*.db_file_multiblock_read_count=16
*.db_name='orcl'
*.db_recovery_file_dest='/u01/app/oracle/flash_recovery_area'
*.db_recovery_file_dest_size=2147483648
*.dispatchers='(PROTOCOL=TCP) (SERVICE=orclXDB)'
*.job_queue_processes=10
*.open_cursors=300
*.pga_aggregate_target=135266304
*.processes=150
*.remote_login_passwordfile='EXCLUSIVE'
*.sga_target=406847488
*.undo_management='AUTO'
*.undo_tablespace='UNDOTBS1'
*.user_dump_dest='/u01/app/oracle/admin/orcl/udump'
/*
轉換後的使用:
假定修改了initorcl.ora中的引數,但Oracle啟動是先讀取spfile ,故可以在啟動的時候指定用initorcl.ora來
初始化引數,啟動完畢後,可以建立spfile,則下一次啟動就可以使用新的spfile.
假定我們對initorcl.ora作如下修改:*/
open_cursors=600
processes=250
/*
則關閉資料庫後指定以initorcl.ora引數來啟動資料庫*/
SQL> startup pfile = '/u01/app/oracle/10g/dbs/initorcl.ora';
ORACLE instance started.
Total System Global Area 406847488 bytes
Fixed Size 1219688 bytes
Variable Size 150995864 bytes
Database Buffers 251658240 bytes
Redo Buffers 2973696 bytes
Database mounted.
Database opened.
SQL> create spfile from pfile; /*修改的內容將會更新到spfile*/
File created.
--檢視引數檔案的名字
SQL> show parameter service_name
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
service_names string orcl
--檢視當前使用的哪個引數檔案啟動的
SQL> select distinct isspecified from v$spparameter;
ISSPEC
------
FALSE
/*
如果第一個值是FALSE還是TRUE,如果是FALSE,則是pfile,否則則是spfile.
也可以嘗試修改spfile ,如果報錯則可以判斷是從pfile啟動,當然所修改的引數必須是可以修改的*/
SQL> alter system set sga_target = 200m scope = spfile;
alter system set sga_target = 200m scope = spfile
*
ERROR at line 1:
ORA-32001: write to SPFILE requested but no SPFILE specified at startup
--強制啟動Oracle後再檢視是使用的哪個引數啟動的。
SQL> startup force
ORACLE instance started.
Total System Global Area 406847488 bytes
Fixed Size 1219688 bytes
Variable Size 150995864 bytes
Database Buffers 251658240 bytes
Redo Buffers 2973696 bytes
Database mounted.
Database opened.
SQL> select distinct isspecified from v$spparameter;
ISSPEC
------
TRUE
FALSE
/*
第一行為TRUE可知,是從spfile啟動的,有兩行,其中第二行為FALSE,表示有兩個引數檔案,一個是spfile,一個是pfile
再次嘗試看看能否修改spfile: */
SQL> alter system set sga_target = 380m scope = spfile; /*修改成功*/
System altered.
/*
引數檔案的修改:
如果是pfile ,直接使用vi,vim來修改即可
如果是spfile ,則使用 */
alter system|session set parametername = values scope = memory | spfile |both sid = 'sid' | ‘*’;
scope
memory : 只對當前例項有效,下次啟動則失效
spfile : 只對spfile 修改,必須經過下一次啟動才生效,當前的例項沒有修改
both :記憶體與引數檔案都將修改,當不指定scope時,預設為both.
system | session
system :
-- 查詢檢視:v$parameter
isses_modifiable 可以被alter session修改
isssy_modifiable 可以被alter system修改
-- sid:
sid :只對某一個例項
* :對所有的例項修改
SQL> show parameter sga_ /*檢視與sga有關的引數*/
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
sga_max_size big integer 388M
sga_target big integer 388M
SQL> alter system set sga_max_size = 350m; /*特殊的引數不能被修改*/
alter system set sga_max_size = 350m
*
ERROR at line 1:
ORA-02095: specified initialization parameter cannot be modified
SQL> a scope = spfile
1* alter system set sga_max_size = 350m scope = spfile
SQL> /
System altered.
SQL> select instance_name from v$instance;
INSTANCE_NAME
----------------
orcl
SQL> alter system set sga_max_size = 350m scope = spfile sid = 'orcl';
System altered.
--只改記憶體
SQL> show parameter pga
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
pga_aggregate_target big integer 129M
SQL> alter system set pga_aggregate_target = 130m scope = memory;
System altered.
-- 同時修改記憶體和引數檔案,以下兩條語句等效
SQL> alter system set pga_aggregate_target = 130m scope = both;
System altered.
SQL> alter system set pga_aggregate_target = 130m ;
System altered.
--alter session
SQL> show parameter sql_
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
plsql_ccflags string
plsql_code_type string INTERPRETED
plsql_compiler_flags string INTERPRETED, NON_DEBUG
plsql_debug boolean FALSE
plsql_native_library_dir string
plsql_native_library_subdir_count integer 0
plsql_optimize_level integer 2
plsql_v2_compatibility boolean FALSE
plsql_warnings string DISABLE:ALL
sql92_security boolean FALSE
sql_trace boolean FALSE
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
sql_version string NATIVE
sqltune_category string DEFAULT
SQL> alter session set sql_trace = true;
Session altered.
-- 可以從v$parameter檢視中來得到哪些可以使用alter system修改,哪些可以使用alter session來修改。
SQL> col name for a40
SQL> select NAME,ISSES_MODIFIABLE,ISSYS_MODIFIABLE from v$parameter
2 where name like 'sql%';
NAME ISSES ISSYS_MOD
---------------------------------------- ----- ---------
sql_trace TRUE IMMEDIATE
sql92_security FALSE FALSE
sql_version TRUE FALSE
sqltune_category TRUE IMMEDIATE
-- TURE:可以該型別修改,FLASE:不支援該型別修改,IMMEDIATE:也是支援該型別修改
SQL> alter system set sql_version = 8; /*不支援system型別修改*/
alter system set sql_version = 8
*
ERROR at line 1:
ORA-02096: specified initialization parameter is not modifiable with this option
SQL> alter session set sql_version = 8;
ERROR:
ORA-00096: invalid value 8 for parameter sql_version, must be from among MAX,
NATIVE, 8.1.6, 8.1.5
SQL> alter session set sql_version = '8.1.6'; /*支援session型別修改*/
Session altered.
SQL> select distinct issys_modifiable from v$parameter;
ISSYS_MOD
---------
IMMEDIATE /*動態引數,直接修改到記憶體的引數alter system set <> = <>,後面不需要跟scope*/
FALSE /*靜態引數,不能直接修改到記憶體,alter system set <> = <> scope = spfile*/
DEFERRED /*會話級別引數,直接透過alter session set <> = <>*/
SQL> select distinct isses_modifiable from v$parameter;
ISSES
-----
TRUE
FALSE
--系統中的常用引數:
SQL> ho ls /u01/app/oracle/10g/dbs/
hc_orcl.dat initdw.ora lkORCL spfileorcl.ora
init.ora initorcl.ora orapworcl
SQL> ho cat /u01/app/oracle/10g/dbs/initorcl.ora
/*下面的引數描述了例項相關池的分配情況*/
orcl.__db_cache_size=251658240
orcl.__java_pool_size=4194304
orcl.__large_pool_size=4194304
orcl.__shared_pool_size=142606336
orcl.__streams_pool_size=0
*.audit_file_dest='/u01/app/oracle/admin/orcl/adump' /*警告日誌路徑*/
*.background_dump_dest='/u01/app/oracle/admin/orcl/bdump' /*後臺程式日誌路徑*/
*.compatible='10.2.0.1.0' /*版本相容號*/
/*下面是控制檔案的資訊*/
*.control_files='/u01/app/oracle/oradata/orcl/control01.ctl','/u01/app/oracle/oradata/orcl/control02.ctl','/u01/app/oracle/oradata/orcl/control03.ctl'
*.core_dump_dest='/u01/app/oracle/admin/orcl/cdump' /*伺服器程式相關的日誌路徑*/
*.db_block_size=8192 /*記憶體塊的大小*/
*.db_create_file_dest='/u01/app/oracle/oradata/orcl' /*tablespace ,datafile路徑*/
*.db_create_online_log_dest_1='/u01/app/oracle/disk1' /*聯機日誌檔案路徑*/
*.db_create_online_log_dest_2='/u01/app/oracle/disk2' /*聯機日誌檔案路徑*/
*.db_domain='' /域名/
*.db_file_multiblock_read_count=16 /*一次可讀取塊的大小:*8k = 128kb*/
*.db_name='orcl' /資料庫識別符號/
*.db_recovery_file_dest='/u01/app/oracle/flash_recovery_area' /*閃迴路徑*/
*.db_recovery_file_dest_size=2147483648 /*閃回區可使用的大小GB*/
*.dispatchers='(PROTOCOL=TCP) (SERVICE=orclXDB)' /*共享伺服器的配置引數*/
*.job_queue_processes=10 /*當前作業程式數*/
*.open_cursors=600 /*可開啟的遊標數*/
*.pga_aggregate_target=135266304 /*伺服器程式大小*/
*.processes=250 /*描述當前可以執行的程式數*/
*.remote_login_passwordfile='EXCLUSIVE' /*遠端登陸是否要用密碼檔案*/
*.sga_target=406847488 /*定義了sga的大小*/
*.undo_management='AUTO' /*Undo表空間的管理方式為自動管理*/
*.undo_tablespace='UNDOTBS1' /*指定使用哪一個undo表空間*/
*.user_dump_dest='/u01/app/oracle/admin/orcl/udump' /**/
--11g中的引數檔案:
-- 隱藏引數:
SQL> desc x$ksppi /*Name列中為隱藏引數的名字*/
Name Null? Type
----------------------------------------- -------- ----------------------------
ADDR RAW(4)
INDX NUMBER
INST_ID NUMBER
KSPPINM VARCHAR2(80)
KSPPITY NUMBER
KSPPDESC VARCHAR2(255)
KSPPIFLG NUMBER
KSPPILRMFLG NUMBER
KSPPIHASH NUMBER
--下面檢視中為隱藏引數的值
SQL> desc x$ksppcv
Name Null? Type
----------------------------------------- -------- ----------------------------
ADDR RAW(4)
INDX NUMBER
INST_ID NUMBER
KSPPSTVL VARCHAR2(512)
KSPPSTDVL VARCHAR2(512)
KSPPSTDF VARCHAR2(9)
KSPPSTVF NUMBER
KSPPSTCMNT VARCHAR2(255)
--使用下面的命令來檢視系統中的隱藏引數;
SQL> select ksppinm,ksppstvl from x$ksppi a,x$ksppcv b where a.indx = b.indx;
SQL> a and ksppinm like '%_allow%';
1* select ksppinm,ksppstvl from x$ksppi a,x$ksppcv b where a.indx = b.indx and ksppinm like '%_allow%'
SQL> /
KSPPINM KSPPSTVL
---------------------------------------- ----------
_allow_level_without_connect_by FALSE
_asm_allow_only_raw_disks TRUE
_asm_allow_resilver_corruption FALSE
/*
引數的刪除:
對於pfile直接編輯刪除即可
對於spfile 例如使用alter system set pga_aggregate_target reset將恢復到預設值 */
SQL> show parameter pga
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
pga_aggregate_target big integer 130M
SQL> alter system reset pga_aggregate_target scope = spfile sid = '*';
System altered.
-- 修改會預設值後重新啟動可以看到該引數的值由M變為M
SQL> show parameter pga;
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
pga_aggregate_target big integer 76M
About Me
...............................................................................................................................
● 本文整理自網路,樂沙彌,http://blog.csdn.net/leshami/article/details/5542983
● 本文在itpub(http://blog.itpub.net/26736162)、部落格園(http://www.cnblogs.com/lhrbest)和個人微信公眾號(xiaomaimiaolhr)上有同步更新
● 本文itpub地址:http://blog.itpub.net/26736162/abstract/1/
● 本文部落格園地址:http://www.cnblogs.com/lhrbest
● 本文pdf版及小麥苗雲盤地址:http://blog.itpub.net/26736162/viewspace-1624453/
● 資料庫筆試面試題庫及解答:http://blog.itpub.net/26736162/viewspace-2134706/
● QQ群:230161599 微信群:私聊
● 聯絡我請加QQ好友(646634621),註明新增緣由
● 於 2017-05-09 09:00 ~ 2017-05-30 22:00 在魔都完成
● 文章內容來源於小麥苗的學習筆記,部分整理自網路,若有侵權或不當之處還請諒解
● 版權所有,歡迎分享本文,轉載請保留出處
...............................................................................................................................
拿起手機使用微信客戶端掃描下邊的左邊圖片來關注小麥苗的微信公眾號:xiaomaimiaolhr,掃描右邊的二維碼加入小麥苗的QQ群,學習最實用的資料庫技術。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/26736162/viewspace-2139146/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 2.7.2 遷移到伺服器引數檔案(spfile)伺服器
- 2.7.9 備份伺服器引數檔案(SPFILE)伺服器
- 2.7.8 匯出伺服器引數檔案(SPFILE)伺服器
- Oracle RAC引數檔案管理Oracle
- Oracle RAC修改引數檔案位置Oracle
- Oracle啟動找不到spfile或者pfile提示ORA-01078,利用init.ora手工建立Oracle
- 2.7.10 恢復丟失或損壞的伺服器引數檔案(SPFILE)伺服器
- 2.7.5 SPFILE初始化引數
- Oracle 12C 中CDB和PDB的引數檔案管理Oracle
- 2.7.4 建立伺服器引數(SPFILE)伺服器
- oracle 控制檔案及引數檔案何時自動備份Oracle
- 2.7 使用spfile管理伺服器引數伺服器
- Oracle RAC 環境 引數檔案的啟動順序Oracle
- .yaml引數檔案的編寫和使用YAML
- Oracle 資料庫應急寶典(二)_引數檔案篇Oracle資料庫
- Laravel 檔案上傳和獲取請求引數Laravel
- 將spfile從ASM裡遷移到檔案系統ASM
- Nginx 配置檔案引數詳解Nginx
- MySQL引數檔案沒有生效MySql
- input檔案選擇框檔案過濾引數accept
- Oracle資料檔案和臨時檔案的管理Oracle
- Oracle 核心引數Oracle
- apisix~自定義檔案上傳代理外掛~支援form-data檔案和kv引數APIORM
- 2.6.1.1 初始化引數檔案示例
- 【XTTS】xtt.properties 檔案引數描述TTS
- composer.json 檔案引數詳解JSON
- 12.MyBatis學習--對映檔案_引數處理_單個引數&多個引數&命名引數MyBatis
- mysql學習7:第四章:資料庫檔案--引數檔案和型別MySql資料庫型別
- exp和expdp的filesize引數的使用--匯出多個檔案
- Oracle:PDB 引數管理Oracle
- 一次Oracle診斷案例-Spfile案例Oracle
- el-upload 檔案上傳帶引數
- Kafka - 配置檔案引數最佳化方案Kafka
- MySQL的配置檔案的引數設定MySql
- 如何從文字檔案讀入 SQL 引數SQL
- MongoDB啟動檔案配置引數詳解MongoDB
- redis配置檔案中各引數詳解Redis
- Linux網路卡配置檔案 引數詳解Linux
- MyBaits | 對映檔案之引數處理AI