第二章:实例管理及数据库的启动/关闭

2.1 实例和参数文件。

1、instance 功能:用于管理和访问database。instance 在启动阶段读取初始化参数文件(init parameter files).

2、init parameter files:管理实例相关启动参数。位置:$ORACLE_HOME/dbs

3、pfile : (parameter file) 静态参数文件。

1) 文本文件,必须通过编辑器修改参数。

2) 修改参数下次启动实例才生效。

3)pfile参数文件可以不在database server 上。

命名方式: init+SID.ora

4、spfile :(system parameter file) 动态参数文件。

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 前两种都要满足。 

如果不写 scope,即缺省,那就是第三种。 
 
*考点:如果不修改 spfile,将无法更改静态参数。 
 
通过查看 v$parameter ,可以确定哪些参数可以在 memory 修改,制定 scope。

SYS@orcl> desc v$parameter;

ISSYS_MODIFIABLE 参数:对应 alter system 命令,即系统级修改 

SYS@orcl>  select distinct issys_modifiable from v$parameter;

ISSYS_MOD
---------
IMMEDIATE     // 对应 scope=memory
FALSE              // 只能scope=spfile,即修改spfile文件,下次启动才生效。
DEFERRED      // 其他session 有效

Elapsed: 00:00:00.01
SYS@orcl> 

ISSES_MODIFIABLE 参数:对应 alter session 命令,即 session 级修改 

SYS@orcl> select distinct isses_modifiable from v$parameter;

ISSES
-----
TRUE                           // 表示可以修改
FALSE                         // 表示不能修改

Elapsed: 00:00:00.02

SYS@orcl> select ISSES_MODIFIABLE,ISSYS_MODIFIABLE from v$parameter where name='sql_trace'; 

ISSES ISSYS_MOD
----- ---------
TRUE  IMMEDIATE

Elapsed: 00:00:00.00
SYS@orcl> 

这个结果表示 sql_trace 参数在 session 级别可以改,在 system 级也可以 both 修改(动态 参数)

5、startup 时读取参数文件,找到$ORACLE_HOME/dvs 目录,顺序是优先 spfile 启动,没有 spfile 才从 pfile 启动。

         

pfile 和 spfile 可以相互生成:

SQL>create pfile from spfile SQL>create spfile from pfile(使用 spfile 启动后不能在线生成 spfile,ORA-32002: 无 法创建已由实例使用的 SPFILE)

Note:

1)如果使用 pfile 启动,设置 scope=spfile 将失败!但可以设置 scope=memory,要修改 pfile 文件,使用文本编辑工具。 
 

 
可以通过当前内存参数生成 pfile 和 spfile(11g 新特性): 
 
SQL>create pfile from memory;

SQL>create spfile from memory; 
 
有了 spfile,pfile 一般留做备用,特殊情况也可以使用 pfile 启动,命令如下: 
 
10:38:35 SQL> startup pfile=$ORACLE_HOME/dbs/inittimran.ora 
 
怎样知道实例是 spfile 启动还是 pfile 启动的? 

SQL> show parameter pfile 

NAME                                 TYPE        VALUE
------------------------------------ ----------- ------------------------------
spfile                               string      /home/oracle/app/oracle/produc
                                                 t/11.2.0/dbhome_1/dbs/spfileor
                                                 cl.ora
SQL> 

 

 
//如果 value 有值,说明数据库启动时读的是 spfile  
 
另一个办法是看 v$spparameter(spfile 参数视图)中的参数 memory_target 的 isspecified 字段值,如果是 TRUE 说明是 spfile 启动的

SQL>  select name,value,isspecified from v$spparameter where name like 'memory_target';

NAME
--------------------------------------------------------------------------------
VALUE
--------------------------------------------------------------------------------
ISSPEC
------
memory_target
489684992
TRUE


SQL> 


 

OEM 对初始参数有较好的可视化界面,可以通过OEM看看。

2.2 数据库启动与关闭:

2.2.1 启动分为三个阶段

1)nomount 阶段:读取init parameter

SQL> select status from v$instance;   // (这条命令很实用,是看当前数据库 启动的状态,有三个 stated,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;    //从控制文件读出

SQL>  select file#,checkpoint_change# from v$datafile_header;  //从 datafile header 读出

数据库open之前要检查controlfile所记录SCN和datafile header 记录的SCN是否一致; 一致就正常打开库,不一致需要做 media recover

SQL> select status from v$instance; 

STATUS
------------
OPEN

SQL> 

2.2.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 后再限制) 

2.2.3 实例关闭:


shutdown normal: 拒绝新的连接,等待当前事务结束,等待当前会话结束,生成检查 点    

shutdown transaction :拒绝新的连接,等待当前事务结束,生成检查点    

shutdown immediate:  拒绝新的连接,未提交的事务回滚,生成检查点    

shutdown abort(startup force) :事务不回滚,不生成检查点,下次启动需要做 instance  recovery 

*考点:shutdown abort 不会损坏 database。 

2.3 自动诊断信息库ADR(Automatic Diagnostic Repository)

存储在操作系统下的一个目录(树)结构,包括:预警日志文件,跟踪文件,健康检查,DUMP 转储文件等 
 
11g 用 DIAGNOSTIC_DEST 一个参数代替了许多老版本的参数,如 BACKGROUND_DUMP_DEST, CORE_DUMP_DEST,USER_DUMP_DEST 等


SQL> show parameter diag;

NAME                                 TYPE        VALUE
------------------------------------ ----------- ------------------------------
diagnostic_dest                      string      /home/oracle/app
SQL> 

这是 ADR 的基目录,如果你设置了 ORACLE_BASE 环境变量,则 diagnostic_dest 默认 值被设置为同样的目录,否则,oracle 给你设置的目录是$ORALE_HOME/log

SQL> show parameter dump;

NAME                                 TYPE        VALUE
------------------------------------ ----------- ------------------------------
background_core_dump                 string      partial
background_dump_dest                 string      /home/oracle/app/diag/rdbms/or
                                                 cl/orcl/trace
core_dump_dest                       string      /home/oracle/app/diag/rdbms/or
                                                 cl/orcl/cdump
max_dump_file_size                   string      unlimited
shadow_core_dump                     string      partial
user_dump_dest                       string      /home/oracle/app/diag/rdbms/or
                                                 cl/orcl/trace
SQL> 

在 oracle 11g 中,故障诊断及跟踪的文件路径改变较大,告警文件分别以两种文件格式存 在,xml 的文件格式和普通文本格式。这两份文件的位置分别是 V$DIAG_INFO 中的 Diag Alert 和 Diag Trace 对应的目录。

其中 Diag Trace 对应的目录里为文本格式的告警日志和跟踪文件,并沿用在 10g 中命名方 法 
 
告警日志:alter_SID.log 包含通知性的消息,如数据库启动或关闭,以及有关表空间创建 和删除的信息,也包括一些内部错误信息等。 alter_SID.log 不断增长,定期清理是必要的

[oracle@localhost trace]$ rm alert_orcl.log //删除也没有关系,下次启动会自动创建。

检查警告日志和跟踪文件的有关错误信息的记录,如lwgr 不能写日志组时,会创建一个跟踪文件,并将一条信息放入警告日志中。

2.4 口令文件

Oracle 登录方式有多种

2.4.1 sys的两种常用的登录认证方式:OS 认证和口令文件认证。

 1)OS 认证:本地认证方式。Oracle 不能验证用户密码,前提:用户必须属于DBA组,且使用本地登录。

如: sqlplus / as sysdba

2) 口令文件认证:是一种网络远程认证方式,只有sysdba权限的用户可以使用口令文件,必须输入密码和网络连接符。

如: sqlplus sys/sys@orcl as sysdba

2.4.2 普通用户登录

1)普通用户是指没有 sysdba 权限的用户,比如 system 、scott,或者是 tim 什么的,登录 都必须输入口令,不管是本地还是远程,它们的口令密码不是以文件形式存放的,而是由 oracle 保管在其内部的数据字典里

2)通过设置这个参数为 TURE,可以让口令是大小写敏感的(11g 新特性)

本节讨论的口令文件是 sysdba 用户的远程登录认证密码文件,主要用于 sys 用户远程登录 的认证。 
 
位置:$ORACLE_HOME/dbs/orapwSID, 所谓口令文件,指的就是 sys 的口令文件,可以通过 remote_login_passwordfile 参数控制是否生效 
 
参数 remote_login_passwordfile 的三种模式: 
 
  1) none 拒绝 sys 用户从远程连接   2)exclusive sys 用户可以从远程连接   3)share 多个库可以共享口令文件

这里是放参数文件和(sys)口令文件的地方,orapworcl 就是我的 sys 口令文件 
 
使用 orapwd 命令创建新的 sys 口令文件: 
 
你可以先删掉它,再创建它,在 linux 下做: 
 
[oracle@localhost dbs]$ rm orapworcl   //把 sys 口令文件删了 
 
[oracle@localhost dbs]$orapwd file=orapworcl password=oracle entries=5 force=y   //重新建立口令文件 

 
注意:file=orapw+sid 的写法  
 
entries 的含义是表示口令文件中可包含的 SYSDBA/SYSOPER 权限登录的最大用户数。          

2.5 添加 scott 案例 


有时候,scott 用户被误删掉了,不要紧,可以通过执行下列脚本重新建立。 
 
 SQL> @$ORACLE_HOME/rdbms/admin/utlsampl.sql 

 
大家可以试一下:先删除 scott 用户,再执行一下脚本即可。(不是所有案例都有恢复脚本, HR 就没有)。

发布了39 篇原创文章 · 获赞 4 · 访问量 3478

猜你喜欢

转载自blog.csdn.net/u011868279/article/details/100912529
今日推荐