您的位置:首页 > 数据库

参数文件及数据库的启动和关闭

2013-05-19 12:43 423 查看
Oracle启动的时候,内存分多大等,一些参数都是在参数文件里。

Oracle9i以前用静态参数文件init$ORACLE_SID.ora—文本文件,静态参数文件只有在oracle启动的时候去读一下,启动完之后就关闭了,本质如果要改oracle的任何参数,只能重启数据库。Oracle9i开始用动态参数文件spfile$ORACLE_SID.ora—二进制文件,oracle启动的时候将参数读一下,但是继续打开这个个文件,在数据库运行期间可以动态修改部分参数。有的参数不能动态改,改了不能立即生效(改完之后需重启数据库)。所以数据库尽量要用动态参数。

Oracle启动过程中参数文件寻找顺序:找spfile($ORACLE_HOME/dbs/spfile$ORACLE_SID.ora)找到这个文件后用这个文件启动,如果找不到spfile,就找静态参数文件init$ORACLE_SID.ora.

Startup mount;

Create pfile fromspfile;--将动态参数文件生成态参数文件,如果改spfile中的参数的时候导致,数据库起不来,可以用这个命令创建pfile,将参数改回来,然后再重新生成pfile

Create spfile frompfile;--将静态参数文件生成动态参数文件

v$parameter 中ISSES_MODIFIABLE和ISSYS_MODIFIABLE说明

ISSES_MODIFIABLE
VARCHAR2(5)
Indicates whether the parameter can be changed with ALTER SESSION (TRUE)
or not (FALSE)
ISSYS_MODIFIABLE
VARCHAR2(9)
Indicates whether the parameter can be changed with ALTER SYSTEM and when the change takes effect:

IMMEDIATE - Parameter can be changed with ALTER SYSTEM regardless of the type of parameter file used to start the instance. The change takes effect immediately.
DEFERRED - Parameter can be changed with ALTER SYSTEM regardless of the type of parameter file used to start the instance. The change takes effect in subsequent sessions.
FALSE - Parameter cannot be changed with ALTER SYSTEM unless a server parameter file was used to start the instance. The change takes effect in subsequent instances.

v$parameter中ISSES_MODIFIABLE 这一列标志该参数是否可以在session级别被修改;

ISSYS_MODIFIABLE这一列标志该参数是否可以在system级别被修改,其中有三个值:

IMMEDIATE表示修改完之后立即生效,DEFERRED表示必须得等下个session才能生效,也就是当前session还是不起作用的,FALSE表示实例重启后才能生效。

SQL> select name,ISSES_MODIFIABLE,ISSYS_MODIFIABLEfrom v$parameter where name in('workarea_size_policy','audit_file_dest','sga_target','sga_max_size');

NAME ISSES_MODIFIABLE ISSYS_MODIFIABLE
--------------- --------------------------------
sga_max_size FALSE FALSE
sga_target FALSE IMMEDIATE
audit_file_destFALSE DEFERRED
workarea_size_pTRUE IMMEDIATE
olicy

SQL> show parametersga_max_size;

NAME TYPE VALUE

------------------------------------ -----------------------------------------

sga_max_size big integer 7344M

SQL> alter system set sga_max_size=7345M;

alter system set sga_max_size=7345M

ORA-02095: 无法修改指定的初始化参数

SQL> altersystem set sga_max_size=7345M scope=spfile;由于这个参数必须重启数据库才能生效,所以需加scope=spfile,不然会报错。

System altered

关于scope选项的说明请参考:http://blog.csdn.net/zuixinnet/article/details/8884286

SQL> show parameter sga_max_size;

NAME TYPE VALUE

----------------------------------------------- ------------------------------

sga_max_size big integer 7344M

SQL> show parameter workarea_size_policy;

NAME TYPE VALUE

----------------------------------------------- ------------------------------

workarea_size_policy string AUTO

SQL> altersystem set workarea_size_policy=manual;--这个参数是立即生效的,所以设置完之后,看到参数立马就发生变化了。

System altered

SQL> showparameter workarea_size_policy;

NAME TYPE VALUE

----------------------------------------------- ------------------------------

workarea_size_policy string MANUAL

showparameter audit_file

NAME TYPE VALUE

------------------------------------ -----------------------------------------

audit_file_dest string D:\ORACLE\PRODUCT\10.2.0\ADMIN\ZTSYS\ADUMP

SQL> alter systemset audit_file_dest='D:\ORACLE\PRODUCT\10.2.0\ADMIN\ZTSYS';

ORA-02096:此选项的指定初始化参数不可修改

alter system setaudit_file_dest='D:\ORACLE\PRODUCT\10.2.0\ADMIN\ZTSYS'deferred;-- 后面必须得加关键字deferred,否则会报错。

SQL> showparameter audit_file –这里当前会话还是没有改变,需下一个会话才生效

NAME TYPE VALUE
----------------------------------------------- ------------------------------
audit_file_dest string D:\ORACLE\PRODUCT\10.2.0\ADMIN\ZTSYS\ADUMP

SQL> showparameter audit_file_dest –新开一个会话生效了。

NAME TYPE VALUE

----------------------------------------------- ------------------------------

audit_file_dest string D:\ORACLE\PRODUCT\10.2.0\ADMIN\ZTSYS

Oracle启动三个阶段

Nomount –oracle 找到参数文件,根据参数文件划分内存空间和起一些进程

Mount –根据参数文件里面设置的控制文件的位置,找到控制文件,把控制文件打开,控制文件记录了数据库的结构

Open –把数据文件和redolog打开,这些文件在什么位置是记载在控制文件中

Oracle关闭四种方式

Shutdown有四个选项可以选择

默认是normal

1、abort

模拟突然掉电

内存被清空、内存中的数据没有写入数据文件

事务被立即中断

没有提交、没有回滚

2、immediate 一般用这个

强制中断当前正在运行的所有事务,回滚这些事务

回滚完毕,强制中断所有的连接

讲实例中的所有数据写入数据文件

3、transactional

等待正在运行的事务,一直到他们提交或者回滚

所有事务主动结束以后(提交或者回滚),强行中断连接

将实例里面的数据写入数据文件

清空缓存

如果有事务一直没有提交或者回滚,实例无法关闭

4、normal

等待事务的主动提交或者回滚

等待用户主动断开连接

如果有一个用户没有断开连接,那么数据库无法关闭
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: