1. 定义:参数文件是数据库启动第一阶段(nomount : started)加载的文件,目的是为了根据参数文件里定义的参数值,来开辟实例(SGA+后台进程)。
  2. 路径:cd $ORACLE_HOME/dbs -------密码文件也是在此路径下
  3. 分类:两大类
  1. 动态参数文件,称之为 SPFILE(Server Parameter File),二进制文件,不能通过VIM编辑器修改
  2. 静态参数文件,称之为 PFILE(Parameter File),文本文件,可以通过VIM编辑器修改
  1. 命名方式(标准 / 非标准)
  2. 标准:
    1. 动态参数文件(SPFILE):spfile<sid>.ora--------> spfileerp.ora | spfilecdb1.ora
    2. 静态参数文件 (PFILE):init<sid>.ora--------> initerp.ora | initcdb1.ora
  3. 非标准:创建一个xxx.ora文件,用法: startup nomount pfile='$ORACLE_HOME/dbs/xxx.ora';------用非标准创建的参数文件将数据库启动到nomount状态,其中PFILE的文件路径可以自定义。
  4. 注:startup 默认寻找的是标准格式。
  5. 创建
  6. 创建SPFILE:
    1. create spfile from pfile;-----通过静态参数文件创建
    2. create spfile from memory;-------通过内存来创建
    3. create spfile from pfile='$ORACLE_HOME/dbs/xxx.ora';-----通过非标准命名方式的文件来创建
  7. 创建PFILE:
    1. create pfile from spfile;------通过动态参数文件创建
    2. create pfile from memory; -----通过内存来创建
  8. 加载顺序:从11G开始,单实例,数据库启动寻找参数文件的顺序为:先找SPFILE(spfile.ora),如果找不到,那么会自动去查找PFILE(init.ora),如果还找不到,直接报错。
  9. 参数(上面讲的是参数文件,下面讲的是参数
  10. 注:参数和参数文件是不一样的概念
  11. 参数的分类
    1. 错误描述:动态参数文件(SPFILE)里面存储的都是【动态参数】,静态参数文件(PFILE)里面存储的都是【静态参数】
    2. 记住这句话:不管是动态参数文件(SPFILE)还是静态参数文件(PFILE),只是保存格式上不一样,但里面的内容都是一样的
    3. 分为两类:
      1. 动态参数:可以在内存中修改,也可以在SPFILE中修改
      2. 静态参数:只能在SPFILE中修改,不能在内存中修改
  12. 参数修改级别
    1. 一共有两个级别,session和system
    2. session:alter session set xxxx=xxxx; ---当前会话,退出当前会话,失效
    3. system:alter system set xxx=xxxx; --数据库全局
  13. 修改参数的scope选项
    1. scope是必须要带的 alter system set xxx=xxxx(默认缺省scope=both);
    2. scope选项有三种:spfile | memory | both
      1. ·spfile:修改参数,使它在文件里生效,必须重启实例后才会生效
      2. memory:使参数在内存中生效,立即生效,但重启失效。
      3. both:同时修改文件及内存里的这个参数值,立即生效,且重启也生效。

单实例中更改参数文件的实验:

题目:将控制文件修改成3路复用

解:

  1. 修改参数文件 control_files 将其设置成3路

  2. 关闭实例(数据库)

  3. 将物理文件修改成三份与参数文件对应

  4. 启动实例(数据库)

实验代码:

/***查看control_files 参数,目前只有两路***/
SQL> show parameter control_
NAME                     TYPE               VALUE
------------------------------------         ----------------------         ------------------------------
control_file_record_keep_time          	     integer	              	    7
control_files	                  		     string	    	        /u01/app/oracle/oradata/OCP12C/control01.ctl,                                     /u01/app/oracle/oradata/OCP12C/control02.ctl
control_management_pack_access	          string	          DIAGNOSTIC+TUNING/***查看该参数在SESSION/SYSTEM/INSTANCE级别中是否可修改***/
SQL> select ISSES_MODIFIABLE,ISSYS_MODIFIABLE,ISINSTANCE_MODIFIABLE from v$parameter where name='control_files';
ISSES_MODI     ISSYS_MODIFIABLE ISINSTANCE
----------                 ------------------                     ----------
FALSE                      FALSE	               FALSE(不可修改)       (不能在内存中修改) 
SQL> alter system set control_files='/u01/app/oracle/oradata/OCP12C/control01.ctl','/u01/app/oracle/oradata/OCP12C/control02.ctl','/u01/app/oracle/oradata/OCP12C/control03.ctl';
alter system set control_files='/u01/app/oracle/oradata/OCP12C/control01.ctl','/u01/app/oracle/oradata/OCP12C/control02.ctl','/u01/app/oracle/oradata/OCP12C/control03.ctl'
                 *
ERROR at line 1:
ORA-02095: specified initialization parameter cannot be modified  ——————说明此参数是静态参数,不能在内存中修改SQL> alter system set control_files='/u01/app/oracle/oradata/OCP12C/control01.ctl','/u01/app/oracle/oradata/OCP12C/control02.ctl','/u01/app/oracle/oradata/OCP12C/control03.ctl' scope=spfile;
alter system set control_files='/u01/app/oracle/oradata/OCP12C/control01.ctl','/u01/app/oracle/oradata/OCP12C/control02.ctl','/u01/app/oracle/oradata/OCP12C/control03.ctl' scope=spfile
*
ERROR at line 1:
ORA-65040: operation not allowed from within a pluggable database—————不能在PDB级别修改SQL> conn / as sysdba
Connected.
SQL> alter system set control_files='/u01/app/oracle/oradata/OCP12C/control01.ctl','/u01/app/oracle/oradata/OCP12C/control02.ctl','/u01/app/oracle/oradata/OCP12C/control03.ctl' scope=spfile;System altered.
SQL> shutdown immediate
Database closed.
Database dismounted.
ORACLE instance shut down.SQL> select name from v$controlfile;
NAME
--------------------------------------------------
/u01/app/oracle/oradata/OCP12C/control01.ctl
/u01/app/oracle/oradata/OCP12C/control02.ctl/***设置物理文件为3路***/
[oracle@oracle12c OCP12C]$ cp control01.ctl control03.ctl
[oracle@oracle12c OCP12C]$ ll
total 2597756
-rw-r----- 1 oracle oinstall  18726912 Dec  5 14:10 control01.ctl
-rw-r----- 1 oracle oinstall  18726912 Dec  5 14:10 control02.ctl
-rw-r----- 1 oracle oinstall  18726912 Dec  5 14:12 control03.ctl 
SQL> startup
ORACLE instance started.Total System Global Area 1660944384 bytes
Fixed Size		    8793448 bytes
Variable Size		  939524760 bytes
Database Buffers	  704643072 bytes
Redo Buffers		    7983104 bytes
Database mounted.
Database opened.SQL> show pdbs
    CON_ID CON_NAME	    		  OPEN MODE  RESTRICTED
---------- ------------------------------       ----------          ----------
	 2    PDB$SEED                READ ONLY       NO
	 3    ERP	           			  MOUNTED
SQL> ————启动成功————