当前位置:文档之家› Oracle

Oracle

一、SGA

1、Shared pool tunning

Shared pool的优化应该放在优先考虑,因为一个cache miss在shared pool中发生比在data buffer 中发生导致的成本更高,由于dictionary数据一般比library cache中的数据在内存中保存的时间长,所以关键是library cache的优化。

Gets:(parse)在namespace中查找对象的次数;

Pins:(execution)在namespace中读取或执行对象的次数;

Reloads:(reparse)在执行阶段library cache misses的次数,导致sql需要重新解析。

1)检查v$librarycache中sql area的gethitratio是否超过90%,如果未超过90%,应该检查应用代码,提高应用代码的效率。

Select gethitratio from v$librarycache where namespace=’sql area’;

2) v$librarycache中reloads/pins的比率应该小于1%,如果大于1%,应该增加参数

shared_pool_size的值。

Select sum(pins) “executions”,sum(reloads) “cache misses”,sum(reloads)/sum(pins) from v$librarycache;

reloads/pins>1%有两种可能,一种是library cache空间不足,一种是sql中引用的对象不合法。

3)shared pool reserved size一般是shared pool size的10%,不能超过50%。

V$shared_pool_reserved中的request misses=0或没有持续增长,或者free_memory大于shared pool reserved size的50%,表明shared pool reserved size过大,可以压缩。

4)将大的匿名pl/sql代码块转换成小的匿名pl/sql代码块调用存储过程。

5)从9i开始,可以将execution plan与sql语句一起保存在library cache中,方便进行性能诊断。从v$sql_plan中可以看到execution plans。

6)保留大的对象在shared pool中。大的对象是造成内存碎片的主要原因,为了腾出空间许多小对象需要移出内存,从而影响了用户的性能。因此需要将一些常用的大的对象保留在shared pool中,下列对象需要保留在shared pool中:

a. 经常使用的存储过程;

b. 经常操作的表上的已编译的触发器

c. Sequence,因为Sequence移出shared pool后可能产生号码丢失。

查找没有保存在library cache中的大对象:

Select * from v$db_object_cache where sharable_mem>10000 and type in

('PACKAGE','PROCEDURE','FUNCTION','PACKAGE BODY') and kept='NO';

将这些对象保存在library cache中:

Execute dbms_shared_pool.keep(‘package_name’);

对应脚本:dbmspool.sql

7)查找是否存在过大的匿名pl/sql代码块。两种解决方案:

A.转换成小的匿名块调用存储过程

B.将其保留在shared pool中

查找是否存在过大的匿名pl/sql块:

Select sql_text from v$sqlarea where command_type=47 and length(sql_text)>500;

8)Dictionary cache的优化

避免出现Dictionary cache的misses,或者misses的数量保持稳定,只能通过调整

shared_pool_size来间接调整dictionary cache的大小。

Percent misses应该很低:大部分应该低于2%,合计应该低于15%

Select sum(getmisses)/sum(gets) from v$rowcache;

若超过15%,增加shared_pool_size的值。

2、Buffer Cache

1)granule大小的设置,db_cache_size以字节为单位定义了default buffer pool的大小。

如果SGA<128M,granule=4M,否则granule=16M,即需要调整sga的时候以granule为单位增加大小,并且sga的大小应该是granule的整数倍。

2) 根据v$db_cache_advice调整buffer cache的大小

SELECT

size_for_estimate,buffers_for_estimate,estd_physical_read_factor,estd_physical_reads FROM v$db_cache_advice WHERE NAME='DEFAULT' AND advice_status='ON' AND block_size=(SELECT Value FROM v$parameter WHERE NAME='db_block_size');

estd_physical_read_factor<=1

3) 统计buffer cache的cache hit ratio>90%,如果低于90%,可以用下列方案解决:

增加buffer cache的值;

使用多个buffer pool;

Cache table;

为 sorting and parallel reads 建独立的buffer cache;

SELECT NAME,value FROM v$sysstat WHERE NAME IN ('session logical reads','physical reads','physical reads direct','physical reads direct(lob)');

Cache hit ratio=1-(physical reads-physical reads direct-physical reads direct (lob))/session logical reads;

Select 1-(phy.value-dir.value-lob.value)/log.value from v$sysstat log, v$sysstat phy, v$sysstat dir, v$sysstat LOB where https://www.doczj.com/doc/3c3660762.html,='session logical reads' and https://www.doczj.com/doc/3c3660762.html,='physical reads' and https://www.doczj.com/doc/3c3660762.html,='physical reads direct' and https://www.doczj.com/doc/3c3660762.html,='physical reads direct (lob)';

影响cache hit ratio的因素:

全表扫描;应用设计;大表的随机访问;cache hits的不均衡分布

4)表空间使用自动空间管理,消除了自由空间列表的需求,可以减少数据库的竞争

3、其他SGA对象

1)redo log buffer

对应的参数是log_buffer,缺省值与 OS相关,一般是500K。检查v$session_wait中是否存在log buffer wait,v$sysstat中是否存在redo buffer allocation retries

A、检查是否存在log buffer wait:

Select * from v$session_wait where event=’log buffer wait’ ;

如果出现等待,一是可以增加log buffer的大小,也可以通过将log 文件移到访问速度更快的磁盘来解决。

B、Select name,value from v$sysstat where name in (‘redo buffer allocation retries’,’redo entries’)

Redo buffer allocation retries接近0,小于redo entries 的1%,如果一直在增长,表明进程已经不得不等待redo buffer的空间。如果Redo buffer allocation retries过大,增加log_buffer 的值。

C、检查日志文件上是否存在磁盘IO竞争现象

Select event,total_waits,time_waited,average_wait from v$system_event where event like ‘log file switch completion%’;

如果存在竞争,可以考虑将log文件转移到独立的、更快的存储设备上或增大log文件。

D、检查点的设置是否合理

检查alert.log文件中,是否存在‘checkpoint not complete’;

Select event,total_waits,time_waited,average_wait from v$system_event where event like ‘log file switch (check%’;

如果存在等待,调整log_checkpoint_interval、log_checkpoint_timeout的设置。

E、检查log archiver的工作

Select event,total_waits,time_waited,average_wait from v$system_event where event like ‘log file switch (arch%’;

如果存在等待,检查保存归档日志的存储设备是否已满,增加日志文件组,调整

log_archiver_max_processes。

F、DB_block_checksum=true,因此增加了性能负担。(为了保证数据的一致性,oracle的写数据的时候加一个checksum在block上,在读数据的时候对checksum进行验证)

2)java pool

对于大的应用,java_pool_size应>=50M,对于一般的java存储过程,缺省的20M已经够用了。

3)检查是否需要调整DBWn

Select total_waits from v$system_event where event=’free buffer waits’;

二、数据库配置和IO问题

降低磁盘的IO

分散磁盘的IO

表空间使用本地管理

1、将文件分散到不同的设备上

1)将数据文件与日志文件分开 2)减少与服务器无关的磁盘IO

3)评估裸设备的使用 4)分割表数据

2、表空间的使用

系统表空间保留给数据字典对象

创建本地管理表空间以避免空间管理问题

将表和索引分散到独立的表空间中

使用独立的回滚表空间

将大的数据库对象保存在各自独立的表空间中

创建一个或多个独立的临时表空间

下列数据库对象应该有单独的表空间:

数据字典、回滚段、索引、临时段、表、大对象

3、检查IO统计数据

Select phyrds,phywrts,https://www.doczj.com/doc/3c3660762.html, from v$datafile d,v$filestat f where f.file#=d.file# order by https://www.doczj.com/doc/3c3660762.html,;

检查最有可能引起磁盘IO瓶颈的文件。

4、分割文件

可以通过RAID和手工进行

Alter table table_name allocate extent (datafile ‘fiile_name’ size 10M);

但手工操作工作量很大。

5、优化全表扫描操作

1)检查有多少全表发生:

Select name,value from v$sysstat where name like ‘%table scan%’;

table scans (short tables)/ table scans (long tables)与全表扫描相关,如果table scans (long tables)的值很高,说明大部分的table access 没有经过索引查找,应该检查应用或建立索引,要确保有效的索引在正确的位置上。

合理的DB_FILE_MULTIBLOCK_READ_COUNT能减少table scan需要调用的IO次数,提高性能(与OS 相关)。

2)查看full table scan操作:

Select sid,serial#,opname,target,to_char(start_time,’HH24:MI:SS’)

“start”,(sofar/totalwork)*100 “percent_complete” from v$session_longops;

通过v$session_longops里的sql_hash_value与v$sqltext关联,可以查询导致full table scan 的sql。

6、Checkpoint

Checkpoint进行的操作:DBWn进行IO操作;CKPT更新数据文件头和控制文件。

经常进行Checkpoint的结果:减少恢复所需的时间;降低了系统运行时的性能。

LGWR以循环的方式将日志写到各个日志组,当一个日志组满时,oracle server必须进行一个Checkpoint,这意味着:DBWn将对应log覆盖的所有或部分脏数据块写进数据文件;CKPT更新数据文件头和控制文件。如果DBWn没有完成操作而LGWR需要同一个文件,LGWR只能等待。

在OLTP环境下,如果SGA很大并且checkpoint的次数不多,在Checkpoint的过程中容易出现磁盘竞争的状况,在这种情况下,经常进行Checkpoint可以减少每次Checkpoint涉及到的脏数据块的数目。

调节Checkpoint次数的办法:

增大日志文件;增加日志组以增加覆盖的时间间隔。

7、日志文件

建立大小合适的日志文件以最小化竞争;

提供足够的日志文件组以消除等待现象;

将日志文件存放在独立的、能快速访问的存储设备上(日志文件可以创建在裸设备上)。日志文件以组的方式组织管理,每个组里的日志文件的内容完全相同。

8、归档日志文件

如果选择归档模式,必须要有两个或两个以后的日志组,当从一个组切换到另一个组时,会引起两种操作:DBWn进行Checkpoint;一个日志文件进行归档。

归档有时候会报错:

ARC0:Beginning to archive log# 4 seq# 2772

Current log# 3 seq# 2773……

ARC0: Failed to archive log# 4 seq# 2772

ARCH: Completed to archiving log#4 seq# 2772

建议init参数修改如下:

log_archive_max_processes=2

#log_archive_dest = ‘/u05/prodarch’

log_archive_dest_1 = "location=/u05/prodarch MANDATORY’

log_archive_dest_state_1 = enable

log_archive_dest_2 = "location=/u05/prodarch2 OPTIONAL reopen=10" (或其它目录)

log_archive_dest_state_2 = enable

log_archive_min_succeed_dest=1

log_archive_dest_state_3 = DEFER

log_archive_dest_state_4 = DEFER

log_archive_dest_state_5 = DEFER

三、优化排序操作

1、概念

服务器首先在sort_area_size指定大小的内存区域里排序,如果所需的空间超过sort_area_size,排序会在临时表空间里进行。在专用服务器模式下,排序空间在PGA中,在共享服务器模式下,排序空间在UGA中。如果没有建立large pool,UGA处于shared pool中,如果建立了large pool,UGA就处于large pool中,而PGA不在sga中,它是与每个进程对应单独存在的。

PGA:program global area,为单个进程(服务器进程或后台进程)保存数据和控制信息的内存区域。PGA与进程一一对应,且只能被起对应的进程读写,PGA在用户登录数据库创建会话的时候建立。

有关排序空间自动管理的两个参数:

Pga_aggregate_target: 10M-4000G,等于分配给oracle instance的所有内存减去SGA后的大小。 Workarea_size_policy: auto/manual,只有Pga_aggregate_target已定义时才能设置为auto。

这两个参数会取代所有的*_area_size参数。

措施:

尽可能避免排序;尽可能在内存中排序;分配合适的临时空间以减少空间分配调用。

2、需要进行排序的操作:

A、创建索引;

B、涉及到索引维护的并行插入

C、order by或者group by(尽可能对索引字段排序)

D、Distinct

E、union/intersect/minus

F、sort-merge join

G、analyze命令(仅可能使用estamate而不是compute)

3、诊断和措施

Select * from v$sysstat where name like ‘%sort%’;

Sort(disk):要求Io去临时表空间的排序数目

Sort(memory):完全在memory中完成的排序数目

Sort(rows):被排序的行数合计

Sort(disk)/ Sort(memory)<5%,如果超过5%,增加sort_area_size的值。

SELECT disk.Value disk,mem.Value mem,(disk.Value/mem.Value)*100 ratio FROM v$sysstat disk,v$sysstat mem WHERE https://www.doczj.com/doc/3c3660762.html,='sorts (memory)' AND https://www.doczj.com/doc/3c3660762.html,='sorts (disk)';

4、监控临时表空间的使用情况及其配置

Select

tablespace_name,current_users,total_extents,used_extents,extent_hits,max_used_blocks,max_s ort_blocks FROM v$sort_segment ;

Column Description

CURRENT_USERS Number of active users

TOTAL_EXTENTS Total number of extents

USED_EXTENTS Extents currently allocated to sorts

EXTENT_HITS Number of times an unused extent was found in the pool

MAX_USED_BLOCKS Maximum number of used blocks

MAX_SORT_BLOCKS Maximum number of blocks used by an individual sort

临时表空间的配置:

A、initial/next设置为sort_area_size的整数倍,允许额外的一个block作为segment的header

B、pctincrease=0

C、基于不同的排序需要建立多个临时表空间

D、将临时表空间文件分散到多个磁盘上

四、诊断latch竞争

1、概念

Latch是简单的、低层次的序列化技术,用以保护SGA中的共享数据结构,比如并发用户列表和buffer cache里的blocks信息。一个服务器进程或后台进程在开始操作或寻找一个共享数据结构之前必须获得对应的latch,在完成以后释放latch。不必对latch本身进行优化,如果latch存在竞争,表明SGA

的一部分正在经历不正常的资源使用。

1)Latch的作用:

A、序列化访问:保护SGA中的共享数据结构;保护共享内存的分配。

B、序列化执行:避免同时执行某些关键代码;避免互相干扰。

2)Latch请求的两种类型:

A、willing-to-wait:请求的进程经过短时间的等待后再次发出请求,直到获得latch

B、immediate:如果没有获得latch,请求的进程不等待,而是继续处理其他指令。

2、检查Latch竞争

检查latch free是不是主要的wait event:

Select * from v$system_event order by time_waited;

检查latch的使用情况:

Select * from v$latch:

与willing-to-wait请求有关的列:gets、misses、sleeps、wait_time、cwait_time、spin_gets 与immediate请求有关的列:immediate_gets、immediate_misses

Gets: number of successful willing-to-wait requests for a latch;

Misses: number of times an initial wiling-to-wait request was unsuccessful;

Sleeps: number of times a process waited after an initial willing-to-wait request;

Wait_time: number of milliseconds waited after willing-to-wait request;

Cwait_time: a measure of the cumulative wait time including the time spent spinning and sleeping,the overhead of context switches due to OS time slicing and page faults and interrupts; Spin_gets: gets that misses first try but succeed after spinning.

Immediate_gets: number of successful immediate requests for each latch;

Immediate_misss: number of unsuccessful immediate requests for each latch;

一般无需调整latch,但是下列的措施是有用的:

A、对处于竞争中的latch做进一步的调查

B、如果竞争主要存在于shared pool和library cache中,可以考虑调整应用

C、如果进一步的调查显示需要调整shared pool和buffer cache,就进行调整

Select * from v$latch where name like ‘%shared pool%’ or name like ‘%library cache%’;

如果竞争是在shared pool或library cache上,表示下列集中情况:

A、不能共享的sql,应检查他们是否相似,考虑以变量代替sql中的常量:

Select sql_text from v$sqlarea where executions=1 order by upper(sql_text);

B、共享sql被重新编译,考虑library cache的大小是否需要调整:

SELECT sql_text,parse_calls,executions FROM v$sqlarea where parse_calls>5;

C、library cache不够大。

五、Rollback(undo) Segment 优化

1、概念

Transaction以轮循的方式使用rollback segment里的extent,当前所在的extent满时就移动到下一个extent。可能有多个transaction同时向同一个extent写数据,但一个rollback segment block 中只能保存一个transaction的数据。

Oracle 在每个Rollback segment header中保存了一个transaction table,包括了每个rollback segment中包含的事务信息,rollback segment header的活动控制了向rollbak segment写入被修改的数据。rollback segment header是经常被修改的数据库块,因此它应该被长时间留在buffer cache中,为了避免在transaction table产生竞争导致性能下降,应有多个rollback segment或应尽量使用oracle server 自动管理的rollback segment。

2、诊断rollback segment header的竞争

如果rollback segment 由手工管理,下列措施诊断rollback segment header的竞争

SELECT class,count FROM v$waitstat WHERE class LIKE '%undo%' ;

SELECT Sum(Value) sum FROM v$sysstat WHERE NAME IN ('db block gets','consistent gets');

任何类型的等待次数(count)与总请求数(sum)的比率,不能超过1%。

select sum(waits)*100/sum(gets) "Ratio", sum(waits) "Waits", sum(gets) "Gets" from

v$rollstat;

waits的汇总数与gets的汇总数的比率应低于1%,如果超过1%,应创建更多的rollback segment。

下列字段数值如果大于0,则表明在rollback segment header上存在竞争:

A、v$rollstat 中的waits

B、v$waitstat中的undo header行

C、v$system_event中的undo segment tx slot事件

3、消耗更少的rollback segment

1)如果是删除表里所有的数据,尽可能使用trauncate而不是delete。

2)在应用中允许用户有规律的提交,尽可能不用长事务。

3)? Import

– Set COMMIT = Y

– Size the set of rows with BUFFER

? Export: Set CONSISTENT=N

? SQL*Loader: Set the COMMIT intervals with ROWS

4、小回滚段可能出现的问题

A、事务由于缺少回滚空间失败

B、由于下列原因导致的“Snapshot too old”问题:

Block里的事务列表被刷新,block里的SCN比列表Interested Transaction List(ITL)里起始事务的SCN更新;

Rollback segment header里的Transaction slot被重用;

回滚数据已经被重写;

5、9i的自动回滚管理

Undo_managment指定了回滚空间的管理方式:Auto:自动管理;Manual:手工管理回滚段。

Undo_retention指定了回滚数据的保留期限;

Undo_tablespace指定了被使用的回滚表空间;

Oracle自动管理的表空间可以在常见数据库的时候创建,也可以单独建立。回滚表空间可以相互转换(switch),但在某一时刻只能有一个回滚表空间处于活动状态。回滚表空间处于非活动状态时可以删除,如果有对处于被删除回滚表空间里的已提交事务的查询时,oracle会返回一个错误。

估计undo tablespace大小的公式:

Undo space = (undo_retention * (undo blocks per second * db_block_size)) + db_block_size;

可以使用下列的sql设定undo_retention和undo tablespace:

select (rd*(ups*overhead)+overhead) "bytes" from (select value rd from v$parameter where name ='undo_retention'),(select (sum(undoblks)/sum(((end_time-begin_time)*10800))) ups from v$undostat),(select value overhead from v$parameter where name='db_block_size');

其中:

Rd:undo_retention设置的时间;

Ups:undo blocks per second;

Overhead:rollback segment header;

六、Lock Contention

1、概念

DML事务使用row-level locks,查询不会锁定数据。锁有两种模式:exlusive、share。

锁的类型:

? DML or data locks:

– Table-level locks(TM)

– Row-level locks(TX)

? DDL or dictionary locks

一个transaction至少获得两个锁:一个共享的表锁,一个专有的行锁。Oracle server将所有的锁维护在一个队列里,队列跟踪了等待锁的用户、申请锁的类型以及用户的顺序信息。

Lock在下列情况会释放:commit;rollback;terminated(此时由pmon清理locks)。Quiesced database:一个数据库如果除了sys和system之外没有其他活动session,这个数据库即处于quiesced

状态。活动session是指这个session当前处于一个transaction中,或一个查询中,一个fetch中,或正占有某种共享资源。

2、可能引起lock contention的原因

不必要的高层次的锁;

长时间运行的transaction;

未提交的修改;

其他产品施加的高层次的锁。

解决lock contention的方法:锁的拥有者提交或回滚事务;杀死用户会话。

3、死锁

Oracle自动检测和解决死锁,方法是通过回滚引起死锁的语句(statement),但是这条语句对应的transaction并没有回滚,因此当收到死锁的错误信息后,应该去回滚改transaction的剩余部分。

七、应用优化

1、概念

为了提高性能,可以使用下列数据访问方法:

A、Clusters

B、Indexes

-B-tree(normal or reverse key)

-bitmap

-function-based

C、Index-organized tables

D、Materialized views

索引的层次越多,效率越低,如果索引中含有许多已删除的行,这个索引也会变得低效,如果索引数据的15%已经被删除,应该考虑重建索引。

2、应用问题

A、使用可声明的约束而不是通过代码限制

B、代码共享

C、使用绑定变量而不是文字来优化共享sql

D、调整cursor_sharing的值(EXACT/SIMILAR/FORCE)

八、提升block的效率

1、避免动态分配的缺陷

创建本地管理的表空间;

合理设置segment的大小;

监控将要扩展的segment:

SELECT owner, table_name, blocks, empty_blocks FROM dba_tables WHERE empty_blocks / (blocks+empty_blocks) < .1;

2、high water mark

记录在segment header block中,在segment创建的时候设定在segment的起始位置,当记录被插入的时候以5个block的增量增加,truncate可以重设high water mark的位置,但delete不能。

在full table scan中,oracle会读取high water mark以下的所有的数据块,所以high water mark 以上的块也许会浪费存储空间,但不会降低性能。

可以通过下列方法收回表中high water mark以上的块:

Alter table_name deallocate unused;

对于high water mark以下的块:

使用import/export工具:export数据;drop或truncate表;import数据。或者利用alter table tanle_name move命令去移动表的存储位置(此时需要重建索引)。

3、表统计

用analyize命令生成表统计,然后到dba_table查询相关信息。

ANALYZE TABLE ndls.t_wh_shipping_bill COMPUTE STATISTICS;

SELECT num_rows, blocks, empty_blocks as empty,avg_space, chain_cnt, avg_row_len FROM dba_tables WHERE owner ='NDLS' AND table_name='T_WH_SHIPPING_BILL';

Columns Description

NUM_ROWS Number of rows in the table

BLOCKS Number of blocks below the table high-water mark

EMPTY_BLOCKS Number of blocks above the table high-water mark

AVG_SPACE Average free space in bytes in the blocks below high-water mark

AVG_ROW_LEN Average row length, including row overhead

CHAIN_CNT Number of chained or migrated rows in the table

4、block size

通过下列方法可以最小化block的访问次数:

使用更大的block size;紧密压缩行;阻止行镜像。后两者存在冲突,越多的行被压缩在一个block 里,越容易产生镜像。Block size 在数据库创建的时候设定,不能被轻易改变,是读取数据文件时最小的IO单元,大小范围是2K-64K,应该设置成OS块的整数倍,小于或等于OS IO时能读取的存储区域。

较小的block size的优点:极少block竞争;有利于较小的行和随机访问。缺点是存在相当高的成本,每个block的行数更少,可能需要读取更多的index块。Block size的选择影响系统的性能,在一个OLTP环境中,较小的block size更合适,而在DSS环境中,适宜选择较大的block size。

8、PCTFREE、PCTUSED

1)PCTFREE、PCTUSED使你能控制一个segment里所有数据块里free space的使用。

PCTFREE:一个数据块保留的用于块里已有记录的可能更新的自由空间占block size的最小比例。 PCTUSED:在新记录被插入block里之前这个block可以用于存储行数据和其他信息的空间所占的最小比率。

2)这两个参数的使用

如果创建表的时候指定pctfree=20%,oracle会在这个表的data segment的每个block都保留20%的空间用于已有记录的更新。Block的已使用空间上升到整个block size的80%时,这个block

将移出free list;在提交了delete、update之后,oracle server处理这条语句并检查对应block的已使用空间是否低于PCTUSED,如果是,则这个block放进free list。

3)PCTFREE、PCTUSED的设定

? PCTFREE

– Default 10

– Zero if no UPDATE activity

– PCTFREE = 100 × upd / (average row length)

? PCTUSED

– Default 40

– Set if rows deleted

– PCTUSED = 100 – PCTFREE – 100 × rows × (average row length) / blocksize

其中,upd : the average amount added by updates, in bytes。This is determined by subtracting the average row length of intercurrent average row length;

average row length:在运行了analyize命令之后,这个值可以从dba_tables中的avg_row_len 列中获得。

rows : the number of rows to be deleted before free list maintenance occurs。

4)Delete、update可以增加block的自由空间,但是释放出来的空间有可能是不连续的,oracle 在下列情况下会对碎片进行整理:一个block有足够的自由空间容纳row piece,但是由于每个碎片都较小以至这个row piece不能存放在一个连续的section中。

6、Migration和Chaining

1)如果一行的数据太大以至一个单独的block容纳不下,会产生两种现象:

A、Chaining:行数据太大以至一个空block容纳不下,oracle会将这一行的数据存放在一个或多个block 组成的block chain中,insert、update都可能导致这个问题,在某些情况下row chaining 是不能避免的。

B、Migration:一次update操作可能导致行数据增大,以至它所在的block容纳不下,oracle server 会去寻找一个有足够自由空间容纳整行数据的block,如果这样的block存在,oracle server把整行移到新的block,在原位置保存一个指向新存放位置的镜像行,镜像行的rowid和原来的rowid一致。

Chaining、Migration的弊端:insert、update的性能降低,索引查询增加了IO次数。

2)检测migration和chaining:

Analyize table table_name compute statistics;

Select num_rows,chain_cnt from dba_tables where table_name=’...’;

查询镜像行:

Analyize table table_name list chained rows;

Select owner_name,table_name,head_rowid from chained_rows where table_name=’...’;

产生Migration的原因可能是由于PCTFREE设置的太低以至没有保留足够的空间用于更新。

可以通过增加PCTFREE的值避免行镜像产生。

3)消除镜像行的步骤:

运行analyize table ... list chained rows;

复制镜像行到另一个表tmp;

从源表中删除这些行;

从tmp中将这些行插回到源表中。

脚本:

/* Get the name of the table with migrated rows */

accept table_name prompt ’Enter the name of the table with migrated rows: ’

/* Clean up from last execution */

set echo off

drop table migrated_rows;

drop table chained_rows;

/* Create the CHAINED_ROWS table */

@?/rdbms/admin/utlchain

set echo on

spool fix_mig

/* List the chained & migrated rows */

analyze table &table_name list chained rows;

/* Copy the chained/migrated rows to another table */

create table migrated_rows as

select orig.* from &table_name orig, chained_rows cr

where orig.rowid = cr.head_rowid

and cr.table_name = upper(’&table_name’);

/* Delete the chained/migrated rows from the original table */

delete from &table_name

where rowid in ( select head_rowid from chained_rows );

/* Copy the chained/migrated rows back into the original table */

insert into &table_name select * from migrated_rows;

spool off

使用这个脚本时,必须将涉及到的外键约束去掉。

7、索引重组

在一个不稳定的表上建索引会影响性能,一个索引block只有完全空时才能进入free list,即使一个索引block里只含有一个条目,它也必须被维护,因此索引需要进行阶段性的重建。

1)检查索引是否需要重组

A、收集一个index的使用统计

ANALYZE INDEX acct_no_idx VALIDATE STRUCTURE;

B、查看收集的统计数据

SELECT NAME,(DEL_LF_ROWS_LEN/LF_ROWS_LEN) * 100 AS index_usage FROM index_stats;

Column Description

LF_ROWS Number of values currently in the index

LF_ROWS_LEN Sum in bytes of the length of all values

DEL_LF_ROWS Number of values deleted from the index

DEL_LF_ROWS_LEN Length of all deleted values

C、如果浪费超过20%则索引需要重建

ALTER INDEX acct_no_idx REBUILD;

D、或者对索引进行整理

Alter index acct_no_idx coalesce;

2)标记未使用的索引

A、开始监测索引的使用

Alter index hr.emp_name_ix monitoring usage;

B、停止监测索引的使用

Alter index hr.emp_name_ix nomonitoring usage;

C、查询索引的使用情况

Select index_name,used from v$object_usage;

删除未使用过的索引,可以降低DML操作的成本,从而提升系统性能。

为了尽可能经济的利用block,应对存在较多空block、镜像行的表进行重建,对建立不稳定表上的索引应有规律的进行重建,并尽可能创建本地管理的表空间。

九、SQL优化

1、优化器模式

Oracle9i有两种优化器模式可以选择:

? Rule-based:

– Uses a ranking system

– Syntax- and data dictionary–driven

? Cost-based:

– Chooses least-cost path

– Statistics-driven

Rule-based模式满足向后兼容,而Cost-based模式中的成本大部分来自于逻辑读的次数,推荐使用Cost-based模式。

2、固定optimizer plan

1)概念

对于每一个查询,optimizer都会准备一个定义了操作执行顺序和方法的操作树(执行计划),oracle server根据这个执行计划执行语句。通过固定执行计划,可以强制应用通过一种理想的方式访问数据,并且一个稳定的执行计划可以经历数据库的变化而保持不变。固定执行计划通过创建stored outline

实现,outline使用cost-based的optimizer,因为其由一系列的hints组成。

执行计划的固定依赖于当判定一个查询是否存在stored outline时查询语句是否完全一致,与判定shared pool里一个执行计划是否可以重用时的匹配方式是一致的。

Outline被保存在outln schema中。

2)创建stored outline

alter session set CREATE_STORED_OUTLINES = train;

create or replace OUTLINE co_cl_join

FOR CATEGORY train ON

select co.crs_id, ...

from courses co,classes cl

where co.crs_id = cl.crs_id;

stored outline通过category组织,相同的sql语句可以在多个category同时拥有stored outline,如果categoey没有指定,缺省是default category。

当CREATE_STORED_OUTLINES等于true或category名时,oracle会为所有被执行的sql语句创建stored outline,也可以通过create outline手工创建。

3)使用stored outline

将USE_STORED_OUTLINES设置为true或category名。

alter session set USE_STORED_OUTLINES = train;

当为一个查询寻找stored outline时,查询语句与stored outline里的语句必须完全一致,在outline里的hints也必须在查询语句中出现。

3、private outline

Private outline是当前保存的stored outline的副本,可以被编辑而不影响正在运行的系统,一个private outline只能被当前session看到,它的数据被保存在当前被解析的schema里。,知道显示的将其公布。

当USE_PRIVATE_OUTLINES=TRUE时,一个已有outline的sql被提交时,optimizer会检查是否存在private outline,如果不存在,optimizer就不使用optimizer编译语句,而不会去检查公布的stored outline。

4、在sql中使用hints

Create index gen_idx on customers(cust_gender);

Select /*+ index(customers gen_idx)*/

Cust_last_name,cust_street_address,cust_postal_code

From sh.customers where upper(gender)=’M’;

5、EXPLAIN PLAN

可以不通过tracing,需要建立plan_table表:

Sql>@oracle_home/rdbms/admin/utlxplan;

建立explain plan:

Explain plan for select last_name from hr.emp;

查询plan_table中的explain plan,可以直接查询,也可以通过脚本utlxplx.sql(隐藏并行查询信息)、utlxplp.sql(显示并行查询信息)查询。

6、管理统计信息

利用analyize命令收集或删除信息。

参数:

Compute:统计精确的数据;

Estimate:估计的统计数据。

各类统计数据的位置:

表:dba_tables;

索引:dba_indexes;

列:user_tab_col_statistics;

柱状图(histogram)详细的描述了一个特定列中数据的分布情况,可以通过analyize table ... for columns... 命令创建,保存在dba_histogram/dba_tab_histograms中。

十、操作系统优化和使用资源管理器

1、操作系统优化

1)概念

操作系统优化时应该考虑的因素有:内存的使用;Cpu的使用;IO级别;网络流量。各个因素互相影响,正确的优化次序是内存、IO、CPU。

操作系统使用了虚拟内存的概念,虚拟内存使每个应用感觉自己是使用内存的唯一的应用,每个应用都看到地址从0开始的单独的一块内存,虚拟内存被分成4K或8K的page,操作系统通过MMU(memory management unit)将这些page与物理内存映射起来,这个映射关系通过page table控制。

Raw device是没有文件结构或目录结构的磁盘或磁盘分区,由于它忽略了操作系统缓存,在某些情况下可以显著提升性能,但是在windows NT下,由于操作系统IO操作本身不使用文件系统缓存,所以raw device不能显示性能上的优点。

2)Guideline

CPU的最高使用率:90%;

OS/USER进程数之比:40/60;

各个CPU的负载应该大致均衡。

3)服务器安全性检查

A、检查UNIX系统用户口令

检查:/etc/passwd、/etc/shadow,UNIX密码采用了shadow机制,安全性能高

建议:参考UNIX命令passwd,修改/etc/default/passwd文件的某些设置如MAXWEEKS、MINWEEKS、PASSLENGTH使口令修改更加合理化。

建议:定期更改UNIX系统的如下用户口令:

root、oraprod、applprod、appprod

B、检查 Remote Login

启动了rlogin,服务器数据库a、数据库b、数据库c,终端console1、console2、console3及T3形成相互非常信任的关系,用户只要拥有一个服务器的超级权限就可以rlogin到.rhosts指明的任一主机而无需要口令。

建议:非常不安全,参考UNIX命令rlogin和/目录下的文件.rhosts。在正式环境服务器和测试环境服务器之间不要建立这种远程信任的机制。

C、检查FTP服务

检查可以FTP到服务器的用户(/etc/ftpusers),注释了root用户,就是说用户可以用root权限FTP到服务器上。权限太大。

建议:把这种权力取消,将/etc/ftpusers中root的注释符号(#)去掉,在列表中添加oraprod、applprod、appprod等用户使之不能FTP服务器。必要时(如上传PATCH时)再打开applprod的FTP权限。

D、建议:UNIX系统管理员定期检查/var/adm下的messages、sulog;/etc/syslog.conf 等信息。检查是否有非法用户登陆UNIX。

建议:与UNIX工程师探讨更好的监控方式

4)数据库与应用产品安全性检查

A、建议:修改oracle用户根目录下的.profile文件,修改该文件的权限为500。即使得用户登陆时并不执行和数据库或应用相关的环境变量,增加安全性。

B、检查数据库DBA权限的用户密码和应用系统用户密码:SYSTEM、APPS密码都已经改变,SYS密码还是初始安装密码Change_on_install

建议:立即修改SYS用户密码,定期更改APPS、SYSTEM、SYS密码。

C、定期检查并清除$ORACLE_HOME/admin/bdump目录下的alert_PROD.log文件和后台进程trace文件。定期清除$ORACLE_HOME/admin/udump目录下的trc文件。

D、建议:给应用产品登陆的用户设置口令过期限制,如口令访问次数限制或时间(天数)限制。

建议:不要给使用应用产品的用户共享用户名和口令,每个用户分配一个应用产品用户名。

建议:对有应用系统管理员权限的用户登记,不适合有系统管理员权限的用户要把权限回收,统一管理。

E、定期检查并清除与Apache Server有关的log文件,目录为:

/u01/prodora/iAS/Apache/Apache/logs/acccess_log、error_log

/u01/prodora/iAS/Apache/Jserv/logs/jserv.log、mod_jserv.log

F、定期检查清除listener、tnsname的log文件,文件存放在:

/u01/prodora/8.0.6/network/admin/apps_prod.log、

/u01/proddb/8.1.7/network/admin/prod.log

/u01/proddb/8.1.7/network/log/listener.log、sqlnet.log…

G、数据库控制文件做多个镜像,放在多个磁盘位置,提高安全性。

5)网络安全性检查

检查$ORACLE_HOME/dbs/initPROD.ora文件

#remote_login_passwordfile=EXCLUSIVE

设置为REMOTE_LOGIN_PASSWORDFILE=NONE,不允许远程客户用INTERNAL方式登陆。

2、资源管理器(Resource Manager)

通过资源管理器可以管理混合工作负载,控制系统性能。数据库资源管理器包括:

? Resource plans:包括 resource plan directives, 它指定了被分配到各个 resource consumer group的资源。

? Resource consumer groups:定义了具有类似资源使用需求的一组用户。

? Resource plan directives:包括下列内容:为consumer groups 或 subplans 指定resource plans;在各个 consumer groups 或资源计划的subplans 分配资源。

Toad_for_Oracle10中文手册

Toad? for Oracle Quest虹天软件(北京)有限公司 二零零六年八月

目录 1.方案简介 (4) 2.TOAD? FOR ORACLE (5) 2.1. S CHEMA B ROSWER (6) 2.2. SQL E DITOR (6) 2.3. P ROCEDURE E DITOR (7) 2.4. SQL M ODELER (8) 2.5. F AST R EPORT (9) 2.6. S CRIPT MANAGER (10) 2.7. M ASTER/D ETAIL B ROWSER (10) 2.8. C ONNECTION C OLOR-C ODING (11) 3.TOAD? FOR ORACLE PROFESSIONAL (11) 3.1. PL/SQL D EBUGGER (12) 3.2. C ODE P ROFILING (12) 3.3. K NOWLEDGE X PERT? FOR PL/SQL (13) 3.4. T EAM C ODING (14) 3.5. C ODE X PERT (14) 4.TOAD? FOR ORACLE XPERT (15) 4.1. SQL S CANNER (15) 4.2. SQL I NSPECTOR (15) 4.3. SQL O PTIMIZER (16) 4.4. I NDEX E XPERT (19) 4.5. C ROSS I NDEX A NALYSIS (19) 4.6. O UTLINE M ANAGER (20) 4.7. P LAN C HANGE A NALYZER (20) 4.8. B EST P RACTICES (22) 5.TOAD? FOR ORACLE SUITE (22) 5.1. DBA M ODULE (22) 5.1.1.Database Monitor (22) 5.1.2.Database Probe (23) 5.1.3.Health Check (24) 5.1.4.Instance Manager (24) 5.1.5.Top Session Finder (25) 5.1.6.Oracle Parameters (26) 5.1.7.Session Browser (26) 5.2. K NOWLEDGE X PERT? FOR O RACLE A DMINISTRATION (27) 5.3. D ATA F ACTORY?D EVELOPER E DITION (27) 5.4. B ENCHMARK F ACTORY? FOR D ATABASES (27)

(Oracle管理)oracle项目设计报告

成都东软学院 课程结业设计报告 课程: oracle数据管理与开发 项目名称:项目管理系统 作者:xxxxx 学号:xxxxx 专业班级: xxxxx 指导教师:xxxxx 2011年12月

目录 第一部分:项目概述 ........................................................................................- 1 -1.1内容 .................................................................................................................. - 1 -1.2目的 .................................................................................................................. - 1 -1.3功能 .................................................................................................................. - 2 -1.4意义 .................................................................................................................. - 2 -第二部分:E-R图..............................................................................................- 3 -第三部分:表图................................................................................................- 3 -第四部分:创建表的脚本: .............................................................................- 5 -第五部分:样本数据 ........................................................................................- 6 -第六部分:数据库测试.....................................................................................- 7 -6.1数据操纵........................................................................................................... - 7 - 6.1.1查询.................................................................................................................................... - 7 - 6.1.2插入.................................................................................................................................... - 8 - 6.1.3更新.................................................................................................................................... - 8 - 6.1.4删除.................................................................................................................................... - 8 -6.2问题总结........................................................................................................... - 9 -第七部分:项目总结 ........................................................................................- 9 - 7.1结论 ................................................................................................................... - 9 -7.2心得 ................................................................................................................. - 10 -

Oracle BIEE官方文档学习笔记-创建RPD文件

Created By Benny_Zhou 仅为个人学习分享交流,请勿用作商业用途。 1.创建RPD 文件的物理层 物理层定义了BI 查询的数据来源。 建议通过导入数据库或者其他数据来源的元数据的方式产生物理层。 可以从已有的数据源中导入(部分)模型。 可以在物理层手工创建对象。 当你导入元数据后,很多数据源的属性会根据导入过程中收集的信息自动配置。导入之后,仍然可以定义物理数据源的其他属性,比如连接关系等。物理层可以存在包括数据库、平面文件(Flat File ),XML 文档等多个来源。 1.1 创建新的RPD 文件 打开BI 管理器-文件-新建-输入名称- 输入密码,点击下一步 1.2 导入元数据 选择连接类型为OCI 10g/11g ; 输入数据源名称orcl ,数据源名称与tnsnames.ora 中的Oracle 数据库实例名称一致; 输入用户名和密码,点击下一步; 接受默认元数据类型,点击下一步;(主键和外键是否需要导入?) 选择需要导入的表,下一步; Creating a Repository Using the Oracle BI 11gAdministration Tool/创 建RPD 文件 2014年7月8日 16:48

选择需要导入的表,下一步; 弹出连接池窗口,接受默认,下一步; 出现导入信息,导入完成后,展开查看表是否成功导入。 1.3 验证连接 选择工具-更新所有行;

更新完成后,鼠标悬停在表上,观察行信息中的更新时间; 展开表,右键查看数据; 1.4 创建别名 鼠标点在表上,右键选择新对象-别名;输入别名;输入描述。 1.5 创建键和连接 在物理层选择几个表,右键选择物理图表-仅限所选对象; 需要调整物理图表中的对象,可以再工具栏中使用放大、缩小、适合、全部隐藏、全部展开等等 点击工具栏中的新建连接,先点击F1 Revenue,然后点击D1 Time,物理外键窗口打开。 注意先点击哪个表是有关系的。连接产生了1:N的关系,将第一个表的主键列和第二个表的外键列连接。

oracle课后题答案

一、选择题 1. 若关系的某一属性组的值能唯一地标识一个元组,我们称之为(B)。 A、主码 B、候选码 C、外码 D、联系 2. 以下不属于数据库模式的三要素的是(C)。 A、数据结构 B、数据操作 C、数据控制 D、完整性约束 3. 以下对关系性质的描述中,哪个是错误的?(B) A、关系中每个属性值都是不可分解的 B、关系中允许出现相同的元组 C、定义关系模式时可随意指定属性的排列次序 D、关系中元组的排列次序可以任意交换 二、填空题 1.数据管理发展的三个阶段是人工管理、文件管理和数据库系统管理。 2.数据库系统的三级模式包括逻辑模式、用户模式、物理模式。 三、思考题 1. 数据库管理系统的主要功能有哪些? 1)数据定义功能。DBMS提供相应数据语言来定义(DDL)数据库结构,它们是刻画数据库框架,并被保存在数据字典中。 2)数据存取功能。DBMS提供数据操纵语言(DML),实现对数据库数据的基本存取操作:检索,插入,修改和删除。 3)数据库运行管理功能。DBMS提供数据控制功能,即是数据的安全性、完整性和并发控制等对数据库运行进行有效地控制和管理,以确保数据正确有效。 4)数据库的建立和维护功能。包括数据库初始数据的装入,数据库的转储、恢复、重组织,系统性能监视、分析等功能。 5)数据库的传输;DBMS提供处理数据的传输,实现用户程序与DBMS之间的通信,通常与操作系统协调完成。 2.思考关系规范化的过程。 答:对于存在数据冗余、插入异常、删除异常问题的关系模式,应采取将一个关系模式分解为多个关系模式的方法进行处理。一个低一级范式的关系模式,通过模式分解可以转换为若干个高一级范式的关系模式,这就是所谓的规范化过程。 3.思考数据库设计的步骤。 答:1需求分析、2概念设计阶段、3逻辑结构设计阶段、4数据库物理结构设计阶段、5数据库实施阶段、6数据库运行和维护阶段。

ORACLE数据库设计指南

数据库设计核心原则 罗代均 一、3NF第三范式 通常认为,第三范式在性能,扩展性和数据完整性方面达到了最好平衡. 通常认为,第三范式在性能,扩展性和数据完整性方面达到了最好平衡. 有以下几个要点。有以下几个要点。 1.一个表只描述一个单一的事物(实体)。一个表只描述一个单一的事物 2.表内的每一个值在整个数据库只出现一次(外键除外) 2.表内的每一个值在整个数据库只出现一次(外键除外)。表内的每一个值在整个数据库只出现一次 3.表内的每一行都应该被唯一的标识(有唯一主键)。 3.表内的每一行都应该被唯一的标识(有唯一主键)。表内的每一行都应该被唯一的标识 4.表内不存储与主键无关的信息。表内不存储与主键无关的信息 二、字段设计技巧 1.确保表中没有计算字段 计算字段的值,是由其他字段的值计算而来,当你更新其他字段的时候,很容易忽略同时更新这个计算字段,造成数据的错误。 2.确保这个字段的值只有一个 例如下表Users: 用户ID 用户名称电话号码 001 robin 1358888888/028-*******/… 电话号码的值就不只一个,因此电话字段不能放在users表中,解决办法是增加一个表Phone 电话号码ID 用户ID 电话号码 001 001 13588888 002 001 028-888888 这个表就是Users的从表,用户ID是外键. 还有地址address,和电话的情况类似。 3.尽可能地细分字段 如下雇员表(employee) 雇员ID 雇员名称地址 emp_id emp_name emp_address 001 Robin 四川省成都市高新区天泰路1号 这里的emp_address就可以细分,改进的表如下 雇员ID 雇员名称国家省/直辖市地/市 001 罗代均china 四川成都区/县高新区街道天泰路1号 这样更方便我们编辑和统计,有利于保证数据的完整性。 三数据表设计技巧 1.为表内的每一个字段添加表名缩写 例如客户表 customer cust_id cust_name cust_type cust_city ... 这样书写SQL语句时,很容易就知道这个字段属于哪个表,代表什么含义。 例如cust_city ,就不会和employee表的emp_city混淆了。

oracle数据库课程设计报告书

《大型数据库》课程设计 课题在线购书系统 班级网络0901 黄玉娇文妮 学号 0930******* 0930******* 成绩 2011 年月日

目录 一、系统开发背景简介 (3) 1、系统可行性分析 (3) 2、系统开发目的 (3) 3、系统用途和需求 (3) 4、开发环境 (3) 5、国外研究及发展趋势 (3) 6、系统优势 (4) 7、制约因素 (5) 8、发展对策 (6) 二、系统功能分析与设计 (6) 1、系统功能模块简述 (6) 2、系统功能模块图 (7) 3、系统流程图 (7) 4、用例分析 (8) 5、页面流程图 (11) 三、数据库设计与实现 (13) 1、表设计 (13) 2、E—R图 (15) 3、数据库模型图 (16) 4、创建存储过程 (16)

5、建表 (17) 6、建立外键约束 (18) 7、创建序列 (19) 四、系统实现 (20) 1、登录实现代码 (20) 2、运行结果 (37) 五、小结 (40) 六、附录 (40)

一、系统开发背景及简介 1、系统可行性分析 (1)技术可行性——此网上书店系统可以运行于windows xp,windows server 2000/2003,windows vista操作系统。对系统要求只需要装有IIS即可。对计算机的硬件配置没有太高要求,现在的个人电脑完全可以满足。数据库运用简单易学的Access来实现。在设计方面,运用XHTML、CSS样式、JSP等知识,利用PhotoShop图像处理工具及Dreamweaver CS3制作出合理生动的网页。 (2)经济可行性——此系统可以运行于现在市场上出售的各种个人电脑,系统成本主要集中在系统的开发上。当系统投入运行后,可以实现在网上卖书和租书功能。所带来的效益远远大于系统软件的开发成本。在经济上是完全可行。(3)操作可行性——界面设计充分考虑浏览用户的习惯,图书信息浏览、 会员注册登录、租书、购书等功能操作方便。而且所有网页设计清新、简洁、合理,不会让用户感到视觉疲劳。可操作性很强。 2、系统开发目的 据艾瑞咨询预测至2011年中国网络购物市场规模将达到4060亿元,由此可见网上购物已经成为人们日常消费方式。对于网上购书,由于运输方便,在网上购物不会让顾客有太大的顾虑,另外省去了中间周转的渠道,书籍的价格低廉也是一大优势。所以为了迎合市场需求,在线购书系统的出现很有必要。 3、系统用途和需求 本系统用于网上在线购书。需求:普通用户可以进行注册、登录、修改密码;购买书籍;查询、修改、取消、修改收货信息订单;删除已经放入购物车中的商品;修改购物车中的商品数量;查看商品详细信息;查找(分类查找)商品。管理员可以修改、取消、查询订单;修改订单状态(如将已审核的订单改为已发货);下架、上架、更新、查询、添加商品。 4、开发环境 网络环境:本系统开发环境为局域网或者校园网网络环境 操作系统:windows7或windows XP 开发工具:Myeclipse 数据库:oracle 10g 5、国外研究及发展趋势 网络经济是利用互联网技术广泛联系传统信息系统的丰富资源的一种动态商务活动它利用前所未有的方式将顾客、销售商、和供货商和企业员工联系在一起,能将有价值的信息迅速传递给需要的人们。网络技术的成熟,促进了信息技术更加广泛的应用,因此建立充分运用网络技术可以满足企业的不断增长的供货能力、客户和市场竞争的需求。销售商可以利用和网络触角伸展到客户的家中,架起一座桥梁,以先进的技术渗透到订货、生产、交货甚至售后服务等整个商务过程,网络作为经济活动的市场平台,在市场进入、交易运行和货款结算等环节,都是以电子数据的传递来完成的。市场经营全过程需要计算机系统和网络门户。

Oracle数据库基础

Oracle 数据库基础 数据库是我们安装完产品后建立的,可以在同一台主机上存在8i,9i,10g,11g等多个数据库产品,一套产品可以建立多个数据库,每个数据库是独立的。每个数据库都有自己的全套相关文件,有各自的控制文件、数据文件、重做日志文件、参数文件、归档文件、口令文件等等。 其中控制文件、数据文件、重做日志文件、跟踪文件及警告日志(trace files,alert files)属于数据库文件; 参数文件(parameter file)口令文件(password file)是非数据库文件 我们的表存储在数据库中 数据库不能直接读取 我们通过实例(instance)来访问数据库 数据库实例 实例由内存和后台进程组成 实例是访问数据库的方法 初始化参数控制实例的行为 一个实例只能连接一个数据库

启动实例不需要数据库 产品安装好 有初始化参数文件 就可以启动实例 与是否存在数据库无关 实例内存分为SGA 和PGA SGA:是用于存储数据库信息的内存区,该信息为数据库进程所共享。它包含Oracle 服务器的数据和控制信息,它是在Oracle 服务器所驻留的计算机的实际内存中得以分配,如果实际内存不够再往虚拟内存中写。 PGA:包含单个服务器进程或单个后台进程的数据和控制信息,与几个进程共享的SGA正相反,PGA 是只被一个进程使用的区域,PGA 在创建进程时分配,在终止进程时回收. 后台进程是实例和数据库的联系纽带 分为核心进程和非核心进程 当前后台进程的查看 SQL> select name,description from v$bgprocess where paddr<>'00'; NAME DESCRIPTION

Oracle数据库课程设计分析报告

Oracle数据库 课程设计报告 题目:通讯录系统 班级:0805 课序号:01(张一,马工速) 02(张明,曲珊珊, 韩程) 组长: 张一 200893065 组员: 张明 200893203 曲珊珊 200892208 马工速 200893056 韩程 200893039

目录 一项目概述 (3) 二具体功能介绍 (3) 三设计与实现 (3) 需求分析 (3) 概念结构设计 (4) 逻辑结构设计 (4)

物理结构设计 (5) 程序讲明 (6) 数据库连接 (6) 系统结构图 (7) 软件功能截图 (7) 四组员分工………………………………………………………… 11

一项目概述 现代人的生活节奏日益加快,各种联系人也不断增多,然而有专门大一部分人依旧在使用纸质通讯录。依照我的总结,纸质通讯录有以下缺陷:1,储存信息量少,查找不方便;2,不能存放照片;3,安全性不高,信息容易丢失,且关于隐私爱护不强。为此,我开发了那个java通讯录程序。在我写的此程序中,上述缺陷得到了专门好的弥补。 二具体功能介绍 1,用户的登录,注册,删除功能; 2,联系人信息的增加,删除,修改,查询的功能; 3,联系人分组的增加,删除的功能; 4,联系人头像的上传,显示等功能;

5,联系人相册的各项治理功能(相片的上传,删除等功能); 6.实现系统托盘的功能. 三设计与实现 1,需求分析 数据流图 2,概念结构设计 E-R图

讲明:用户实体拥有用户名和密码2个属性;联系人实体拥有相片编号,相片名称,联系人性不,联系人年龄,联系人所属分组,联系人编号,联系人邮箱,联系人邮政编码,联系人地址,相片信息,用户名11个属性;相片实体拥有相片编号,相片名称,相片信息3个属性。 一个用户登录以后,能够在联系人表中建立多个联系人,因此用户实体和联系人实体是1:n的关系;每个联系人能够上传多张相片储存在相片表中,因此相片实体和联系人实体是n:1的关系。 3, 逻辑结构设计 E-R图自动转化为逻辑结构模型后如下:

Oracle 文档

Oracle 文档 本页包含Oracle 数据库、融合中间件、Beehive 和应用产品/E-Business Suite 的最新文档链接。 搜索Oracle 文档 Sun 文档 按类别浏览: 数据库 Oracle Database 11g第 2 版Oracle Database 11g第 1 版Oracle Database Lite 10g第 3 版Oracle Database 10g第 2 版Oracle 网关10g 第 2 版 Oracle Database Lite 10g第 2 版Oracle Communications Data Model Oracle Content Database 10g第1 版 Oracle Database 10g第 1 版Oracle Multimedia (Oracle inter Media) Oracle Spatial Oracle Fail Safe Oracle TimesTen In-Memory Database Oracle Berkeley DB Oracle Berkeley DB Java 版Oracle Berkeley

10g第 1 版Oracle 网关10g 第 1 版 Oracle9i Database 第2版 Oracle9i Database 第1版 适用于 Oracle9i(第1版和第2 版)的Oracle 网关Berkeley DB XML Oracle 9i Lite Oracle Secure Backup Oracle Application Express Oracle Audit Vault Oracle 数据访问组件Oracle SQL Developer 中间件 Oracle | BEA 产品文档 10g第3版 (10.3) Oracle Product Data Quality Oracle GoldenGate Oracle Fusion Middleware 11g 第 1 版 (11.1.1) Oracle Identity Management 10g (10.1.4) Oracle JRockit R28.0Oracle Application Server 10g第 3 版(10.1.3.1) Oracle Application Server 10g第 3 版(10.1.3) Oracle Application Server 10g第 2 版(10.1.2.0.2) Oracle Application Server 10g 第 2 版 (10.1.2) Oracle

Oracle 笔试题目带答案

1.( )程序包用于读写操作系统文本文件。(选一项) A、Dbms_output B、Dbms_lob C、Dbms_random D、Utl_file 2.( )触发器允许触发操作的语句访问行的列值。(选一项) A、行级 B、语句级 C、模式 D、数据库级 3.( )是oracle在启动期间用来标识物理文件和数据文件的二进制文件。(选一项) A、控制文件 B、参数文件 C、数据文件 D、可执行文件 4.CREATE TABLE 语句用来创建(选一项) A、表 B、视图 C、用户 D、函数 5.imp命令的哪个参数用于确定是否要倒入整个导出文件。(选一项) A、constranints B、tables C、full D、file 6.ORACLE表达式NVL(phone,'0000-0000')的含义是(选一项) A、当phone为字符串0000-0000时显示空值 B、当phone为空值时显示0000-0000 C、判断phone和字符串0000-0000是否相等 D、将phone的全部内容替换为0000-0000 7.ORACLE交集运算符是(选一项) A、intersect B、union C、set D、minus 8.ORACLE使用哪个系统参数设置日期的格式(选一项) A、nls_language

B、nls_date C、nls_time_zone D、nls_date_format 9.Oracle数据库中,通过()访问能够以最快的方式访问表中的一行(选一项) A、主键 B、Rowid C、唯一索引 D、整表扫描 10.Oracle数据库中,下面()可以作为有效的列名。(选一项) A、Column B、123_NUM C、NUM_#123 D、#NUM123 11.Oracle数据库中,以下()命令可以删除整个表中的数据,并且无法回滚(选一项) A、drop B、delete C、truncate D、cascade 12.Oracle中, ( )函数将char或varchar数据类型转换为date数据类型。(选一项) A、date B、to_date C、todate D、ctodate 13.ORACLE中,执行语句:SELECT address1||','||address2||','||address2 "Address" FROM employ; 将会返回()列(选一项) A、0 B、1 C、2 D、3 14.Oralce数据库中,以下()函数可以针对任意数据类型进行操作。(选一项) A、TO_CHAR B、LOWER C、MAX D、CEIL 15.partition by list(msn_id)子句的含义是(选一项) A、按msn_id列进行范围分区 B、按msn_id列进行列表分区

oracle设计实验报告材料

课程设计 课程题目:ORACLE应用系统设计设计题目:音像店信息管理系统 专业:计算机科学与技术 班级:计131 组员:李霆桑珠扎西虞洲 学号: 130761 130767 130762 日期: 2016-03-04 信息工程学院计算机科学与技术

目录 一.课程目的………………………………………………………. 二.题目要求……………………………………………………… 三.日期安排………………………………………………………. 四.组内分工……………………………………………………… 五.实验条件......................................................... ........................... 六.实验内容......................................................... ........................... (1)第一部分:Oracle管理技术……………………………………… 1.数据库管理…………………………………………………….. 2.角色和用户管理………………………………………………... 3.表和视图管理………………………………………………….. 4.索引和序列管理………………………………………………... 5.PL/SQL编程…………………………………………………… 6.使用游标、存储过程和触发器………………………………… 7.表空间管理……………………………………………………… 8.文件管理………………………………………………………… (2)第二部分:Oracle开发技术……………………………………….. ①数据库设计………………………………………………………………… ②界面设计.................................................... ③结果测试…………………………………………………………………… 七.问题及解决…………………………………………………….. 八.总结...............................................

公司Oracle ERP操作手册-中文辅助版

ERP系统 用户操作手册 Account Payables模块 文档作者: 创建日期: 确认日期: 2005-10-11 控制编码: AAVID/TR100/AP 文档版本: 1.0 审批: 拷贝数_____

文档控制记录更改 审阅人 分发

目录 文档控制......................................................................................................................................... 错误!未定义书签。目录................................................................................................................................................. 错误!未定义书签。 编写说明......................................................................................................................................... 错误!未定义书签。 使用对象..................................................................................................................................... 错误!未定义书签。 参考文档..................................................................................................................................... 错误!未定义书签。 概述................................................................................................................................................. 错误!未定义书签。 业务操作流程内容..................................................................................................................... 错误!未定义书签。 第一章、创建银行......................................................................................................................... 错误!未定义书签。 操作说明..................................................................................................................................... 错误!未定义书签。 适用范围 ................................................................................................................................. 错误!未定义书签。 主要业务 ................................................................................................................................. 错误!未定义书签。 注意事项 ................................................................................................................................. 错误!未定义书签。 操作过程..................................................................................................................................... 错误!未定义书签。 一.整理内部银行资料 (3) 二.银行资料录入 (3) 三.银行财务信息录入 (5) 四.定义银行付款单据 (7) 五.整理外部银行资料 (8) 六.外部供应商银行资料录入 (8) 七.员工供应商银行资料录入 (10) 第二章、创建供货商..................................................................................................................... 错误!未定义书签。 操作说明..................................................................................................................................... 错误!未定义书签。 适用范围 ................................................................................................................................. 错误!未定义书签。 主要业务 ................................................................................................................................. 错误!未定义书签。 注意事项 ................................................................................................................................. 错误!未定义书签。 操作过程..................................................................................................................................... 错误!未定义书签。 一.整理外部供货商信息资料 (12) 二.供货商信息录入 (12) 三.供货商银行信息分配 (18) 四.整理员工信息资料 (18) 五.员工信息资料录入 (18) 六.员工供货商资料分配 (18) 七.员工供货商财务信息录入 (21) 八.员工供货商银行信息分配 (22) 第三章、预付款及付款................................................................................................................. 错误!未定义书签。 操作说明..................................................................................................................................... 错误!未定义书签。 适用范围 ................................................................................................................................. 错误!未定义书签。 主要业务 ................................................................................................................................. 错误!未定义书签。 注意事项 ................................................................................................................................. 错误!未定义书签。 操作过程..................................................................................................................................... 错误!未定义书签。

Oracle试题(含答案)

_C++_CSD/ESD1405 1. 把工资大于1000的first_name,salary 显示出来,按工资排序,工资相同按first_name降序的SQL语句是? A. select first_name,salary from s_emp order by salary,first_name B. select first_name,salary from s_emp order by salary,first_name asc C. select first_name,salary from s_emp order by salary desc,first_name D. select first_name,salary from s_emp order by salary,first_name desc 正确答案:D 2. 已知数据库中有员工表s_emp和部门表s_dept,具体字段如下: 员工表字段介绍: ID 员工编号 LAST_NAME 员工姓 FIRST_NAME 员工名 USERID 用户编号 START_DATE 入职日期 COMMENTS 员工备注信息 MANAGER_ID 员工的领导ID TITLE 员工的职位 DEPT_ID 部门的编号 SALARY 员工的月薪 COMMISSION_PCT 提成 部门表的字段介绍: ID 部门编号 NAME 部门名 REGION_ID 地区编号 注:以下所有数据库相关题目,均使用这两个表 把s_emp表中的每个人的全名和工资列出来的SQL语句是? A. select first_name|last_name ,salary from s_emp

Oracle方案设计

3.1方案拓扑图 如上图所示前端四台IBM X3850M2服务器做集群应用,运行Oracle数据库,Oracle 库的数据文件存储在后端磁盘阵列上。后端存储采用了SAN网络的连接形式,四台服务器通过两台光纤交换机连接到存储阵列,采用双交换机的冗余连接提高了数据传输的可靠性。备份系统采用赛门铁克的NetBackUp备份软件把数据备份到磁带库中,如果用户有更高的备份需求可以采用飞康CDP设备对数据时时备份,可以实现数据丢失率在分钟级。 3.2服务器解决方案 服务器运行着关键Oracle数据库应用,为了提高应用的高可靠性,提高并发响应的速度,本方案采用了四台IBM X3850M2服务器做负载均衡群集的形式。四台服务器同时对外提供服务,一方面四台服务器相互分担访问负载提高响应速度,另一方面可以实现故障转移,提高服务的可靠性。 在服务器选择方面本着稳定性、可扩展性和易维护性的原则。本方案建议了IBM

X3850M2服务器,配置了四颗CPU,考虑到今后扩展要求CPU数量最多可以支持到16颗;磁盘配置2块146GB的SAS磁盘,安装操作系统和Oracle应用程序,两块磁盘做Raid1实现高可靠性,即使一块磁盘出现故障也不影响服务器正常使用;X3850M2服务器支持最多256GB内存,能充分满足用户今后应用扩展需求,ChipKill技术允许使用工业标准的DIMM来更正单位/多位错误;光通路面板显示各个物理部件工作状态包括CPU、内存、硬盘等,当部件出现故障时可以通过面板显示灯迅速找到故障原因;集成的远程管理适配器II SlimLine帮助用户远程监视系统运行状况,提高工作效率和可管理性。 3.3四节点群集实现方式 用户关键数据库应用将要采用Oracle数据库,由于用户对Oracle数据库访问量大,为了提高访问响应速度、保证应用的可靠和稳定性,本方案采用了Oracle RAC集群的解决方案。 Oracle RAC 运行于集群之上,为Oracle 数据库提供了最高级别的可用性、可伸缩性和低成本计算能力。如果集群内的一个节点发生故障,Oracle 将可以继续在其余的节点上运行。如果需要更高的处理能力,新的节点可轻松添加至集群。为了保持低成本,即使最高端的系统也可以从采用标准化商用组件的小型低成本集群开始逐步构建而成。 Oracle 的主要创新是一项称为高速缓存合并的技术,它最初是针对Oracle9i

相关主题
文本预览
相关文档 最新文档