概览
用户进程
能够运行sql语句与 oracle server 进行交互的终端程序!
服务进程
存在于服务端!
由监听程序或本地的beq协议启动
ps -ef | grep LOCAL
netstat -alntpu
实例
内存结构
PGA
SGA
shared pool
data dictionary cache: 加速sql语句的解析
library cache : 减少sql语句重解析
LRU算法管理
database buffer cache
以db_block_size为单位将磁盘数据在内存中镜像
LRU算法管理
log buffer
保存对数据进行修改的sql语句
java pool
保存前端应用上传到实例的java代码
large pool
保存不于sql和pl/sql直接相关的块!
备份恢复时涉及到的块
从属I/O进程所需要的块
streams pool
使用流复制时保存日志条目的缓冲区
后台进程
PMON
1.清洁工
2.启动意外死掉的dispatcher
3.动态注册实例
SMON
1.空间管理
回收临时段
自动合并空闲(DMT模式)
2.实例恢复
前滚
会滚
释放资源
DBWn
将脏块写盘!
1.checkpoint
2.脏块的量达到阀值
3.需要释放空间时
4.timeout
5.rac ping requirse
6.drop & truncate
7.tablespace read only
8.tablespace offline
9.begin backup
LGWR
将log buffer中的redo条目写到online redolog
1.commit
2.1/3满
3.1M数据要前滚
4.timeout
5.任何一次数据写之前
CKPT
调度数据写
将检查点写到控制文件
将检查点写到数据文件头
RECO
恢复两阶段提交的但由于网络或其它原因造成状态为 prepared 的挂起事务
对于某些大的事务,如果使用reco的成本比较高,可以人为的干涉来处理掉这些事务
SQL> select local_tran_id,global_tran_id,state from dba_2pc_pending;
SQL> rollback force "";
数据库
核心文件
控制文件
联机日志文件
数据文件
非主要文件
口令文件
参数文件
实例管理目录下的文件
归档的联机日志文件
口令文件的管理
存放口令文件的路径:
$ORACLE_HOME/dbs/ 是存放口令文件的默认路径,后台进程一定会在dbs目录中寻找口令文件
口令文件的命名规则:
orapw
是系统环境变量:
echo $ORACLE_SID
口令文件的作用:
保存超级用户的户名和口令!(可以起停数据库的用户)
超级用户的安全审核不能依赖于数据库,因为数据库可能还没有打开!数据文件还不能访问!所以需要借助数据库外部来实现安全审核!
外部审核的第一种手段:就是借助口令文件这个二进制的操作系统文件来实现
(外部审核的第二种手段:操作系统验证,在后面介绍)
创建口令文件:使用orapwd程序
cd $ORACLE_HOME/dbs
$orapwd file=orapworcl password=lion force=y
什么时候需要创建口令文件?
口令文件损坏
口令文件丢失
需要修改超级用户口令时
查看口令文件中有哪些用户:
conn / as sysdba
select * from v$pwfile_users;
将普通用户加入到口令文件:
conn scott/tiger as sysdba
conn / as sysdba
grant sysdba to scott;
select * from v$pwfile_users;
conn scott/tiger as sysdba
show user
conn scott/tiger
show user
将用户从口令文件中删除:
conn / as sysdba
revoke sysdba from scott;
sysdba & sysoper 有什么区别:
sysdba (角色) --超级管理员 conn / as sysdba
sysoper (角色) --操作员 conn / as sysoper
操作员不能作的操作:
不能创建数据库
不能启动数据库到受限会话模式
不能进行热备份
不能进行数据库的不完全恢复
不能删除数据库
修改超级用户口令的另一种方法:
1.使用管理员(system)用户或者超级管理员用户登录:
SQL> conn system/oracle
Connected.
SQL> alter user sys identified by sys;
User altered.
2.使用操作系统验证创建会话修改sys口令
conn / as sysdba
alter user sys identified by sys;
外部审核的第二种手段:
操作系统审核(匿名登录,只能在服务器本地实现)
ssh 192.168.1.254
su - oracle
sqlplus /nolog
conn / as sysdba
show user
USER is "SYS"
*只要使用as sysdba的方式创建会话
show user永远是sys
只要使用as sysoper的方式创建会话
show user永远是public
练习
什么是超级用户?怎样连接超级用户?
超级用户的安全审核机制有几种?怎样判断当前超级用户是通过何种审核机制通过的安全审核?
口令文件放在什么位置?叫什么名字?
怎样查看口令文件中的内容?
口令文件的作用是什么?
如果有多个口令文件存在oracle根据什么规则去寻找当前实例所需要的口令文件?
怎样重建口令文件?
参数文件的管理
什么是数据库参数:
控制数据库的属性和行为的一些开关
参数的数量:随版本有些变化
select count(*) from v$parameter;
select count(*) from v$system_parameter;
初始化参数的种类:
静态参数:内存状态不允许修改
select name,ISSYS_MODIFIABLE from v$system_parameter
where ISSYS_MODIFIABLE='FALSE';
动态参数:内存状态可以修改
select name,ISSYS_MODIFIABLE from v$system_parameter
where ISSYS_MODIFIABLE<>'FALSE' order by 2;
参数文件的内容:
存放非default值的初始化参数!
参数文件的作用:通过参数值约束实例的行为!
参数文件的种类:
1.pfile
一直存在
文本格式(使用文本编辑器修改)
可以放在客户端
命名规则:
init.ora
init.ora
2.spfile
oracle 9i之后引入
二进制格式(只能使用sql命令修改)
只能放在服务器端
spfile的优先级别高于pfile
spfile.ora
spfile.ora
3.pfile与spfile的相互转换
创建pfile:
create pfile from spfile;
创建spfile:
create spfile from pfile;
参数文件的优先级别(从高到低):
spfile.ora
spfile.ora
init.ora
init.ora
参数文件存放的路径:
$ORACLE_HOME/dbs
spfile的管理:
修改动态参数:
只修改参数的内存状态(当前生效的参数值)
alter system set sga_target=160m scope=memory;
只将参数的新值写如spfile而不改变但前内存中的参数值
alter system set sga_target=160m scope=spfile;
既改变内存状态又改变参数文件中的参数值
alter system set sga_target=160m scope=both;
*alter system set 命令的scope选项的默认风格是both!
修改静态参数:
alter system set sga_max_size=200m scope=spfile;
由于静态参数的内存状态是不可以被更改的,所以只能将现的参数值改写到参数文件中,
等待下一次重新启动数据库时才能生效!
删除spfile中的参数:
alter system reset sga_max_size scope=spfile sid='*';
查看当前内存中的参数值(当前生效的参数值):
show parameter sga_target
select value from v$parameter where name='sga_target';
select value from v$system_parameter where name='sga_target';
查看参数文件中的参数值:
select value from v$spparameter where name='sga_target';
pfile的管理:
创建pfile并使用pfile引导实例
修改静态参数:
使用文本编辑器直接修改pfile中的参数值!
重新启动数据库生效!
修改动态参数:
alter system set sga_target=250m;
--该操作只修改内存状态,实现悠久修改还要使用文本编辑器将新的参数值写到pfile中!
这样重新启动数据库后参数值仍然有效!
练习
参数文件里面存放的是什么内容?
参数文件有什么作用?
参数文件有几种类型?
怎样创建不同种类的参数文件?
参数文件放在什么位置?
参数文件命名规则是什么?
如果有多个参数文件存在oracle根据什么规则去寻找启动实例时所需要的参数文件?
动态参数的特点是什么?怎样修改?
静态参数的特点是什么?怎样修改?