参数文件: *.ora,
实例启动的时候被加载, startup命令执行的时候
查询参数:
show parameter [filter]
e.g select name, value from v$parameter where name = 'xxxxxxxx';
包括两类参数:显式( Explicit )和隐式 ( Implicit )参数
有2种类型的参数文件,默认路径 $ORALCE_HOME/dbs/( Linux ) ; $ORALCE_HOME/database/( NT )
PFILE( Static parameter file )--过时了,9i以后尽量使用SPFILE,修改后需要重启, 命名规则为init$ORACLE_SID.ora, 可参见样本init.ora, 11g以后更新了sample文件
创建方式 $ cp old/init.ora init$ORACLE_SID.ora
修改,注意,此处不支持变量名.
SPFILE ( Persistent Server parameter file重点) 二进制文件, 通过Oracle来控制, 只存在于服务器端, 可以在实例启动和关闭时修改, 支持备份
创建spfile文件, 通过pfile创建spfile, SQL> create spfile from pfile;
查看:通过 $ strings spfilescott.ora 来查看, 将二进制文件转化为string
修改: alter system set parameter = value <comment = 'text'> <deferred> <scope=memory|spfile|both> <sid='sid|*'>
例子: alter system set fast_start_io_target = 1 scope=memory; 修改内存中的参数值
show parameter fast_; 此处显示的是内存中的数据, 不会修改到spfile
select name, value, update_comment from v$parameter where name='fast_start_io_target';
关于deferred参数, 以下的参数必须加上deferred,必须在下次启动前修改 SQL> select name from v$parameter where issys_modifiable = 'DEFERRED';
重置: alter system reset parameter sid='*';
Oracle启动(4个状态-->ShutDown-->>NoMount-->>Mount-->>Open) SQL> startup [MOUNT] 默认启动数据库到Open状态
1. 读取SPFILE, 加载SPFILE并且初始化参数
优先找spfileSID.ora -->
如果没找到则找spfile.ora
如果没找到则查找initSID.ora
如果没找到则查找init.ora
可以手工指定加载的pfile, 并且根据在pfile中指定的spfile文件加载 vi tempname, spfile=$ORACLE_HOME/dbs/spfile$ORACLE_SID.ora
SQL> startup pfile=$ORACLE_HOME/dbs/tempname.ora
2. 分配SGA, 此处会分配内存区域并且创建background process, 并且启动实例
3. 启动后, 记录日志, 进入Unmount状态
4. 加载CONTROL_FILES的文件, 此时只有管理员可以访问DB
5. SQL> alter database mount; 转换到mount状态
6. SQL> alter database open; 转换到open状态,此时会加载datafiles和redo log files, 如果两类文件不存在, 则报错,需要在mount状态recover.
具备启动数据库权限的用户: $ sqlplus / as sysdba
* 有admin权限的OS的用户
* 具备SYSDBA or SYSOPER 权限的用户
Oracle的关闭
1. 将SGA写到磁盘上
2. 关闭online redo log files and datafiles,但是control files任然可以被使用
3. Unmount, 在unmount之后关闭control files
4. shut down the instance, 关于shutdown,可见下文
Diagnostic Files(重要):类型有3种,命名规则因为版本不同,一下为10g及以后
1. Alert file( located at BACKGROUND_DUMP_DEST ) : naming alert$ORACLE_SID.log; 一个instance只有一个Alert file 记录所有的command, major events,必要时可以通过该文件来构造SPFILE,需要注意加上*和'
1.1 找到构建pfile,其参数来源于alert log, 记住在加上单引号和*.
1.2 将pfile放到oracle server的制定$ORACLE_HOME/dbs/下
1.3 create spfile='spfilename.ora' from pfile='pfilename.ora';
1.4 startup
2. Background trace files ( located at BACKGROUND_DUMP_DEST ): naming SID_processname_PID.trc; 每个进程在生命周期内只有一个,Oracle本生发生错误时产生
3. User trace files ( located at USER_DUMP_DEST, sized by MAX_USER_FILE_SIZE ): naming SID_ora_PID.trc; 每个进程在生命周期内只有一个,记录User的所有动作
启用 User Tracing(通常采用session)
* Session Level:
ALTER SESSION SET SQL_TRACE = TRUE;
dbms_system.SET_SQL_TRACE_IN_SESSION; 修改procedure
* Instance Level: SET PARAMETER SQL_TRACE = TRUE;
------------------------More knowledge----------------------------------------------------
关于$ORACLE_HOME和$ORALCE_SID
SID: site identifier
Unix下hash,然后生成唯一名,绑定SGA
WINDOWS下由于是多进程,不共享内存, 但是依然记得路径和SID不能相同
推荐书籍:
Expert Oracle Database Architecture 精通Oracle数据库体系架构 -- Thomas Kyte
Oracle官方文档的Concepts和Administrator's Guide
推荐网站: asktom.oracle.com
--------------------------Command---------------------------
$ $ORACLE_HOME/dbs/ipcs 查看Oracle内存使用情况
STARTUP [FORCE] [RESTRICT] [MOUNT]
ALTER DATABASE 改变数据库状态,[NOMOUNT|MOUNT|OPEN READ ONLY]
Restricted Mode
startup restricted;
alter system enable restricted session;授权仅SYSTEM用户可以连接到db, 但是已经登录的用户不受影响
Read-Only Mode
startup mount;
alter database open read only;
Kill Session
1. select sid, serial#, username from v$session; 查看当前session
2. alter @USERNAME kill session '@SID,@SERIAL#'; 杀死某个sesson
查看事务 desc v$transaction;
查看用户 desc dba_users;
Shut down, 最常用的是 shutdown immediate, 默认情况下是 normal
A = ABORT; I = IMMEDIATE; T = TRANSACTIONAL; N = NORMAL;
如果迫不得已采用了abort, 在重新启动的时候SMON会做recovery的工作
查看参数
show parameter [filter]
e.g select name, value from v$parameter where name = 'xxxxxxxx';
监听文件内容
$ tail -f filename
查看二进制文件
$ strings filename
解锁账户/设置密码
select username, account_status from dba_users;
alter user HR set account unlock;
alter user HR identified password;