一、参数文件讲解
1.1、参数文件的作用
使用STARTUP命令启用数据以后,它第一步就会调用spfileSID.ora参数文件,通过这个文件里面的定义和一些设置,来启动数据库实例。我们数据库的很多设置、配置、优化、调整,都是在这个参数文件里面来控制的。
1.2、参数文件的分类
1)静态初始化参数文件 PFILE(9i之前)
PFILE initSID.ora是一个编辑器修改的文本文件。可以手动对该文件进行修改,但是需要在下次数据库启动修改才能生效,它的缺省路径是$ORACLE_HOME/dbs。
2)动态初始化参数文件 SPFILE(10g之后)
SPFILE是一个不用重启数据库就能将改变生效的二进制文件。它保存在Oracle服务器端,能通过ALTER SYSTEM命令直接对参数进行修改,同时能指定改变是临时在内存中生效还是从现在开始永久生效,修改的值能被删除,并重置到实例缺省的值。
1.3、创建SPFILE
SPFILE能使用命令CREATE SPFILE命令从initSID.ora中创建,并且在数据库开启前或开启后都能执行。
CREATE SPFILE FROM PFILE;
1.4、数据库启动查找顺序
Oracle启动时,查找顺序为spfile<sid>.ora-->spfile.ora-->init<sid>.ora。
1)spfile<sid>.ora
Unix/Linux缺省目录:$ORACLE_HOME/dbs/
Windows缺省目录:%ORACLE_HOME%database
2)spfile.ora
Unix/Linux缺省目录:$ORACLE_HOME/dbs/
Windows缺省目录:%ORACLE_HOME%database
3)init<sid>.ora
Unix/Linux缺省目录:$ORACLE_HOME/dbs/
Windows缺省目录:%ORACLE_HOME%database
二、参数文件案例一
2.1、案例说明:某业务系统需要增加物理内存,增加内存后,需要调整数据SGA、PGA内存参数。
1)名词解释:
SGA:System Global Area是Oracle Instance的基本组成部分,在实例启动时分配。系统全局域SGA主要由三部分构成:共享池、数据缓冲区、日志缓冲区。
PGA:Process Global Area是为每个连接到Oracle Database的用户进程保留的内存。
2)在服务器上运行中输入cmd打开命令提示符。
3)连接Oracle数据库:
sqlplus "/as sysdba"
4)分别输入以下指令:
show parameter sga
show parameter pga
show parameter memory
可以看到,sga_target和pag_aggregate_target的值都为0,说明它们都没有使用Oracle 10g时的管理参数。
可以看到,memory_max_target和memory_target的值都不为0,它们使用的是Oracle 11g时自动内存的管理参数。
5)memory_max_target和memory_target的值,最大不可以超过80%的物理内存,建议先设到60%左右。此处演示设为1.5G:
alter system set memory_max_target=1536M scope=spfile; alter system set memory_target=1536M scope=spfile; shutdown immediate; startup show parameter memory
三、参数文件案例二
3.1、案例说明
1)如上例,修改SGA参数时本来要设为1536M,但是不小心设成了153M,并且已经执行了关闭数据库。此时,因为内存过小导致数据库无法启动。该怎么办呢?答案是可以通过pfile来完成spfile的重建。
3.2、ORACLE_HOME环境变量设置
1)在服务器对着"此电脑"点击"右键",选择"属性"。
2)点击"高级系统设置"。
3)在高级页下,点击"环境变量"。
4)在系统变量下点击"新建"。
5)输入变量名"ORACLE_HOME",点击"浏览目录"选择Oracle安装主目录,然后点击"确定"。
6)由于设置了ORACLE_HOME变量,sqlplus命令对应的环境变量也可以改一下。在系统变量下找到"Path",点击"编辑"。
7)将"C:appAdministratorproduct11.2.0dbhome_1BIN"更改为"%ORACLE_HOME%in"。
8)一直点击"确定"后完成环境变量的设置,然后重启服务器。
3.3、更改memory
1)在服务器上运行中输入cmd打开命令提示符。
2)输入以下命令查看database文件:
cd %ORACLE_HOME%database dir
可以看到,下面有各个数据库的参数文件:
3)连接Oracle数据库:
sqlplus "/as sysdba"
4)使用spfile文件来重建pfile文件。
create pfile='pfile.ora' from spfile='spfiletest.ora';
5)在Oracle安装目录的database文件夹下,使用记事本打开pfile.ora文件。
6)将*.memory_max_target和*.memory_target的值改为1610612736(此值为字节,此处设为1.5G。1.5G=1.5*1024*1024*1024B=1610612736B),然后保存。
7)在sqlplus,将pfile文件重建各个数据库的spfile文件,然后启动数据库。可以看到,数据库已可以正党启动。
create spfile='spfileorcl.ora' from pfile='pfile.ora'; create spfile='spfiletest.ora' from pfile='pfile.ora'; startup