Oracle管理工具

OUIOracle Universal Installer

DBCADatabase Configure Assisant

sqlplusCLI

OEMOracle Enterprise ManagerGUIhttp://ip:1158/em

emctl status dbconsole

emctl start dbconsole

Enterprise Manager Console,安装Oracle客户端方可使用

Net Manager客户端服务端通用

OFAOptimal Flexible Architectureoracle应用程序目录结构

PL/SQL Developer开发工具(一家荷兰公司提供)

Oracle SQL DeveloperOracle提供开发工具

oracle启动、关闭

OCP11g IZO-052_OCP11g IZO-052

OCP11g IZO-052_OCP11g IZO-052_02

OCP11g IZO-052_OCP11g IZO-052_03

OCP11g IZO-052_OCP11g IZO-052_04

alter database read only

执行查询

使用本地管理的表空间来执行磁盘排序

数据文件脱机和联机,但不能对表空间进行操作

执行数据文件和表空间的脱机恢复

alter database read write

startup restrict

alter system enable restricted session

数据库运行在限制模式,仅restricted session系统权限能登录

维护数据库的结构,或对数据库进行导入导出

已经连接的用户进程能正常工作,用 alter system kill session杀死用户进程

shutdown normal|transactional|immediate|abort

OCP11g IZO-052_OCP11g IZO-052_05

OCP11g IZO-052_OCP11g IZO-052_06

Database Control --> listener.ora --> database

emctl start|stop|status dbconsole

https://ip:1158/em

lsnrctl start|stop|status listener

sqlplus /nolog (不登录)启动sqlplus

connect user/pwd@orcl.domain本地|远程登录oracle,通过数据字典身份验证,普通用户

user/pwd用户名密码,用/隔开

@网络连接,如使用IPC协议(即本地)不用@

orcl.domain连接字符串(在客户端本地命令文件中定义,连接协议、侦听器IP、端口、实例名称)

connect user/pwd@orcl.domain as sysdba|sysoper本地|远程登录oracle,通过口令文件验证

connect / as sysdba|sysoper本地登录,通过操作系统验证,/u01目录属组的操作系统用户

sysdba,sysoper是权限(非用户),默认仅sys用户所有,不允许sys用户以口令身份验证登录

如果为用户授权sysdba sysoper权限,则将用户权限从数据字典复制到外部口令文件中

常用数据字典视图

数据字典视图:Oracle数据字典信息,物理或逻辑上描述数据库信息DBA_ ALL_ USER_

显示关闭和启动期一直持久保存的信息

动态性能视图:Oracle实例和控制文件信息,v$...

实例生命周期的值,关闭即消失

V$FIXED_TABLE所有可用的动态性能视图

V$INSTANCE当前例程的详细信息

V$SGASGA详细的信息

V$PARAMETER初始化参数的详细信息

V$SPARAMETER初始化参数的详细信息(内存)

V$VERSIONoracle版本的详细信息(SPFILE文件)

V$OPTION 显示已经安装的oracle选项

V$SESSION 显示会话的详细信息

V$PROCESS 显示与oracle相关的所有进程的信息(包括后台进程和服务器进程)

V$BGPROCESS 显示后台进程的详细信息

V$DATABASE 数据库的详细信息(如数据库名,日志模式以及建立时间)

V$CONTROLFILE 控制文件的信息

V$DATAFILE 数据文件的详细信息

V$DBFILE 数据文件编号及名称

V$LOGFILE 重做日志成员的信息

 V$LOG 日志组的详细信息

 V$THREAD 重做线程的详细信息

V$LOCK 锁信息

V$LOCKED_OBJECT 被加锁的数据库对象

V$ROLLNAME处于online状态的undo

V$ROLLSTAT显示undo段统计信息

V$TABLESPACE 表空间的信息

V$TEMPFILE 显示临时文件

考点:use_catalog表、视图、序列和同义词

use_objects群集、数据库链接、目录、函数、索引、库、程序包、程序包体、Java 类、抽象数据类型、资源计划、序列、同义词、表、触发器、物化视图、LOB 和视图

Oracle体系结构

Oracle体系结构

OCP11g IZO-052_OCP11g IZO-052_07

图⑴

OCP11g IZO-052_OCP11g IZO-052_08

图⑵

Oracle服务器Oracle实例和Oracle数据库组成

Oracle实例一种访问数据库的机制,由内存结构(system global area,SGA)和后台进程组成

Oracle数据库为信息提供真正的物理存储,由数据文件、重做日志文件、控制文件组成

Oracle 服务器进程

OCP11g IZO-052_OCP11g IZO-052_09

用户登录oracle服务器如验证成功,oracle创建一个服务器进程为该用户提供服务,用户进程和服务器进程一对一关系。用户进程向服务器进程发出请求,服务器进程对数据库进行实际操作并把结果返回给用户进程。Oracle创建一个服务器进程的同时为该进程分配一个内存区,称为program global area, PGA,私有不能共享,仅属一个进程,随进程的创建而被分配,中止而被收回。

program global area, PGA包括

排序区 sort area处理SQL语句所需的排序

游标状态区 cursor state指示会话当前所使用的SQL语句的处理状态

会话信息区 session information会话的用户权限和优化统计信息

堆栈区 stack space其他的会话变量

如果使用共享服务器体系架构,排序区、游标状态区、会话信息区存在SGAlarge pool,如没有large pool则存在共享池。

system global area,SGA

⑴数据库缓冲区

Oracle用来执行SQL的工作区域。执行insert update delete前,先将数据块从数据文件复制到数据库缓冲区并在缓存区进行更改,然后缓存一段时间。查询操作前,先将数据块从数据文件复制到数据库缓冲区然后转交PGA处理

⑵重做日志缓冲区

任何DMLDDL操作在改变数据之前将恢复所需的信息写入重做日志缓冲区,然后写入

数据库高速缓冲区之前。

⑶共享池 share pool

①库高速缓存

②数据字典缓存

PL/SQL

SQL查询结果和PL/SQL函数结果缓存

⑷大池 large pool

Jave jave pool

⑹流池 stream pool

⒊、后台进程

SMON系统监督进程

查找验证控制文件 mount数据库;

查找验证数据文件联机日志文件open数据库;

自动执行Oracle实例的恢复,前滚/回滚;

回收组合数据文件相连的空闲区;

清理临时表空间

PMON进程监督进程

进程崩溃后,回滚用户当前未提交事务、释放用户加的表锁行锁、释放用户PGA

自动、定期的向监听进程注册、更新信息

DBWn

将数据从数据库高速缓冲区的脏缓冲区中的数据写到数据文件。以下情况DBWn执行写

脏缓冲区数量超过限额;时间间隔已到;校验点发生;drop/truncate表;表空间设为只读;表空间联机备份begin backup;临时表空间设为offlinenormal时;

LGWR

将重做日志缓冲区数据顺序地写入重做日志文件,以下情况执行写

提交事务;重做日志缓冲区中的变化记录超过1MB;重做日志缓冲区中的所存记录超过1/3;每3秒钟;DBWn将高速缓冲区的块写到数据文件前。

CKPT

校验点发生时,DBWn进程把SGA中所有已经改变了的数据库高速缓冲区中的数据(包括提交、未提交)写入数据文件;Oracle将校验点号码写入数据文件的文件头,将校验点号码、重做日志序列号、归档日志名称、SCN号写入控制文件。

ARCn

把切换后的重做日志文件复制到归档日志文件,归档操作完成之前不充许使用该组重做日志。

MMON, MMNL

定期从MMON捕获统计数据写入数据字典表(AWR)同时启动ADDMMMNL辅助MMON工作MMAM

观察PGASGA内存需求,实现内存自动管理

⑼其他进程

RECO分布式事务

CJQ0,J000作业队列协调器,作业队列进程

D000调度进程,SQL调用发送到共享的服务器进程S000

DBRM数据库资源管理器

DIA0诊断进程,持起检测和解析死锁

DIAG诊断进程,执行诊断转储和ordebug

FBDA闪回数据库归档器进程

PSP0进程生成器,创建和管理其他Oracle进程

QMNC,Q000队列管理器协调器监视数据库中的队列,并分配Q000进程使消息入队或出队。

SHAD支持用户会话的服务器进程

SMC0,W000空间管理协调器进程协调与空间管理相关的各种任务,如主动空间分配置和空间回收。

它动态生成从属进程W000来执行任务

VKTM虚拟时间监视器,负责跟踪时间,集群环境特别重要

网络连接

专用服务器 dedicated server每个用户进程连接到自己的服务器进程

OCP11g IZO-052_OCP11g IZO-052_10

会话存在PGA(空间不够存到临时表空间)

共享服务器 shared server多个用户进程连接到共享的服务器进程池,会话存在Large Pool

OCP11g IZO-052_OCP11g IZO-052_11

会话期间,会话与侦听器进程短暂,与调度进程持久

所有调度进程共享一个公共请求队列,每个调度进程有自己的调度进程响应队列

用户会话信息(PGA中除堆栈外)存在SGA中,称用户全局区(UGA

专用服务器网络配置

listener.ora(服务器端)

LISTENER = 
(DESCRIPTION_LIST = 
(DESCRIPTION = 
(ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1)) 
(ADDRESS = (PROTOCOL = TCP)(HOST = ip|host)(PORT = 1521)) 
)

SID_LIST_LISTENER = 
(SID_LIST = 
(SID_DESC = 
(ORACLE_HOME = e:\oracle\product\10.2.0\db_1) 
(SID_NAME = orcl) 

)
)
静态注册

local_listener 参数告诉实例侦听器信息,PMON自动执行运态实例注册(首选)

lsnrctl start|start|stop|status

tnsname.ora(客户端)

ORA817 =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = sun62)(PORT = 1521))
)
(CONNECT_DATA =
(SERVICE_NAME = ora817.huawei.com)

(SERVER=DEDICATED)--默认,可不选
)
)

tnsping ORA817

sqlplus user/pwd@ORA817-- ORA817连接字符串,客户端连接数据库服务器时,用tnsname.ora解析

sqlnet.ora(服务器端、客户端皆可,应用于所有listener或连接的设备,如加密、安全规则)

TNS_ADMIN环境变量,指定listener.ora tnsname.ora sqlnet.ora位置(默认/ORACLE_HOME/network/admin

),多个oracle_home目录的服务器常用

数据库链接

create database link prodstore

connect to store indentified by 1234 using 'prod'

从当前数据库连接到远程数据库(由连接字符串prod定义的远程数据库),链接存在当前用户模式,仅此用户能用select * from orders@prodstore-- 用户sotre

共享服务器配置

alter system set dispatchers='(dispatchers=2)(protocol=tcp)'唯一必设参数

alter system set shared_servers=20--默认设dispatchers时,shared servers=1

可选

max_shared_servers

max_dispatchers

tnsname.ora

SKY3 =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.0.123)(PORT = 1521))
)
(CONNECT_DATA =
(SERVICE_NAME = SKYSH.heysky.net)
(SERVER = SHARED)-- 配置为共享服务器

)
)

理解数据名实例名.....

DB_NAME数据库名,用于区分数据库的内部标识,以二进制方式存储在参数文件

INSTANCE_NAME数据库实例名,用于和操作系统之间的联系,用于对外部连接时使用

ORACLE_SID操作系统环境变量,默认要连接的实例,区别多实例位于同一服务器

SERVICE_NAME服务名单实例环境一个实例对应一个服务名,RAC多个实例对应一个服务名

默认= INSTANCE_NAME

DB_DOMAIN域名

GLOBAL_NAME全局数据库名= DB_NAME + DB_NAME,网络中唯一标识数据库名

Net service name网络服务名,又称为数据库别名database alias

DB_NAME GLOBAL_NAME

DB_NAME数据库的唯一标识符。分布式环境中难以区别多个数据库,引入GLOBAL_NAME,表示组织中数据库的唯一标识符

INSTANCE_NAME SERVICE_NAME GLOBAL_NAME

单实例1INSTANCE_NAME 对应1SERVICE_NAMERAC多个INSTANCE_NAME对应1SERVICE_NAME

tnsname.ora

SKY3 =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.0.123)(PORT = 1521))
)
(CONNECT_DATA =
(SERVICE_NAME = SKYSH.heysky.net)-- SERVICE_NAME
(SERVER = SHARED) 
)
)

listener.ora

SID_LIST_LISTENER = 
  (SID_LIST = 
    (SID_DESC = 
      (SID_NAME = PLSExtProc) 
      (ORACLE_HOME = e:\oracle\product\10.2.0\db_1) 
      (PROGRAM = extproc) 
    ) 
    (SID_DESC = 
      (GLOBAL_DBNAME = oracle) -- GLOBAL_DBNAME, 这里
=DB_NAME
      (ORACLE_HOME = e:\oracle\product\10.2.0\db_1) 
      (SID_NAME = oracle) --INSTANCE_NAME
    ) 
  ) 
LISTENER = 
  (DESCRIPTION_LIST = 
    (DESCRIPTION = 
      (ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1)) 
      (ADDRESS = (PROTOCOL = TCP)(HOST = localhost)(PORT = 1521)) 
    ) 
  )

SQLPlus

desc emp查看emp表结构

l列出上个语句

重复执行上个语句

del n 删除上个语句的第n

n text重写上个语句的第n

回车,将上个语句的n行调到当前

a, text增加

c /原句/新句修改

save d:\select.sql将上个语句保存为脚本

get d:\select.sql调脚本到当前,可修改

@d:\select.sql执行脚本

spool d:\out.txtspool 保存屏幕输出

语句

spool off

show 环境变量|ALL

set 环境变量

set echo on|off 执行脚本前显示脚本语句

set feedback 20 on|off行数较多时,返回多少行,默认6

set line 100设置行宽

set page 25每页多少行

set heading on|off是否显示列标题

set array 100 sqlplus每次能从表取多少行,最大5000

col 列名 for 99999|a55位宽

col 列名 heading '标题名' for a9

col 列名查看列属性

select * from emp

where sal > &salary

提示输入变量salary值,输入后显示信息。

salary值输入有讲究:数据直接输,日期和时间须加' ',或直接在语句中加入' '

select empno,job,&&var

from emp

order by &var

提示输入:输入sal(列名)显示以sal排序的信息,仅一次输入即可。

ACCEPT

accept var prompt '请输入您的职位(job)'

select empno,empname,sal

from emp

where job = &var

执行时出现请输入您的职位(job)

accept var prompt '请输入您的职位(job)' HIDE

select empno,empname,sal

from emp

where job = &var

执行时出现请输入您的职位(job)****HIDE在输密码或某敏感信息非常有用

初始化参数文件

OCP11g IZO-052_OCP11g IZO-052_12

v$parameter当前正在运行的实例参数

v$sparameterspfile参数值

动态参数,更改后立即生效,可选地写入spfile成为永久值,否则实例重启后恢复为spfile参数值

静态参数,更改写入spfile,实例重启后生效

SCOPE=spfile不指定scope,无法更改静态参数,写入spfile,重启后(实例用此spfile启动)生效

SCOPE=memory更改动态参数,立即生效,但未保存至spfile,实例重启后丢失

SCOPE=both默认,更改动态/静态参数,写入spfile,动态立即生效,静态重启后生效

alter systemset实例级别设置参数

alter session set会话级别设置参数

参数文件默认位置ORACLE_HOME/dbs

pfile 能文本修改

spfile能打开,不能修改,rman备份

create pfile from spfilecreate spfile from pfile默认位置

create spfile=’xxx’ from pfile=’xxxx’指定位置

启动指定参数文件

startup spfile|pfile=’xxxx’

控制文件

数据库名字

数据库标识符

数据库创建的时间

联机重做日志文件的名字和准确位置

当前日志序列号

校验点信息

日志的历史信息

归档日志文件的准确位置和状态

数据文件的名字和准确位置

表空间的信息

备份的准确位置和状态

alter system set control_files = 'd:\control01.ctl',修改spfile

尽量利用当前控制文件而不是备份控制文件进行数据库恢复,因为会造成数据丢失

alter database backup controlfile to 'd:\backup\control.bak'

alter database backup controlfile to trace

联机重做日志

至少2个重做日志组,循环使用;每组多个成员,成员数据一致性(镜像)

如启用归档日志,未归档的日志文件不能覆盖

添加重做日志组

alter database add logfile('d:\redo04a.log','e:\redo04b.log')

size 15M;

删除重做日志组

alter database drop logfile group 3

添加重做日志组成员

alter database add logfile member

'd:redo01b.log' to group 1,

'd:redo01b.log' to group 2,

'd:redo01b.log' to group 3;

删除重做日志组成员

alter database drop logfile member

'd:\redo01b.log';

alter system switch logfile手动切换日志组

alter system checkpoint手动产生检查点

fast_start_mttr_target = 900 强制产生检点时间,秒

select* from v$log;

status: inactive实例恢复不需要这组重做日志组,已写入数据文件

active 活动,但不是当前,恢复时需要这组联机重做日志组

current当前

unused未使用过

select * from v$logfile

status空白该文件正在用

stale该文件中的内容是不完全的

invalid该文件不可以被访问

deleted该文件已不再有用了

归档重做日志

shutdown immediate

startup mount

alter database archivelog启用联机归档日志后,立即对数据库做全备份,因为以前备份将失效

alter database open

archive log list

show parameter log_archive_max_processes;

alter system set log_archive_max_processes=6;

ps -ef | grep arc

show parameter log_archive_dest

show parameter RECOVERY默认归档到此目录

alter system set log_archive_dest_1=’xxx mandatory reopen=300’; 仅当联机重做日志成功归档到此目录下,才能覆盖重做日志,否则300秒重试一次

alter system set log_archive_dest_2=’xxx optional’; 可选归档日志冗余,默认optional

show parameter log_archive_min_succeed

alter system set log_archive_min_succeed_dest=3;至少需3份成功归档

Alter system set log_archive_dest_state_2=defer;此目录暂时不可用

存储管理

存储管理

OCP11g IZO-052_OCP11g IZO-052_13

区管理添加数据文件到表空间时,数据文件格式化为ORACLE块,大小由db_block决定

AUTOEXTEND数据文件自动扩展,当数据文件满时,自动扩展其大小,直至无空间可用

AUTOALLOCATE |UNIFORMORACLE自动决定下一次分配的区间大小,或统一区间大小

表空间如何管理将区间分配给段

LOCAL|DICT区间空闲或已使用记录在数据文件头部,采用位图管理

传统是放在数据字典,使用free list管理

段管理段获得区间后,如果管理

AUTO|MANUAL段分配区间或回收区间,段的扩展与收缩

pctfree 表示数据块里剩余的可用空间占数据块总空间的百分比,默认10AUTO仅设此值

段添加区间失败,sql语句报错,会话立即回滚。以下情形导致段添加区间失败

数据文件或临时文件已满,数据文件,或临时文件自动扩展,但磁盘满

撤消表空间已满

用户配额限制

块管理每个数据库块管理

 

表空间示例

create tablespace tbs_name

smallfile|bigfile

datafile 'xxx' size 200M | autoextend

uniform size 1 M| autoallocate区间大小

default initial 100K next 100K MAXEXTENTS 200??

blocksize 16k使用非标准块大小

logging|nologging

online|offline

permanent|temporary

extent management local

segment space manageme auto

表空间脱机、联机、只读取

数据库处于打开状态移动数据文件

数据为处于打开状态恢复表空间或数据文件

对表空间执行脱机备份

使数据库一部分不可用,另一部分可用

系统表空间、正在使用的还原表空间、默认临时表空间不可脱机

alter tablespace user offline

alter tablespace user online

alter tablespace user read only

alter tablespace user read wire

alter tablespace user datafile 'd:\user01.dbf' resize 100M重设数据文件大小

alter tablespace example offline;

! cp

alter tablespace example rename datafile ‘原位置’ to ‘新位置移动非系统表空间数据文件

shutdown immedate

startup mount

! cp

alter database rename datafile ‘原位置’ to ‘新位置移动系统表空间数据文件

drop tablespace user

drop tablespace user including contents and datafiles;包括segment 和数据文件

drop tablespace user including contents and datafiles cascade constraints;segment 、数据文件、约束

OMF管理

设置这些目录后,Oacle自动管理数据文件名、大小

alter system set db_create_file_dest='d:\'

alter system set create_online_log_dest_1='e:\'

alter system set create_online_log_dest_2='f:\'

alter system set create_online_log_dest_3='g:\'

resumable 可恢复空间分配

遇空间分配问题会话挂一段时间,等待修复

alter session enable resumable timeout=60 name xxx会话挂起60秒后停止(报错)

alter system set resumale_timeout=60实例级别启用可恢复空间

DBA_RESUMABLE视图查看挂起会话

会话挂起时,保持对使用的所有资源的控制,包括撤销空间、临时空间、PGA内存、记录锁定

段重组

区间管理,如何分配空间给表空间的段;段空间管理,如何将行分配给段中的块。

oracle强烈建议使用带有自动段空间管理功能的本地管理的表空间。

insert和段增长时,位图管理技术对空间分配很有效,但update导致行迁移,delete导致空间浪费。

行链接,存储在多个块中的行

行链接行迁移update

行迁移,表段的默认设置是每个块保留10%作为行扩展的空间。update行有时10%空间不够,须将整行迁往其他块。由于行迁移时未调整索引项,索引键指向行原始位置,会话读取时用两次表块读取来获取行。

alter table tbs pctfree 50自动段管理的表空间仅需调整此值,默认10%

重组表修复行迁移,索引破坏、能查询不能DML(表锁定)、如表有未提交事务不能移动

alter table tbs move tbs_space

检测行链接、或行迁移

analyze table tbs compute statistcs或用DBMS_STATS包分析

select avg_row_len,chain_cnt from user_tables

where table_name=''tbsavg_row_len小于块行迁移,大于块链接行

段收缩

不适用数据字典管理表空间、带LONG列的表、有refresh-on-commit物化视图的表

alter table tbs enable row movement仅适用自动段空间管理和启用了行移动的表空间

alter tbs shrink space cascade|compact生成撤销和重做,索引有效,压缩期间表不锁定,移动独行时锁定

shrink两个阶段,压缩阶段通过生成撤销和重做数据的DML将行移入小事务,行锁定

第二阶段DDL命令,针对数据字典,锁定表。

alter tbs shrink space compact 重组段,不释放空间

alter tbs shrink space cascade 收缩依赖表的对象,如索引

alter index shrink space cascade|compact可手动收缩索引,不能减少其大小,但能阻止其变大

临时表空间

内存排序区 PGA可能不够用,部分排序结果写到磁盘 -->临时表空间

create temporary tablespace temp

tempfile 'd:\temp.dbf'

size 10 M

extent management local

uniform size 2 M;

不能设为只读

数据文件不能重命名

设置为nologging

不能使用alter database创建临时数据文件

只读运行的数据库需要临时文件

不能恢复临时数据文件

uniform sizePAG中的sort_area_size整数倍

alter database default temporary tablespace temp

临时表空间组

创建多个临时表空间,把它们组成一个临时表空间组,临时表空间组的优点:    
数据库层面可以同时指定多个临时表空间,避免当临时表空间不足时所引起的磁盘排序问题
;    
为用户指定临时表空间组,当一个用户同时有多个会话时,可以使得它们使用不同的临时表空间
;
并行操作中,不同的从属进程可以使用不同的临时表空间

SQL> create temporary tablespace tempts1 tempfile
          '/home/oracle/temp1_02.dbf' size 2M tablespace group tempgroup; 
          Tablespace created            
SQL> create temporary tablespace tempts2 tempfile
          '/home/oracle/temp2_02.dbf' size 2M tablespace group tempgroup;
         Tablespace created 
SQL> select * from dba_tablespace_groups;
GROUP_NAME                     TABLESPACE_NAME
------------------------------ ------------------------------
tempgroup                         TEMPTS1
tempgroup                    TEMPTS2 
SQL>  alter user scott temporary tablespace tempgroup;
User altered 
SQL> alter database <db_name> default temporary tablespace tempgroup;  
Database altered. 
SQL> drop tablespace tempts1 including contents and datafiles;
删最后一个临时表空间时,组自动删除
Tablespace dropped
SQL>  select * from dba_tablespace_groups;
GROUP_NAME                     TABLESPACE_NAME
SQL>alter tablespace tempts1 tablespace group <another group> 
移动表空间到另一个表空间组

undo表空间

OCP11g IZO-052_OCP11g IZO-052_14

事务恢复:正在运行的事件崩溃,重启实例就要回滚没有提交的变化,还原段的变化受联机日志保护

事务回滚:用户提交后回滚

读一致性:一个用户未的提交的写,另一个读用户不应看到

系统还原段

系统表空间对象变化时使用,数据库创建时在系统表空间创建,可自动或手动管理

非系统还原段

非系统表空间对象变化时使用,至少需一个非系统还原段

自动模式,创建还原表空间 undo tablespace,系统自动管理还原表空间中的还原数据

手动模式,数据库管理员创建,分私有还原段(1instance)和公有还原段(rac

延迟还原段

表空间设置为脱机后重新联机时回滚事物,数据库自动创建和删除

自动管理还原段

parameter初始参数文件

undo_management=auto|manual不是动态参数

create undo tablespace undotbs2 datafile 'xxxx' size 20M autoextend on;

oracle 允许创建多个还原表空间,但仅一个正在使用

alter system set undo_tablespace=undotbs2指定正在使用的还原表空间

alter system set undo_retention=900; 事物提交后,还原数据保持15分钟

固定大小undo tablespace,忽略retentionoracle自动调整retention最佳保留期限

自动管理模式中,事务可以在不同的undo segment之间动态交换undo空间(交换extents

一个事务需要更多的undo空间时,获取更多extents步骤:

获取undo表空间里可用的、空的extentssegment的最小分配单元是extent

获取其他undo segment里的expired状态的extents

如果undo表空间里的数据文件启用了自动扩展,则数据文件进行自动扩展

如果undo表空间里的数据文件没有启用自动扩展,则获取undo segment里的inactive状态的extents

如果还是没有获得可用空间,报空间不足的错误

select … for update锁定select检索的行

select … for update of…指定锁定范围

select …for update wait|nowait|skiplocked改变系统排队机制

审核

审核SYSDBA活动

AUDIT_SYS_OPERATIONS=TRUE默认为false,静态参数

SYSDBASYSOPER连接数据库发布的每条语句都会写入操作系统的审核跟踪

Windows 写入application logunix/linux写入参数AUDIT_FILE_DEST指定目录

数据库审核

跟踪特定权限使用、特定命令执行、特定表访问、登录尝试

AUDIT_TRAIL=NONE,FALSE|OS,XML,XML_EXTENTDED|DB,DB_EXTENDED静态参数

NONE,FALSE关闭数据库审核,默认

OS,XML,XML_EXTENDED跟踪文件存入操作系统审核跟踪结果查看操作系统文件

DB,DB_EXTENDED跟踪文件存入数据字典表SYS.AUD$ 

结果查看DBA_AUDIT_TRAILDBA_common_audit_trail

审核权限

audit create any tiger

audit select any table by session|by access,默认by session

违反审核条件的每个会话生成一条审核记录,by session

每次违反条件的情况生成一条记录,by access

审核对象

audit insert on hr.tbs whenever sucessful | not sucessful审核insert权限,默认审核所有操作。

audit all on hr.tbs审核select dml ddl权限

审核连接

audit session whenever not sucessful,与审核create session权限效果相同

基于值的审核

基于数据库的审核能捕获针对表的命令,但不能跟踪受影响的行的实际变化值

 audit insert on hr.employees

insert into hr.employees values(50,’张三’) 数据库审核能获知insert命令,但不能获得插入行的实际值

用数据库触发器执行基于值的审核能记录事件全部细节

细粒度审核 fine-grained auditing FGA

只在访问表的特定行或特定列时生成审核记录,还可以在违返审核条件时执行一个PL/SQL代码块

FGA结果查看 DBA_FGA_AUDIT_TRAILDBA_COMMON_AUDIT_TRAIL

用户、角色、权限

sys

sysdba sysoper,一种系统权限,最高数据库管理权限,默认sys用户拥有此权限

普通用户账号存在数据字典表中里面,数据库没有启动以前,不能对用户进行认证。

sys用户需要在数据库没有启动时进行登录,采用操作系统认证和密码文件认证

1、操作系统认证(本地外部认证)

unix属于DBA组用户、windows属于ora_dba组用户

用户登录操作系统后就可以用sysdba进行登录connect/as sysdba

os_authent_prefix 默认ops$

oracle_home目录的组用户(linux/unix通常dba组用户),被授予 sysdba sysoper sysasm权限(默认sys)

不输入用户名和密码本地登录connect / as sysdba

remote_os_authent 默认false

允许操作系统用户(拥有sysdba,sysoper,sysasm权限)不输入用户名和密码远程登录

2、口令文件认证(远程登录)

remote_login_passwordfile=none|exclusive|shared

none 禁用口令文件认证,不允许远程登录

exclusive 启用口令文件认证,允许远程登录

shared 启用口令文件认证,允许远程登录,共享口令文件

v$pwfile_user 查看哪些用户拥有sysdba sysoper权限

作为sysdba连接实例不管是否输入用户名或口令,最终用户是sys,用sysoper连接实际用户是public

orapwd file=orapworaclr11g password=oracle enteries=5;

用户权限

系统权限:访问(使用)数据库(系统资源)的权力(能力)

create/ drop user | table | view | sequence | tiger | procedure

select|create|drop any table任何用户(schema)

用户权限:维护数据库中对象的权力

table: alter select insert update delete index references

view: select insert update delete

sequence: alter select

procedure: execute

Example:

create user bob identified by pass!@#

alter user bob identified by Pass!@#

create role bob_g 

create role bob_g identified by pass!@#

drop user|role cascade删除该用户所有对象

grant privs to user| role with admin option(不级联回收)

revoke privs from user| role

grant role to user

revoke role from user

grant select on scott.emp to dog with grant option(级联回收)

select * from session_privs查看该用户所有系统权限

07_dictionary_accessibility=true|false拥有select any table权限用户不可访问数据字典

create user bob identified by pass!@#$ 

default tablespace user

temporary tablespace temp

profile bob_profile |default-- profile:密码策略、用户资源限制

account lock | unlock

password expire

quota 100M on tablespace_name

7、用户和权限

⑴不能修改用户名,须先删除后再建,删除时连同用户的所有模式对象一并删除

⑵如多个用户登录到同一个用户账户,将共用一个临时表空间,可能导致性能问题,可采用

临时表空间组来解决

系统权限:影响数据字典的操作

对象权取:影响数据的操作

如果用户拥在create table权限,则拥有此表的对象权限

ANY权限针对数据库中的每个用户账户中的每个对象授权,是系统权取,不是对象权限

关于默认角色

角色授权用户账户后,当用户账户连接数据库时默认启用角色的权限。如果不希望这种默认方式

alter user jon default role none,此时用户jon仅拥有自己被授予的权限,虽然有角色授予他,但他没有启用角色的权限

alter user job default role hr,此时用户jon拥有自己被授予的权限和角色hr拥有权限,但他没有启用gm角色权限,虽然他被授予了gm角色。

在软件嵌入命令来启用gm角色权限

配置文件:口令策略、资源限制

口令限制始终实施,资源限制仅参数文件 RESOURCE_LIMIT=TRUE时实施

授予public权限,所有连接到数据库的用户均拥有,以下权限建议从public回收

revoke execute on utl_file from public允许用户读取oracle所有者可以访问的文件和目录

revoke execute on utl_tcp from public

revoke execute on utl_smtp from public

revoke execute on utl_http from public