第一章 安装
目标
完成本课,您将能够:
*列出新的安装特性
*列出安装性能的增加
安装新特性支持
*数据库存储选项
-文件系统
-自动存储管理(asm)
-裸设备
*数据库管理选项
-企业管理器网格控制器
-企业管理器数据库控制器
*数据库备份和恢复选项
*电子邮件通知选项
*cluster ready服务
*克隆
Oracle 10g报告下面的新安装特性:
配置使用oracleasm
安装和配置新的企业管理器(em)框架.
如果你选择使用oracle企业管理器数据库控制器,你可以有配置使用oracle推荐的默认备份策略的选项
如果你在安装的时候使用oracle企业管理器数据库控制器,你可以配置em发送警告到你知道的email地址.这些警告包括磁盘空间到了严重的界限或数据库非正常关闭.
rac的加强.10g安装支持rac新特性,尤其是安装cluster ready服务.
oracle的homes可以使用企业配置管理工具进行克隆.这个工具是附带在grid control中的.
安装的性能加强
内存需求
- 有数据库控制器的实例 512m
- 无数据库控制器的实例 256m
磁盘需求
- 1g的交换分区(或ram的两倍)
- /tmp目录下要有400m的空间
- oracle软件大概要0.5g到2.5g
- 1.2g可配置的数据库(可选)
- 2.4g的闪回区(可选)
- 减少了安装数据库的总大小
- 去掉了旧的选项
完全安装大概20min
只需要一张cd
查看安装前的必要条件
-查看是否有足够的临时空间
-64位和32位的问题
-检查正确的os
-检查ps的patch
-系统包
-系统/内核参数
-x 服务器的许可
-足够的交换空间
-非空的oracle_home
混杂的安装加强
sys和system密码只需要输入一次
干净的反安装
-没有文件留下
-oracle home外的文件都被清除
-windows中的注册表记录被清除
有特定的 oc4j需求
b_idsablestartmenu变量受到isv的支持
cd pack的内容
oracle database 10g cd
companion cd
oracle 9ias infrastructure cd
oracle database 10g client
oracle enterprise manger cd
oracle documentation 10g cd
oracle database 10g demos cd
companion cd 有
html db
workflow
ohs
sqlj,jpublisher
context knowledge
legato storage manager
examples
管理选项
如果你在安装的时候选择创建启动数据库,你可以看到很多屏幕问你配置启动数据库的下面的信息
命名
数据库字符集
schema样本
数据库管理
文件存储选项
文件系统,把文件存储在你配置的os文件系统上
asm asm文件是自动创建和配置的,你可以得到额外的镜向,条带化等益处.
裸设备(分区),上面没有文件系统的磁盘分区.
备份和恢复选项
安装的时候会提示你要不要进行自动备份
口令
安装的时候你可以为所有的用户设置同一个口令,也可以单独为他们设置.
第二章 服务器配置
完成本章之后,您将能够:
描述使用dbca安装完数据库之后oracle 10g功能性的支持
同时使用初始化参数的子集来简化实例配置
从dbca安装样本schema(可选的)
从oem中查看数据库使用统计
dbca的加强
dbca为oracle标准提供快速创建功能齐全的马上可以使用的数据库:
自动创建sysaux辅助表空间
应用闪回去,并且设置闪回备份和恢复策略
out-of-the-box管理资料库
自动统计的收集
自动ldap注册
oracle 10g为了简化当年的将来的自我管理活动,引进了许多特性上的改善.这次改善包括存储所有辅助元数据和工作负载信息和为了优化性能的监控工具的公用体系结构.这些改善都是被dbca完全支持和应用的.
新的属于系统的sysaux表空间为所有的不存在system表空间的辅助数据库元数据提供了集中的位置.它减少了创建摩尔表空间的数目,无论是种子数据库还是用户定义的数据库.dbca现在自动的配置默认的闪回区,这是为需要恢复的文件和数据库活动的统一存储位置.oem资料库,作业,事件子系统现在都是自动的配置,减少了人工安装的需要.以个新的嵌入和完全自我管理的资料库捕捉工作负载信息和与性能有关的统计,这样减少了管理成本.dbca配置的新目录减少了使用网络api配置ldap.ora的需要.
简化种子数据库
-简化初始化参数
-减小大小
-样本schema的可选安装
为磁盘存储的自动存储管理asm
现在oracle数据库的配置更容易.dba只需要注意少量几个初始化参数.参数现在分成两组,基本的和高级的参数.在大多数情况下,为了得到合理的性能,你之需要设置或修改基本参数,他们大概有20-25个.你现在可以时候dbca配置asm,为oracle数据库文件建立的和文件系统和卷管乐器的综向集成,为了常规和rac环境.
使用数据库控制器进行管理
在这个dbca屏幕上,你可以设置你的数据库使用grid控制器还是数据库控制器.当你运行dbca的时候,它要确定oracle管理代理已经在这个计算机上安装了.如果有,你就可以从下拉框选择oracle管理服务和grid control选项来进行中央化管理.当你完成安装的时候,这个服务作为被管理的目标是自动启动的.
如果你不中央管理你的oracle环境,你仍然可以使用em来管理你的数据库.em database control在你数据库安装的时候,自动安装了.你可以使用db control提供的基于web的特性来监控,管理你安装的单实例或集群数据库.你也可以配em为sysman用户接受电子邮件通知,当metric到了一定严重或警告的时候.
当你选择db control的时候,你还可以配置每天备份到闪回区.
sysaux和dbca
dbca支持强制创建sysaux表空间.
在数据库存储页,sysaux是tablespace文件夹必要的原始,你可以通过单击 存储标签或在datafile文件夹相应的sysaux入口来改变sysaux的数据库文件和存储参数.
数据文件和存储参数有默认的值.但你单击finish的时候,dbca就会和其它的数据库创建事件一起创建sysaux表空间和它的schema.所有的种子数据库都有sysaux表空间.
使用企业管理器
启动控制台
os> emctl start dbconsole
访问数据库控制器
http://hostname:5500/em
要提供sys/passwd as sysdba;
你要从一个客户端浏览器访问em 数据库控制器,必须要运行dbconsole进程.安装之后,dbconsole进程是自动会启动的.然后,如果这个集成没有启动,你可以向下面的命令行手工的启动它:
1.到$oracle_home/bin目录下
2.执行下面的命令: emctl start dbconsole
这样你就可以打开web浏览器,输入下面的url - ortnumber/em" target=_blank>http://hostnameortnumber/em
来访问em db control.
host那么是你的计算机的名字或地址.portnumber是em db control http的端口号,这是在安装的时候指定的.
默认的是5500,你可以在$oracle_home/install/portlist.ini文件中找到这个值.
如果实例启动了,em就会显示db control登录页.你必须使用授权访问db control的用户登录到数据库.一开始是sys用户,
使用在安装的时候你确定的sys用户的密码.从connect as 下拉框选sysdba,然后点登录.这样就会出现db control的主页.
数据库克隆
在你成功的配置调整和测试新的实例之后,你也许需要克隆数据库到一个已有的oracle home.你可以使用em clone database向导来完成克隆.要克隆一个数据库,你可以到要克隆的数据库的维护页,然后在deployment区点击clone 数据库.
克隆数据库工具有下列特性:
克隆数据库可以从8.1.7或后来的版本
可以在源数据库打开的时候进行克隆
备份数据文件,把它copy到指定的oracle home下,然后通过备份的数据库文件和归档恢复数据库来创建新的数据库.新的数据库跟到备份开始的源数据库一模一样.
在指定的oracle home下创建新的数据库实例,密码文件,设置网络文件,根据源实例配置创建初始化参数文件和spfile,然后启动新的实例到open模式.
clone database工具是使用rman来完成数据库克隆的.
metalink的集成
oem 10g 通过内置的metalink集成大大简化了安装补丁.em会自动的警告你关键更新和系统需要指定补丁的标注.你可以使用em patch
向导来看哪些临时补丁可以安装.你还可以使用patch向导来选择补丁和查看你的系统是否需要这个补丁.你可以直接从em看到补丁的详细信息已经readme.按照下面的步骤访问补丁向导
1.在db control主页选maintenance标签
2.在deployments区下面
第三章 装载和卸载数据
目标
完成本课,您将会:
*在不同的平台传输表空间
*理解数据泵的总体结构
*监控数据泵作业
*使用数据泵来进行导入和导出
*为数据的population创建外部表
*定义外表属性
跨平台可传输的表空间
在数据仓库和数据超市之间简化数据的分发.
容许数据库从一个平台移植到另一个平台
支持的平台(略)
跨平台的可传输表空间
在oracle以前的版本中,可传输的表空间的特性可以让表空间在相同的体系结构和操作系统之间迁移.
oracle 10g进一步的让你使用可传输的表空间的特性,在平台之间进行传输.这样简化了从数据仓库到数据超市之间的分发,超市通常是运行在较小的平台上的.它也容许数据库通过重新建立数据字典和传输用户表空间来从一个平台移植到另外一个平台.
为了能够从一个平台到另外一个平台传输数据文件,你需要保证源系统和目标系统运行在支持的平台上.另外支持平台的数目不是很多...
需要相同的字符集.
最小兼容性
源和目标数据库都必须设置compatible为10.0.0或更高
数据文件头是平台相关的
在传输之前,确信所有的只读和脱机文件是平台相关的
两个必须是10g数据库;只读和脱机的意思是文件头无log号和checkpoint号
传输表空间的过程
要从一个平台传输表空间到另外一个平台,这个表空间的数据文件必须转换到源和目标数据库都能认的格式.尽管在10g,磁盘结构都符合公共格式,但是在源和目标数据库用不同的高低位也是可以的.当要传输到不同的高低位的平台的时候,你需要使用rman的convert命令来转换高低位.这个操作既可以在源也可以在目标数据库做.
如果平台的高低位是相同的,那就没有必要做转换了.基本上过程更以前的一致,除非平台使用不同的高低位.
查看平台的高低位
select tp.endian_format
from v$transportable_platform tp,
v$database d
where tp.platform_name = d.platform_name;
数据文件转换:例(略)
clob的例外
在转换高低位的时候,clob列是跳过的.
当你select的时候,才转换.
你可以使用create table as select 来进行转换.
动态性能视图的改变
v$database-------> platform_id
platform_name
endian_format
v$transportable_platform
数据泵概览
高速数据和元数据谦虚的服务器端工具
通过dbms_datapumb调用的结构
提供新一带的export和import工具:expdb,impdb,web页面的接口
包含了原来的exp/imp的全功能
数据泵通用体系结构
direct path api(dpapi) :10g支持直接的path api接口,这样就小化数据转换和在转载和卸载的解析时间.
外表服务:数据泵使用新的oracle_datapump访问驱动这样就让外表了读写包含二进制流文件
dbms_metadata包被工作进程用来在所有的元数据的装载和卸载.数据库对象的定义存储是用xml而不是sql.
dbms_datapump包包含了为批数据和元数据迁移高速导入和导出工具的api.
sql*loader客户端已经集成到外表中,这样为外表访问参数提供了自动迁移loader控制文件.
expdp和impdp客户端是瘦客户端,通过调用dbms_datapump包来初始化和监控数据泵操作.今天他们引入了新的功能,他们依然跟以前的exp和imp兼容.
像db control,复制,传输表空间和用户应用程序都能从这样的体系结构中受益.sqlplus也许可以为了对正在进行的操作进行简单的状态查询提供了dbms_datapump客户端
数据泵导出导入概览
作为后台作业提交,失败了可以继续,每个用户只有一个进程,数据写入master表.
数据泵导出导入工具是10g的新工具.尽管他们跟以前的exp/imp很像,但是他们是单独的产品.
data pump export是为卸载数据和元数据到一套操作系统文件叫做dump文件集的工具.数据泵导入是用来把dump文件集的元数据和数据导入要目标系统中.
数据泵api在服务器端访问它的文件而不是在客户端.
这些工具也可以用来在远程数据库导出数据,或直接从源数据库导入到目标数据库.这就是网络模式,这种模式一般在导入数据到只读数据库特别的有用.
在每个数据泵操作的核心是主表(master table),用户运行数据泵作业的时候创建的表.主表维护作业的所有的方便.
在基于文件的导出作业中,主表建立了,在最后一步写到dump文件集中.相反的,把主表导入到当前用户的schema中是基于文件导入操作的第一步,也用在顺序创建所有要导入的对象.
当数据泵作业正常的完成的时候,主表被删.
数据泵导入导出的益处
数据访问方法
直接路径
外表
分离和重新连接到运行长时间的作业
重新启动数据泵作业
细度对象选择
显示的指定版本
并行操作(企业版)
估算导出作业空间消耗
在分步式环境中的网络模式
在导入的时候重新计算承受力
数据泵自动决定数据访问的方式.这些可以是直接路径也可以是外表.
不影响作业可以分离或重新连接到长运行的作业可以让你从多个地方来监控作业.所有停止的数据泵作业可以在不丢失数据的情况下重新启动,尽管足够的原信息仍然没有受到影响.不管这个作业是自愿的还是由于错误不情意的停止都没有关系.
exclude,include,content参数用在细度对象筛选上.
你可以为你要移动的对象知道版本参数来创建dump文件集,这样就会更以前的oracle版本兼容来支持数据泵.这个参数用来保留在以后的版本中.
你也可以使用parallel参数在指定活动执行用来代表这个export的作业服务器进程的最大数.
你也可以使用estimate_only参数来估计导出作业将消耗多少空间.
网络模式可以让你从远程数据库中直接导出为dump文件集.这可以通过数据库连接到源数据库来完成.
在导入的适合,你可以改变目标数据文件的名称,schema,和表空间.
总体实现概览
客户端进程对数据泵api进行调用.一旦作业启动了,客户端就不需要了.多个客户端为了监控或公主作业可以连接或断开这个作业.
当客户端登录到oracle数据库的适合,就创建了shadow进程.它为数据泵api的请求服务.当受到dbms_datapump.open请求的适合,shadow创建作业,这个作业主要包括创建master表,创建为各种进程通讯的aq对象,创建主控制进程.一旦作业运行了,shadow的主要任务通常包括为客户接受get_status请求.如果客户端断开,shadow也就没有了.
主控制进程控制数据泵的执行和顺序.它维护作业的状态,作业的描述,主表的重新启动和dump文件的信息.这个进程名称为dmnn.
接受到start_job的请求之后,主进程就根据parallel参数的值来创建许多工作进程.工作进程执行mcp受到请求的工作,主页是装载和卸载元数据和数据.工作进程的名称是dwnn.
如果外表的路径是作为装载和卸载数据的访问方法,工作进程根据装载和卸载的作业协调许多并行服务器进程.这样使得分区内的装载和卸载成为可能.
数据泵直接路径需要考虑的事项
细度访问控制的表在插入和选择模式是可以用的
lob类有域索引
现在有clustered的表
分区表的全局索引有单一分区的装载
bfile或不透明类型的列
引用完整性约束
有嵌入透明类型的varray列
数据泵支持对表的行数据的两种访问访问
使用直接路径api的直接路径
外表
数据泵自动的为每个表选择最合适的访问方法
当一个表的结构容许它和期望最大的单流性能的时候数据泵就使用直接路径装载和卸载数据.
然后如果上面的条件出现了,或者表含有加密列,或导入的表在装载和卸载的时候分区不一样,数据泵就使用外表而不是直接路径去移动数据.
数据泵文件位置
数据泵文件有三种类型
dump文件
日志文件
sql文件
绝对路径是不支持的
必须使用oracle路径对象
文件优先级
per-file路径
directory参数
data_pump_dir环境变量
dump文件包含要迁移的数据和元数据
log文件记录这个操作相关的信息
sql文件记录sqlfile操作的输出
因为数据泵是基于服务器的而不是客户端的,数据泵文件访问的是oracle的相对路径.为了安全的考虑,是不支持绝对路径的.
per-file路径对象必须为每个dump文件,log文件,sql文件指定.他们是通过冒号分隔的.
数据泵导入导出客户端通过directory参数来指定目录对象.这些路径对象描述了要访问的文件的位置.
你可以定义环境变量data_pump_dir,指定目录对象名而不用directory参数.数据泵asmm简化了sga的配置.过去,你要手工指定分配给数据库buffer cache,shared pool,Java pool和large pool的大小.
这通常都是一个挑战.如果设置不够大,会导致性能很差,和内存溢出错误,如果设置过大,会导致浪费内存.
这个特性可以让你指定所有sga组件的总大小.oracle数据库有周期的重新分配这些内存.
在以前的版本中,你不能对sga的总大小进行控制,因为内存的固定的,对其它的内部元数据进行分配,除了这个总大小就是用户指定的sga参数,额外的内出通常是10到20m.
新的sga初始化参数sga_target报告sga所有的内存,包括自动设置组件的,手工设置组件还有启动的时候的其它内部分配.
数据库控制和asmm
你可以使用db control来配置asmm
1.点管理
2.在实例部分选内存参数
3.选sga
4.在asmm点enable,然后输入总的sga大小.
手工配置
自动管理的只有四个部分
db buffer cache
shared pool
large pool
java pool
你可以通过设置sga_target来配置asmm.
如果你为sga_target设置了非零值,下面四个内存池是自动配置大小的:
database buffer cache
shared pool
large pool
java pool
如果你把sga_target设置为零,asmm关闭了.默认的值就是0.
在过去的版本中的单独参数没有作废.
下面的参数还是手工设置大小的:
log buffer
other buffer caches(keep/recycle,other block sizes)
streams pool
fixed sga和其它的内部分配的
自动调整sga参数的行为
当sgs_target没有设置或设置为零的时候
-自动调整的参数向以前那样
-例外:shared_pool_size
select sum(bytes)/1024/1024 from v$sgastat
where pool= ’shared pool’;
当sga_target设置了
-默认的自动设置的参数为0
-如果非零值就是下限
如果sga_target没有设或等于零,自动调整的sga参数就向以前的一样.然而,shared_pool_size是个例外:内部分布的元数据(例如用在进程和会话数据)现在已经包括在shared_pool_size参数中.这样,你为了分配这些内存,当升级你的oracle 10g数据库的时候需要加大你的shared_pool_size参数.例如,如果你在以前的版本中的共享池是256m,你的内部分配是32m,那为了得到同样的效果,在你的10g数据库中要设置为288m.上面的查询计算包括内部分配的shared_pool的大小.在运行升级之前,你首先要进行这次查询.
当sga_target设为非0,自动调整的参数默认都是0.他们的大小都是通过asmm算法自动设置的.例如,sga_target设为8g,shared_pool_size是1g,这样就告诉asmm算法不会把共享池设为1g以下,尽管更大的值更好.你也可以使用下面的查询看自动调整组件的大小.
select component,current_size/1024/1024
from v$sga_dynamic_components;
手工调整sga参数的行为
一些组件不是自动调整的:
-keep 和recycle 缓冲区
-块倍数的缓冲
-log 缓冲
-streams池
这些参数是用户指定的
精确的控制这些组件的大小
使用v$parameter视图
select name,value,isdefault
from v$parameter
where name like ’%size’;
重新设置sga_target的大小
sga_target初始化参数
是动态的
最大可以是sga_max_size的大小
可以减少到所有组件的最小值
sga_target影响仅仅是自动调整的组件
sga_target是动态参数,可以通过db control或alter system命令修改.
sga_target最大可以是sga_max_size的大小.它可以减少到任一个自动调整的组件到达了最小值,要么是用户指定的最小值,
要么是内部决定的最小值.
如果你增加sga_target的大小,增加的内存根据自动调整的测量分布到自动调整的组件上.
如果你减小sga_target的大小,内存就通过自动调整测量从一个或多个自动调整组件上取消.这样,sga_target的变化仅影响自动调整组件的大小.
取消自动共享内存管理
设置sga_target为零取消自动调整
自动参数设置为他们的值
sga的大小不影响
你可以动态的设置sga_target为零来取消自动共享内存管理.这个时候,所有的自动调整的参数都是相应组件当前的大小,即使用户早期设置了不同的非0值.
手工的改变动态sga参数的大小
对于自动调整的参数,手工的改变它的大小:
如果新的值的比当前的值大,立刻就会生效.
如果新的值比当前值小,就会改变到最小值
手工改变参数的大小影响sga的可调部分
当重新设置了sga_target的大小的时候,只有新值比当前组件的值大的时候才会立刻改变.如果你设置sga_target为8g,设置shared_pool_size为2g,你确信为了容纳必要的内存,共享池至少2g.当你把共享池调为1g的时候,不会立刻改变共享池的大小.它只会告诉自动内存调整算法在需要的时候,会把共享池改为1g.另外,如果一开始共享池是1g,你把它设置为2g,那么马上就生效.在重新改变操作中使用的内存是从一个或几个其它的自动调整的组件中得到了,手工的组件不受影响.
手工改变大小的组件也可以动态的修改,但是他们的不同就是马上就是设置的值.这样,如果手工组件的值增加,额外的内存就是从一个或多个自动调整的组件中获得的.如果手工组件的值减少了,释放出来的内存就给了自动调整大小的组件.
自动优化统计收集:概览
oracle8i提供dbms_stats包
dba决定怎么去收集统计
dba决定什么时候去收集统计
oracle9i决定怎么去收集统计
统计可以使用单个命令仅此收集
dba决定什么时候去收集统计
oracle10g完全自动收集统计的
dba不用去收集统计
默认就进行表监控
为了查询优化器产生更好的执行计划,在对象上必要有合法的统计.在过去,统计收集(或让作业去做)是典型的dba的责任.另外,有必要对改变的对象进行跟踪,来看什么时候有必要进行统计收集.如果对象的统计很陈旧或没有统计,就可能产生无效的sql执行计划.
在oracle9i(假定使用了监控)下面的dbms_status命令可以用来产生相应的统计"
dbms_stats.gather_schema_stats(schema_name,options=>’gather auto’);
这个命令收集优化的统计,包括柱状图,对那些对象那些当前的统计是陈旧的.然后,你必须打开监控,并且有计划的执行这个命令.
在oracle10g中,自动优化统计收集自动这些任务,减少了你的收集统计的必要.
这个特性减少了由于sql语句统计失效或陈旧而导致性能很差的可能性,通过提高查询优化器的最家的输出提高了sql执行的性能.
gather_stats_job
默认的,在数据库创建的时候就创建了gather_stats_job,执行dbms_stats.gather_database_stats_job_proc过程,使用schedular.
默认的定义了两个窗口.
weekenight_window定义在下午10点到上午六点.从周一到周五.
weekend_window定义从上午12电到周一12点.
默认的,maintenance_window_group组包含这两个窗口也已经邓菁来源.
gather_stats_job使用特定的计划任务叫auto_tasks_job_class.这个类是自动创建的,而且跟特性的资源消费者组联系,这个消费者组叫做auto_task_consumer_group.这样确保任务使用auto_task_consumer_group.如果你想控制gather_stats_job的资源使用,你之需要为maintenance_window_group定义一个资源管理者组来为auto_task_cousumer_group分配资源.
为了让gather_stats_job工作正常,你必须确定statistics_level初始化参数设置为typical.
改变gather_stats_job的计划任务
你可以为定义的管理窗口来自定义开放时间.例如,你可以改变他们的时间间隔和重复的频度.你也可以添加资源计划到这些窗口中,来控制gather_stats_job使用的资源.
从db control主页,点击管理标签,然后在scheduler部分点击windows链接.就让你到了scheduler windows页.这里你可以选中一个窗口,并且可以点edit来修改它的特性.在这页,你还可以打开或关闭特定的窗口.只要你在下拉框为特定的窗口选择相应的行为,点ok就可以了.
锁定统计
阻止自动收集
主要用在可变的表中
-没有统计的锁定,意味着动态的取样.
-锁定代表值的统计
在oracle10g,你可以看到特定表的统计,通过新的dbms_stats包的lock_table_stats过程.你可以锁定一个表的统计,来阻止自动统计收集,这样你就可以使用动态的取样.你也可以在某个时间点锁定可变的表的统计,当它满了的时候.
你可以可以使用lock_schema_stats跑在sechma基本锁定统计.
你可以查看user/all/dba_tab_statistics视图来看stattype_locked列来看一个表是不是锁定了.
你也可以使用unlock_table