Oracle的參數(shù)文件使用解讀
1、參數(shù)文件的相關(guān)概念
1.1 概念
參數(shù)文件記錄了 Oracle 數(shù)據(jù)庫的基本參數(shù)信息,包括數(shù)據(jù)庫名、控制文件所在路徑等。
參數(shù)文件也是 Oracle 數(shù)據(jù)庫較為重要的一種文件結(jié)構(gòu)。
1.2 參數(shù)文件的分類
1.2.1 spfile
- spfile(Server Parameter File):服務(wù)器參數(shù)文件,文件格式為二進(jìn)制格式,不能使用文本編輯器修改,可以使用 alter system 命令修改文件中的參數(shù)值,可以使用 strings 命令查看其內(nèi)容。
- spfile 參數(shù)文件的默認(rèn)名稱為: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ù)內(nèi)容。
- pfile 默認(rèn)的名稱為: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 首先在默認(rèn)目錄中查找名為 spfile<$ORACLE_SID>.ora的文件,如果沒有則查找spfile.ora 文件,如果還沒有,繼續(xù)查找 init<$ORACLE_SID>.ora 文件。
Oracle 數(shù)據(jù)庫根據(jù) SPFILE 或 PFILE 中設(shè)置的參數(shù)來配置數(shù)據(jù)庫的啟動。Oracle 實例在啟動時,會去讀取參數(shù)文件中的配置:數(shù)據(jù)庫的 startup 命令中可以指定以哪個 pfile 來啟動(startup 命令只能指定 pfile,不能指定 spfile)。
如果使用不帶 pfile 子句的 startup 命令,Oracle 將從默認(rèn)位置的 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ù)的分類
根據(jù)參數(shù)的生效時間,Oracle 參數(shù)可以分為兩類:靜態(tài)參數(shù)和動態(tài)參數(shù)。
2.1 動態(tài)參數(shù)
可以在數(shù)據(jù)庫運行時修改參數(shù)值并且立即生效的參數(shù)。
2.2 靜態(tài)參數(shù)
內(nèi)存中的當(dāng)前值不能被修改,只能在參數(shù)文件中修改,且數(shù)據(jù)庫必須要重啟才能生效的參數(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 命令
該命令可以查詢當(dāng)前會話生效的參數(shù)。
SQL> show parameter name;
3.2 使用 show spparameters 命令
該命令可以查詢當(dāng)前會話生效的 spfile 參數(shù),參數(shù)的取值來源于spfile參數(shù)文件。
SQL> show spparameter name;
4、參數(shù)文件的創(chuàng)建
使用 create pfile 命令
此方法可以將 spfile 或當(dāng)前內(nèi)存中設(shè)置的參數(shù)保存到 pfile 文件中,pfile 文件是文本文件,可以直接打開進(jìn)行查看。
這種方法列出的參數(shù)都是用戶設(shè)置的參數(shù),不包括默認(rèn)值參數(shù)。
4.1 將spfile參數(shù)文件中設(shè)置的參數(shù)保存到pfile文件
SQL> create pfile = '/home/oracle/aaa.ora' from spfile; File created.
4.2 將當(dāng)前內(nèi)存中設(shè)置的參數(shù)保存到pfile文件
SQL> create pfile = '/home/oracle/bbb.ora' from memory; File created.
5、參數(shù)文件相關(guān)視圖的查詢
5.1 查看 v$parameter 視圖
v$parameter視圖提供了當(dāng)前會話可見的初始化參數(shù)的取值,如果要查詢rac數(shù)據(jù)庫的 所有實例的設(shè)置,可以查詢gv$parameter 視圖提供了當(dāng)前會話可見的初始化參數(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 視圖提供了當(dāng)前實例生效的初始化參數(shù)的取值,如果要查詢rac數(shù)據(jù)庫的所有實例的設(shè)置,可以查詢 gv$system_parameter 視圖提供了當(dāng)前實例生效的初始化參數(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文件中沒有設(shè)置,字段isspecified對應(yīng)的值為false 。
如果要查詢 rac 數(shù)據(jù)庫的所有實例的設(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 查看非默認(rèn)值參數(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、設(shè)置 Oracle 參數(shù)的值
說明:
- (1)在 RAC 環(huán)境中,要修改所有實例,可以在 ALTER SYSTEM 的最后加上 SID='*',要更改某一個實例, 在命令的結(jié)尾加上 SID='實例名'
- (2)ALTER SESSION:修改的參數(shù)只限于本次會話,退出會話再進(jìn)入時修改失效
- (3)ALTER SYSTEM:修改的參數(shù)適用于數(shù)據(jù)庫實例的所有會話,數(shù)據(jù)庫關(guān)閉則修改失效
- (4)ALTER SYSTEM DEFERRED:修改是延遲修改,退出會話,下次進(jìn)入會話時生效
- (5)scope = spfile:修改只對 spfile 參數(shù)文件有效,對于動態(tài)參數(shù)和靜態(tài)參數(shù)都是數(shù)據(jù)庫重啟時有效。
- (6)scope = memory:修改只對內(nèi)存有效,對于動態(tài)參數(shù)修改后立即生效,數(shù)據(jù)庫重啟后失效。靜態(tài)參數(shù)不允許使用該選項。
- (7)scope = both:修改對 spfile 參數(shù)文件和內(nèi)存都生效。對于動態(tài)參數(shù)修改后立即生效,數(shù)據(jù)庫重啟后失效。靜態(tài)參數(shù)不允許使用該選項。
初始化參數(shù)的設(shè)置方法有以下幾種:
6.1 值修改內(nèi)存中的值
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 關(guān)鍵詞)
ALTER SYSTEM SET 參數(shù)名=參數(shù)值 SCOPE = BOTH SID='*';
6.4 設(shè)置延遲生效
修改只對以后連接到數(shù)據(jù)庫的會話生效,而對當(dāng)前會話以及其它已經(jīng)連接到 Oracle 的會話不會生效。
ALTER SYSTEM SET 參數(shù)名=參數(shù)值 DEFERRED SCOPE = SPFILE SID='*';
6.5 動態(tài)參數(shù)修改舉例
6.5.1 動態(tài)參數(shù) open_cursors 在內(nèi)存中的取值
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 只修改內(nèi)存值
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 同時修改內(nèi)存和參數(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ù)的內(nèi)存值不允許修改
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ù)的內(nèi)存值不允許使用 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ù)據(jù)庫才生效
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
內(nèi)存中的值沒有發(fā)生變化
6.6.5 重啟數(shù)據(jù)庫(靜態(tài)參數(shù)修改后必須重啟數(shù)據(jù)庫才能生效)
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 根據(jù) spfile 創(chuàng)建 pfile
create pfile[='xxxxx'] from spfile[='xxxx'];
7.2 根據(jù)內(nèi)存中的參數(shù)值創(chuàng)建 pfile
create pfile[='xxxxx'] from memory;
7.3 根據(jù) pfile 創(chuàng)建 spfile
create spfile[='xxxxx'] from pfile[='xxxx'];
7.4 舉例
7.4.1 根據(jù) spfile 創(chuàng)建 pfile
SQL> create pfile = '/home/oracle/pfilefromspfile.ora' from spfile; File created
7.4.2 根據(jù) memory 創(chuàng)建 pfile
SQL> create pfile = '/home/oracle/pfilefrommemory.ora' from memory; File created
7.4.3 集群根據(jù)pfile創(chuàng)建spfile文件
SQL> create spfile = '+data/spfileorcl1.ora' from pfile = '/home/oracle/pfile001.ora'; File created
7.4.4 單機版根據(jù)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.
總結(jié)
以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關(guān)文章
Oracle 跨庫 查詢 復(fù)制表數(shù)據(jù) 分布式查詢介紹
這篇文章主要介紹了Oracle 跨庫 查詢 復(fù)制表數(shù)據(jù) 分布式查詢的相關(guān)資料,需要的朋友可以參考下2014-10-10
CentOS8下安裝oracle客戶端完整(填坑)過程分享(推薦)
這篇文章主要介紹了CentOS8下安裝oracle客戶端完整(填坑)過程分享,本文給大家介紹的非常詳細(xì),具有一定的參考借鑒價值,需要的朋友可以參考下2019-12-12
Oracle數(shù)據(jù)庫設(shè)置任務(wù)計劃備份一周的備份記錄
這篇文章介紹了Oracle數(shù)據(jù)庫下通過任務(wù)計劃備份一周的記錄的批處理代碼,需要的朋友可以參考下2013-08-08
Oracle 12c 新特性之多線程數(shù)據(jù)庫操作
這篇文章主要介紹了Oracle 12c 新特性之多線程數(shù)據(jù)庫操作,非常不錯,具有一定的參考借鑒價值,需要的朋友可以參考下2018-08-08

