ORACLE 管理 体系与概览_oracle


概览 

用户进程 

能够运行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根据什么规则去寻找启动实例时所需要的参数文件?


动态参数的特点是什么?怎样修改?


静态参数的特点是什么?怎样修改?