Oracle-16-數據庫物理文件:參數文件

Parameter File 參數文件

參數文件是用來保存數據庫中所有非默認值得初始化參數,分爲spfile(二進制)和pfile(文本文件)

查看數據庫下的參數

select name,value from v$parameter where name='compatible';

NAME                 VALUE
-------------------- --------------------
compatible           11.2.0.0.0

Elapsed: 00:00:00.00
select count(1) from v$parameter;
  COUNT(1)
----------
       342

Elapsed: 00:00:00.01

可以看到當前版本數據庫有342個參數,但是版本不同,參數的個數也不同,查看當前版本

select * from v$version;
BANNER
--------------------------------------------------------------------------------
Oracle Database 11g Enterprise Edition Release 11.2.0.1.0 - 64bit Production
PL/SQL Release 11.2.0.1.0 - Production
CORE    11.2.0.1.0      Production
TNS for Linux: Version 11.2.0.1.0 - Production
NLSRTL Version 11.2.0.1.0 - Production

Elapsed: 00:00:00.01

查看非默認值的參數,也就是被修改過的參數

select name,value from v$parameter where isdefault<>'TRUE';
NAME
--------------------------------------------------------------------------------
VALUE
------------------------------------------------------------------------------------------------------------------------
processes
150

spfile
+DATA/sundb/spfilesundb.ora

memory_target
838860800

control_files
+DATA/sundb/controlfile/current.260.974086781, +FLASH/sundb/controlfile/current.256.974086781

db_block_size
8192

compatible
11.2.0.0.0

db_create_file_dest
+DATA

db_recovery_file_dest
+FLASH

db_recovery_file_dest_size
4070572032

undo_tablespace
UNDOTBS1

remote_login_passwordfile
EXCLUSIVE

db_domain


dispatchers
(PROTOCOL=TCP) (SERVICE=sundbXDB)

audit_file_dest
/u01/app/oracle/admin/sundb/adump

audit_trail
DB

db_name
sundb

open_cursors
300

diagnostic_dest
/u01/app/oracle


18 rows selected.

Elapsed: 00:00:00.00

其中只有參數DB_NAME沒有默認值,也就是說我們一定要指定DB_NAME才能創建數據庫

爲了簡化對視圖v$parameter的訪問,Oracle提供了一個SQLPLUS環境命令:show parameter,可以以模糊匹配的方式返回含有字符串的參數打印出來。

show parameter name
NAME                                 TYPE        VALUE
------------------------------------ ----------- ------------------------------
db_file_name_convert                 string
db_name                              string      orcl
db_unique_name                       string      orcl
global_names                         boolean     FALSE
instance_name                        string      orcl
lock_name_space                      string
log_file_name_convert                string
service_names                        string      orcl

被修改過的18個參數保存在參數文件中,參數文件有兩種pfile(文本格式)、spfile(二進制格式),默認情況下oracle爲我們創建的是spfile

可以修改的參數值我們叫做動態參數,不能修改的參數我們叫做靜態參數。

desc v$parameter
Name                                                              Null?    Type
 ----------------------------------------------------------------- -------- --------------------------------------------
 NUM                                                                        NUMBER
 NAME                                                                       VARCHAR2(80)
 TYPE                                                                       NUMBER
 VALUE                                                                      VARCHAR2(4000)
 DISPLAY_VALUE                                                              VARCHAR2(4000)
 ISDEFAULT                                                                  VARCHAR2(9)
 ISSES_MODIFIABLE                                                           VARCHAR2(5)
 ISSYS_MODIFIABLE                                                           VARCHAR2(9)
 ISINSTANCE_MODIFIABLE                                                      VARCHAR2(5)
 ISMODIFIED                                                                 VARCHAR2(10)
 ISADJUSTED                                                                 VARCHAR2(5)
 ISDEPRECATED                                                               VARCHAR2(5)
 ISBASIC                                                                    VARCHAR2(5)
 DESCRIPTION                                                                VARCHAR2(255)
 UPDATE_COMMENT                                                             VARCHAR2(255)
 HASH                                                                       NUMBER
select name,issys_MODIFIABLE from v$parameter where issys_MODIFIABLE <> 'FALSE' order by 2;
NAME                                                                             ISSYS_MOD
-------------------------------------------------------------------------------- ---------
backup_tape_io_slaves                                                            DEFERRED
recyclebin                                                                       DEFERRED
audit_file_dest                                                                  DEFERRED
olap_page_pool_size                                                              DEFERRED
object_cache_max_size_percent                                                    DEFERRED
sort_area_size                                                                   DEFERRED
sort_area_retained_size                                                          DEFERRED
object_cache_optimal_size                                                        DEFERRED
timed_statistics                                                                 IMMEDIATE
timed_os_statistics                                                              IMMEDIATE
resource_limit                                                                   IMMEDIATE
license_max_sessions                                                             IMMEDIATE
license_sessions_warning                                                         IMMEDIATE 

動態參數類型:

defered:參數值可以修改,但是對於當前會話是不生效的,要在修改後重新連接的會話中才會生效。

immediate:參數值修改後立即生效。

select name,issys_MODIFIABLE from v$parameter where issys_MODIFIABLE = 'FALSE' ORDER BY 2; 

NAME                                                                             ISSYS_MOD
-------------------------------------------------------------------------------- ---------
lock_name_space                                                                  FALSE
processes                                                                        FALSE
sessions                                                                         FALSE
instance_groups                                                                  FALSE
event                                                                            FALSE
sga_max_size                                                                     FALSE
pre_page_sga                                                                     FALSE
shared_memory_address                                                            FALSE
hi_shared_memory_address                                                         FALSE
靜態參數:可以通過修改參數文件後,重啓數據庫是修改生效。

查看參數文件類型

show parameter spfile
NAME                                 TYPE        VALUE
------------------------------------ ----------- ------------------------------
spfile                               string      +DATA/sundb/spfilesundb.ora

如果這個參數有值,說明用的是spfile,如果是空,就是用的pfile

由於這個數據庫是建立在ASM磁盤組上面的,所以參數文件的位置也在磁盤組上

cd $ORACLE_HOME/dbs
cat initorcl.ora 
SPFILE='+DATA/sundb/spfileorcl.ora'
這個路徑指向了磁盤組的參數文件路徑


spfile:位置:$ORACLE_HOME/dbs/orapw<ORACLE_SID>

修改動態參數值

show parameter open_cursors
NAME                                 TYPE        VALUE
------------------------------------ ----------- ------------------------------
open_cursors                         integer     300
alter system set open_cursors=400 scope=memory;
System altered.

Elapsed: 00:00:00.01
show parameter open_cursors
NAME                                 TYPE        VALUE
------------------------------------ ----------- ------------------------------
open_cursors                         integer     400
show spparameter open_cursors
SID      NAME                          TYPE        VALUE
-------- ----------------------------- ----------- ----------------------------
*        open_cursors                  integer     300

發現在二進制參數文件spfile中還沒有改過來,我們修改參數文件中的值

alter system set open_cursors=400 scope=spfile;
show spparameter open_cursors
SID      NAME                          TYPE        VALUE
-------- ----------------------------- ----------- ----------------------------
*        open_cursors                  integer     400

這次spfile中的參數值就改過來了

如果希望將內存中的參數值和參數文件中的參數值一起修改

alter system set open_cursors=400 scope=both;

默認情況下scope的取值就是both,因此也可以將 scope=both省略

下面我們修改靜態參數

show parameter memory_max_target
NAME                                 TYPE        VALUE
------------------------------------ ----------- ------------------------------
memory_max_target                    big integer 800M
alter system set memory_max_target=900m;
alter system set memory_max_target=900m
                 *
ERROR at line 1:
ORA-02095: specified initialization parameter cannot be modified


Elapsed: 00:00:00.00

發現不能直接修改內存的值,我們就只能修改spfile中的值,然後重啓數據庫後讓參數值生效

alter system set memory_max_target=900m scope=spfile;

pfile

我們先建立pfile文件

create pfile='/home/oracle/1.ora' from spfile;

我們嘗試用pfile啓動實例

shutdown immediate
startup pfile='/home/oracle/1.ora'
show parameter spfile
NAME                                 TYPE        VALUE
------------------------------------ ----------- ------------------------------
spfile                               string

發現這個參數爲空,是用pfile文件啓動的

我們修改動態參數

alter system set open_cursors=200;
show parameter open_cursors
NAME                                 TYPE        VALUE
------------------------------------ ----------- ------------------------------
open_cursors                         integer     200

但是用pfile啓動的數據庫只能講參數值修改到內存中去,不能將參數值修改到pfile中,更不會更新到spfile中,如果要修改pfile中的參數值,必須自己手動修改pfile文件中的參數值,想讓修改後的參數值生效,需要重新啓動實例。

修改靜態參數的方法類似,也是直接修改pfile文件中的值,然後重啓實例就可以了。

oracle 啓動數據庫對參數文件的搜索順序爲
spfilesid.ora—>spfile.ora—->init_sid.ora

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章