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 就没有)。