3.ManageAnOracleInstance.org
Table of Contents
- 1. 学习目标
- 2. $ORACLEBASE $ORACLEHOME $ORACLESID
- 3. Initialization Parameter Files 参数文件
- 4. oracle的启动过程
- 5. 谁能开关oracle
- 6. oracle database 的状态
- 7. Diagnostic Files (诊断文件)
- 8. sqlplus 小技巧,调整某列的显示宽度
- 9. oracle instance 启动后,查看parameter的值。
1 学习目标
- create and manager initialization parameter files 管理参数文件
- start up and shutdown oracle instance.启动关闭oracle instance
- monitor and use diagnostic files
2 $ORACLEBASE $ORACLEHOME $ORACLESID
oracle 公司不只oracle数据库一个软件,他们希望把他们的所有软件安装在同一个 目录下,即$ORACLEBASE目录。而$ORACLEHOME的值则是oracle数据库的安装目录. 它是 $ORACLEBASE下的一个目录。而 $ORACLESID则是一个数据库instance的名称。 一个oracle database可以有多个oracle instance.而不同的instance 通过 $ORACLESID 来区分。另外 在linux上。一个oracle instance 会启用多个进程,它 们共享一块内存,而这块内存的位置是通过 $ORACLEHOME与$ORACLESID两个变量的 值通过hash 计算后得到的。(可以这样理解,可能并不完全正确).Windows 上,一 个oracle instance 只有一个进程,进程中再分出多个线程。所以不需要进程间共享 内存。 比如我系统上对应的值是:
$ORACLEBASE | home/oracle |
$ORACLEHOME | /home/oracle/app/oracle/product/11.2.0/dbhome1 |
$ORACLESID | orcl |
3 Initialization Parameter Files 参数文件
参数文件分两种,参数文件在linux上位于 $ORACLEHOME/dbs/目录下。windows 上, 好像是 $ORACLEHOME/database/. 参数分explicit和inplicit ,显式或隐式。未声 明的则使用oracle默认的设置,即inplicit
3.1 Static parameter file :PFILE ,纯文本。
$ORACLEHOME/dbs/initSID.ora (注:SID为 $ORACLESID的值)如initorcl.ora 其中的值会在oracle instance 启动时读入。目录下有个init.ora的示例文件, 可以参照之。不过好像oracle9上的init.ora文件太老了,最后修改时间1989年针 对oracle8的,可能不能用。好像不推荐使用。 在linux 上,没实验成功.
3.2 Persistent server parameter file : SPFILE
也位于 $ORACLEHOME/dbs/目录下。名称以spfie打头。
- 二进制文件。
- 由oracle server来维护,即,通过sqlplus用命令修改。
- Always resides on the server side 存在于oracle 服务器上,不在客户端。 (防止多个版本的存在,导致你不知该用哪个pfile)
- ability to make changes persistent across shutdown and startup 修改后,即使重启,关闭,它会一直有效。
- can have Recovery Manager(RMan ,oracle的备份工具)support backing up to initialization file .即,RM备份时他会备份 initialization file .
3.2.1 创建SPFILE
- 根据PFILE 创建SPFILE 进入sqlplus后使用以下命令 create spfile= '/tmp/spfileexample1' FROM pfile= '/tmp/init.ora'; 或者简写为, create spfile from pfile; 则使用默认的pfile 创建spfle 前提是默认的pfile 存在。 使用linux 下的命令strings 查看生成的spfile 中的字符串 strings /tmp/spfileexample1
3.2.2 修改 SPFILE的内容。
alert system set parameter = value <comment= 'text'> <deferred> <scope= memory|spfile|both> <sid='sid|*'>
括号中的内容为可选
comment | 注释 |
deferred | 下一次登录的时候有效 |
scope | 影响的范围,只修改内存中的参数,修改spfile,两者都修改 (默认both) |
sid | 可以指定只对某一特定的instance的参数进行修改 |
alter system set undotablespace=undo2; alert system reset undotablespace; 详见联机文档
3.2.3 根据 SPFILE创建 PFILE
create pfile '/tmp/pfile' from spfile
create pfile ='/tmp/pfile' from spfile
'/tmp/spfile.ora'
3.2.4 SPFILE 比 PFILE好
4 oracle的启动过程
oracle寻找 parameter file的顺序
- spfileSID.ora
- Default spfile : spfile.ora
- initSID.ora
Default PFILE :(可能是init.ora,未验证) (这几个文件都在 $ORACLEHOME/dbs/目录下) 或者手动指定使用哪个 pfile startup pfile='/path/to/pfile.ora' 但是没有spfile='' 的参数 不过可以有可选的解决方案,在一个pfile 中加入一句
SPFILE=/path/to/spfile
然后使用
startup pfile='/path/to/pfile'
间接指定spfile
5 谁能开关oracle
1). 操作系统的管理员 2). 被赋予 sysdba system权限的用户
6 oracle database 的状态
---------–—startup--------------------–—>
shutdown -—> nomount-–—>mount-–—>open
<---------–—shutdown-------------------–—
6.1 shutdown-—>nomount启动一个instance
- 首先读取参数文件(spfile or pfile)
- 分配 SGA内存,启动后台进程,此时还没在oracle database与这段内在及进程关 联.
当instance 启动时,database 会将一些 explicit的parameter写到alert log 中。 你可以依次运行
sqlplus /nolog conn / as sysdba startup nomount alert database mount
6.2 nomount-—>mount 将这个启动的instance与database进行关联
instance 寻找control file 并open 之.control file 是以 CONTROLFILES='/PATH/TO/CTLFILE.ctl'.形式存在于parameter文件中的
6.3 mount–—>open
mount之后,普通用户是无关连接database的. 这个过程会根据control file 中的描述,寻找其他一些必须的文件 (online datafiles ,redo log files).如果一个tablespace在上一次shutdown 时处于offline状态,此时它依然如故(offline),如果,没找到online datafiles ,or redo log files ,会报错.一般此时需要进行恢复。 所以可以在不同的状态进行一定的维护工作。
6.4 oracle状态的切换
- alter database nomount
- alert database mount
- alert database open 状态只能从shutdown 到nomount ,由nomount变成mount 由mount 变open 而不能反过来。
6.5 Restricted mode 受限模式,
只有具有restricted 权限的用户才能连上来,它跟open状态相同,只是不允许普通 的用户连接上来,有些命令在mount状态下没法使用,而又不想启动到open状态。只 能具有和restricted session系统权限的用户才可以访问数据库, 而通常只有数据库管理员具有这种系统权限 ,实例只能为管理用户服务,当采用这种模式启动时,主要是为了完成以下任务: 1). 执行export或import数据 2). 执行data load 3). 临时防止用户使用数据 4). 执行某些移植或升级操作
startup restrict
如果已经处于open状态,可以使用
alter system enable restricted session alter system diable restricted session (回到正常open状态)
处于这种状态,一般是管理员想进行一定的维护工作。 赋予某用户权限可以在restircted mode下工作.
grant restricted session to scott;
6.5.1 查或kill掉一个会话 v$session 可知目前连接的会话,
对于已经连接的session,可以把它踢出去
select SADDR ,SID, SERIAL#, AUDSID ,username from v$session;
这是表中的前几列, 主要看sid ,username ,可能会有很多username是空,表示 这是一个后台进程,找到某一用户的sid后
alter system kill session 'sid,serial#' alter system kill session '15,6'
6.6 Read Mode
startup mount alter database open read only
可以:
- execute queries
- execute disks sorts using Logically Managered TableSpace
- take data files offline or online ,but not tablespace(可以把 tablespace的某个data file 设成离线,在线,但不能整个tablespace)
- perform recovery of offline data files and tablespace,可以对离线的 data file 或 tablespace进行恢复操作.
6.7 oracle database的关闭
6.7.1 Close a Database
将SGA中的database data 、recovery data 写入data file 、redo log file the database is closed ,but still mounted
6.7.2 Unmount a Database
disassociate a database from the instance. the database is unmounted . the control files is closed .
6.7.3 Shutdown an instance
SGA 内存释放,杀掉后台进程
6.7.4 shutdown 命令
shutdown mode | abort | immediate | transactional | normal |
all new connection | No | No | No | No |
wait until current session end | no | no | no | yes |
wait util current transaction end | no | no | yes | yes |
force a checkpoint and close files | no | yes | yes | yes |
shutdown immediate ,最常用,它不等事务完成,而是回滚,保证数据的完整,同时
快速的关闭
6.7.5 v$transcation 可以查是否有活动的事务,即未提交的事务。
select addr ,status from v$transcation
shutdown transaction 命令会一直等到所有事务均提交后。
7 Diagnostic Files (诊断文件)
- 记录一些大事件,如启动关闭等
- used to resolve problems
- used to better manage the database on a day-to-day bsis
主要包括以下几种类型的files
7.1 alertSID.log
- record you command
- record results of major event
- used for day-to-day operational info.
- used to diagnosing database error
它位于 backgrounddumpdest 参数对应的文件夹下。 show parameter dump
7.2 Background trace files
记录后台进程的信息,后台进程出错时记录 文件名: SIDprecessNamepid.trc
7.3 user trace files
文件名: SIDorapid.trc 位置在userdumpdest
- procuded by user process
- can be generated by a server process
- contain statistics for traced sql statement .
- contain usr messages 默认只在user precess 出错时才记录。也可以随时都做
- alter session set sqltrace=true 或者设参数sqltrace=true
8 sqlplus 小技巧,调整某列的显示宽度
- set pagesize 300
- set linesize 200
- col colname format a30
9 oracle instance 启动后,查看parameter的值。
9.1 查动态视图 v$parameter
select name ,value ,type from v$parameter where name='';
9.2 通过show parameter命令,
如: show parameter sga ,注参数名不需要输入完整的名称,如这个命令,会 显示所有参数名称包含sga 的参数。