ORACLE 10G OCA 042 笔记(zt)

************$1 oracle Database 10g 构件和体系结构***********************
构件
oracle Database 10g
oracle Application Server 10g;
oracle Developer Suite;
oracle Applications 11i;
oracle Collaboration Suite;
oracle Services;


应该用标准语法.使用JOIN,CROSS JOIN,NATURAL JOIN等关键字的ANSI SQL:1999语法,
一个Segment被定义为任何一个消耗数据库内物理存储空间的实体.常见的段类型:
表,索引,回退,分区.每个Segment由数据库内连续存储空间块(盘区)构成.
操作系统块--&gt数据库块--&gt盘区--&gt段
PL/SQL:Oracle Procedural Language for SQL对象:匿名代码块,过程,函数,程序包,触发器
除了SQL,Web工具,PL/SQL和JAVA之外,Oracle公司还提供了把SQL命令及数据库连通性集成到传统编程语言中的能力.这种集成是通过使用Oracle预编译器和Oracle Call Interface(OCI)来实现的.

要想成为一名成功的Oracle数据库管理员(DBA),首先需要彻底了解Oracle的基础体系架构及其机制.了解Oracle的内存结构,后台进程和I/O活动之间的关系是至关重要的,然后才能学习怎样管理这些方面.

Oracle体系结构
按以下三个类别来描述
用户相关进程
总称为Oracle Instance 的逻辑逻辑内存结构
总称为Database的物理文件结构

用户进程
User Process:要么在用户自己的PC上,要么在中间层应用服务器上.然后这个User Process启动一个与实例的连接.Oracle把启动和管理User Precess与实例间通信的这个进程称作一个Connection.一旦这个Connection建立了起来,用户就在实例中建立了一个Session.当建立一个会话之后,每个用户就在主机服务器自身上启动了一个Server Process(共享服务器多个User Process共享Server Process).然后,由这个Server Process负责执行实际允许用户与数据库进行交互的各项任务.
PGA(Process Global Area):程序全局区,数据库给每个用户创建了一个PGA的辅助内存结构.PGA存储与用户具体相关的会话信息,比如Bind variable和Session variable.

Orcle实例
一个Oracle实例由Oracle的主内存结构和几个Oracle后台进程所组成;主内存结构又叫做SGA(System Global Area).当用户访问数据库中的数据时,Server Process就是和SGA进行通信.
SGA构件
Oracle把SGA内存划分成叫做Granule(区组)的组快来实现动态的空间分配.4MB,8MB OR 16MB
共享存储池:高速缓存由数据库用户已经发布的最常用的SQL语句(LRU)
数据库缓冲器告诉缓存:高速缓存由数据库用户最近访问过的数据(LRU)
重做日志缓冲器:存储事务信息以用于恢复目的
Java存储池:可选,在Oracle的JVM选件得到使用时,高速缓存最近使用的Java对象和应用软件代码
大存储池:为诸如RMAN备份与恢复之类的大型操作和Shared Server 构件高速缓存数据
流存储池:当Oracle的Advanced Queuing选件得到使用时,高速缓存跟排队的信息请求相关联的数据

参数:基本参数和高级参数
如:SGA_TARGET
SQL>select * from V$SGA
Fixed Size:用来存储由实例的后台进程所使用的信息的辅助空间
Variable Size:Shared Pool,Large Pool,Java Pool
Database Buffers Cache:
Redo Log Buffer
SQL>select component,current_size from v$sga_dynamic_components;
或用EM DatabaseControl来查看每个SGA构件的大小.

Oracle的后台进程
必需:SMON(System Monitor),PMON(Process Monitor),DBWn(Database Writer),CKPT(Checkpoint)
任选:ARCn(Archive),RECO(Recover),CJQn(Job Queue Monitor),Jnnn(Job Queue),Qnnn(Parallel Queue Slave),Dnnn(Dispatcher),Snnn(Shared Server),MMAN(Memory Manager),MMON(Memory Monitor),MMNL(Memory Monitor Light),RVWR(Recover Writer),CTWR(Change Tracking Writer)
Unix下查看后台进程 $ps -ef | grep PROD
在windows环境中,还有一个叫做OracleServiceInstanceName的Windows服务与每个实例相关联.必须启动这个服务,才能启动实例.

Oracle数据库
一个实例就是一个临时的内存结构,但是Oracle数据库是由驻留在主机服务器的磁盘驱动器上的一组物理文件所构成的.这些物理文件称做Control File,Data File,Redo File.跟Oracle数据库有关,但从技术上看不属于Oracle数据库的附加物理文件有Password File,PFILE,SPFILE,以及Archived redo log file.
Control File:
Data File:
Redo File:
了解Database Writer,Log Writer进程何时工作的.

安装Oracle 10g
检查技术文档->检查系统需求->制定安装计划(OFA)->使用OUI 详细看书已经文档

************$2 创建与控制数据库*****************************************
Oracle企业管理框架
oracle Enterprise Management Framework 提供了一个全面的集成工具集,以便DBA不均那能够使用这些工具更轻松更有效的完成传统任务,而且还能够更有效的监视企业中的各种构件.DBA可以定制这个管理框架.
Oracle企业管理器框架的各个目标之间的通信均由Oracle Management Agent(Oracle管理代理程序)处理.
Oracle企业管理框架分成下面这些功能区.
受管理目标:DBA使用Database Manager来管理受管理目标.包括数据库,应用服务器,Web服务器,应用软件以及象Oracle Net监听器和Connection Manager之类的Oracle代理程序.
oracle Management Service:一个基于Java的Web构件,该构件是DBA用来监视和控制Oracle企业管理器框架内各个受管理目标的实际界面.
Oracle管理储存库:已收集到并与受管理目标有关的配置和监视信息被存储在一个Oracle管理储存库中.
oracle Enterprise Manager 10g 网格控制:一个基于Web的用户界面,管理许多数据库,应用服务器,Web服务器和其他构件
oracle Enterprise Manager 10g数据库控制:允许DBA监视和管理单个Oracle数据库实例或单个RAC(Real Application Cluster)环境.
oracle Application Control:

启动和关闭Oracle管理代理程序
一个Oracle管理代理程序就是一个运行在每个受管理目标服务器上的后台进程.代理程序收集与受管理目标有关的数据,然后与中心管理服务进行通信.
bin>emctl start agent 在集中式的Grid Control框架内
bin>emctl start dbconsole 把数据库作为单独的实体来管理(含apache启动)
bin>emctl status dbconsole
使用Database Control访问数据库:http://hostname:portnumber/em
使用iSql*Plus:bin>isqlplus start(Unix) windows下有相应程序
获取Oracle构件所用端口的清单:检查$ORACLE_HOME/install directory目录portlist.ini文件
把iSql*Plus设置成SYSOPER,SYSDBA特权,必须执行许多步骤.....看帮助
使用Oracle Database Conifguration Assitant
使用EM Database Control启动Oracle 实例 测试
查看和了解Oracle报警日志的内容 google多看看

************$3 数据库存储和模式对象************************************
创建大文件和小文件表空间
CREATE BIGFILE TABLESPACE hist2004apr DATAFILE '/ORADATA/PROD/HIST2004APR.DBF' SIZE 25G
处理Oracle管理文件表空间
ALTER SYSTEM SET db_create_file='d:oracleoradataomf' scope=BOTH;
选择盘区管理方式
CREATE TABLESPACE hist2004apr
DATAFILE '/ORADATA/PROD/HIST2004APR.DBF' SIZE 25G
EXTENT MANAGEMENT LOCAL UNIFORM;

CREATE TABLESPACE hist2004apr
DATAFILE '/ORADATA/PROD/HIST2004APR.DBF' SIZE 25G
EXTENT MANAGEMENT LOCAL AUTOALLOCATE;

选择段空间管理方式 MANUAL ,AUTO
CREATE TABLESPACE hist2004apr
DATAFILE '/ORADATA/PROD/HIST2004APR.DBF' SIZE 25G
EXTENT MANAGEMENT LOCAL AUTOALLOCATE;
SEGMENT SPACE MANAGEMENT MANUAL;(默认MANUAL)

CREATE TABLESPACE hist2004apr
'/ORADATA/PROD/HIST2004APR.DBF' SIZE 25G
EXTENT MANAGEMENT LOCAL AUTOALLOCATE;
SEGMENT SPACE MANAGEMENT AUTO; 数据库使用位图而不是自由列来标识哪些数据块可用于插入操作,忽略PCT_FREE和PCT_USED参数
备注:PCT_FREE和PCT_USED针对MANUAL手工段空间管理方式...自由快列表....
我的oracle10g默认是extent management:local
segment space mangement:auto
系统表,临时表,undo表空间必定是MANUAL的.


创建临时表空间 (我的系统初始都分配了空间,某些UNIX系统是延迟分配空间的)
CREATE TEMPORARY TABLESPACE temp
TEMPFILE 'C:ORACLEORADATAORA10TEMP01.DBF' SIZE 2G;

创建撤销表空间
设置UNDO_MANAGEMENT=AUTO
CREATE DATABASE TEST
...
UNDO TABLESPACE undo
DATAFILE 'C:ORADATATESTundo01.dbf' SIZE 500M
AUTOEXTENT ON NEXT 100M MAXSIZE UNLIMITED
EXTENT MANAGEMENT LOCAL
...

CREATE UNDO TABLESPACE undo
DATAFILE '/ORADATA/PROD/UNDO01.DBF' SIZE 2G;

删除表空间
DROP TABLESPACE hr_data INCLUDING CONTENTS AND DATAFILES;

修改表空间
ALTER TABLESPACE fin RENAME TO payables;

给表空间添加数据文件
ALTER TABLESPACE receivables ADD DATAFILE
'/u02/oradata/ORA10/receivables01.dbf'
SIZE 2G;

脱机,联机receivables表空间
ALTER TABLESPACE receivables OFFLINE;
ALTER TABLESPACE receivables ONLINE;
只读
ALTER TABLESPACE sales2003 READ ONLY;
ALTER TABLESPACE sales2003 READ WRITE;
置入备份模式
ALTER TABLESPACE sales2003 BEGIN BACKUP;
ALTER TABLESPACE sales2003 END BACKUP;
转移文件:windows中的COPY 或 UNIX 的cp命令
新位置
ALTER TABLESPACE receivables RENAME DATAFILE 'H:ORACLEORADATAORA10RECEIVABLES02.DBF'
TO 'C:ORACLEORADATAORA10RECEIVABLES02.DBF';
获取表空间信息
DBA_TABLESPACE;
DBA_DATA_FILES;
DBA_TEMP_FILES;
V$TABLESPACE.

使用Schema(模式)对象
一个Schema就是一个特定数据库用户所拥有的数据库对象集.模式具有和数据库用户相同的名称,因此两个术语是同义的.
模式对象包括读者已在表空间中所见过的段(表,索引等),以及一个用户所拥有的非段数据库对象.如约束,视图,同义词,过程,程序包.
Oracle指定数据类型:略
字符
数字
日期数字
LOB
ROWID
二进制
The database LOB datatypes are as follows:
CLOB Stores variable-length character data.
NCLOB Stores variable-length character data using the Unicode character set.
BLOB Stores binary variable-length data inside the database. BLOB data does not undergo character
set conversion when passed between databases or between client and server processes.
BFILE Stores binary variable-length data outside the database. BFILEs are limited to a maximum
of 4GB of data and even less in some operating systems.
Here is an example of the LOB datatypes in use:
CREATE TABLE lob_examples
( id NUMBER
, name VARCHAR2(32)
, description VARCHAR2(4000)
, definition CLOB
, mp3 BLOB
)TABLESPACE USERS
LOB (definition) STORE AS
(TABLESPACE user3_data);

除了表和视图所共用的名称空间之外,数据库还有单独用于如下各项的名称空间:
索引
约束
聚类
数据库触发器
专用数据库链接
量纲
角色
公用数据库链接
表空间
概况
参数文件(PFILE)

创建表
CREATE TABLE change_log
NOLOGGING COMPRESS
TABLESPACE archive
(log_id NUMBER
,who VARCHAR2(64)
,when TIMESTAMP
,what VARCHAR2(200)
);
NOLOGGING选项告诉数据库,不要把改表的内容记录到重做日志上,也不要把后续的直接路径插入操作记录到重做日志上.
COMPRESS选项告诉数据库,使用数据库压缩把数据添加到表中,因而需要较少的磁盘空间.

创建临时表:两种 ON COMMIT DELETE ROWS ,ON COMMIT PRESERVE ROWS
给表或列添加注释
COMMENT ON TABLE change_log IS
'this table is where you record changes to the configuration of the DEMO system';
DBA_COL_COMMENTS

重命名表:ALTER TABLE CHANGE_LOG RENAME TO DEMO_CHANGE_LOG;

添加和删除表中的列
ALTER TABLE change_log ADD how VARCHAR2(45);
ALTER TABLE CHANGE_LOG ADD
(HOW VARCHAR2(45),
WHY VARCHAR2(60)
);

修改列
ALTER TABLE CHANGE_LOG MODIFY
(WHAT VARCHAR2(250),
WHO VARCHAR2(50) DEFAULT USER
);

以下如果9i中出现,略.加快速度

索引
B树索引是默认的索引类型,适用于中或大基数列,B树索引支持行级加锁,因此适用于多用户的事务应用.支持PRIMARY KEY 或UNIQUE约束的索引是B树索引.
位图索引最适用于低到中基数列的多种组合(不能创建一个唯一性位图索引),而且它们不支持行级加锁.位图索引在数据修改受到限制和控制的环境中最佳,比如许多数据仓库应用软件.由于位图索引不能有效的对被索引数据做修改,所以它们在数据装入开始之前被删去,在数据装入完成后被重建.

处理序列
create sequence employee_seg start with 100500 nomaxvalue nominvalue;

************$4 oracle Net服务*****************************************
Interprocess Communication 进程间通信(IPC) 进程间通信(IPC)是运行在多任务操作系统中或联网计算机上的程序和进程使用的一组技术
程序使用IPC的一个好处是,能有效地利用其它程序或计算机的过程
虽然网络变得越来越复杂,但也变得越来越容易使用和管理.
DBA的网络责任
了解可以采用的网络配置选项,并根据本组织的需求知道应该怎样使用那些选项.
了解本组织的基础网络体系结构,以便制定有远见卓识的设计决策.
于网络工程师紧密合作来保证与oracle服务器的一致而又可靠的连接.
了解可以用来配置和管理网络的各种工具
诊断并排除与用户,中间层和服务器有关的连接问题.
保证安全的连接,并在必要时使用现有网络配置来获得敏感数据传输的较高安全度
紧跟可能对网络设计决策有影响的最新行业趋势和Oracle体系结构的最新变化

网络配置
单层 终端直接连接到主机计算机,不存在网络协议与多操作系统的复杂性.
双层 经常叫做客户/服务器计算.可缩放性不行.
n层 引进了位于客户与数据库服务器之间的中间件[MIDDLEWARE]构件,比如应用服务器或Web服务器.这个模型是可缩放的,并且把表示,业务逻辑和路由选择以及数据库处理等任务分配给许多计算机.许多因素正驱动着n层计算,比如Internet和网格计算;后者使用大量的后端处理器来缩放数据库服务和连接.

Oracle特性综述
连通性:客户可以使用许多方法与一个oracle数据库进行交互(多协议支持,多操作系统,JDBC)
可管理性:Web应用,位置透明性(数据库表现为一个或多个数据库服务),目录命名(Directory Naming)
可缩放性:Oracle Shared Server,Oracle Connectiion Manager(多路复用,网络访问,交叉协议连通性
安全:Oracle Advanced Security,防火墙支持
可访问性:Heterogeneous Service(异构服务),外部过程
目录命名:Directory Naming使得服务名称能够通过一个集中式命名储存库来解析.这个中心储存库采取LDAP(Lightweight Direcory Access Protocol)服务器的形式.LDAP是一个协议和一种语言,它定义一种用来存储,标识和检索服务的标准方法,同时提供了一种管理信息目录的简化方式,无论这些信息是与一个组织内的用户有关,还是与已连接到一个网络的Oracle服务有关.

在服务器上配置Oracle Net
了解Oracle监听器,监听器响应连接请求.
4种连接方法类型:
专用连接:直接握手方法
专用连接:重定向方法
oracle Shared Server:直接握手方法
oracle Shared Server:重定向方法

管理Oracle监听器
用Oracle Net Manager 管理监听器.
用Oracle Enterprise Manager管理监听器 测试
用lsnrctl管理监听器:
启动:lsnrctl start
重新装入监听器::lsnrctl reload
显示监听器的状态:lsnrctl status
列举服务:lsnrctl service

动态地注册服务
实例向本地计算机上锁定义的监听器进行了注册.动态服务注册使得管理员能够利用其他特性,比如符负荷均衡和自动故障切换.PMON进程负责向监听器注册这些信息.
当使用了动态服务注册后,管理员将看不到listener.ora中锁列举得服务器.要想查看文件中所列举得服务,运行lsnrctl service命令.
配置参数:INSTANCE_NAME,SERVICE_NAME
如:Instance_name=DBA
Service_name=DBA.GR.COM
该监听器必须被配置为默认监听器,否则需指定参数LOCAL_LISTENER.
如:local_listener="(ADDRESS_LIST=(ADDRESS=(PROTOCOL=TCP)(HOST=WEISHAN)(PORT=1522)))

使用多个监听器时的附加配置
如果用户拥有一个含有大量并发连接请求的复杂网络环境,或者正在使用一个ORACLE RAC这样的高级数据库设计,则可以配置多个监听器更好的管理连接负荷.读者由此增大了功能度.这些特性包括:
Connect-Time Failover,Transparent Application Failover,Client Load Balancing,Connection Load Balancing.
Connect-Time Failover(连接时间故障切换)
客户tnsnames.ora中指定多个监听器位置.如果连接到第一个监听器失败,则尝试连接监听器列表中的下一个监听器.
Transparent Application Failover(透明应用故障切换TAF)
如RAC中,TAF进行故障切换,并重新建立应用软件到服务连接.它允许客户应用软件自动重新连接到数据库(如果连接出现故障),而且可选地继续执行一条已在运行中的SELECT语句.重新连接从OCI库中自动发生. 测试
Client Load Balancing(客户负载平衡)
允许客户从一个监听器列表中随机地挑选.Oracle Net遍历这个监听器列表,并在现有监听器之间平衡连接请求地符合.
测试
Connection Load Balancing(连接负荷平衡)
允许更好地在一个Oracle Shared Server环境内的一组调度程序之间分布连接


诊断服务器段连接问题
服务器端计算机与数据库检查
检查服务器计算机:ping
检查数据库:sql*plus尝试本地连接
检查数据库对所有用户是开放的
检查用户权限

服务器段网络检查
检查监听器:lsnrctl status
检查GLOBAL_DBNAME
检查监听器协议:lsntctl service
检查服务器协议:ping(tcp/ip)
检查服务器协议适配器:调用OUI程序,并检查已安装协议的列表.在Unix平台上,可以使用Adapters实用工具来保证适当的协议适配器被链接到Oracle.
[xxx]./adapters oracle
检查连接超时设置
INBOUND_CONNECT_TIMEOUT设置成一个较大的值,加大有效响应的等待时间.

服务器上Oracle Net日志和跟踪
服务器日志:监听器日志,Unix系统上是$oracle_home/network/log,windows下是%oracle_home%networklog. 测试
服务器跟踪 启用,查看,测试

配置客户Oracle Net
客户端名称解析:该客户必须提供3段信息:用户ID,密码和网络服务名称.网络服务名称用一个连接描述符的形式提供在网络中查找一个oracle服务所必须的信息.
网络服务的5种解析方法.
oracle Internet Directory,External Naming,Host Naming,Oracle easy connect, Local Naming.
oracle Internet Directory:处理含有许多oracle服务器的复杂网络时有优势.管理员可以在一个集中位置上配置和管理Net service Names和路径描述符信息.
External Naming:使用一个非oracle工具管理和解析Oracle服务名称,例如:NIS
主要考察以下三种
Host Naming:
oracle Easy Connect Naming:
10g新引进的,指定主机,端口,服务名称
如:connect scott/tiger@jlsjls:1522/orcl.com
Local Naming:也叫做tnsnames.ora方法.网络服务名称,网络协议,主机名和端口,服务名,测试网络服务名连接
使用EM配置本地命名, 测试

诊断并解决客户端连接问题
检查客户/服务器联系:ping
确定客户正用来到达服务器的网络路由:
xxx:/home/oracle>traceroute 10.15.9.11
cmd>tracert 10.20.3.3
检查客户/监听器联系
cmd>tnsping orcl 2 (tnsping工具尝试连接一个oracle监听器)
检查本地命名配置文件
查找多客户网络配置文件(略)
检查网络文件位置
检查NAMES.DIRECTORY_PATH
检查NAMES.DEFAULT_DOMAIN
检查客户协议适配器
检查客户端错误码

************$5 oracle 共享服务器**************************************
oracle Shared Server适用于"高思维"应用.高思维应用由再事务模式中使用自然暂停的小事务组成.许多基于Web的应用适合这个模型.要确定一个应用是不是Oracle Shared Server的候选者时,检查该应用,并考虑一个与数据库服务器的典型客户交互所生成的网络通信量.如果给定最流行网络的速度,并且一个典型的客户交互包含16kb或更少的数据,那么它是一个适合使用Oracle Shared Server的候选者.

oracle Shared Server的基础结构
使用Oracle Shared Server时的PGA与SGA变化
当Oracle Shared Server得到配置时,Oracle给SGA增加两种新型的结构;请求队列喝响应队列.专用服务器中是不存在这两种结构的.对于所有的调度程序,只存在一个请求队列,但每个调度程序都有各自的响应队列.
专用服务器环境中,每个服务器中有一个叫做PGA的内存段,是维护关于每个客户会话信息的地方,包括赋值变量,游标信息以及客户的分类数据.在oracle shared server环境中,这个信息被转移到SGA中一个叫做UGA的区域.读者可以配置SGA中一个Large Pool的特殊区域来容纳UGA的大部分.


专用服务器PGA:游标状态,用户会话数据,栈空间
共享服务器PGA:栈空间
由上可知:专用服务器,UGA是在PGA中分配的.而在SHARED SERVER中,UGA在LARGE POOL池中分配.
Virtual circuit:正由一个调度程序所维护的每个连接都被分配给一个共享内存段,并形成一个虚拟电路.调度程序使用这个共享内存段来管理客户Oracle数据库之间的通信.
监听器收到一个连接请求,它检查每个调度程序的当前连接符合,并把客户连接请求重定向到最小负荷调度程序.确定所有节点的最小负荷调度程序--如果RAC正得到使用.

配置Oracle Shared Server
oracle 10g不必指定DISPATCHERS参数就能启用一个默认网络环境中的共享服务器(简化了).
oracle 10g的一个优点是管理Oracle Shared Server所需要的所有参数都能被动态地修改.

使用DISPATCHERS参数
只需指定ADDRESS,DESCRIPTION或PROTOCOL即可.数据越密集型地操作喝并发连接地数量越大,每个调度程序处理地会话应该越少.一般来说,起始点是为每个调度程序预留50个并发会话.
读者可以用如下公式来确定最初要配置地调度程序数量:
Number of Dispatchers
=CEIL(maximum number of concurrent sessions/connections per dispatcher)
example:DISPATCHERS="(PRO=TCP)(DIS=3)(PRO=IPC)(DIS=2)"
由V$session视图可确定并发连接地数量
v$LICENSE
SESSION_CURRENT:会话的当前数量
SESSION_HIGHWAITER:自实例启动以来的最大并发会话数量
修改:ALTER SYSTEM SET DISPATCHERS="(PRO=TCP)(DIS=5)";

使用DISPATCHERS参数配置连接集储特性
Connection Pooling(连接集储):通过自动断开空闲连接和使用空闲连接为一个输入连接请求提供服务,给Oracle Shared server赋予了较大数量连接的能力.
设置Pool,Tick属性具体看书
DISPATCHERS="(PROTOCOL=TCP)(DISPATCHERS=1)(POOL=ON)(TICK=1)(CONNECTIONS=500)(SESSIONS=1000)"

使用MAX_DISPATCHERS参数
使用SHARED_SERVERS参数:默认1,0或者未设置禁用.一般来说,对于将要使用共享服务器连接的各种高思维应用软件,每个共享服务器拥有25个并发连接应该是足够使用的.
SHARED_SERVER_SESSIONS:使用这个参数限制共享服务器会话的总数量.
MAX_SHARED_SERVER:

管理共享服务器
>lsnrctl service 显示关于调度程序进程的信息
动态性能视图
V$DISPATCHER:关于调度程序的信息,活动情况,正在处理的连接数量,自实例启动以来已经处理的总连接数量.
sql>select name,status,messages,idle,busy,bytes,breaks from v$dispatcher;
V$DISPATCHER_CONFIG 新增的视图,关于调度程序的配置信息.
sql>select conf_indx,dispatchers,connections,sessions sess,service from v$dispatcher_config where network like '%TCP%';
V$DISPATCHER_RATE:调度程序的统计信息
sql>select name,cur_event_rate,cur_msg_rate,cur_svr_byte_rate from v$dispatcher_rate;
V$QUEUE:请求和响应队列的信息,比如请求在队列中等待多长时间
sql>select * from v$queue;
V$CIRCUIT:显示oracle shared server虚拟电路的信息,
sql>select circuit,dispatcher,server,waiter WTR,status,queue,bytes from v$circuit;
V$SHARED_SERVER:显示共享服务器进程的信息
sql>select name,status,messages,bytes,idle,busy,requests from v$shared_server;
V$SHARED_SERVER_MONITOR:...最大并发连接数,启动的服务起数..等信息,有助于调节oracle shared server.
sql>select maximum_connections "MAX CONN",maximum_sessions "MAX SESS",servers_started "STARTED" from v$shared_server_monitor;
V$SESSION:有关客户会话的丰富信息.
sql>select username,program,server from v$session;


在共享服务器环境中请求一个专用连接
本地命名中添加....略

调节共享服务器选项 测试
确定Large Pool 大小:Large Pool应该大得足以容纳读者的所有共享服务器连接的有关信息.一般所来,每个连接需要1MB到3MB之间的空间,但这取决于该客户的活动类型.正在做大量分类操作或打开许多游标的对象将使用更多的内存.
sql>alter system set large_pool_size=10m;
sql>select * from v$sgastat where pool = 'large pool';
确定是否有足够的调度程序:如果调度程序的繁忙的时间百分比超过50%,则需要考虑启动更多的调度程序.
sql>select name,(busy/(busy+idle)) *100 "Dispatcher %busy Rate" from v$dispatcher;
sql>alter system set dispatchers ="(PRO=TCP)(DIS=4)";
测量用户等候调度程序多长时间:数值过大,需要增加更多的调度程序
sql>select decode(sum(totalq),0,'No response',Sum(wait)/sum(totalq)) "Average ait time" from v$queue q,v$dispatcher d where q.type='DISPATCHER' AND q.paddr=d.paddr;
监视一段时间,如果不断增大,则需要考虑增加更多的调度程序.
确定是否有足够的共享服务器:....
sql>select decode(totalq,0,'No Requests') "Wati Time", Wait/totalq || ' hundredths of seconds' "Average wait time per request" from v$queue where type='COMMON';
监视之,如果不断增大,考虑增加更多共享服务器.
查询当前的sql>select name,status,requests,messages,bytes,breaks from v$shared_server;

以上标记测试的,大都未测试,赶时间看书
*************$6 用户管理与安全******************************************
术语"用户账号","账号","用户","模式"均是可以互换的,并且指一个拥有模式对象的数据库用户账号.
配置身份验证:密码验证,外部验证,全局验证
密码验证式用户:略
外部验证式用户:当一个外部验证式用户连接到数据库时,数据库核实用户名是一个有效的数据库账号,并确信操作系统已经完成了身份验证.这些账号有时称作OPS$(发音为ahps dollar)账号,引进这些账号时,他们必须加上前缀.(一般OPS$,有参数可以设置)
CREATE USER OPS$ORACLE IDENTIFIED EXTERNALLY
外部验证经常用于管理性脚本,以便密码不必嵌入在一个人类可以可理解的脚本中.
全局验证式用户:当一个全局验证式用户试图连接到数据库时,数据库验证用户名时一个有效的数据库账号,并把连接信息传递给高级安全选项以供验证.高级安全选项支持几个用于身份验证的机制,其中包括生物测定,X.509证书,Kerberos和RADIUS.
CREATE USER SPY_MASTER IDENTIFIED GLOBALLY AS 'CN=SPY_MASTER,OU=TIER2,O=SECURITY,C=US';

分配默认表空间
......default tablespace.....

分配临时表空间
....temporary tablespace....

给用户分配概况
...profile resource_profile;

授予和取消特权
对象特权:模式对象上的特权,比如表,视图,序列,过程一级包等模式对象.
系统特权:数据库级操作上的特权,比如连接到数据库....
角色特权:一个用户作为一个角色所拥有的对象与系统特权.

授予对象特权
各种权限以后细看....
grant....with grant option...当是角色时,不能使用with grant option
如果使用..with grant option后,又取消该特权,该取消发生级联作用.
一个被授权者可以从多个授权者那里获得一个特权,当同一个特权的这种多次授权发生时,取消这些授权之一将不删除该特权.

授予系统特权
Oracle有170多种系统特权,并且所有这些系统特权均被列举在SYSTEM_PRIVILEGE_MAP数据目录视图中.
熟悉以下几组特权.
数据库:
ALTER DATABASE,ALTER SYSTEM,AUDIT SYSTEM(语句审计),AUDIT ANY(任意一个模式中对象上的对象审计)
调试:
DEBUG CONNECT SESSION(允许被授权者把当前会话连接到一个调度程序.)
DEBUG ANY PROCEDURE(允许被授权者调试数据库中的所有PL/SQL和Java代码.相当于授予每个适用对象的DEBUG对象特权.
索引:
CREATE ANY INDEX:允许被授权者在任意一个模式中创建一个索引.
ALTER ANY INDEX:允许被授权者更改任意一个模式中的索引
DROP ANY INDEX:允许被授权者从任意一个模式中删除索引.
作业调度程序:
CREATE JOB:允许被授权者在他们自己的模式中创建作业,程序和时间表.
CREATE ANY JOB:...
EXECUTE ANY PROGRAM:
EXECUTE ANY CLASS:
MANAGE SCHEDULER:
过程
CREATE PROCEDURE
CREATE ANY PROCEDURE
ALTER ANY PROCEDURE
DROP ANY PROCEDURE
EXECUTE ANY PROCEDURE
概况
CREATE PROFILE
USER语句(需要ALTER USER特权)
ALTER PROFILE
DROP PROFILE
角色
CREATE ROLE
ALTER ANY ROLE
DROP ANY ROLE
GRANT ANY ROLE
序列
CREATE SEQUENCE
CREATE ANY SEQUENCE
ALTER ANY SEQUENCE
DROP ANY SEQUENCE
SELECT ANY SEQUENCE
会话
CREATE SESSION
ALTER SESSION
ALTER RESOURCE COST
RESTRICTED SESSION
同义词
CREATE SYNONYM
CREATE ANY SYNONYM
CREATE PUBLIC SYNONYM
DROP ANY SYNONYM
DROP PUBLIC SYNONYM

CREATE TABLE
CREATE ANY TABLE
ALTER ANY TABLE
DROP ANY TABLE
COMMENT ANY TABLE
SELECT ANY TABLE
INSERT ANY TABLE
UPDATE ANY TABLE
DELETE ANY TABLE
LOCK ANY TABLE
FLASHBACK ANY TABLE
....略

.....
和对象特权相同的是,可以把系统特权授予特殊用户PUBLIC.给PUBLIC授予特权允许任何一个拥有数据库帐户的人运用这个特权.
如果利用WITH ADMIN OPTION 关键字授予一个系统特权,随后又取消该特权,那么被授权者的特权将不被取消.和对象特权不同的是,系统特权的取消不发生级联作用.

角色特权
角色特权给被授权者授予一组系统,对象和其他角色特权.角色可以是密码保护的,所以用户可能拥有一个已授给他们的角色,但还不能在所有数据库会话中使用该角色.
创建与管理角色
CREATE ROLE appl_dba
SET ROLE appl_dba IDENTIFIED BY seekwrit;
授予角色特权
GRANT oem_monitor TO charlie;
GRANT PLUSTRACE TO PUBLIC;
GRANT create ANY TABLE TO appl_dba with admin option;
当提到给一个角色授予WITH ADMIN OPTION时,角色的行为看起来象系统特权,而且后续的取消不会发生级联作用.
启用角色
set role hr_admin identified by "my!seekrit",employee;
set role all except hr_admin;
查看当前会话得到启用的角色
select role from sessin_roles;
查看已分配给用户或特殊用户PUBLIC的角色.
USER_ROLE_PRIVS describes the roles granted to the current user.
select granted_role from user_role_privs where username in(USER,'PUBLIC');
查看已在读者的会话中得到启用和直接授给读者或PUBLIC的角色,但不包括读者所继承的那些角色,执行下列语句.
SELECT role FROM session_roles INTERSECT
SELECT granted_role FROM user_role_privs
WHERE username IN(USER,'PUBLIC');

禁用角色
SET ROLE NONE
SET ROLE ALL EXCEPT role_list
不存在任何有选择性地禁用单个角色的方法.不能禁用自己作为另一个角色所继承来的角色,除非禁用了父角色.

设置默认角色
...ALTER USER scott DEFAULT ROLE ALL EXCEPT plustrace;
由于一个角色的创建者自动拥有该角色,并且该角色被配置为一个默认角色,所以创建了许多角色的管理性用户(比如SYS或SYSTEM)可能需要修改他们的默认角色列表.

按用户控制资源使用
分配表空间限额
....quota 100M ON USERS;


利用概况分配资源限额
一个数据库调用是一个语法分析,一个执行或一个取数据。通常,数据库隐含地替读者执行这些调用。读者可以明确地从JAVA,PS/SQL或OCI程序中做这些数据库调用。一个逻辑读是数据库在执行SQL语句期间所完成的工作量的一种度量。逻辑读被计算为一致获取与当前模式获取的总和。
Logical reads include blocks read from both memory and disk.
Logical reads :The sum of "db block gets" plus "consistent gets"
db block gets :Number of times a CURRENT block was requested
consistent gets:Number of times a consistent read was requested for a block
db_block_gets + consistent_gets = LOGICAL IO
physical_reads = PHYSICAL IO
http://www.oracledba.com.cn/blog/?p=37 一篇帖子很好,以后看


启用(9i,10g默认都没启用)
ALTER SYSTEM SET resource_limit=TRUE SCOPE=BOTH;
支持下列限定资源的字句
CONNECT_TIME sql>CREATE PROFILE agent LIMIT CONNECT_TIME 10;
CPU_PER_CALL sql>CREATE PROFILE agent LIMIT CPU_PER_CALL 3000; (以毫秒为单位,即1秒的百分数)
sql>ALTER PROFILE data_analyst LIMIT CPU_PER_CALL UNLIMITED;
CPU_PER_SESSION sql>CREATE PROFILE agent LIMIT CPU_PER_SESSION 30000;
IDLE_TIME sql>ALTER PROFILE agent LIMIT IDLE_TIME 10 (分钟,运行时间很长的SQL语句不受这个设置影响)
LOGICAL_READS_PER_CALL sql>ALTER PROFILE agent LIMIT LOGICAL_READS_PER_CALL 2500;
LOGICAL_READS_PER_SESSIONsql>ALTER PROFILE agent LIMIT LOGICAL_READS_PER_SESSION 1000000;
PRIVATE_SGA sql>以字节为单位限定一个连接到共享服务器的用户能够给PGA中的持久区域分配的SGA内存量.(书解释)
sql>用户能够在SGA中使用的私有的空间数 单位bytes .共享服务器模式下PGA的一些区域(UGA)到了SGA中(网络解释)
sql>ALTER PROFILE agent LIMIT PRIVATE_SGA 2500;
SESSION_PER_USER sql>ALTER PROFILE agent LIMIT SESSION_PER_USER 2;
COMPOSITE_LIMIT :限定在一个用户会话期间能够被消费的服务单元数量。服务单元被计算为CPU_PER_SESSION,LOGICAL_READS_PER_SESSION,CONNECT_TIME,PRIVATE_SGA的加权总和。加权使用ALTER RESOURCE COST 语句设立,for example: alter resource cost connect_time 0 ;并能够从RESOURCE_COST数据目录视图中被查看。
sql>ALTER PROFILE agent LIMIT COMPOSITE_LIMIT 1000000;
sql>select * from dictionary where instr(comments,'profile')>0; DBA_PROFILES

应用最少特权原则
DBA_TAB_PRIVS:DBA_TAB_PRIVS describes all object grants in the database
DBA_SYS_PRIVS:DBA_SYS_PRIVS describes system privileges granted to users and roles.
example:列出由用户sys所拥有的,并且已经把execute特权授给了public的各个包
select table_name from dba_tab_privs p,dba_objects o where p.owner=o.owner and p.table_name=o.object_name and p.owner='SYS' and p.privilege='EXECUTE' and p.grantee='PUBLIC' AND o.object_type='PACKAGE';
列出所有拥有SELECT ANY TABLE特权的用户
select * from DBA_SYS_PRIVS WHERE PRIVILEGE='SELECT ANY TABLE';
保护数据目录:确保拥有select_any_table特权的用户无法通过设置:(第一个字母是欧)O7_dictionary_accessibility=false来访问数据目录的基础表。这是默认设置。
从PUBLIC中取消取消不必要的特权:
REVOKE EXECUTE ON utl_tcp FROM PUBLIC;
REVOKE EXECUTE ON utl_smtp FROM PUBLIC;
REVOKE EXECUTE ON utl_http FROM PUBLIC;
REVOKE EXECUTE ON utl_file FROM PUBLIC;
REVOKE EXECUTE ON dbms_obfuscation_toolkit FROM PUBLIC;
REVOKE EXECUTE ON dbms_crypto FROM PUBLIC;

限定拥有管理特权的用户
SYSDBA:最高,没有任何理由授给SYS之外的用户
DBA:允许被授权者在整个数据库分配特权和操纵数据,慎重。
ANY系统权限:select any table,grant any role,delete anyy table...

不启用REMOTE_OS_AUTHENT 初始化参数REMOTE_OS_AUTHENT的默认设置是FALSE.

每个用户只应该被授予执行其工作所需要的最少特权.这个原则是一个以初始封闭原理为中心的原则.
我们应该采取几个动作,同时设置或锁定数据库
保护数据目录:确保拥有SELECT ANY TABLE特权的用户无法通过设置07_DICTIONARY_ACCESSIBILITY=FALSE来访问数据目录的基础表.
从PUBLIC中取消不必要的特权.具体看书
限定拥有管理特权的用户:
看DBA和SYSDBA的区别
不启用REMOTE_OS_AUTHENT

管理默认的用户账号
sys和system账号分别是数据目录拥有者和一个管理性帐户.sysman和dbsnmp帐户由Enterprise Manager使用.

实现标准密码安全特性:找到这个脚本的位置,执行。
$ORACLE_HOME/rdbms/admin/utlpwdmg.sql
@%ORACLE_HOME%rdbms/adminutlpwdmg.sql

显示表空间限额
select tablespace_name,username,bytes,max_bytes from dba_ts_quotas;
显示概要文件的信息
select profile,resource_name,limit from dba_profiles where profile='DEFAUTL';

审计数据库活动()

审计记录可以保存在数据库中,也可以存储在操作系统文件中以获得更高的安全性
Audit_trail:把审计记录写到什么地方.默认位置是NONE.
sql>alter system set AUDIT_TRAIL=DB scope=spfile;
写到数据库:大部分审计项被记录在sys.aud$表中。
写到OS中:unix--audit_file_dest ;windows--Event Viewer日志文件中
AUDIT_TRAIL=OS(不测试了)
....
四个审计级别:语句,特权,对象和精细访问.

管理语句审计
audit table;
audit table by cxy;
audit table by cxy whenever not successful;
audit insert table by cxy by access;
识别已启用的语句审计选项
select audit_option,failure,success,user_name from dba_stmt_audit_opts order by audit_option,user_name;
禁用语句审计
noaudit session;
noaudit not exists;
noaudit table by cxy;
检查审计跟踪
select username,timestamp,action_name from dba_audit_trail where username='TEST01';

管理特权审计
启用
audit create any table;
audit create any table by test01;
标识已启用的特权审计选项
select privilege,user_name from dba_priv_audit_opts order by privilege,user_name;
禁用
noaudit alter profile;
noaudit delete any table by juanita;
noaudit alter user by juanita;

管理对象审计:监视和记录需要一个指定对象特权的sql语句的执行,比如select,insert,update,delete或execute对象特权
和语句或系统特权审计不同的是,模式对象审计不能被限定于指定用户--它针对所有用户或者针对无用户被启用.
启用
audit select on hr.EMP_DETAILS_VIEW BY ACCESS WHENEVER SUCCESSFUL;
AUDIT SELECT ON HR.EMP_DETAILS_VIEW BY SESSION WHENEVER NOT SUCCESSFUL;
标识已启用的对象审计选项
SELECT owner,object_name,object_type,ins,sel FROM dba_obj_audit_opts WHERE owner='HR' AND object_name='EMP_DETAILS_VIEW';
禁用对象审计
NOAUDIT SELECT ON HR.EMP_DETAILS_VIEW WHENEVER NOT SUCCESSFUL;

清除审计跟踪
DELETE FROM SYS.AUD$ WHERE TIMESTAMP#

管理精细审计(Fine-grained auditing,简称FGA)允许读者基于数据的内容监视和记录数据访问.
可以使用PL/SQL包DBMS_FGA来配置和管理FGA
参数解释:object_schema,object_name,policy_name,audit_condition,audit_column,handler_schema,handler_module,enable,audit_trail,audit_column_ops
object_schema:待审计对象的所有者,默认NULL
object_name: 待监视对象的名称
policy_name:心策略的一个唯一性名称
audit_condition:sql表达式,为真时,一个审计记录创建,语法有些限制,如不能使用一些函数,子查询或者序列.
audit_column: 逗号分隔的列列表,数据库将要访问这些列.如果audit_column被参考,且audit_condition为true,审计记录得到创建.
handler_schema:事件处理程序的所有者
handler_module:事件处理程序过程的名称.
enable:启用,默认true
statement_types:要监视那些类型的sql语句.默认是select
audit_trail:是否把sql语句和用于触发sql的赋值变量记录在审计跟踪中.默认值DBMS_FGA.DB_EXTENDED记录之,应该把参数设置成DBMS_FGA.DB,以便节省空间.
audit_column_ops: 两个有效值:DBMS_FGA.ALL_COLUMNS DBMS_FGA.ANY_COLUMNS
创建FGA策略(未启用)
EXECUTE DBMS_FGA.ADD_POLICY(object_schema=>'HR',object_name=>'EMPLOYEES',policy_name=>'COMPENSATION_AUD',audit_column=>'SALARY,COMMISSION_PCT',enable=>FALSE,statement_types=>'SELECT');
启用
EXECUTE DBMS_FGA.ENABLE_POLICY(object_schema=>'HR',object_name=>'EMPLOYEES',policy_name=>'COMPENSATION_AUD');
禁用
DBMS_FGA.DISABLE_POLICY(object_schema=>'HR',object_name=>'EMPLOYEES',policy_name=>'COMPENSATION_AUD');
删除FGA策略
EXECUTE DBMS_FGA.DROP_POLICY(object_schema=>'HR',object_name=>'EMPLOYEES',policy_name=>'COMPENSATION_AUD');
识别数据库中的FGA策略
SELECT policy_name,object_name||'.'||object_name object_name,policy_column,enabled,audit_trail from dba_audit_policies;
制作FGA审计跟踪数据项的报表
SELECT db_user,timestamp,userhost from dba_fga_audit_trail where policy_name='COMPENSATION_AUD';

************$7 使用SQL,PL/SQL和实用程序管理数据************************
大量的数据库特性是作为PL/SQL程序来实现的,而且知道怎样识别和处理这些PL/SQL程序对数据库管理员的工作效率来说是至关重要的.
5种类型的命名的PL/SQL程序:Function,Procedure,Package,Package body,Trigger,这些程序通常被存储在数据库中.每个存储式PL/SQL程序的

名称和源代码都可以从DBA_SOURCE和DBA_TRIGGERS数据目录视图中获取,尽管有些供给的程序包经过了"包装",二进制的.
看sql开发指南一书。
处理函数
DECLARE today DATE DEFAULT SYSDATE;
today:=SYSDATE;
IF TO_Char(SYSDATE,'Day')='Monday'
SELECT COUNT(*) FROM hr.employees WHERE hire_date>SYSDATE-30;
SELECT TRUNC(SYSDATE)
_____________________________________________________________
CREATE OR REPLACE FUNCTION is_weekend(
check_date IN DATE DEFAULT SYSDATE)
RETURN VARCHAR2 AS
BEGIN
CASE TO_CHAR(check_date,'DY')
WHEN 'SAT' THEN
RETURN 'YES';
WHEN 'SUN' THEN
RETURN 'YES';
ELSE
RETURN 'NO';
END CASE;
END;
-------------------------------------------------------------------
处理过程
CREATE OR REPLACE PROCEDURE archive_orders
(cust_id IN NUMBER
,retention IN NUMBER) IS
BEGIN
DELETE orders
WHERE customer = cust_id
AND order_date < SYSDATE - retention;
INSERT INTO maint_log
(action,action_date,who) VALUES
('archive orders '|| retention || ' for '|| cust_id
,SYSDATE,USER);
END;
---------------------------------------------------------------------
set serverout on
EXEC DBMS_OUTPUT.PUT_LINE('HELLO WROLD!');
--------------------------------------------------
CALL DBMS_OUTPUT.PUT_LINE('HELLO WROLD!');
---------------------------------------------------
处理程序包
一个程序包就是一个用于函数,过程和数据结构(比如记录,游标,变量,和约束)的容器.一个程序包拥有一个叫做规约(简写为spec)的公用部分和

一个叫做程序包体的私有部分.
程序包规约:PACKAGE类型
程序包体:PACKAGE BODY类型
-----------------------------------------------------
CREATE OR REPLACE PACKAGE table_util IS
FUNCTION version RETURN VARCHAR2;
PROCEDURE truncate (table_name IN VARCAHR2);
END table_util;
--------------------------------------------------
CREATE OR REPLACE PACKAGE BODY table_util IS
version_string VARCHAR2(8) := '1.0.0';
FUNCTION version RETURN VARCHAR2 IS
BEGIN
RETURN version_string;
END;
PROCEDURE truncate(table_name IN VARCHAR2) IS
BEGIN
IF UPPER(table_name) = 'ORDER_STAGE'
OR UPPER(table_name) = 'SALES_ROLLUP'
THEN
EXECUTE IMMEDIATE 'trunate table ' || UPPER(table_name);
ELSE
RAISE_APPLICATION_ERROR(-20010,Invalid table for truncate: '|| table_name);
END IF;
END;
END table_util;
------------------------------------------------------------------------------------
处理触发时间和管理触发器
DML,DDL,数据库事件
具体见书
--------------------------------------------------------------
CREATE OR REPLACE TRIGGER employee_trg
BEFORE INSERT OR UPDATE OF hire_date
ON employee FOR EACH ROW
BEGIN
log_update(USER,SYSTIMESTAMP); --这个函数查不到???
IF INSERTING THEN -- if fired due to insert
:NEW.create_user := User;
:NEW.create_ts :=SYSTIMESTAMP;
ELSIF UPDATING THEN -- if fired due to update
IF :OLD.hird_date <> :NEW.hire_date THEN
RAISE_APPLICATION_ERROR(-20013,'update of hire_date not allowed');
END IF;
END IF;
END;
-----------------------------------------------------------------------------------
事件:INSERT,UPDATE,DELETE
顺序:在语句触发器之前--&gt行触发器之前--&gt行触发器之后--&gt语句触发器之后.
DDL事件触发器:略
数据库事件触发器:略


使用和管理PL/SQL程序
desc 包
每当一个依赖对象通过alter 语句被编译时,一个pl/sql程序就变得无效。下次调用是自动重新编译。但我们可以选择手工编译无效的PL/SQL

程序,for example:
ALTER PROCEDURE archive_orders COMPILE;
ALTER FUNCTION is_weekend COMPILE;
alter package table_util compile body;
配置PL/SQL来获取较佳的性能
PLSQL_WARNING:10G新引进的,指出潜在问题,帮助开发人员创建更好的程序.生产中禁用,alter system set plsql_warning='DISABLE:ALL'

scope=both;
PLSQL_DEBUG:迫使后续的pl/sql编译都得到翻译并包含辅助的调试信息.生产中禁用它.
alter system set plsql_debug = false scope=both;
PLSQL_OPTIMIZE_MODE:一个优化的编译程序,启用它.
alter system set plsql_optimize_level=2;
PLSQL_CODE_TYPE:指定将plsql代码编译成默认翻译的字节码还是本级代码.本机代码较长编译时间和较大一些的管理性开销,较快速的运行时性

能.
启用本机编译:c编译程序,设置参数PLSQL_NATIVE_LIBRARY_DIR,并保证该目录存在.设置参数PLSQL_CODE_TYPE='NATIVE' ...以后测试

创建目录对象,需要拥有create any directory系统特权,谨慎,这个数据库采用数据库实例所有者的操作系统凭证.
create directory dump_dir as '/home/oracle/data_pump/dumps';(用操作系统命令建立目录,保证存在该目录)
create directory log_dir as '/home/oracle/data_pump/logs';(用操作系统命令建立目录,保证存在该目录)
数据转储
Data Pump[数据转储]工具是10g引进的一个特性.它是一种在数据库之间或者在数据库与操作系统文件之间传输数据或元数据的高速机制.Data

Pump采用目录路径上载和直接路径装入技术.和exp和imp不同,Data Pump工具运行在服务器上.因此数据库管理员必须使用一个数据库目录来指定转储文件和目录文件位置,给用户操作目录的权限.(grant read,write on directory XXXXXX to public | XXXXX)
使用Data Pump导出数据
运行expdp :
数据库导出方式: expdp system/cxx full=y dumpfile=chap7a:fulla%U.dmp,chap7b:fullb%U.dmp filesize 2G parallel=2 logfile=chap7:full.log
对象模式导出
expdp hr/hr dumpfile=chap7:hr.dmp logfile=chap7:hr.out
表导出方式
expdp hr/hr dumpfile=chap7:job_tabs.dmp nologfile=y content=metadata_only tables=jobs,job_history
表空间导出方式
expdp system/cxy110 dumpfile=chap7:users_ts.dmp logfile=chap7:users_ts.out tablespaces=users(ora-39139 错误,data pump不支持xml....解决:用传统的exp)


expdp test07/cxy110 dumpfile=chap7:tbs07_ts.dmp logfile=chap7:tbs_ts.out tablespaces=tbs07


DBMS_DTAPUMP
使用DBMS_DTAPUMP设置一个DATA PUMP比仅使用独立程序麻烦一些,但是可提供较高的功能度和控制权.
example:


DECLARE
h1 NUMBER; --HANDLE FOR THE dATE pUMP SESSION
BEGIN
-- Obtain a handle to an export Data pump session
h1 := dbms_datapump.open(
operation => 'EXPORT' --export not import
,job_mode => 'SCHEMA'); --schema mode
-- ,job_mode => 'FULL'); --database mode
-- ,job_mdoe => 'TABLE'); --table mode
-- ,job_mode => 'TABLESPACE'); --tablespace mode
--define the log file
dbms_datapump.add_file(
handle => h1 -- from the open call
,filename => 'hr.out' -- file name
,directory => 'CHAP7' --database directory object
,filetype => dbms_datapump.ku$_file_type_log_file);
--define the dump file
dbms_datapump.add_file(
handle => h1 -- from the open call
,filename => 'hr.dmp' -- file name
,directory => 'CHAP7' -- database directory object
,filetype => dbms_datapump.ku$_file_type_dump_file);
--define schemas to exprot
dbms_datapump.metadata_filter(
handle => h1 -- from the OPEN call
,name => 'SCHEMA_EXPR' --schema name filter
-- ,name => 'INCLUDE_NAME_EXPR' --TABLE NAME FILTER
-- ,name => 'EXCLUDE_NAME_EXPR' --table name filter
-- ,name => 'TABLESPACE_EXPR' -- tablespace name filter
,value => 'IN(''hr'')'); --name list
--invoke data pump
dbms_datapump.start_job(handle => h1); -- from the open call
-- run the job in the background
dbms_datapump.detach(handle => h1);
end;


EM Database Control(略,可从中生成PL/SQL代码,熟悉DATAPUMP)

使用Data Pump 导入数据
impdp system/paasword full=y dumpfile=chap7:FULL.DMP nologfile=y sqlfile=chap7:FULL.SQL(只生成DDL语句,不导入数据)


impdp system/password network_link=prod schema="HR" remap_schema="HR:HR_TEST" content=metadata_only logfile=chap7:HR_TEST.LOG(先创建好DB_LINK,是否不支持连接远程ORACLE 9I???)


impdp system/password full=y dumpfile=chap7:HR.DMP nologfile=y sqlfile=chap7:HR_proc_give.SQL include=PROCEDURE:"LIKE 'GIVE%'"

impdp system/password network_link=prod schema="HR" remap_schema="HR:HR_TEST" content=data_only include=TABLE:"= 'DEPARTMENTS'" logfile=chap7:HR_TEST.LOG


impdp system/cxyxxxx tablespaces=TBS07 dumpfile=chap7:tbs07_ts.dmp nologfile=y(导入表空间,先在目标数据库创建表空间和用户,dumpfile是一个表空间的导出文件)
使用包和使用OEM略


************$8 管理一致性与并发性*********************************
oracle 10g 保留用户自从一个事务开始以来已被修改过的数据所需要的撤销数据. oracle的GUI工具EM Database control使撤销管理和调整大小变得很容易.UNDO ADVISOR收集统计数据,帮助管理员调整撤销表空间的大小,以便一个事务的DML语句能顺利执行完毕,同时又使SELECT语句不返回"快照太旧"的错误.
作用:rollback对数据库的修改,支持读一致,支持回闪查询,数据库恢复操作(回退未提交数据).
一个数据库可以有一个以上的撤销表空间,可只有一个表空间是活动的.
sql>select * from v$rollname;(检索当前活动撤销段的名称)
V$TRANSACTION动态性能视图显示一个事务和各撤销段的关系.
for example:
sql>set transaction name 'update clerk salaries';
sql>update hr.employees set salary = salary * 1.25 where job_id like '%CLERK';
SQL>select xid,status,start_time,xidusn seg_num,r.name seg_name from v$transaction t join v$rollname r on t.xidusn=r.usn where t.name='update clerk salaries';
说明:insert语句几乎不使用撤销表中的空间. 新表行的指针被存储在撤销表空间中.
还可把读一致性应用于一个完整的事务.如下所示:
>set transaction read only;
直到该事务回退或者提交之前,该事务中的所由查询只能看到该事务提交之前发生在其他表中的已提交的事务.换句话说,只读事务不能含有任何一条修改表数据的语句,无论表驻留在什么地方.例如ALTER SUER语句.
sql>alter system set undo_management = auto scope=spfile; --或 manual
sql>alter system set undo_tablespace=undo_atch;
sql>alter system set undo_retention = 43200; (12小时)
UNDO_RETENTION参数:
撤销信息分三类:未提交撤销信息,已提交撤销信息,过期撤销信息.

监视撤销表空间
OEM(oracle 10g 图 中长查询以分钟为单位,是是否显示错了),使用UNDO ADVISOR
SQL>SELECT to_char(begin_time,'yyyy-mm-dd hh24:mi:ss') starttime,to_char(end_time,'yyyy-mm-dd hh24:mi:ss') endtime,undoblks,maxquerylen maxqrylen from v$undostat;

手工使用V$UNDOSTAT视图确定撤销表空间的大小
undo_tablespace_size = UR * UPS * blocksize (UR--UNDO_RETENTION,UPS--UNDOBLKS)
for example:undo_tablespace_size = 43200 * 626 * 8192 = 206 GB 再乘(1+10~20%)

保障撤销保持能力
sql>alter tablespace undotbs1 retention guarantee;
sql>alter tablespace undotbs1 retention noguarantee;
sql>select tablespace_name,contents,retention from dba_tablespaces;

监视加锁和解决锁冲突
加锁方式(文字费解,以后看)
ROW SHARE
ROW EXCLUSIVE
SHARE
SHARE ROW EXCLUSIVE
EXCLUSIVE

SQL>LOCK table hr.employees,hr.departments in EXCLUSIVE MODE;
sql>select * from hr.employees where mnager_id = 100 for update;
sql>lock table hr.employees in share row exclusive mode nowait;

检测锁冲突 OEM---performance---instance locks 很直观,自给看看了.kiss session(死锁处理)


死锁示例
会话1 时间 会话2
update employees set salary=salary 11:29 update employees set manager=100
*1.2 where employee_id=102; where employee_id=190;
update employees set salary=salary 11:44 update employees set manager=100
*1.2 where employee_id=190; *1.2 where employee_id=102;
ORA-00060:Deadlock detected while 11:45 还会等,如果会话1 rollback or comited
waiting for resource , 才执行完毕
此时commited 或者rollbakc吧

************$9 前瞻性数据库维护与性能监视**************************
oracle新增的特性
Automatic Workload Repository(AWR)
Automated Database Diagnostic Monitoring (ADDM)
Oracle 10g Tuning and Diagnostic advisor
DBA用两种方式来监视系统的管理和性能问题.
reactive monitoring(反应性监视)
proactive monitoring(前瞻性监视)
从各种源(数据目录,动态性能视图和操作系统等)中收集数据,还把基于代价的优化器统计数据广泛用于它的前瞻性监视.
AWR:MMON(memory monitor),MMNL(memory monitor light)二进程合作收集数据.MMON每60分醒来一次,从数据目录视图,动态性能视图和优化器中收集数据.然后存储在AWR中.
存储这些数据的表(AWR)由SYSMAN拥有.在SYSAUX表空间中.
激活AWR特性:设置statistics_level参数:BASIC,TYPICAL,ALL
修改时间间隔:
sql>execute dbms_workload_repository.modify_snapshot_settings(interval=>60,retention=>43200);(以分钟为单位,30天,1小时)
sql>begin DBMS_WORKLOAD_REPOSITORY.MODIFY_SNAPSHOT_SETTINGS(14400,60); end;

AWR运行完毕之后,ADDM自动分析收集到的统计数据,并把它们和前两个AWR快照所收集的统计数据进行比较.分析结果存储在AWR中.
ADDM会推荐可能的纠正方法,目标是最大限度降低DB TIME. db time = cpu时间和等待时间 (非空闲数据库用户累加所有非空闲用户的会话时间)


oem界面语言设置:
set NLS_LANG = american_america.ZHS16GBK
SET nls_lang =SIMPLIFIED CHINESE_CHINA.ZHS16GBK

OEM平时多观查。图不知如何理解。

使用数据目录视图查看ADDM分析
ADDM Data Dictionary Views
View Name :Description
DBA_ADVISOR_FINDINGS :Describes the findings identified by the ADDM analysis
DBA_ADVISOR_OBJECTS : Describes the objects that are referenced in the ADDM findings and recommendations
DBA_ADVISOR_RECOMMENDATIONS:Describes the recommendations made based on ADDM findings
DBA_ADVISOR_RATIONALE :Describes the rationale behind each ADDM finding

The following SQL statement shows a sample query on the DBA_ADVISOR_FINDINGS data dictionary view that identifies the type of performance problem that is causing the most impact
on the database:
SQL> SELECT task_id, type, message FROm dba_advisor_findings WHERE impact= (select MAX(impact) FROM dba_advisor_findings);

TASK_ID value shown in the query on DBA_ADVISOR_FINDINGS. A query on that view, using the TASK_ID of 164 returned by the ADDM session that had the potential for the greatest database
impact, returns the SQL statements shown here:
sql> SELECT attr4 FROM dba_advisor_objects WHERE task_id = 164;

The following query shows the recommendations for correcting the performance issues associated with TASK_ID 164, which was identified earlier as being the costliest database activity:
SQL> SELECT TRIM(attr1) ATTR1, TRIM(attr2) ATTR2, TRIM(attr3) ATTR3 FROM dba_advisor_actions WHERE task_id = 164;

The following example shows a sample query on the DBA_ADVISOR_RATIONALE view using the TASK_ID of 164 identified earlier:
SQL> SELECT message FROM dba_advisor_rationale WHERE task_id = 164;

ADDM诊断顾问(测试)
SQL Tuning Advisor
SQL Access Advisor
Memory Advisor
Mean Time To Recover Advisor
Segment Advisor
Undo Management Advisor

ADDM Alerts
测试下发送邮件报警……
测试下基准度量的收集……
ADDM怎样计算阀值:AWR保存每个度量标准的高位值和低位值。计算方法取决于制定该阀值的比较运算符和相关的高位值和低位值。

性能监视:
dba应该再开始任何调节努力之前准确测出系统当前正在怎样运行。(如各种基准度量标准等)
Sources of Tuning Information
The Alert log
Background and user trace files
Dynamic performance views
Data dictionary views
The Alert log:The Oracle Alert log records informational and error messages for a variety of activities that
have occurred against the database during its operation.
Background and user trace files:Oracle trace files are text files that contain session information for the process that created
them。
Dynamic performance views: V$SGASTAT V$EVENT_NAME V$SYSTEM_EVENT V$SESSION_EVENT V$SESSION_WAIT V$STATNAME V$SYSSTAT V$SESSTAT V$SESSION V$WAITSTAT
OEM广泛使用这些视图,不一个一个了解了。
Data dictionary views:DBA_TABLES Table DBA_INDEXES INDEX_STATS DBA_DATA_FILES DBA_SEGMENTS DBA_HISTOGRAMS DBA_OBJECTS
Identifying Unusable Objects Using Data Dictionary
SQL> SELECT owner, object_name, object_type FROM dba_objects WHERE status = 'INVALID';
ALTER PACKAGE my_package COMPILE;
ALTER PACKAGE my_package COMPILE BODY;
ALTER PROCEDURE my_procedure COMPILE;
ALTER FUNCTION my_function COMPILE;
ALTER TRIGGER my_trigger COMPILE;
ALTER VIEW my_view COMPILE;

SQL> SELECT owner, index_name, index_type FROM dba_indexes WHERE status = 'UNUSABLE';
SQL> ALTER INDEX hr.job_id_pk REBUILD;
用OEM实现查找编译索引重建,很方便。索引重建选择脱机或联机还可以制定“便笺式”表空间(存储中间结果)

Storing Database Statistics in the Data Dictionary
Some columns in the DBA views are not populated with data until the table or index referenced
by the view is analyzed.
The cost-based optimizer (CBO) uses these statistics to formulate efficient execution plans
for each SQL statement that is issued by application users.
Because of this, the statistics gathered and stored in the data dictionary views are sometimes
called optimizer statistics.
Automatic Collection of Statistics:DBCA创建的数据库,默认,定时执行
Manual Collection of Statistics(不推荐,有定时的job)
OEM:略
Manually Gathering Statistics Using DBMS_STATS:备份旧的统计数据,允许以后恢复,执行并行分析更快速收集统计数据等……
GATHER_INDEX_STATS GATHER_INDEX_STATS GATHER_SCHEMA_STATS GATHER_DATABASE_STATS
如:The following example shows how the DBMS_STATS packages can be used to gather statistics on the PRODUCT_HISTORY table in SH’s schema:
SQL> EXECUTE DBMS_STATS.GATHER_TABLE_STATS (‘SH’,’PRODUCT_HISTORY’);
The presence of accurate optimizer statistics has a big impact on two important measures of overall system performance: throughput and response time.

Important Performance Metrics
Throughput is another example of a statistical performance metric. Throughput is the amount of processing that a computer or system can perform in a given amount of time,
Throughput is an important measure when considering the scalability of the system. Scalability refers to the degree to which additional users can be added to the system without
system performance declining significantly.
Another important metric related to performance is response time. Response time is the amount of time that it takes for a single user’s request to return the desired result when using
an application
把服务器的I/O能力告诉ADDM
做I/O测试,我们的磁盘子系统默认的是10毫秒值

Summary
Oracle 10g provides many tools for proactively identifying and fixing potential performance
and management problems in the database. At the core of the monitoring system is the Automatic
Workload Repository (AWR), which uses the MMON background process to gather statistics
from the SGA and store them in a collection of tables owned by the user SYSMAN.
Following each AWR statistics collection interval, the Automatic Database Diagnostic Monitoring
(ADDM) feature examines the newly gathered statistics and compares them with the
two previous AWR statistics to establish baselines in an attempt to identify poorly performing
components of the database. The ADDM then summarizes these findings on the EM Database
Control main and Performance screens. Using these screens, you can identify and examine the
SQL statements that are contributing the most to DB Time. You can further explore the opportunities
for improving the performance or manageability of your database using the EM Database
Control advisors, which include the SQL Tuning Advisor, SQL Access Advisor, Memory
Advisor, Mean Time To Recover Advisor, Segment Advisor, and Undo Management Advisor.
Using the SQL Tuning Advisor, you can identify the SQL statements that have had the greatest
performance impact on the database. You can then examine these statements using the SQL
Access Advisor to determine if adjustments can be made to improve the execution paths for
these statements and therefore minimize their impact on total DB Time.
The Memory Advisor suggests changes that can potentially improve Oracle’s use of memory
within the SGA and PGA.
The Mean Time To Recover Advisor helps you determine if your database is properly configured
to meet service-level agreements for instance recovery in the event of a server failure or
an instance crash.
The Segment Advisor helps you determine which segments are using excess storage space and
which might benefit from a shrink operation. Shrinking these segments not only frees storage
space for use by other segments, but also minimizes the number of physical I/Os required to
access the segments.
Using the Undo Management Advisor, you can monitor and manage undo segments to minimize
the likelihood of ORA-01555, Snapshot Too Old error messages, and improve the application’s
overall read consistency.
You can also configure ADDM alerts to notify you via the EM Database Control or e-mail
whenever the performance of the database varies from established baselines or target levels.
Available storage space, excessive wait times, and high I/O activity are all examples of events
that you can monitor using alerts.
In addition to EM Database Control, you can find indicators of database performance in the
database Alert log, user and background trace files, data dictionary views, and dynamic performance
views. Some data dictionary views do not contain accurate information about the
segments in the database until after statistics are collected on those objects. Therefore, you can
automatically collect segment statistics through the use of EM Database Control jobs.
Invalid and unusable database objects also have a negative impact on performance and manageability.
You can monitor and repair invalid and unusable objects using the data dictionary
and the EM Database Control Administration screen.
EM Database Control summarizes several important performance metrics on the EM Database
Control main screen. These metrics include performance statistics for the host server, user
sessions, and instance throughput.

************$10 实现数据库备份************************************

Implementing Database Backups
As a database administrator, your primary goal is to keep the database open and available
for users, usually 24 hours a day, 7 days a week. Your partnership with the server’s system
administrator includes the following tasks:

Proactively solving common causes of failures

Increasing the mean time between failure (MTBF)

Ensuring a high level of hardware redundancy

Increasing availability by using Oracle options such as Real Application Clusters (RAC)
and Oracle Streams (an advanced replication technology)

Decreasing the
mean time to recover (MTTR)
by setting the appropriate Oracle initialization
parameters and ensuring that backups are readily available in a recovery scenario

Minimizing or eliminating loss of committed transactions by using archived redo logs,
standby databases, and Oracle Data Guard
RAC, Streams, Data Guard, and standby databases are beyond the scope of this
book, but are covered in more detail in advanced Oracle courseware.

Understanding and Configuring Recovery Components
The control files maintain the list of database files in the database, along with a record of the most recent database backups (if you are using RMAN for your backups). The checkpoint (CKPT) background process works in concert with the database writer (DBWn) process to manage the amount of time required for instance recovery; during instance recovery, the redo log files are used to synchronize the datafiles. For more serious types of failures such as media failures, archived redo log files are applied to a restored backup copy of a datafile to synchronize the datafiles and ensure that no committed transactions are lost. Finally, the Flash Recovery area, new to Oracle 10g , is a common area for all recovery-related files that makes your job much easier when backing up or recovering your database.

Control Files
The current log sequence number , which is a unique identifier that is incremented and recorded when an online redo log file is switched. Tablespace names,The most recent checkpoint information.等等
When you add a new file to the database or relocate a file, an Oracle server process immediately updates the information in the control file. Back up the control file after any structural
changes. The log writer (LGWR) process updates the control file with the current log sequence number. CKPT updates the control file with the recent checkpoint information. When the database is in ARCHIVELOG mode, the archiver (ARCn) processes update the control file with information such as the archive log filename and log sequence number.
Multiplexing Control Files Using an SPFILE
1. Alter the SPFILE while the database is still open:
SQL> ALTER SYSTEM SET CONTROL_FILES =
‘/ora01/oradata/MYDB/ctrlMYDB01.ctl’,
‘/ora02/oradata/MYDB/ctrlMYDB02.ctl’,
‘/ora03/oradata/MYDB/ctrlMYDB03.ctl’,
‘/ora04/oradata/MYDB/ctrlMYDB04.ctl’ SCOPE=SPFILE;
This parameter chan

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/35489/viewspace-84460/,如需转载,请注明出处,否则将追究法律责任。

转载于:http://blog.itpub.net/35489/viewspace-84460/

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值