创建和管理Oracle初始化参数文件pfile、spfile
- 知识点:
- 创建和管理初始化参数文件
- 启动和关闭例程
- 监视和使用诊断文件
- 参数文件
- 要启动一个Oracle例程,Oracle服务器必须读取初始化参数文件
- 查询参数的两种方式
- SQL> select name,type,value from v$parameter where name like '%sga%';
- NAME TYPE VALUE
- -------------------- ---------- ------------------------------
- sga_max_size 6 637534208
- pre_page_sga 1 FALSE
- lock_sga 1 FALSE
- sga_target 6 0
- SQL> show parameter sga
- NAME TYPE VALUE
- ------------------------------------ ----------- ------------------------------
- lock_sga boolean FALSE
- pre_page_sga boolean FALSE
- sga_max_size big integer 608M
- sga_target big integer 0
- PFILE —— initSID.ora
- PFILE是可使用标准的操作系统编辑器进行维护的文本文件。
- PFILE在例程启动过程中是只读的。如果文件发生修改,则必须关闭然后重新启动例程以使新的参数值生效。
- PFILE缺省情况下,位于 $ORACLE_HOME/dbs 目录中,文件名是 initSID.ora
- [oracle@oracle11g ~]$ cd dbs;
- [oracle@oracle11g dbs]$ ls -l
- 总计 44
- -rw-rw---- 1 oracle oinstall 1544 06-11 09:51 hc_wilson.dat
- -rw-r--r-- 1 oracle oinstall 12920 2001-05-03 initdw.ora
- -rw-r--r-- 1 oracle oinstall 8385 1998-09-11 init.ora
- -rw-r----- 1 oracle oinstall 24 06-05 21:40 lkWILSON
- -rw-r----- 1 oracle oinstall 1536 06-05 21:49 orapwwilson
- -rw-r----- 1 oracle oinstall 2560 06-11 09:51 spfilewilson.ora
- 没有initwilson.ora
- 创建PFILE
- 通过init.ora来构造pfile:做一个init.ora的拷贝,然后修改其中的参数值
- [oracle@oracle11g old]$ cp init.ora ../initwilson.ora
- 通过SPFILE来创建PFILE
- 1.进入$ORACLE_HOME/dbs目录,查看文件如下,可以看见存在spfile不存在pfile
- [oracle@oracle11g dbs]$ ls
- hc_wilson.dat initdw.ora init.ora lkWILSON orapwwilson spfilewilson.ora
- 2.将spfilewilson.ora备份为spfilewilson_bak.ora
- [oracle@oracle11g dbs]$ mv spfilewilson.ora spfilewilson_bak.ora
- hc_wilson.dat init.ora orapwwilson
- initdw.ora lkWILSON spfilewilson_bak.ora
- 3.进入sqlplus,启动数据库,可以发现因为缺少初始化参数文件数据库无法启动
- SQL> startup;
- ORA-01078: 处理系统参数失败
- LRM-00109: 无法打开参数文件 '/u01/oracle/dbs/initwilson.ora'
- 4.通过spfile创建pfile
- SQL> create pfile='/u01/oracle/dbs/initwilson.ora' from spfile='/u01/oracle/dbs/spfilewilson_bak.ora';
- 文件已创建。
- 5.查看$ORACLE_HOME/dbs目录,可见initwilson.ora已经创建了
- [oracle@oracle11g dbs]$ ls
- hc_wilson.dat init.ora lkWILSON spfilewilson_bak.ora
- initdw.ora initwilson.ora orapwwilson
- 6.进入sqlplus,启动数据库来验证是否pfile创建成功
- SQL> startup;
- ORACLE 例程已经启动。
- Total System Global Area 636100608 bytes
- Fixed Size 1301784 bytes
- Variable Size 314573544 bytes
- Database Buffers 314572800 bytes
- Redo Buffers 5652480 bytes
- 数据库装载完毕。
- 数据库已经打开。
- SPFILE —— spfileSID.ora
- SPFILE简介
- SPFILE是二进制文件,它位于$ORACLE_HOME/dbs目录中,缺省名称为spfileSID.ora
- SPFILE由Oracle 服务器进行维护
- SPFILE始终驻留在服务器端
- SPFILE所做更改永久有效,不受关闭和启动的影响
- SPFILE可以自行调节参数值
- 使恢复管理器能够备份初始化参数文件
- [oracle@oracle11g ~]$ cd dbs;
- [oracle@oracle11g dbs]$ ls -l
- 总计 44
- -rw-rw---- 1 oracle oinstall 1544 06-11 09:51 hc_wilson.dat
- -rw-r--r-- 1 oracle oinstall 12920 2001-05-03 initdw.ora
- -rw-r--r-- 1 oracle oinstall 8385 1998-09-11 init.ora
- -rw-r----- 1 oracle oinstall 24 06-05 21:40 lkWILSON
- -rw-r----- 1 oracle oinstall 1536 06-05 21:49 orapwwilson
- -rw-r----- 1 oracle oinstall 2560 06-11 09:51 spfilewilson.ora
- 查看spfile的内容,strings命令提取一个二进制文件中可打印字符
- [oracle@oracle11g dbs]$ strings spfilewilson.ora | more
- wilson.__db_cache_size=314572800
- wilson.__java_pool_size=12582912
- wilson.__large_pool_size=4194304
- wilson.__oracle_base='/u01'#ORACLE_BASE set from environment
- ......
- 通过pfile来创建spfile
- 1.进入$ORACLE_HOME/dbs目录,查看文件如下,可以看见存在pfile不存在spfile
- [oracle@oracle11g dbs]$ ls
- hc_wilson.dat init.ora lkWILSON spfilewilson_bak.ora
- initdw.ora initwilson.ora orapwwilson
- 2.将initwilson.ora备份为sinitwilson_bak.ora
- [oracle@oracle11g dbs]$ mv initwilson.ora initwilson_bak.ora
- [oracle@oracle11g dbs]$ ls
- hc_wilson.dat init.ora lkWILSON spfilewilson_bak.ora
- initdw.ora initwilson_bak.ora orapwwilson
- 3.进入sqlplus,启动数据库,可以发现因为缺少初始化参数文件数据库无法启动
- SQL> shutdown abort;
- ORACLE 例程已经关闭。
- SQL> startup;
- ORA-01078: failure in processing system parameters
- LRM-00109: 无法打开参数文件 '/u01/oracle/dbs/initwilson.ora'
- 4.通过pfile创建spfile
- SQL> create spfile='/u01/oracle/dbs/spfilewilson.ora' from pfile='/u01/oracle/dbs/initwilson_bak.ora';
- 文件已创建。
- 5.查看$ORACLE_HOME/dbs目录,可见spfilewilson.ora已经创建了
- [oracle@oracle11g dbs]$ ls
- hc_wilson.dat init.ora lkWILSON spfilewilson_bak.ora
- initdw.ora initwilson_bak.ora orapwwilson spfilewilson.ora
- 6.进入sqlplus,启动数据库来验证是否spfile创建成功
- SQL> shutdown abort;
- ORACLE 例程已经关闭。
- SQL> startup;
- ORACLE 例程已经启动。
- Total System Global Area 636100608 bytes
- Fixed Size 1301784 bytes
- Variable Size 314573544 bytes
- Database Buffers 314572800 bytes
- Redo Buffers 5652480 bytes
- 数据库装载完毕。
- 数据库已经打开。
- 修改spfile的内容
- 语法结构
- ALTER SYSTEM SET parameter_name = parameter_value [COMMENT 'text'] [SCOPE = MEMORY|SPFILE|BOTH] [deferred] [SID= 'sid '| '* ']
- parameter_name:要更改的参数的名称
- parameter_value:要将参数更改为的值
- COMMENT:添加在SPFILE 中被更改的参数旁的注释
- SCOPE:确定应在内存中、在 SPFILE 中还是同时在这两个位置进行更改
- MEMORY :只能在当前运行的例程中更改参数值
- SPFILE :只能在SPFILE 中更改参数值
- BOTH:在当前运行的例程和SPFILE 中均可更改参数值
- SID:标识要使用的SPFILE 的ORACLE_SID
- 'sid':更改SPFILE 时使用的特定 SID
- '*':使用缺省SPFILE
- deferred:下次生效
- 例1 修改内存和spfile中的参数值
- 1. 查看参数值
- SQL> show parameter fast_
- NAME TYPE VALUE
- ------------------------------------ ----------- ------------------------------
- fast_start_io_target integer 0
- fast_start_mttr_target integer 0
- fast_start_parallel_rollback string LOW
- 2. 修改参数值
- SQL> alter system set fast_start_mttr_target = 300;
- 系统已更改。
- 3. 查看内存中参数的值
- SQL> show parameter fast_
- NAME TYPE VALUE
- ------------------------------------ ----------- ------------------------------
- fast_start_io_target integer 0
- fast_start_mttr_target integer 300
- fast_start_parallel_rollback string LOW
- 4. 查看spfile文件中参数的值
- [oracle@oracle11g dbs]$ strings spfilewilson.ora | more
- *.dispatchers='(PROTOCOL=TCP) (SERVICE=wilsonXDB)'
- *.fast_start_mttr_target=300
- *.memory_target=635437056
- ......
- 例2 只修改内存中的参数的值
- 1. 查看参数值
- SQL> show parameter fast_
- NAME TYPE VALUE
- ------------------------------------ ----------- ------------------------------
- fast_start_io_target integer 0
- fast_start_mttr_target integer 300
- fast_start_parallel_rollback string LOW
- 2. 修改参数值
- SQL> alter system set fast_start_mttr_target = 250 scope = memory;
- 系统已更改。
- 3. 查看内存
- SQL> show parameter fast_
- NAME TYPE VALUE
- ------------------------------------ ----------- ------------------------------
- fast_start_io_target integer 0
- fast_start_mttr_target integer 250
- fast_start_parallel_rollback string LOW
- 4. 查看spfile中参数的值
- [oracle@oracle11g dbs]$ strings spfilewilson.ora | more
- *.dispatchers='(PROTOCOL=TCP) (SERVICE=wilsonXDB)'
- *.fast_start_mttr_target=300
- *.memory_target=635437056