数据库物理体系 --- 参数文件(重要)

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

 ————启动成功————

原文地址:https://www.cnblogs.com/eniniemand/p/14089631.html