一、 实例和参数文件
1、instance功能:用于管理和访问database。
2、init parameter files:管理实例相关启动参数。 位置:$ORACLE_HOME/dbs
3、pfile:(parameter file)静态参数文件
1)文本文件,必须通过编辑器修改参数。 2)修改参数下次重启实例才生效。3)pfile参数文件可以不再database sever上。
命名方式:init+SID.ora
4、spfile:(system parameter file)动态参数文件。 位置:show parameter spfile;
1)二进制文件,不可以通过编辑器修改。2)Linux下strings可以查看 。3)必须在database server段的指定路径下。
命名方式: spfile+SID.ora
在spfile读到内存后,有一部分参数是可以直接在内存中修改,并对当前instance立即生效,这样的参数叫动态参数。除了动态参数都是静态参数。静态参数修改spfile文件。动态参数在instance关闭后失效,而静态参数是下次instance启动后才生效。
如何修改spfile参数
alter system set 参数=值 [scope=memory|spfile|both]
alter system reset 参数 [scope=memory|spfile|both] SID='*' //恢复缺省值。
scope=memory 参数修改立刻生效,但不修改spfile文件。
scope=spfile 修改了spfile文件,重启后生效。
scope=both 前两种都要满足。 缺省
通过查看V$parameter,可以确定参数修改方式,制定scope
SQL> desc v$parameter;
issys_modifiable:对应alter system命令,及系统级修改
SQL> select distinct issys_modifiable from v$parameter;
ISSYS_MODIFIABLE
----------------
IMMEDIATE
FALSE
DEFERRED
IMMEDIATE //对应scope=memory
FALSE //只能scope=spfile,即修改spfile文件,下次启动才生效。
DEFERRED //其他session有效
ISSES_MODIFIABLE:对应alter session命令,即session级修改
SQL> select distinct isses_modifiable from v$parameter;
ISSES_MODIFIABLE
----------------
TRUE//表示可以修改
FALSE//表示不能修改
SQL> select name,ISSES_MODIFIABLE,ISSYS_MODIFIABLE from v$parameter where name='sql_trace';
NAME ISSES ISSYS_MOD
-------------------------------------------------------------------------------- ----- ---------
sql_trace TRUE IMMEDIATE
这个结果表示 sql_trace参数在session级别可以改,在system级也可以both修改(动态参数)。
5、startup时读取初始化参数文件(initialization parameter file)或服务器参数文件(server parameter file)如果没有spfile可以从pfile启动。
pfile和spfile可以相互生成:
SQL>create pfile from spfile
SQL>create spfile from pfile(使用spfile启动后不能在线生成spfile,ORA-32002: 无法创建已由实例使用的 SPFILE)
可以通过当前内存参数生成pfile和spfile(11g新特性):
SQL>create pfile from memory;
SQL>create spfile from memory;
有了spfile,pfile一般留做备用,特殊情况也可以使用pfile启动,命令如下:
SQL> startup pfile=D:\oracle\product\10.2.0\admin\orcl\pfile\init.ora.2112014103048
SQL> show parameter spfile;
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
spfile string D:\ORACLE\PRODUCT\10.2.0\DB_1\DATABASE\SPFILEORCL.ORA
//如果value有值,说明数据库启动时读的是spfile
二 、数据库启动与关闭
1.启动分为三个阶段
1)nomount阶段:读取init parameter
SQL> select status from v$instance; (这条命令很实用,看当前数据库启动的状态,有三个 started,mounted,open)
STATUS
------------
STARTED
2)mount阶段: 读取控制文件
SQL> select status from v$instance;
STATUS
------------
MOUNTED
3)open阶段: 1、检查所有的datafile、redo log、 group 、password file。
2、检查数据库的一致性(controlfile、datafile、redo file的检查点是否一致)
SQL> select file#,checkpoint_change# from v$datafile; //从控制文件中读出
FILE# CHECKPOINT_CHANGE#
---------- ------------------
1 7877118
2 7877118
3 7877118
4 7877118
5 7877118
6 7877118
7 7877118
8 7877118
9 7877118
10 7877118
11 7877118
12 7877118
13 7877118
13 rows selected
SQL> select file#,checkpoint_change# from v$datafile_header; 从数据文件头中读出
FILE# CHECKPOINT_CHANGE#
---------- ------------------
1 7877118
2 7877118
3 7877118
4 7877118
5 7877118
6 7877118
7 7877118
8 7877118
9 7877118
10 7877118
11 7877118
12 7877118
13 7877118
13 rows selected
SQL> select status from v$instance;
STATUS
------------
OPEN
2. 启动数据库时的特殊选项
SQL> alter database open read only;
SQL> startup force
SQL> startup upgrade(只有sysdba能连接)
SQL> startup restrict(有restrict session权限才可登录,sys不受限制)
SQL> alter system enable restricted session; (open后再限制)
3. 实例关闭
shutdown normal: 拒绝新的连接,等待当前事务结束,等待当前会话结束,生成检查点
shutdown transactional :拒绝新的连接,等待当前事务结束,生成检查点
shutdown immediate: 拒绝新的连接,未提交的事务回滚,生成检查点
shutdown abort(startup force) :事务不回滚,不生成检查点,下次启动需要做instance recovery