Oracle的參數(shù)文件使用解讀
1、參數(shù)文件的相關概念
1.1 概念
參數(shù)文件記錄了 Oracle 數(shù)據庫的基本參數(shù)信息,包括數(shù)據庫名、控制文件所在路徑等。
參數(shù)文件也是 Oracle 數(shù)據庫較為重要的一種文件結構。
1.2 參數(shù)文件的分類
1.2.1 spfile
- spfile(Server Parameter File):服務器參數(shù)文件,文件格式為二進制格式,不能使用文本編輯器修改,可以使用 alter system 命令修改文件中的參數(shù)值,可以使用 strings 命令查看其內容。
- spfile 參數(shù)文件的默認名稱為:spfile.ora
- 文件路徑為:$ORACLE_HOME/dbs。
[oracle@node1 db]$ cd $ORACLE_HOME/dbs [oracle@node1 dbs]$ ll 總用量 116936 -rw-r----- 1 oracle oinstall 10715136 12月 23 16:06 c-1651659091-20221223-00 -rw-r----- 1 oracle oinstall 10715136 12月 23 20:36 c-1651659091-20221223-01 -rw-r----- 1 oracle oinstall 10715136 1月 12 15:24 c-1651659091-20230112-00 -rw-r----- 1 oracle oinstall 10715136 1月 12 15:37 c-1651659091-20230112-01 -rw-r----- 1 oracle oinstall 11042816 1月 12 19:05 c-1651659091-20230112-02 -rw-r----- 1 oracle oinstall 10715136 1月 12 15:56 c-1651659091-20230112-03 -rw-r----- 1 oracle oinstall 11042816 1月 12 19:12 c-1651659091-20230112-04 -rw-r----- 1 oracle oinstall 11042816 1月 13 11:37 c-1651659091-20230113-00 -rw-r----- 1 oracle oinstall 11042816 1月 13 11:52 c-1651659091-20230113-01 -rw-r----- 1 oracle oinstall 11042816 1月 30 10:49 c-1651659091-20230130-00 -rw-rw---- 1 oracle oinstall 1544 1月 31 13:27 hc_orcl.dat -rw-r--r-- 1 oracle oinstall 3079 5月 14 2015 init.ora -rw-r----- 1 oracle oinstall 24 1月 31 12:58 lkMYDB -rw-r----- 1 oracle oinstall 24 1月 12 13:04 lkORCL -rw-r----- 1 oracle oinstall 2048 12月 19 20:28 orapworcl -rw-r----- 1 oracle oinstall 10928128 1月 30 10:49 snapcf_orcl.f -rw-r----- 1 oracle oinstall 3584 1月 31 13:27 spfileorcl.ora
1.2.2 pfile
- pfile(Initialization Parameters File): 初始化參數(shù)文件,文件格式為文本格式,可以使用文本編輯器修改其中的參數(shù)內容。
- pfile 默認的名稱為:init.ora
- 文件路徑為:$ORACLE_HOME/dbs。
[oracle@node1 db]$ cd $ORACLE_HOME/dbs [oracle@node1 dbs]$ ll 總用量 116936 -rw-r----- 1 oracle oinstall 10715136 12月 23 16:06 c-1651659091-20221223-00 -rw-r----- 1 oracle oinstall 10715136 12月 23 20:36 c-1651659091-20221223-01 -rw-r----- 1 oracle oinstall 10715136 1月 12 15:24 c-1651659091-20230112-00 -rw-r----- 1 oracle oinstall 10715136 1月 12 15:37 c-1651659091-20230112-01 -rw-r----- 1 oracle oinstall 11042816 1月 12 19:05 c-1651659091-20230112-02 -rw-r----- 1 oracle oinstall 10715136 1月 12 15:56 c-1651659091-20230112-03 -rw-r----- 1 oracle oinstall 11042816 1月 12 19:12 c-1651659091-20230112-04 -rw-r----- 1 oracle oinstall 11042816 1月 13 11:37 c-1651659091-20230113-00 -rw-r----- 1 oracle oinstall 11042816 1月 13 11:52 c-1651659091-20230113-01 -rw-r----- 1 oracle oinstall 11042816 1月 30 10:49 c-1651659091-20230130-00 -rw-rw---- 1 oracle oinstall 1544 1月 31 13:27 hc_orcl.dat -rw-r--r-- 1 oracle oinstall 3079 5月 14 2015 init.ora -rw-r----- 1 oracle oinstall 24 1月 31 12:58 lkMYDB -rw-r----- 1 oracle oinstall 24 1月 12 13:04 lkORCL -rw-r----- 1 oracle oinstall 2048 12月 19 20:28 orapworcl -rw-r----- 1 oracle oinstall 10928128 1月 30 10:49 snapcf_orcl.f -rw-r----- 1 oracle oinstall 3584 1月 31 13:27 spfileorcl.ora
1.3 實例啟動時查找參數(shù)文件的順序
Oracle 實例啟動時查找參數(shù)文件的順序:Oracle 首先在默認目錄中查找名為 spfile<$ORACLE_SID>.ora的文件,如果沒有則查找spfile.ora 文件,如果還沒有,繼續(xù)查找 init<$ORACLE_SID>.ora 文件。
Oracle 數(shù)據庫根據 SPFILE 或 PFILE 中設置的參數(shù)來配置數(shù)據庫的啟動。Oracle 實例在啟動時,會去讀取參數(shù)文件中的配置:數(shù)據庫的 startup 命令中可以指定以哪個 pfile 來啟動(startup 命令只能指定 pfile,不能指定 spfile)。
如果使用不帶 pfile 子句的 startup 命令,Oracle 將從默認位置的 spfile 文件中讀取初始化參數(shù)。
1.4 查看啟動實例時所使用的參數(shù)文件
SQL> show parameter pfile;
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
spfile string /app/oracle/product/19.3.0/db/dbs/spfileorcl.ora
SQL> SELECT INST_ID,NAME,VALUE FROM GV$PARAMETER WHERE NAME LIKE '%pfile%';
INST_ID NAME VALUE
---------- -------------------------------------------------------------------------------- --------------------------------------------------------------------------------
1 spfile /app/oracle/product/19.3.0/db/dbs/spfileorcl.ora可以看出 oracle 啟動實例時使用的是 spfile 參數(shù)文件
2、Oracle 參數(shù)的分類
根據參數(shù)的生效時間,Oracle 參數(shù)可以分為兩類:靜態(tài)參數(shù)和動態(tài)參數(shù)。
2.1 動態(tài)參數(shù)
可以在數(shù)據庫運行時修改參數(shù)值并且立即生效的參數(shù)。
2.2 靜態(tài)參數(shù)
內存中的當前值不能被修改,只能在參數(shù)文件中修改,且數(shù)據庫必須要重啟才能生效的參數(shù)。
2.3 如何區(qū)分動態(tài)參數(shù)和靜態(tài)參數(shù)
Oracle 在視圖 V$PARAMETER 中提供了一個列 ISSYS_MODIFIABLE,
如果該列的值為 IMMEDIATE 代表該參數(shù)為動態(tài)參數(shù),且修改后立即生效;
如果該列的值為 DEFERRED 代表該參數(shù)為動態(tài)參數(shù),但參數(shù)值修改后不會立即生效,只有在新連接的會話中生效;
如果該列的值為 FALSE 代表該參數(shù)為靜態(tài)參數(shù)。
3、查看 Oracle 參數(shù)
查詢 Oracle 參數(shù)的方法如下:
3.1 使用 show parameters 命令
該命令可以查詢當前會話生效的參數(shù)。
SQL> show parameter name;
3.2 使用 show spparameters 命令
該命令可以查詢當前會話生效的 spfile 參數(shù),參數(shù)的取值來源于spfile參數(shù)文件。
SQL> show spparameter name;
4、參數(shù)文件的創(chuàng)建
使用 create pfile 命令
此方法可以將 spfile 或當前內存中設置的參數(shù)保存到 pfile 文件中,pfile 文件是文本文件,可以直接打開進行查看。
這種方法列出的參數(shù)都是用戶設置的參數(shù),不包括默認值參數(shù)。
4.1 將spfile參數(shù)文件中設置的參數(shù)保存到pfile文件
SQL> create pfile = '/home/oracle/aaa.ora' from spfile; File created.
4.2 將當前內存中設置的參數(shù)保存到pfile文件
SQL> create pfile = '/home/oracle/bbb.ora' from memory; File created.
5、參數(shù)文件相關視圖的查詢
5.1 查看 v$parameter 視圖
v$parameter視圖提供了當前會話可見的初始化參數(shù)的取值,如果要查詢rac數(shù)據庫的 所有實例的設置,可以查詢gv$parameter 視圖提供了當前會話可見的初始化參數(shù)的取值,
SQL> select name,value,issys_modifiable from v$parameter where name like 'instance%'; NAME VALUE ISSYS_MODIFIABLE -------------------------------------------------------------------------------- -------------------------------------------------------------------------------- ---------------- instance_abort_delay_time 0 IMMEDIATE instance_groups FALSE instance_type RDBMS FALSE instance_mode READ-WRITE FALSE instance_number 0 FALSE instance_name orcl FALSE 6 rows selected
5.2 查看 v$system_parameter 視圖
v$systemparameter 視圖提供了當前實例生效的初始化參數(shù)的取值,如果要查詢rac數(shù)據庫的所有實例的設置,可以查詢 gv$system_parameter 視圖提供了當前實例生效的初始化參數(shù)的取值
SQL> select name,value,issys_modifiable from v$system_parameter where name like 'instance%'; NAME VALUE ISSYS_MODIFIABLE -------------------------------------------------------------------------------- -------------------------------------------------------------------------------- ---------------- instance_abort_delay_time 0 IMMEDIATE instance_groups FALSE instance_type RDBMS FALSE instance_mode READ-WRITE FALSE instance_number 0 FALSE instance_name orcl FALSE 6 rows selected
5.3 查看 v$spparameter 視圖
v$spparameter視圖提供了來自spfile文件中初始化參數(shù)的取值,如果參數(shù)在spfile文件中沒有設置,字段isspecified對應的值為false 。
如果要查詢 rac 數(shù)據庫的所有實例的設置,可以查詢gv$spparameter視圖
SQL> select name,value,isspecified from v$spparameter where name like 'instance%'; NAME VALUE ISSPECIFIED -------------------------------------------------------------------------------- -------------------------------------------------------------------------------- ----------- instance_abort_delay_time FALSE instance_groups FALSE instance_type FALSE instance_mode FALSE instance_number FALSE instance_name FALSE 6 rows selected
5.4 查看 v$spparameter2 視圖
v$spparameter2和v$spparameter 視圖相似,唯一的區(qū)別在于對于包含多值的初始化參數(shù),v$spparameter2視圖會返回多條記錄 。
對于 rac 環(huán)境可以查詢 gvspparameter2視圖會返回多條記錄。
對于rac環(huán)境可以查詢gvspparameter2 視圖。
SQL> select name,value,issys_modifiable from v$parameter where name like '%files%'; NAME VALUE ISSYS_MODIFIABLE -------------------------------------------------------------------------------- -------------------------------------------------------------------------------- ---------------- filesystemio_options none FALSE control_files /app/oracle/oradata/ORCL/control01.ctl, /app/oracle/oradata/ORCL/control02.ctl FALSE db_files 200 FALSE session_max_open_files 10 FALSE SQL> select name,value,issys_modifiable from v$parameter2 where name like '%files%'; NAME VALUE ISSYS_MODIFIABLE -------------------------------------------------------------------------------- -------------------------------------------------------------------------------- ---------------- filesystemio_options none FALSE control_files /app/oracle/oradata/ORCL/control01.ctl FALSE control_files /app/oracle/oradata/ORCL/control02.ctl FALSE db_files 200 FALSE session_max_open_files 10 FALSE
5.5 查看非默認值參數(shù)
SQL> select name,value from v$parameter where isdefault <> 'TRUE'; NAME VALUE -------------------------------------------------------------------------------- -------------------------------------------------------------------------------- processes 1500 nls_language SIMPLIFIED CHINESE nls_territory CHINA sga_target 8002732032 control_files /app/oracle/oradata/ORCL/control01.ctl, /app/oracle/oradata/ORCL/control02.ctl db_block_size 8192 compatible 19.0.0 log_archive_dest_1 location=/app/archive log_archive_format orcl_%d_%S_%t_%r.dbf undo_tablespace UNDOTBS1 remote_login_passwordfile EXCLUSIVE db_domain x88.com dispatchers (PROTOCOL=TCP) (SERVICE=orclXDB) audit_file_dest /app/oracle/admin/orcl/adump audit_trail DB db_name orcl open_cursors 300 pga_aggregate_target 2667577344 diagnostic_dest /app/oracle 19 rows selected
6、設置 Oracle 參數(shù)的值
說明:
- (1)在 RAC 環(huán)境中,要修改所有實例,可以在 ALTER SYSTEM 的最后加上 SID='*',要更改某一個實例, 在命令的結尾加上 SID='實例名'
- (2)ALTER SESSION:修改的參數(shù)只限于本次會話,退出會話再進入時修改失效
- (3)ALTER SYSTEM:修改的參數(shù)適用于數(shù)據庫實例的所有會話,數(shù)據庫關閉則修改失效
- (4)ALTER SYSTEM DEFERRED:修改是延遲修改,退出會話,下次進入會話時生效
- (5)scope = spfile:修改只對 spfile 參數(shù)文件有效,對于動態(tài)參數(shù)和靜態(tài)參數(shù)都是數(shù)據庫重啟時有效。
- (6)scope = memory:修改只對內存有效,對于動態(tài)參數(shù)修改后立即生效,數(shù)據庫重啟后失效。靜態(tài)參數(shù)不允許使用該選項。
- (7)scope = both:修改對 spfile 參數(shù)文件和內存都生效。對于動態(tài)參數(shù)修改后立即生效,數(shù)據庫重啟后失效。靜態(tài)參數(shù)不允許使用該選項。
初始化參數(shù)的設置方法有以下幾種:
6.1 值修改內存中的值
ALTER SYSTEM/SESSION SET 參數(shù)名=參數(shù)值 SCOPE = MEMORY SID='*';
6.2 只修改 SPFILE 中的值
ALTER SYSTEM SET 參數(shù)名=參數(shù)值 SCOPE = SPFILE SID='*';
6.3 同時修改 SPFILE 和 MEMORY 中的值(也可以省略 BOTH 關鍵詞)
ALTER SYSTEM SET 參數(shù)名=參數(shù)值 SCOPE = BOTH SID='*';
6.4 設置延遲生效
修改只對以后連接到數(shù)據庫的會話生效,而對當前會話以及其它已經連接到 Oracle 的會話不會生效。
ALTER SYSTEM SET 參數(shù)名=參數(shù)值 DEFERRED SCOPE = SPFILE SID='*';
6.5 動態(tài)參數(shù)修改舉例
6.5.1 動態(tài)參數(shù) open_cursors 在內存中的取值
SQL> show parameter open_cursor NAME TYPE VALUE ------------------------------------ ----------- ------------------------------ open_cursors integer 300
6.5.2 動態(tài)參數(shù) open_cursors 在 spfile 參數(shù)文件中的取值
SQL> show spparameter open_cursors NAME TYPE VALUE ------------------------------------ ----------- ------------------------------ open_cursors integer 300
6.5.3 只修改內存值
SQL> alter system set open_cursors = 250 scope = memory sid = '*'; System altered. SQL> show parameter open_cursor NAME TYPE VALUE ------------------------------------ ----------- ------------------------------ open_cursors integer 250 SQL> show spparameter open_cursors NAME TYPE VALUE ------------------------------------ ----------- ------------------------------ open_cursors integer 300
6.5.4 只修改參數(shù)文件中的值
SQL> alter system set open_cursors = 350 scope = memory sid = '*'; System altered. SQL> show parameter open_cursor NAME TYPE VALUE ------------------------------------ ----------- ------------------------------ open_cursors integer 250 SQL> show spparameter open_cursors NAME TYPE VALUE ------------------------------------ ----------- ------------------------------ open_cursors integer 350
6.5.5 同時修改內存和參數(shù)文件的取值
SQL> alter system set open_cursors = 550 scope = memory sid = '*'; System altered. SQL> show parameter open_cursor NAME TYPE VALUE ------------------------------------ ----------- ------------------------------ open_cursors integer 550 SQL> show spparameter open_cursors NAME TYPE VALUE ------------------------------------ ----------- ------------------------------ open_cursors integer 550
6.6 靜態(tài)參數(shù)修改舉例
6.6.1 靜態(tài)參數(shù)db_unique_name的取值
SQL> SELECT a.NAME,a.VALUE,a.ISSYS_MODIFIABLE FROM v$parameter a where a.NAME = 'db_unique_name'; NAME VALUE ISSYS_MODIFIABLE -------------------------------------------------------------------------------- -------------------------------------------------------------------------------- ---------------- db_unique_name orcl FALSE SQL> SELECT a.NAME,a.VALUE,a.ISSPECIFIED FROM v$spparameter a where a.NAME = 'db_unique_name'; NAME VALUE ISSPECIFIED -------------------------------------------------------------------------------- -------------------------------------------------------------------------------- ----------- db_unique_name FALSE
6.6.2 靜態(tài)參數(shù)的內存值不允許修改
SQL> alter system set db_unique_name = 'mydb' scope = memory sid = '*'; alter system set db_unique_name = 'mydb' scope = memory sid = '*' ORA-02095: 無法修改指定的初始化參數(shù)
6.6.3 靜態(tài)參數(shù)的內存值不允許使用 both 選項
SQL> alter system set db_unique_name = 'mydb' scope = both sid = '*'; alter system set db_unique_name = 'mydb' scope = both sid = '*' ORA-02095: 無法修改指定的初始化參數(shù)
6.6.4 靜態(tài)參數(shù)只能在 spfile 參數(shù)文件中修改,并且重啟數(shù)據庫才生效
SQL> alter system set db_unique_name = 'mydb' scope = spfile sid = '*'; System altered SQL> SELECT a.NAME,a.VALUE,a.ISSYS_MODIFIABLE FROM v$parameter a where a.NAME = 'db_unique_name'; NAME VALUE ISSYS_MODIFIABLE -------------------------------------------------------------------------------- -------------------------------------------------------------------------------- ---------------- db_unique_name orcl FALSE SQL> SELECT a.NAME,a.VALUE,a.ISSPECIFIED FROM v$spparameter a where a.NAME = 'db_unique_name'; NAME VALUE ISSPECIFIED -------------------------------------------------------------------------------- -------------------------------------------------------------------------------- ----------- db_unique_name FALSE
內存中的值沒有發(fā)生變化
6.6.5 重啟數(shù)據庫(靜態(tài)參數(shù)修改后必須重啟數(shù)據庫才能生效)
SQL> startup force ORACLE instance started. Total System Global Area 8002730448 bytes Fixed Size 8915408 bytes Variable Size 1308622848 bytes Database Buffers 6677331968 bytes Redo Buffers 7860224 bytes Database mounted. Database opened. SQL> SELECT a.NAME,a.VALUE,a.ISSPECIFIED FROM v$spparameter a where a.NAME = 'db_unique_name'; NAME VALUE ISSPECIFIED -------------------------------------------------------------------------------- -------------------------------------------------------------------------------- ----------- db_unique_name mydb TRUE SQL> SELECT a.NAME,a.VALUE,a.ISSYS_MODIFIABLE FROM v$parameter a where a.NAME = 'db_unique_name'; NAME VALUE ISSYS_MODIFIABLE -------------------------------------------------------------------------------- -------------------------------------------------------------------------------- ---------------- db_unique_name mydb FALSE
7、pfile 和 spfile 的互相創(chuàng)建
7.1 根據 spfile 創(chuàng)建 pfile
create pfile[='xxxxx'] from spfile[='xxxx'];
7.2 根據內存中的參數(shù)值創(chuàng)建 pfile
create pfile[='xxxxx'] from memory;
7.3 根據 pfile 創(chuàng)建 spfile
create spfile[='xxxxx'] from pfile[='xxxx'];
7.4 舉例
7.4.1 根據 spfile 創(chuàng)建 pfile
SQL> create pfile = '/home/oracle/pfilefromspfile.ora' from spfile; File created
7.4.2 根據 memory 創(chuàng)建 pfile
SQL> create pfile = '/home/oracle/pfilefrommemory.ora' from memory; File created
7.4.3 集群根據pfile創(chuàng)建spfile文件
SQL> create spfile = '+data/spfileorcl1.ora' from pfile = '/home/oracle/pfile001.ora'; File created
7.4.4 單機版根據pfile創(chuàng)建spfile文件
SQL> shutdown immediate Database closed. Database dismounted. ORACLE instance shut down. SQL> startup pfile = '/home/oracle/pfilefrommemory.ora'; ORACLE instance started. Total System Global Area 8002730448 bytes Fixed Size 8915408 bytes Variable Size 1308622848 bytes Database Buffers 6677331968 bytes Redo Buffers 7860224 bytes Database mounted. Database opened. SQL> show parameter pfile NAME TYPE VALUE ------------------------------------ ----------- ------------------------------ spfile string SQL> create spfile from pfile = '/home/oracle/pfilefromspfile.ora'; File created. SQL> startup force ORACLE instance started. Total System Global Area 8002730448 bytes Fixed Size 8915408 bytes Variable Size 1308622848 bytes Database Buffers 6677331968 bytes Redo Buffers 7860224 bytes Database mounted. Database opened. SQL> show parameter pfile; NAME TYPE VALUE ------------------------------------ ----------- ------------------------------ spfile string /app/oracle/product/19.3.0/db/dbs/spfileorcl.ora
8、使用 pfile 啟動實例
SQL> shutdown immediate Database closed. Database dismounted. ORACLE instance shut down. SQL> startup pfile = '/home/oracle/pfilefrommemory.ora'; ORACLE instance started. Total System Global Area 8002730448 bytes Fixed Size 8915408 bytes Variable Size 1308622848 bytes Database Buffers 6677331968 bytes Redo Buffers 7860224 bytes Database mounted. Database opened. SQL> show parameter pfile NAME TYPE VALUE ------------------------------------ ----------- ------------------------------ spfile string
9、刪除參數(shù)文件
SQL> alter system reset "background_dump_dest" scope=spfile sid='*'; System altered.
總結
以上為個人經驗,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關文章
使用PL/SQL Developer連接Oracle數(shù)據庫的方法圖解
之前因為項目的原因需要使用Oracle數(shù)據庫,由于時間有限沒辦法從基礎開始學習,而且oracle操作的命令界面又太不友好,于是就找到了PL/SQL Developer這個很好用的軟件來間接使用數(shù)據庫,下面簡單介紹一下如何用這個軟件連接Oracle數(shù)據庫2016-12-12
oracle導出sql語句的結果集和保存執(zhí)行的sql語句(深入分析)
本篇文章是對oracle導出sql語句的結果集與保存執(zhí)行的sql語句進行了詳細的分析介紹,需要的朋友參考下2013-05-05

