Oracle的參數文件使用解讀
1、參數文件的相關概念
1.1 概念
參數文件記錄了 Oracle 數據庫的基本參數信息,包括數據庫名、控制文件所在路徑等。
參數文件也是 Oracle 數據庫較為重要的一種文件結構。
1.2 參數文件的分類
1.2.1 spfile
- spfile(Server Parameter File):服務器參數文件,文件格式為二進制格式,不能使用文本編輯器修改,可以使用 alter system 命令修改文件中的參數值,可以使用 strings 命令查看其內容。
- spfile 參數文件的默認名稱為: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): 初始化參數文件,文件格式為文本格式,可以使用文本編輯器修改其中的參數內容。
- 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 實例啟動時查找參數文件的順序
Oracle 實例啟動時查找參數文件的順序:Oracle 首先在默認目錄中查找名為 spfile<$ORACLE_SID>.ora的文件,如果沒有則查找spfile.ora 文件,如果還沒有,繼續(xù)查找 init<$ORACLE_SID>.ora 文件。
Oracle 數據庫根據 SPFILE 或 PFILE 中設置的參數來配置數據庫的啟動。Oracle 實例在啟動時,會去讀取參數文件中的配置:數據庫的 startup 命令中可以指定以哪個 pfile 來啟動(startup 命令只能指定 pfile,不能指定 spfile)。
如果使用不帶 pfile 子句的 startup 命令,Oracle 將從默認位置的 spfile 文件中讀取初始化參數。
1.4 查看啟動實例時所使用的參數文件
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 參數文件
2、Oracle 參數的分類
根據參數的生效時間,Oracle 參數可以分為兩類:靜態(tài)參數和動態(tài)參數。
2.1 動態(tài)參數
可以在數據庫運行時修改參數值并且立即生效的參數。
2.2 靜態(tài)參數
內存中的當前值不能被修改,只能在參數文件中修改,且數據庫必須要重啟才能生效的參數。
2.3 如何區(qū)分動態(tài)參數和靜態(tài)參數
Oracle 在視圖 V$PARAMETER 中提供了一個列 ISSYS_MODIFIABLE,
如果該列的值為 IMMEDIATE 代表該參數為動態(tài)參數,且修改后立即生效;
如果該列的值為 DEFERRED 代表該參數為動態(tài)參數,但參數值修改后不會立即生效,只有在新連接的會話中生效;
如果該列的值為 FALSE 代表該參數為靜態(tài)參數。
3、查看 Oracle 參數
查詢 Oracle 參數的方法如下:
3.1 使用 show parameters 命令
該命令可以查詢當前會話生效的參數。
SQL> show parameter name;
3.2 使用 show spparameters 命令
該命令可以查詢當前會話生效的 spfile 參數,參數的取值來源于spfile參數文件。
SQL> show spparameter name;
4、參數文件的創(chuàng)建
使用 create pfile 命令
此方法可以將 spfile 或當前內存中設置的參數保存到 pfile 文件中,pfile 文件是文本文件,可以直接打開進行查看。
這種方法列出的參數都是用戶設置的參數,不包括默認值參數。
4.1 將spfile參數文件中設置的參數保存到pfile文件
SQL> create pfile = '/home/oracle/aaa.ora' from spfile; File created.
4.2 將當前內存中設置的參數保存到pfile文件
SQL> create pfile = '/home/oracle/bbb.ora' from memory; File created.
5、參數文件相關視圖的查詢
5.1 查看 v$parameter 視圖
v$parameter視圖提供了當前會話可見的初始化參數的取值,如果要查詢rac數據庫的 所有實例的設置,可以查詢gv$parameter 視圖提供了當前會話可見的初始化參數的取值,
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 視圖提供了當前實例生效的初始化參數的取值,如果要查詢rac數據庫的所有實例的設置,可以查詢 gv$system_parameter 視圖提供了當前實例生效的初始化參數的取值
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文件中初始化參數的取值,如果參數在spfile文件中沒有設置,字段isspecified對應的值為false 。
如果要查詢 rac 數據庫的所有實例的設置,可以查詢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ū)別在于對于包含多值的初始化參數,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 查看非默認值參數
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 參數的值
說明:
- (1)在 RAC 環(huán)境中,要修改所有實例,可以在 ALTER SYSTEM 的最后加上 SID='*',要更改某一個實例, 在命令的結尾加上 SID='實例名'
- (2)ALTER SESSION:修改的參數只限于本次會話,退出會話再進入時修改失效
- (3)ALTER SYSTEM:修改的參數適用于數據庫實例的所有會話,數據庫關閉則修改失效
- (4)ALTER SYSTEM DEFERRED:修改是延遲修改,退出會話,下次進入會話時生效
- (5)scope = spfile:修改只對 spfile 參數文件有效,對于動態(tài)參數和靜態(tài)參數都是數據庫重啟時有效。
- (6)scope = memory:修改只對內存有效,對于動態(tài)參數修改后立即生效,數據庫重啟后失效。靜態(tài)參數不允許使用該選項。
- (7)scope = both:修改對 spfile 參數文件和內存都生效。對于動態(tài)參數修改后立即生效,數據庫重啟后失效。靜態(tài)參數不允許使用該選項。
初始化參數的設置方法有以下幾種:
6.1 值修改內存中的值
ALTER SYSTEM/SESSION SET 參數名=參數值 SCOPE = MEMORY SID='*';
6.2 只修改 SPFILE 中的值
ALTER SYSTEM SET 參數名=參數值 SCOPE = SPFILE SID='*';
6.3 同時修改 SPFILE 和 MEMORY 中的值(也可以省略 BOTH 關鍵詞)
ALTER SYSTEM SET 參數名=參數值 SCOPE = BOTH SID='*';
6.4 設置延遲生效
修改只對以后連接到數據庫的會話生效,而對當前會話以及其它已經連接到 Oracle 的會話不會生效。
ALTER SYSTEM SET 參數名=參數值 DEFERRED SCOPE = SPFILE SID='*';
6.5 動態(tài)參數修改舉例
6.5.1 動態(tài)參數 open_cursors 在內存中的取值
SQL> show parameter open_cursor NAME TYPE VALUE ------------------------------------ ----------- ------------------------------ open_cursors integer 300
6.5.2 動態(tài)參數 open_cursors 在 spfile 參數文件中的取值
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 只修改參數文件中的值
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 同時修改內存和參數文件的取值
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)參數修改舉例
6.6.1 靜態(tài)參數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)參數的內存值不允許修改
SQL> alter system set db_unique_name = 'mydb' scope = memory sid = '*'; alter system set db_unique_name = 'mydb' scope = memory sid = '*' ORA-02095: 無法修改指定的初始化參數
6.6.3 靜態(tà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: 無法修改指定的初始化參數
6.6.4 靜態(tài)參數只能在 spfile 參數文件中修改,并且重啟數據庫才生效
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 重啟數據庫(靜態(tài)參數修改后必須重啟數據庫才能生效)
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 根據內存中的參數值創(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、刪除參數文件
SQL> alter system reset "background_dump_dest" scope=spfile sid='*'; System altered.
總結
以上為個人經驗,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關文章
CentOS8下安裝oracle客戶端完整(填坑)過程分享(推薦)
這篇文章主要介紹了CentOS8下安裝oracle客戶端完整(填坑)過程分享,本文給大家介紹的非常詳細,具有一定的參考借鑒價值,需要的朋友可以參考下2019-12-12

