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

猜你喜欢

转载自blog.csdn.net/paul_george/article/details/80274158