??xml version="1.0" encoding="utf-8" standalone="yes"?>国产欧美精品,男操女在线观看,一二三四社区欧美黄http://www.aygfsteel.com/cymao/category/7197.htmlzh-cnTue, 27 Feb 2007 12:24:32 GMTTue, 27 Feb 2007 12:24:32 GMT60DBA的职责和d(转自oracle中文技术论?http://www.aygfsteel.com/cymao/archive/2006/03/30/38289.html?/dc:creator>?/author>Thu, 30 Mar 2006 09:19:00 GMThttp://www.aygfsteel.com/cymao/archive/2006/03/30/38289.htmlhttp://www.aygfsteel.com/cymao/comments/38289.htmlhttp://www.aygfsteel.com/cymao/archive/2006/03/30/38289.html#Feedback0http://www.aygfsteel.com/cymao/comments/commentRss/38289.htmlhttp://www.aygfsteel.com/cymao/services/trackbacks/38289.html载自oracle中文技术论坛。从整体上介l了一个dba的职责和d{等。  
ORACLE数据库管理员应按如下方式对ORACLE数据库系l做定期监控Q ?br />(1). 每天对ORACLE数据库的q行状?日志文g,备䆾情况,数据  

库的I间使用情况,pȝ资源的用情况进行检?发现q解ꐠ?br />
问题。 ?br />
(2). 每周Ҏ(gu)据库对象的空间扩展情?数据的增长情况进行监?Ҏ(gu)据库做健h?Ҏ(gu)据库对象的状态做(g)查。 ?br />
(3). 每月对表和烦(ch)引等q行Analyze,(g)查表I间片,L数据库 ?br />
性能调整的机?q行数据库性能调整,提出下一步空间管理 ?br />
计划。对ORACLE数据库状态进行一ơ全面检查。 ?br />
每天的工作 ?br />
(1).认所有的INSTANCE状态正常 ?br />
登陆到所有数据库或例E?(g)ORACLE后台q程:  

$ps –ef|grep ora  

(2). (g)查文件系l的使用Q剩余空_(d)(j)。如果文件系l的剩余I间于20%Q需删除不用的文件以释放I间。 ?br />
$df –k  

(3). (g)查日志文件和trace文g记录alert和trace文g中的错误。 ?br />
q接到每个需理的系l ?br />
? 使用’telnet’ ?br />
? Ҏ(gu)个数据库,cd 到bdump目录,通常?ORACLE_BASE/<SID>;/bdump  

? 使用 Unix ‘tail’命令来查看alert_<SID>;.log文g  

? 如果发现M新的ORA- 错误,记录q解ꐠ?br />
(4). (g)查数据库当日备䆾的有效性。 ?br />
对RMAN备䆾方式:  

(g)查第三方备䆾工具的备份日志以定备䆾是否成功  

对EXPORT备䆾方式:  

(g)查exp日志文g以确定备份是否成功 ?br />
对其他备份方?  

(g)查相应的日志文g  

(5). (g)查数据文件的状态记录状态不是“online”的数据文gQƈ做恢复。 ?br />
Select file_name from dba_data_files where status=’OFFLINE’ ?br />
(6). (g)查表I间的用情况 ?br />
SELECT tablespace_name, max_m, count_blocks free_blk_cnt, sum_free_m,to_char(100*sum_free_m/sum_m, '99.99') || '%' AS pct_free  

FROM ( SELECT tablespace_name,sum(bytes)/1024/1024 AS sum_m FROM dba_data_files GROUP BY tablespace_name),  

( SELECT tablespace_name AS fs_ts_name, max(bytes)/1024/1024 AS max_m, count(blocks) AS count_blocks, sum(bytes/1024/1024) AS sum_free_m FROM dba_free_space GROUP BY tablespace_name )  

WHERE tablespace_name = fs_ts_name  

(7). (g)查剩余表I间  

SELECT tablespace_name, sum ( blocks ) as free_blk ,  

trunc ( sum ( bytes ) /(1024*1024) ) as free_m,  

max ( bytes ) / (1024) as big_chunk_k, count (*) as num_chunks  

FROM dba_free_space GROUP BY tablespace_name;  

(. 监控数据库性能  

q行bstat/estat生成pȝ报告  

或者用statspack攉l计数据  

(9). (g)查数据库性能Q记录数据库的cpu使用、IO、buffer命中率等{ ?br />
使用vmstat,iostat,glance,top{命令 ?br />
(10). 日常出现问题的处理。 ?br />
每周的工作 ?br />
(1). 控数据库对象的空间扩展情况 ?br />
Ҏ(gu)本周每天的检查情冉|到空间扩展很快的数据库对?q取相  

应的措施  

-- 删除历史数据  

--- 扩表I间  

alter tablespace <name>; add datafile ?lt;file>;?size <size>;  

--- 调整数据对象的存储参敊W?br />
next extent  

pct_increase  

(2). 监控数据量的增长情况  

Ҏ(gu)本周每天的检查情冉|到记录数量增长很快的数据库对?q  

取相应的措施  

-- 删除历史数据  

--- 扩表I间  

alter tablespace <name>; add datafile ?lt;file>;?size <size>;  

(3). pȝ健康(g)查 ?br />
(g)查以下内?  

init<sid>;.ora  

controlfile  

redo log file  

archiving  

sort area size  

tablespace(system,temporary,tablespace fragment)  

datafiles(autoextend,location)  

object(number of extent,next extent,index)  

rollback segment  

logging &tracing(alert.log,max_dump_file_size,sqlnet)  

(4). (g)查无效的数据库对象 ?br />
SELECT owner, object_name, object_type FROM dba_objects  

WHERE status=’INVALID’。 ?br />
(5). (g)查不起作用的U束  

SELECT owner, constraint_name, table_name,  

constraint_type, status  

FROM dba_constraints  

WHERE status = 'DISABLED?AND constraint_type = 'P'  

(6). (g)查无效的trigger  

SELECT owner, trigger_name, table_name, status  

FROM dba_triggers  

WHERE status = 'DISABLED’ ?br />
每月的工作 ?br />
(1). Analyze Tables/Indexes/Cluster  

analyze table <name>; estimate statistics sample 50 percent;  

(2). (g)查表I间片  

Ҏ(gu)本月每周的检查分析数据库片情况,扑ֈ相应的解x法 ?br />
(3). L数据库性能调整的机?x) ?br />
比较每天Ҏ(gu)据库性能的监控报?定是否有必要对数据库性能q?行调敾b?br />
(4). 数据库性能调整  

如有必要,q行性能调整  

(5). 提出下一步空间管理计划 ?br />
Ҏ(gu)每周的监?提出I间理的改q方法 ?br />
Oracle DBA 日常理  

目的Q这文档有很详l的资料记录着对一个甚x多的ORACLE 数据库每天的Q每月的Q ?br />
每年的运行的状态的l果?qing)检查的l果Q在文档的附录中你将?x)看到所有检查,修改的SQL  

和PL/SQL 代码。 ?br />
目录  

1.日常l护E序  

AQ?(g)查已L(fng)所有实例 ?br />
BQ?查找一些新的警告日志 ?br />
CQ?(g)查DBSNMP 是否在运行 ?br />
DQ?(g)查数据库备䆾是否正确  

EQ?(g)查备份到带中的文g是否正确  

FQ?(g)查数据库的性能是否正常合理Q是否有_的空间和资源  

GQ?文档日志复制到备䆾的数据库中 ?br />
HQ?要常看DBA 用户手册  

2.晚间l护E序  

AQ收集VOLUMETRIC 的数据 ?br />
3.每周l护工作  

AQ?查找那些破坏规则的OBJECT  

BQ?查找是否有违反安全策略的问题  

CQ?查看错误地方的SQL*NET 日志  

DQ?所有的警告日志存档  

EQ?l常讉K供应商的主页  

4.月维护程序 ?br />
AQ?查看Ҏ(gu)据库?x)生危害的增长速度  

BQ?回顾以前数据库优化性能的调敾b?br />
CQ?查看I/O 的屏颈问题 ?br />
DQ?回顾FRAGMENTATION  

EQ?来的执行计划 ?br />
FQ?查看调整点和l护  

5.附录  

AQ?月维护过E ?br />
BQ?晚间l护q程  

CQ?周维护过E ?br />
6.参考文献 ?br />
----------------------------------------------------------------  

一Q日l护q程  

AQ查看所有的实例是否已v  

定数据库是可用的,把每个实例写入日志ƈ且运行日报告或是q行试  

文g。当然有一些操作我们是希望它能自动q行的。 ?br />
可选择执行Q用ORACLE 理器中的‘PROBE’事件来查看  

BQ查找新的警告日志文件 ?br />
1. 联接每一个操作管理系l ?br />
2. 使用‘TELNET’或是可比较E序  

3. Ҏ(gu)一个管理实例,l常的执?ORACLE_BASE/<SID>;/bdump 操 ?br />
作,q其能回退到控制数据库的SID。 ?br />
4. 在提CZQ用UNIX 中的‘TAIL’命令查看alert_<SID>;.logQ或是 ?br />
用其他方式检查文件中最q时期的警告日志  

5. 如果以前出现q的一些ORA_ERRORS 又出玎ͼ它记录到数据库  

恢复日志中ƈ且仔l的研究它们Q这个数据库恢复日志在〈F(tun)ILE〉中  

CQ查看DBSNMP 的运行情况 ?br />
(g)查每个被理机器的‘DBSNMP’进Eƈ它们记录到日志中。 ?br />
在UNIX 中,在命令行中,键入ps –ef | grep dbsnmp,回看到2 个 ?br />
DBSNMP q程在运行。如果没有,重启DBSNMP。 ?br />
DQ查数据库备份是否成功 ?br />
EQ检查备份的带文档是否成功  

FQ检查对合理的性能来说是否有够的资源  

1. (g)查在表空间中有没有剩余空间。 ?br />
Ҏ(gu)一个实例来_(d)(g)查在表空间中是否存在有剩余空间来满当天  

的预期的需要。当数据库中已有的数据是E_的,数据日增长的q_  

C是可以计出来,最的剩余I间臛_要能满每天数据的增 ѝ ?br />
AQ?q行‘FREE.SQL’来(g)查表I间的剩余空间。 ?br />
BQ?q行‘SPACE.SQL’来(g)查表I间中的剩余I间癑ֈ率 ?br />
2. (g)查回滚段  

回滚D늚状态一般是在线的,除了一些ؓ(f)复杂工作准备的专?D,它一般状态是ȝ的。 ?br />
a) 每个数据库都有一个回滚段名字的列表。 ?br />
b) 你可以用V$ROLLSTAT 来查询在U或是离U的回滚D늚现在??  

c) 对于所有回滚段的存储参数及(qing)名字Q?可用  

DBA_ROLLBACK_SEGS 来查询。但是它不如V$ROLLSTAT 准确。 ?br />
3. 识别Z些过分的增长  

查看数据库中出资源或是增长速度q大的段Q这些段的存储参 数需要调整。 ?br />
aQ?攉日数据大的信息Q?可以用 ?br />
‘ANALYZE5PCT.SQL’。如果你攉的是每晚的信息, 则可跌q一步。 ?br />
bQ?(g)查当前的范围Q可用‘NR.EXTENTS.SQL’。 ?br />
cQ?查询当前表的大小信息。 ?br />
dQ?查询当前索引大小的信息。 ?br />
eQ?查询增长势。 ?br />
4. 定I间的范围。 ?br />
如果范围I间对象的NEXT_EXTENT 比表I间所能提供的最大范  

围还要大Q那么这媄(jing)响数据库的运行。如果我们找Cq个目标Q可  

以用‘ALTER TABLESPACE COALESCE’调查它的位|,或加另外 的数据文件。 ?br />
AQ运行‘SPACEBOUND.SQL’。如果都是正常的Q将不返回Q何行。 ?br />
5. 回顾CPUQ内存,|络Q硬件资源论点的q程  

AQ检查CPU的利用情况,q到x:.htm =>;system  

metrics=>;CPU 利用,CPU 的最大限度ؓ(f)400Q当CPU 的占用保持 ?br />
?50 以上有一D|间的话,我们需要查看及(qing)研究出现的问题。 ?br />
GQ将存档日志复制到备用数据库中 ?br />
如果有一个备用数据库Q将适当的存档日志复制到备用数据库的期望  

位置Q备用数据库中保存最q期的数据。 ?br />
H. l常查阅DBA 用户手册  

如果有可能的话,要广泛的阅读Q包括DBA 手册Q行业杂志,新闻 l或是邮件列表。 ?br />
-------------------------------------------------------------  

二.晚间l护q程  

大部分的数据库品将受益于每晚确定的(g)查进E的q行。 ?br />
A. 攉VOLUMETRIC 数据  

1. 分析计划和收集数据 ?br />
更准的分析计算q保存结果。 ?br />
aQ?如果你现在没有作q些的话Q用‘MK VOLFACT.SQL’来创徏定体积?表。 ?br />
bQ?攉晚间数据大小的信息,用‘ANALYZE COMP.SQL’。 ?br />
cQ?攉l计l果Q用‘POP VOL.SQL’。 ?br />
dQ?在空闲的时候检查数据,可能的话Q每周或每个月进行。 ?br />
我是用MS EXCEL 和ODBC 的联接来(g)查数据和图表的增长 ?br />
-------------------------------------------------------------  

三.每周l护q程  

AQ?查找被破坏的目标  

1. 对于每个l定表空间的对象来说QNEXT_EXTENT 的大是相同的,如 ?br />
12/14/98Q缺省的NEXT_EXTENT 的DATAHI ?GQDATALO ?00MBQ ?br />
INDEXES ?56MB。 ?br />
AQ?(g)查NEXT_EXTENT 的设|,可用‘NEXTEXT。SQL’。 ?br />
BQ?(g)查已有的EXTENTSQ可用‘EXISTEXT。SQL’。 ?br />
2. 所有的表都应该有唯一的主键 ?br />
aQ?查看那些表没有主键,可用‘NO_PK.SQL’。 ?br />
bQ?查找那些主键是没有发挥作用的Q可用‘DIS_PK.SQL’。 ?br />
cQ?所有作索引的主键都要是唯一的,可用?NONUPK。SQL’来(g) 查。 ?br />
3. 所有的索引都要攑ֈ索引表空间中。运行‘MKREBUILD_IDX。SQL’ ?br />
4. 不同的环境之间的计划应该是同L(fng)Q特别是试环境和成品环境之间的 计划应该相同。 ?br />
aQ?(g)查不同的2 个运行环境中的数据类型是否一_(d)可用  

‘DATATYPE.SQL’。 ?br />
bQ?? 个不同的实例中寻扑֯象的不同点, 可用  

‘OBJ_COORD.SQL’。 ?br />
cQ?更好的做法是Q用一U工P象寻求Y件的计划理器那L(fng) 工具。 ?br />
BQ?查看是否有危宛_安全{略的问题。 ?br />
CQ?查看报错的SQL*NET 日志。 ?br />
1. 客户端的日志。 ?br />
2. 服务器端的日志。 ?br />
DQ?所有的警告日志存档  

EQ?供应商的主页  

1. ORACLE 供应商 ?br />
http://www.oracle.com  

http://technet.oracle.com  

http://www.oracle.com/support  

http://www.oramag.com  

2. Quest Software  

http://www.quests.com  

3. Sun Microsystems  

http://www.sun.com  

----------------------------------------------------------------  

四.月维护过E ?br />
AQ查看对数据库会(x)产生危害的增镉K度  

1. 从以前的记录或报告中回顾D增长的变化以此来确定段增长带来危害  

BQ?回顾以前数据库优化性能的调敾b?br />
1. 回顾一般ORACLE 数据库的调整点,比较以前的报告来定有害的发?势。 ?br />
CQ?查看I/O 的屏颈问题 ?br />
1. 查看前期数据库文件的zd性,比较以前的输出来判断有可能导致屏?问题的趋ѝ ?br />
DQ?回顾FRAGMENTATION  

EQ?计划数据库将来的性能  

1. 比较ORACLE 和操作系l的CPUQ内存,|络Q及(qing)盘的利用率以此  

来确定在q期会(x)有的一些资源争夺的势  

2. 当系l将出范围时要把性能势当作服务水^的协议来看 ?br />
FQ?完成调整和维护工作 ?br />
1.使修Ҏ(gu)避免系l资源的争夺的需要,q里面包括增加新资源或预期 的停工。 ?br />
----------------------------------------------------------------  

五.附录  

A. 日常E序  

-- free.sql  

--To verify free space in tablespaces  

--Minimum amount of free space  

--document your thresholds:  

--<tablespace_name>; = <amount>; m  

SELECT tablespace_name, sum ( blocks ) as free_blk , trunc ( sum ( bytes ) /  

(1024*1024) ) as free_m, max ( bytes ) / (1024) as big_chunk_k, count (*) as num_chunks  

FROM dba_free_space GROUP BY tablespace_name  

1. Space.sql  

-- space.sql  

-- To check free, pct_free, and allocated space within a tablespace  

-- 11/24/98  

SELECT tablespace_name, largest_free_chunk  

, nr_free_chunks, sum_alloc_blocks, sum_free_blocks  

, to_char(100*sum_free_blocks/sum_alloc_blocks, '09.99') || '%'  

AS pct_free  

FROM ( SELECT tablespace_name , sum(blocks) AS sum_alloc_blocks  

FROM dba_data_files GROUP BY tablespace_name )  

, ( SELECT tablespace_name AS fs_ts_name  

, max(blocks) AS largest_free_chunk  

, count(blocks) AS nr_free_chunks  

, sum(blocks) AS sum_free_blocks FROM dba_free_space  

GROUP BY tablespace_name ) WHERE tablespace_name = fs_ts_name  

2. analyze5pct.sql  

-- analyze5pct.sql  

-- To analyze tables and indexes quickly, using a 5% sample size  

-- (do not use this script if you are performing the overnight  

-- collection of volumetric data)  

-- 11/30/98  

BEGIN  

dbms_utility.analyze_schema ( '&OWNER', 'ESTIMATE', NULL, 5 ) ;  

END ;  

/  

3. nr_extents.sql  

-- nr_extents.sql  

-- To find out any object reaching <threshold>;  

-- extents, and manually upgrade it to allow unlimited  

-- max_extents (thus only objects we *expect* to be big  

-- are allowed to become big)  

-- 11/30/98  

SELECT e.owner, e.segment_type , e.segment_name , count(*) as nr_extents ,  

s.max_extents  

, to_char ( sum ( e.bytes ) / ( 1024 * 1024 ) , '999,999.90') as MB  

FROM dba_extents e , dba_segments s  

WHERE e.segment_name = s.segment_name  

GROUP BY e.owner, e.segment_type , e.segment_name , s.max_extents  

HAVING count(*) >; &THRESHOLD  

OR ( ( s.max_extents - count(*) ) < &&THRESHOLD )  

ORDER BY count(*) desc  

4. spacebound.sql  

-- spacebound.sql  

-- To identify space-bound objects. If all is well, no rows are returned.  

-- If any space-bound objects are found, look at value of NEXT extent  

-- size to figure out what happened.  

-- Then use coalesce (alter tablespace <foo>; coalesce .  

-- Lastly, add another datafile to the tablespace if needed.  

-- 11/30/98  

SELECT a.table_name, a.next_extent, a.tablespace_name  

FROM all_tables a,  

( SELECT tablespace_name, max(bytes) as big_chunk  

FROM dba_free_space  

GROUP BY tablespace_name ) f  

WHERE f.tablespace_name = a.tablespace_name  

AND a.next_extent >; f.big_chunk  

B. 每晚处理E序  

1. mk_volfact.sql  

-- mk_volfact.sql (only run this once to set it up; do not run it nightly!)  

-- -- Table UTL_VOL_FACTS  

CREATE TABLE utl_vol_facts (  

table_name VARCHAR2(30),  

num_rows NUMBER,  

meas_dt DATE )  

TABLESPACE platab  

STORAGE (  

INITIAL 128k  

NEXT 128k  

PCTINCREASE 0  

MINEXTENTS 1  

MAXEXTENTS unlimited  

)  

/  

-- Public Synonym  

CREATE PUBLIC SYNONYM utl_vol_facts FOR &OWNER..utl_vol_facts  

/  

-- Grants for UTL_VOL_FACTS  

GRANT SELECT ON utl_vol_facts TO public  

/  

2. analyze_comp.sql  

--  

-- analyze_comp.sql  

--  

BEGIN  

sys.dbms_utility.analyze_schema ( '&OWNER','COMPUTE');  

END ;  

/  

3. pop_vol.sql  

--  

-- pop_vol.sql  

--  

insert into utl_vol_facts  

select table_name  

, NVL ( num_rows, 0) as num_rows  

, trunc ( last_analyzed ) as meas_dt  

from all_tables -- or just user_tables  

where owner in ('&OWNER') -- or a comma-separated list of owners  

/  

commit  

/  

   

C. 每周处理E序  

1. nextext.sql  

--  

-- nextext.sql  

--  

-- To find tables that don't match the tablespace default for NEXT extent.  

-- The implicit rule here is that every table in a given tablespace should  

-- use the exact same value for NEXT, which should also be the tablespace's  

-- default value for NEXT.  

--  

-- This tells us what the setting for NEXT is for these objects today.  

--  

-- 11/30/98  

SELECT segment_name, segment_type, ds.next_extent as Actual_Next  

, dt.tablespace_name, dt.next_extent as Default_Next  

FROM dba_tablespaces dt, dba_segments ds  

WHERE dt.tablespace_name = ds.tablespace_name  

AND dt.next_extent !=ds.next_extent  

AND ds.owner = UPPER ( '&OWNER' )  

ORDER BY tablespace_name, segment_type, segment_name  

2. existext.sql  

--  

-- existext.sql  

--  

-- To check existing extents  

--  

-- This tells us how many of each object's extents differ in size from  

-- the tablespace's default size. If this report shows a lot of different  

-- sized extents, your free space is likely to become fragmented. If so,  

-- this tablespace is a candidate for reorganizing.  

--  

-- 12/15/98  

SELECT segment_name, segment_type  

, count(*) as nr_exts  

, sum ( DECODE ( dx.bytes,dt.next_extent,0,1) ) as nr_illsized_exts  

, dt.tablespace_name, dt.next_extent as dflt_ext_size  

FROM dba_tablespaces dt, dba_extents dx  

WHERE dt.tablespace_name = dx.tablespace_name  

AND dx.owner = '&OWNER'  

GROUP BY segment_name, segment_type, dt.tablespace_name, dt.next_extent  

3. No_pk.sql  

--  

-- no_pk.sql  

--  

-- To find tables without PK constraint  

--  

-- 11/2/98  

SELECT table_name  

FROM all_tables  

WHERE owner = '&OWNER'  

MINUS  

SELECT table_name  

FROM all_constraints  

WHERE owner = '&&OWNER'  

AND constraint_type = 'P'  

4. disPK.sql  

--  

-- disPK.sql  

--  

-- To find out which primary keys are disabled  

--  

-- 11/30/98  

SELECT owner, constraint_name, table_name, status  

FROM all_constraints  

WHERE owner = '&OWNER' AND status = 'DISABLED?AND constraint_type = 'P'  

5. nonuPK.sql  

--  

-- nonuPK.sql  

--  

-- To find tables with nonunique PK indexes. Requires that PK names  

-- follow a naming convention. An alternative query follows that  

-- does not have this requirement, but runs more slowly.  

--  

-- 11/2/98  

SELECT index_name, table_name, uniqueness  

FROM all_indexes  

WHERE index_name like '&KNAME%'  

AND owner = '&OWNER' AND uniqueness = 'NONUNIQUE'  

SELECT c.constraint_name, i.tablespace_name, i.uniqueness  

FROM all_constraints c , all_indexes i  

WHERE c.owner = UPPER ( '&OWNER' ) AND i.uniqueness = 'NONUNIQUE'  

AND c.constraint_type = 'P' AND i.index_name = c.constraint_name  

6. mkrebuild_idx.sql  

--  

-- mkrebuild_idx.sql  

--  

-- Rebuild indexes to have correct storage parameters  

--  

-- 11/2/98  

SELECT 'alter index ' || index_name || ' rebuild '  

, 'tablespace INDEXES storage '  

|| ' ( initial 256 K next 256 K pctincrease 0 ) ; '  

FROM all_indexes  

WHERE ( tablespace_name != 'INDEXES'  

OR next_extent != ( 256 * 1024 )  

)  

AND owner = '&OWNER'  

/  

7. datatype.sql  

--  

-- datatype.sql  

--  

-- To check datatype consistency between two environments  

--  

-- 11/30/98  

SELECT  

table_name,  

column_name,  

data_type,  

data_length,  

data_precision,  

data_scale,  

nullable  

FROM all_tab_columns -- first environment  

WHERE owner = '&OWNER'  

MINUS  

SELECT  

table_name,  

column_name,  

data_type,  

data_length,  

data_precision,  

data_scale,  

nullable  

FROM all_tab_columns@&my_db_link -- second environment  

WHERE owner = '&OWNER2'  

order by table_name, column_name  

8. obj_coord.sql  

--  

-- obj_coord.sql  

--  

-- To find out any difference in objects between two instances  

--  

-- 12/08/98  

SELECT object_name, object_type  

FROM user_objects  

MINUS  

SELECT object_name, object_type  

FROM user_objects@&my_db_link  

? 参考文献 ?br />
1. Loney, Kevin Oracle8 DBA Handbook  

2. Cook, David Database Management from Crisis to Confidence  

[http://www.orapub.com/]  

3. Cox, Thomas B. The Database Administration Maturity Model


]]>
Q{QOracle高手必读http://www.aygfsteel.com/cymao/archive/2006/03/30/38280.html?/dc:creator>?/author>Thu, 30 Mar 2006 08:58:00 GMThttp://www.aygfsteel.com/cymao/archive/2006/03/30/38280.htmlhttp://www.aygfsteel.com/cymao/comments/38280.htmlhttp://www.aygfsteel.com/cymao/archive/2006/03/30/38280.html#Feedback0http://www.aygfsteel.com/cymao/comments/commentRss/38280.htmlhttp://www.aygfsteel.com/cymao/services/trackbacks/38280.html1. 删除表的注意事项  
在删除一个表中的全部数据ӞM用TRUNCATE TABLE 表名;因ؓ(f)用DROP TABLEQDELETE * FROM 表名ӞTABLESPACE表空间该表的占用I间q未释放Q反复几ơDROPQDELETE操作后,该TABLESPACE上百兆的I间p耗光了。 ?br />
2.having 子句的用法 ?br />  having 子句?group by 子句所定的行l进行控?having 子句条g中只允许涉及(qing)帔R,聚组函数或group by 子句中的?  

3.外部联接"+"的用法 ?br />  外部联接"+"按其?="的左Ҏ(gu)双分左联接和右联接.若不?+"q算W的表中的一个行不直接匹配于?+"预算W的表中的Q何行,则前者的行与后者中的一个空行相匚wq被q回.若二者均不带??则二者中无法匚w的均被返?利用外部联接"+",可以替代效率十分低下?not in q算,大大提高q行速度.例如,下面q条命o(h)执行h很慢  

用外联接提高表连接的查询速度  
在作表连?常用于视?Ӟ怋用以下方法来查询数据:  
SELECT PAY_NO, PROJECT_NAME  
FROM A  
WHERE A.PAY_NO NOT IN (SELECT PAY_  
NO FROM B WHERE VALUE >;=120000);  
---- 但是若表A?0000条记录,表B?0000条记录,则要用掉30分钟才能查完Q主要因为NOT IN要进行一条一条的比较Q共需?0000*10000ơ比较后Q才能得到结果。该用外联接后,可以~短?分左右的旉:  
SELECT PAY_NO,PROJECT_NAME  
FROM A,B  
WHERE A.PAY_NO=B.PAY_NO(+)  
AND B.PAY_NO IS NULL  
AND B.VALUE >;=12000;  


4.set transaction 命o(h)的用法 ?br />在执行大事务?有时oracle?x)报出如下的错?  
ORA-01555:snapshot too old (rollback segment too small)  
  q说明oraclel此事务随机分配的回滚段太小?q时可以为它指定一个够大的回滚段,以确保这个事务的成功执行.例如  

set transaction use rollback segment roll_abc;  
delete from table_name where ...  
commit;  
  回滚Droll_abc被指定给q个delete事务,commit命o(h)则在事务l束之后取消了回滚段的指?  


5.数据库重建应注意的问题 ?br />
  在利用importq行数据库重E中,有些视图可能?x)带来问?因ؓ(f)l构输入的顺序可能造成视图的输入先于它低层ơ表的输?q样建立视图׃(x)p|.要解册一问题,可采取分两步走的Ҏ(gu):首先输入l构,然后输入数据.命o(h)举例如下 (uesrname:jfcl,password:hfjf,host stingra1,数据文g:expdata.dmp):  

imp jfcl/hfjf@ora1 file=empdata.dmp rows=N  

imp jfcl/hfjf@ora1 file=empdata.dmp full=Y buffer=64000  

commit=Y ignore=Y  

  W一条命令输入所有数据库l构,但无记录.W二ơ输入结构和数据,64000字节提交一?ignore=Y选项保证W二ơ输入既使对象存在的情况下也能成?  

select a.empno from emp a where a.empno not in  

(select empno from emp1 where job=’SALE?;  

  倘若利用外部联接,改写命o(h)如下:  

select a.empno from emp a ,emp1 b  

where a.empno=b.empno(+)  

and b.empno is null  

and b.job=’SALE?  

  可以发现,q行速度明显提高.  


6.从已知表新徏另一个表Q ?br />CREATE TABLE b  
AS SELECT * (可以是表a中的几列)  
FROM a  
WHERE a.column = ...;  


7.查找、删除重复记?  

法一: 用Group by语句 此查扑־快的  
select count(num), max(name) from student --查找表中num列重复的Q列出重复的记录敎ͼq列Z的name属性 ?br />group by num  
having count(num) >;1 --按num分组后找中num列重复,卛_现次数大于一ơ ?br />
delete from student(上面Select?  
q样的话把所有重复的都删除了?----慎重  

法二:当表比较?例如10万条以上)?q个Ҏ(gu)的效率之差o(h)人无法忍?需要另惛_?  
---- 执行下面SQL语句后就可以昄所有DRAWING和DSNO相同且重复的记录  
SELECT * FROM EM5_PIPE_PREFAB  
WHERE ROWID!=(SELECT MAX(ROWID) FROM EM5_PIPE_PREFAB D --D相当于First,Second  
WHERE EM5_PIPE_PREFAB.DRAWING=D.DRAWING AND  
EM5_PIPE_PREFAB.DSNO=D.DSNO);  

---- 执行下面SQL语句后就可以刪除所有DRAWING和DSNO相同且重复的记录  
DELETE FROM EM5_PIPE_PREFAB  
WHERE ROWID!=(SELECT MAX(ROWID) FROM EM5_PIPE_PREFAB D  
WHERE EM5_PIPE_PREFAB.DRAWING=D.DRAWING AND  
EM5_PIPE_PREFAB.DSNO=D.DSNO);  

8.q回表中[NQM]条记录:(x)  

取得某列中第N大的行 ?br />select column_name from  
(select table_name.*,dense_rank() over (order by column desc) rank from table_name)  
where rank = &NQ ?br />
 假如要返回前5条记录:(x)  
  select * from tablename where rownum<6;(或是rownum <= 5 或是rownum != 6)  
假如要返回第5-9条记录:(x)  
select * from tablename  
where … ?br />and rownum<10  
minus  
select * from tablename  
where … ?br />and rownum<Q ?br />order by name  
 选出l果后用name排序昄l果?先选再排序)  

注意Q只能用以上W号(<?lt;=?=)。 ?br />select * from tablename where rownum != 10;q回的是前9条记录。 ?br />不能用:(x)>;,>;=,=,Between...and。由于rownum是一个L?开始的伪列QOracle 认ؓ(f)q种条g 不成立,查不到记?  

另外Q这个方法更快:(x)  
select * from (  
select rownum r,a from yourtable  
where rownum <= 20  
order by name )  
where r >; 10  
q样取出W?1-20条记?(先选再排序再?  
要先排序再选则ȝselect嵌套Q内层排序外层选。 ?br />
rownum是随着l果集生成的Q一旦生成,׃?x)变化了Q同?生成的结果是依次递加的,没有1永q不?x)?!  
rownum 是在 查询集合产生的过E中产生的伪列,q且如果where条g中存?rownum 条g的话Q则:  
1Q?假如 判定条g是常量,则:(x)  
只能 rownum = 1, <= 大于1 的自然数Q?= 大于1 的数是没有结果的Q?大于一个数也是没有l果的 ?br />?当出C?rownum 不满x件的时候则 查询l束   this is stop key!  
2: 当判定g是常量的时候 ?br />若条件是 = var , 则只有当 var ? 的时候才满条gQ这个时候不存在 stop key ,必须q行 full scan ,Ҏ(gu)个满_他where条g的数据进行判定 ?br />选出一行后才能去选rownum=2的行…… ?br />

9.快速编译所有视图 ?br />
---- 当在把数据库倒入到新的服务器上后(数据库重?Q需要将视图重新~译一遍,因ؓ(f)该表I间视图到其它表I间的表的连接会(x)出现问题Q可以利用PL/SQL的语aҎ(gu),快速编译。 ?br />SQL >;SPOOL ON.SQL  
SQL >;SELECT ‘ALTER VIEW ‘||TNAME||’ ?br />COMPILE;?FROM TAB;  
SQL >;SPOOL OFF  
然后执行ON.SQL卛_。 ?br />SQL >;@ON.SQL  
当然Q授权和创徏同义词也可以快速进行,如:(x)  
SQL >;SELECT ‘GRANT SELECT ON ’ ?br />||TNAME||?TO USERNAME;?FROM TAB;  
SQL >;SELECT ‘CREATE SYNONYM  
‘||TNAME||?FOR USERNAME.’||TNAME||??FROM TAB;  


10.d文本型操作系l文件 ?br />---- 在PL/SQL 3.3以上的版本中QUTL_FILE包允许用户通过PL/SQLd操作pȝ文g。如下:(x)  

DECALRE  
FILE_HANDLE UTL_FILE.FILE_TYPE;  
BEGIN  
FILE_HANDLE:=UTL_FILE.FOPEN(  
‘C:\?’TEST.TXT?’A?;  
UTL_FILE.PUT_LINE(FILE_HANDLE,’ ?br />HELLO,IT’S A TEST TXT FILE?;  
UTL_FILE.FCLOSE(FILE_HANDLE);  
END;  


11.在数据库触发器中使用列的新g旧值 ?br />---- 在数据库触发器中几乎L要用触发器的列|如果某条语句需要某列修改前的|使用:OLD可以了Q用某列修改后的新|?NEW可以了。如:OLD.DEPT_NO,:NEW.DEPT_NO。 ?br />

12.数据库文件的UdҎ(gu)  
当想数据库文gUd到另外一个目录下Ӟ可以用ALTER DATABASE命o(h)来移?比ALTER TABLESPACE适用性强)Q ?br />1. 使用SERVER MANAGER关闭实例.  
SVRMGR >; connect internal;  
SVRMGR >; shutdown;  
SVRMGR >;exit;  
2. 使用操作pȝ命o(h)来移动数据库文g位置(假设q里操作pȝ为SOLARIS 2.6). 在UNIX中用 mv命o(h)可以把文件移动到新的位置Q ?br />#mv /ora13/orarun/document.dbf /ora12/orarun  
3. 装蝲数据库ƈ用alter database命o(h)来改变数据库中的文g?  
SVRMGR >; connect internal;  
SVRMGR >; startup mount RUN73;  
SVRMGR >; alter database rename file  
>; ? ora13/orarun/document.dbf’ ?br />>; ? ora12/orarun/document.dbf?  
4. 启动实例.  
SVRMGR >; alter database open;  


13.q接查询l果Q ?br />表a ?a1 a2  
记录 1 a  
1 b  
2 x  
2 y  
2 z  
用select能选成以下l果:  
1 ab  
2 xyz  

下面有两个例子:(x)  
1.使用pl/sql代码实现Q但要求你组合后的长度不能超出oracle varchar2长度的限制 ?br />create or replace type strings_table is table of varchar2(20);  
/  
create or replace function merge (pv in strings_table) return varchar2  
is  
ls varchar2(4000);  
begin  
for i in 1..pv.count loop  
ls := ls || pv(i);  
end loop;  
return ls;  
end;  
/  
create table t (id number,name varchar2(10));  
insert into t values(1,'Joan');  
insert into t values(1,'Jack');  
insert into t values(1,'Tom');  
insert into t values(2,'Rose');  
insert into t values(2,'Jenny');  

column names format a80;  
select t0.id,merge(cast(multiset(select name from t where t.id = t0.id) as strings_table)) names  
from (select distinct id from t) t0;  

drop type strings_table;  
drop function merge;  
drop table t;  


2.Ua(b)用sqlQ ?br />表dept, emp  
要得到如下结果 ?br />deptno, dname, employees  
---------------------------------  
10, accounting, clark;king;miller  
20, research, smith;adams;ford;scott;jones  
30, sales, allen;blake;martin;james;turners  
每个dept的employee串v来作Z条记录返回 ?br />
This example uses a max of 6, and would need more cut n pasting to do more than thatQ ?br />
SQL>; select deptno, dname, emps  
2 from (  
3 select d.deptno, d.dname, rtrim(e.ename ||', '||  
4 lead(e.ename,1) over (partition by d.deptno  
5 order by e.ename) ||', '||  
6 lead(e.ename,2) over (partition by d.deptno  
7 order by e.ename) ||', '||  
8 lead(e.ename,3) over (partition by d.deptno  
9 order by e.ename) ||', '||  
10 lead(e.ename,4) over (partition by d.deptno  
11 order by e.ename) ||', '||  
12 lead(e.ename,5) over (partition by d.deptno  
13 order by e.ename),', ') emps,  
14 row_number () over (partition by d.deptno  
15 order by e.ename) x  
16 from emp e, dept d  
17 where d.deptno = e.deptno  
18 )  
19 where x = 1  
20 /  

DEPTNO DNAME EMPS  
------- ----------- ------------------------------------------  
10 ACCOUNTING CLARK, KING, MILLER  
20 RESEARCH ADAMS, FORD, JONES, ROONEY, SCOTT, SMITH  
30 SALES ALLEN, BLAKE, JAMES, MARTIN, TURNER, WARD  



14.在Oracle中徏一个编号会(x)自动增加的字D?以利于查询 ?br />
1、徏立序列:(x)  
CREATE SEQUENCE checkup_no_seq  
NOCYCLE  
MAXVALUE 9999999999  
START WITH 2;  

2、徏立触发器Q ?br />CREATE OR REPLACE TRIGGER set_checkup_no  
BEFORE INSERT ON checkup_history  
FOR EACH ROW  
DECLARE  
next_checkup_no NUMBER;  
BEGIN  
--Get the next checkup number from the sequence  
SELECT checkup_no_seq.NEXTVAL  
INTO next_checkup_no  
FROM dual;  

--use the sequence number as the primary key  
--for the record being inserted  
:new.checkup_no := next_checkup_no;  
END;  


15.查看对象的依赖关p?比如视图与表的引?  

查看视图Qdba_dependencies 记录了相关的依赖关系  
查东西不知道要查看哪个视图时Q可以在DBA_Objects里看Q ?br />select object_name from dba_objects where object_name like '%ROLE%'(假如查看ROLE相关)  
然后DESC一下就大体上知道了。 ?br />

16.要找到某月中所有周五的具体日期  
select to_char(t.d,'YY-MM-DD') from (  
select trunc(sysdate, 'MM')+rownum-1 as d  
from dba_objects  
where rownum < 32) t  
where to_char(t.d, 'MM') = to_char(sysdate, 'MM') --扑և当前月䆾的周五的日期  
and trim(to_char(t.d, 'Day')) = '星期?  

]]>
Linux下硬盘分区的最x?/title><link>http://www.aygfsteel.com/cymao/archive/2006/01/24/29100.html</link><dc:creator>?/dc:creator><author>?/author><pubDate>Tue, 24 Jan 2006 06:37:00 GMT</pubDate><guid>http://www.aygfsteel.com/cymao/archive/2006/01/24/29100.html</guid><wfw:comment>http://www.aygfsteel.com/cymao/comments/29100.html</wfw:comment><comments>http://www.aygfsteel.com/cymao/archive/2006/01/24/29100.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.aygfsteel.com/cymao/comments/commentRss/29100.html</wfw:commentRss><trackback:ping>http://www.aygfsteel.com/cymao/services/trackbacks/29100.html</trackback:ping><description><![CDATA[<TABLE cellSpacing=1 cellPadding=4 width="100%" bgColor=#cccccc border=0> <TBODY> <TR vAlign=top bgColor=#eeeeee> <TD style="WORD-BREAK: break-all" width="96%"> <TABLE cellSpacing=0 cellPadding=2 width="100%" border=0> <TBODY> <TR> <TD vAlign=top width="90%"><FONT face=arial,sans-serif color=#000000 size=-1><B>Linux下硬盘分区的最x?/B></FONT></TD> <TD noWrap width="10%"><FONT face=arial,sans-serif color=#000000 size=-1></FONT></TD></TR></TBODY></TABLE></TD> <TD style="WORD-BREAK: break-all" vAlign=top noWrap align=middle width="1%"> <TABLE cellSpacing=0 cellPadding=2 border=0> <TBODY> <TR> <TD><A title=回复此消?></A></TD> <TD><FONT face=arial,sans-serif size=-1></FONT></TD></TR></TBODY></TABLE></TD></TR> <TR bgColor=#eeeeee> <TD style="WORD-BREAK: break-all" vAlign=top width="99%" colSpan=2><FONT face=arial,sans-serif color=#000000 size=-1>在对盘q行分区前,应该先弄清楚计算机担负的工作?qing)硬盘的定w有多大,q要考虑C下几个问题?nbsp;<BR><BR>  W一点也是最重要的一点,要知道当前安装LILO的版本,因ؓ(f)LILO2.21?qing)早期版本对盘大小有限Ӟ如果安装LILO?023道以外?G的空间以外,LILO无法启动?nbsp;但一些BIOS较老的机器QLINUX仍然无法H破1024道的限Ӟ因此q些BIOS无法认出大于1024的硬盘空间?nbsp;<BR><BR>  q需要考虑的问题有Q?nbsp;<BR><BR>  · 是否限制用户可用的盘I间大小Q?nbsp;<BR><BR>  · 在系l中需要安装哪些YӞ <BR><BR>  · 交换分区需要多大? <BR><BR>  · pȝ是否有多个硬盘? <BR><BR>  下面Q我们按pȝ工作性质的不同对分区的划分提Z一些徏议。当?dng)?gu)实际情况Q在满pȝ工作需求的前提下,下面的分区大也可以灉|的变动?nbsp;<BR><BR>基本工作站的分区Ҏ(gu) <BR>  假设pȝ的硬盘大是10G?nbsp;<BR><BR>  /boot 20M <BR><BR>  Swap 128M <BR><BR>  /root 9.85G <BR><BR>  建立一?0M?boot分区是ؓ(f)了避免将pȝ内核文g攑ֈ1024道以外Q如果将/boot做ؓ(f)root分区的一个子目录Q内核文件就?x)安装在root分区的Q何地方,因ؓ(f)盘的大超q了8GQ所以在启动时就有可能出现问题。徏议将交换分区的大设|ؓ(f)内存的两倍,在这里我们假讄l的内存?4M。最后我们将盘的剩余空间全部分l了root分区?nbsp;<BR><BR>Red Hat Linux 6.2 ?qing)其早期版本上的基本服务器硬盘分区方?nbsp;<BR>  q里的服务器我们假设只提供几U通用的服务,如WWW服务?qing)FTP服务{几U服务,通过telnetd的用h很少。假讑օ盘大小?5G?nbsp;<BR><BR>  /boot 20M <BR><BR>  Swap 128M <BR><BR>  / 10G <BR><BR>  /home 13G <BR><BR>  /var 2G <BR><BR>  在硬盘的最前面创徏20M大小?boot分区Q原因同上。交换分区的大小也是128MQ因为内存的大小?4M?nbsp;<BR><BR>  / Q即root分区设ؓ(f)10Gq么大是因ؓ(f)其中有一?usr目录Q这个目录可能会(x)占用很多盘I间Q特别是在安装了X ServerQ运行图形界面的应用E序的时候?nbsp;<BR><BR>  /home分区是硬盘中最大的分区Q这g与我们假讄l用h不多有些矛盾。实际上?home目录下确实没有几个用L(fng)录,但在Red Hat6.2?qing)更早的版本中,Apache服务器和wu-ftpd FTP服务器被攑֜?home/httpd?home/ftp目录中。所以这个分么大也是有原因的?nbsp;<BR><BR>  最后,/var目录独自占用了一个分区,因ؓ(f)pȝ的所有日志都写到?var/log目录下,q将?x)占用很大的盘I间。如果系l日志记录得非常详细Q整个目录很快会(x)被写满,Dpȝ工作呆滞。当?dng)可以通过pȝ日志后台守护E序syslogd来修Ҏ(gu)志配|,避免发生q种情况?nbsp;<BR><BR>Red Hat 7?qing)以上版本的基本服务器分区方?nbsp;<BR>  q种情况同前一个方案的情况相同Q不同的是LINUX版本为Red Hat 7.0?qing)其以上版本?nbsp;<BR><BR>  /boot 20M <BR><BR>  Swap 128M <BR><BR>  / 10G <BR><BR>  /var 15G <BR><BR>  与RedHat6不同Q在RedHat7中HTTP服务和FTP服务的目录现在位?nbsp;/var/www/ ?var/ftp/Q因?var分区?5G之大也就不难理解了?nbsp;<BR><BR>多用h务器分区Ҏ(gu) <BR>  在这U服务器pȝ中,同时有多个用户通过telnet, ssh, rlogin或其方式在远E访问系l。系l中有三?5G的硬盘驱动器Qd?05G的磁盘空?nbsp;。系l中用到了RAID 5技术做数据冗余。这U情况下Q管理员必须为每个用户分配磁盘空间。对RedHat 6.2?qing)更早的版本Q分区如下:(x) <BR><BR>  Disk 1: <BR><BR>  /boot 20M <BR><BR>  / 4G <BR><BR>  /var 3GB <BR><BR>  /home 27.98G <BR><BR>  Disk 2: <BR><BR>  swap 20MB <BR><BR>  / 4GB <BR><BR>  /var 3GB <BR><BR>  /home 27.98GB <BR><BR>  Disk 3: <BR><BR>  swap 20MB <BR><BR>  / 4GB <BR><BR>  /var 3GB <BR><BR>  /home 27.98GB <BR><BR>  q样分区的原因:(x)首先QDisk1上的20M /boot分区不属于Q何RAID阵列Q否则如果你?boot放至RAID阵列中,以后׃能系l内核升U了?nbsp;<BR><BR>  Z方便理Q在其它两个盘中徏立了20M的交换分区。这U服务器一般配?G以上的内存,因此交换分区的大不成问题。如果增大交换分区,׃(x)减少RAID分区I间Q所?0M是够的。RAID分区的分l如下:(x) <BR><BR>  · 1-A, 2-A, and 3-A 一L(fng)成一?G?nbsp;RAID 5 驱动器,做ؓ(f)/根目录打开?nbsp;<BR><BR>  · 1-B, 2-B, and 3-B l成 6GB?nbsp;RAID 5 驱动器,做ؓ(f) /var目录?nbsp;<BR><BR>  · 1-C, 2-C, and 3-C l成 55.96GB RAID 5 驱动? 做ؓ(f) /home.目录?nbsp;<BR><BR>  q种分配Ҏ(gu)d?5.96G的空间分配给所有用户及(qing)Apache和FTP服务Q在/var下用6GI间用做记录日志、邮Ӟq么大的I间是够的?nbsp;<BR><BR>  如果安装Red Hat7或以上版本,应给/var分区更大的空_(d)因ؓ(f)它同时还存放着WEB和FTP服务的两个目录?nbsp;</FONT></TD></TR></TBODY></TABLE><img src ="http://www.aygfsteel.com/cymao/aggbug/29100.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.aygfsteel.com/cymao/" target="_blank">?/a> 2006-01-24 14:37 <a href="http://www.aygfsteel.com/cymao/archive/2006/01/24/29100.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Oracle 的入门心??http://www.aygfsteel.com/cymao/archive/2006/01/23/29008.html?/dc:creator>?/author>Mon, 23 Jan 2006 05:53:00 GMThttp://www.aygfsteel.com/cymao/archive/2006/01/23/29008.htmlhttp://www.aygfsteel.com/cymao/comments/29008.htmlhttp://www.aygfsteel.com/cymao/archive/2006/01/23/29008.html#Feedback0http://www.aygfsteel.com/cymao/comments/commentRss/29008.htmlhttp://www.aygfsteel.com/cymao/services/trackbacks/29008.htmlOracle 的入门心?/P>

oracle的体pd庞大了,对于初学者来_(d)隑օ?x)有些无从下手的感觉Q什么都惛_Q结果什么都学不好,所以把学习(fn)l验׃n一下,希望让刚刚入门的人对oracle有一个M的认识,走一些弯路?
 
一、定?
oracle分两大块Q一块是开发,一块是理。开发主要是写写存储q程、触发器什么的Q还有就是用Oracle的Develop工具做form。有点类gE序员,需要有较强的逻辑思维和创造能力,个h觉得?x)比较辛苦,是青春饭JQ管理则需要对oracle数据库的原理有深ȝ认识Q有全局操纵的能力和紧密的思维Q责任较大,因ؓ(f)一个小的失误就?x)down掉整个数据库Q相对前者来_(d)后者更看重l验?
 
因ؓ(f)数据库管理的责Q重大Q很公司愿意请一个刚刚接触oracle的hȝ理数据库。对于刚刚毕业的q轻人来_(d)可以先选择做开发,有一定经验后转型Q去做数据库的管理。当?dng)q个q是要看Z的实际情冉|定?/P>

二、学?fn)方?nbsp;
我的Ҏ(gu)很简单,是Q看书、思考、写W记、做实验、再思考、再写笔?
 
     看完理论的东西,自己静下心来xQ多问自己几个ؓ(f)什么,然后把所学和所想的知识点做个笔讎ͼ在想不通或有疑问的时候,做做实验,x怎么?x)这P同样的,把实验的l果C来。思考和做实验是Z深入的了解这个知识点。而做W记的过E,也是理清自己思\的过E?
 
     学习(fn)的过E是使一个问题由模糊到清晎ͼ再由清晰到模p的q程。而每ơ的改变都代表着你又学到了一个新的知识点?
 
     学习(fn)的过E也是从点到U,从线到网Q从|到面的q程。当点变成线的时候,你会(x)有总豁然开朗的感觉。当|到面的时候,你就是高手了
 
     很多|友Q特别是初学的hQ一到问题拿到论坛上来问Q在问前Q你有没有查q书Q自己有没有研究q,有没有搜索一下论坛?q就叫思维惰性。由别h来回{你的问题,?x)让你在短时间内不费劲地弄懂q个知识点,然而通过自己的努力去研究它,不但?x)更深入的了解这个知识点Q更重要的是在研I的q程?x)提高你解决问题和分析问题的能力。ȝ来说Q没有钻研的学习(fn)态度Q不学什么东西,都不?x)成功的?
 
     当然Q初学的人很多时候是因ؓ(f)遇到问题Ӟ无从下手Q也不知道去哪里找资料,才会(x)到论坛上提问题的。但我认为,在提问的时候,是不是可以问别h是如何分析这个问题?从哪里可以找到相关的资料Q而不是这个问题的{案是什么?授h以鱼不如授h以渔?/P>

   下面我讲下我处理问题的过E?/P>

   首先要知道oracle的官方网站:(x)www.oracle.com q里有oracle的各U版本的数据库、应用工具和权威的官Ҏ(gu)档。其ơ,q要知道http://metalink.oracle.com/q里是买了oracle服务或是oracle的合作伙伴才可以q去的,里面有很多权威的解决Ҏ(gu)和补丁。然后就是一些著名网站:(x)asktom.oracle.com www.orafaq.net, www.dbazine.com。这里有很多l验之谈?/P>

    遇到问题了。如果是概念上的问题Q第一旉可以找tahiti.oracle.comQ这里会(x)l你最详细的解释。如果在q行的过E中Z什么错误。可以去metalink看看。如果是想知道事务的处理的经验之谈。可以去asktom。当然。这里只是相对而言?/P>

三、oracle的体p?
oracle的体pd庞大Q要学习(fn)它,首先要了解oracle的框架。在q里Q简要的讲一下oracle的架构,让初学者对oracle有一个整体的认识?
 
1、物理结构(由控制文件、数据文件、重做日志文件、参数文件、归档文件、密码文件组成)(j)
控制文gQ包含维护和验证数据库完整性的必要信息、例如,控制文g用于识别数据文g和重做日志文Ӟ一个数据库臛_需要一个控制文?
数据文gQ存储数据的文g
重做日志文gQ含Ҏ(gu)据库所做的更改记录Q这样万一出现故障可以启用数据恢复。一个数据库臛_需要两个重做日志文?
参数文gQ定义Oracle 例程的特性,例如它包含调整SGA 中一些内存结构大的参数
归档文gQ是重做日志文g的脱机副本,q些副本可能对于从介质失败中q行恢复很必要?
密码文gQ认证哪些用h权限启动和关闭Oracle例程
 
2、逻辑l构Q表I间、段、区、块Q?
表空_(d)(x)是数据库中的基本逻辑l构Q一pd数据文g的集合?
D:(x)是对象在数据库中占用的空?
区:(x)是ؓ(f)数据一ơ性预留的一个较大的存储I间
块:(x)ORACLE最基本的存储单位,在徏立数据库的时候指?
 
3、内存分配(SGA和PGAQ?
SGAQ是用于存储数据库信息的内存区,该信息ؓ(f)数据库进E所׃n。它包含Oracle 服务器的数据和控制信? 它是在Oracle 服务器所ȝ的计机的实际内存中得以分配Q如果实际内存不够再往虚拟内存中写?
PGAQ包含单个服务器q程或单个后台进E的数据和控制信息,与几个进E共享的SGA 正相反PGA 是只被一个进E用的区域QPGA 在创E时分配在终止进E时回收
 
4、后台进E(数据写进E、日志写q程、系l监控、进E监控、检查点q程、归档进E、服务进E、用戯E)(j)
数据写进E:(x)负责更改的数据从数据库~冲区高速缓存写入数据文?
日志写进E:(x)重做日志缓冲区中的更改写入在线重做日志文g
pȝ监控Q检查数据库的一致性如有必要还?x)在数据库打开时启动数据库的恢?
q程监控Q负责在一个Oracle q程p|时清理资?
(g)查点q程Q负责在每当~冲区高速缓存中的更Ҏ(gu)久地记录在数据库中时,更新控制文g和数据文件中的数据库状态信息?
归档q程Q在每次日志切换时把已满的日志组q行备䆾或归?
服务q程Q用戯E服务?
用户q程Q在客户端,负责用L(fng)SQL 语句传递给服务q程Qƈ从服务器D|回查询数据?
 
5、oracle例程QOracle 例程由SGA 内存l构和用于管理数据库的后台进E组成。例E一ơ只能打开和用一个数据库?
 
6、SCN(System Change Number)Q系l改变号Q一个由pȝ内部l护的序列号。当pȝ需要更新的时候自动增加,他是pȝ中维持数据的一致性和序恢复的重要标志?/P>


四、深入学?nbsp;
理Q可以考OCP证书Q对oracle先有一个系l的学习(fn)Q然后看Oracle Concepts、oracle online document,对oracle的原理会(x)有更深入的了解,同时可以开始进行一些专题的研究如:(x)RMAN、RAS、STATSPACT、DATAGUARD、TUNING、BACKUP&RECOVER{等?
 
开发:(x)对于惛_Oracle开发的Q在了解完Oracle基本的体pȝ构之后,可以重点xPL/SQL?qing)Oracle的开发工兯一部分?PL/SQL主要是包括怎么写SQL语句Q怎么使用Oracle本n的函敎ͼ怎么写存储过E、存储函数、触发器{?Oracle的开发工具主要就是Oracle自己的Developer SuiteQOracle Forms Developer and Reports Developerq些Q,学会(x)如何熟练使用q些工具?/P>

介绍几本oracle入门的好?/P>

oracle官方文档Q《concept》上面讲了oracle的体pd概念Q很适合初学者看?/P>

OCP的教学用书,也就是STUDY GUIDE(SG)?BR>Oracle8i 备䆾恢复手册
Oracle8高񔽎理与优?BR>Oracle8i PLSQLE序设计
Oracle8数据库管理员手册
以上书本都是机械工业出版Cև版?BR> 
介绍几个|站
http://tahiti.oracle.com oracle的官Ҏ(gu)?
现在http://www.oracle.com.cn/onlinedoc/index.htm也有官方文档Q速度奇快
http://metalink.oracle.com/ oracle的技术支持网站。需要购买Oracle服务才能有一个帐P才能登陆Q有大量的Knowledge BaseQ大量问题解决经验?
http://www.oracle.com oracle的官方网站,可以在这里down oracle的Y件、官Ҏ(gu)档和获得最新的消息
http://www.dbazine.com/ Oracle的杂?
http://asktom.oracle.com 
http://www.orafaq.net/ 
http://www.ixora.com.au/
http://www.oracle-base.com
http://www.dba-oracle.com/oracle_links.htm

 

 



]]>
Oracle 基本知识 http://www.aygfsteel.com/cymao/archive/2006/01/23/28999.html?/dc:creator>?/author>Mon, 23 Jan 2006 04:21:00 GMThttp://www.aygfsteel.com/cymao/archive/2006/01/23/28999.htmlhttp://www.aygfsteel.com/cymao/comments/28999.htmlhttp://www.aygfsteel.com/cymao/archive/2006/01/23/28999.html#Feedback0http://www.aygfsteel.com/cymao/comments/commentRss/28999.htmlhttp://www.aygfsteel.com/cymao/services/trackbacks/28999.html Oracle 基本知识

  一个表I间只能属于一个数据库

  每个数据库最有一个控制文Ӟ3个,分别攑֜不同的磁盘上Q?

  每个数据库最有一个表I间QSYSTEM表空_(d)(j)

  建立SYSTEM表空间的目的是尽量将目的相同的表存放在一P以提高用效率,只应存放数据字典

  每个数据库最有两个联机日志l,每组最一个联机日志文?

  一个数据文件只能属于一个表I间

  一个数据文件一旦被加入C个表I间中,׃能再从这个表I间中移赎ͼ也不能再加入到其他表I间?

  建立新的表空间需要徏立新的数据文?

  数据文g被ORACLE格式化ؓ(f)ORACLE块,Oracle9i以前版本中,ORACLE块的大小是在W一ơ创建数据库时设定的Q?

  q且以后不能改变Q要x变,只能重徏数据?

  一个段segment只能属于一个表I间Q但可以属于多个数据文g

  一个区extent只能属于一个数据文Ӟ卛__(d)extentQ不能跨数据文?

  PCTFREE和PCTUSEDd不能大于{于100

  单独一个事务不能跨多个回滚段

  索引表不含ROWID?

  拥有不同大小的回滚段没有M益处

  COMMIT后,数据不一定立卛_盘(数据文gQ?

  一个事务即使不被提交,也会(x)被写入到重做日志中?

  Oracle 8.0.4中,在初始安装时建立的缺省数据库Q实例名为ORCL

  一个块的最大长度ؓ(f)16KB(?K?K?K?6K)
  每个数据库最大文件数Q按块大)(j)
  2K块        20000个文?BR>  4K块        40000个文?BR>  8K块或以上     65536个文?BR>

  oracle server可以同时启动多个数据?

  一套操作系l上可以安装多个版本的ORACLE数据库系l(UNIX可以QNT不可以)(j)

  一套ORACLE数据库系l中可以有多个ORACLE数据库及(qing)其相对应的实?

  每个ORACLE数据库拥有一个数据库实例QINSTANCEQ(OPS除外Q?

  所以,一套操作系l上同时可以有多个oracle数据库实例启?



]]>
安装Oracle后,l常使用的修改表I间的SQL代码(?http://www.aygfsteel.com/cymao/archive/2006/01/23/28998.html?/dc:creator>?/author>Mon, 23 Jan 2006 04:19:00 GMThttp://www.aygfsteel.com/cymao/archive/2006/01/23/28998.htmlhttp://www.aygfsteel.com/cymao/comments/28998.htmlhttp://www.aygfsteel.com/cymao/archive/2006/01/23/28998.html#Feedback0http://www.aygfsteel.com/cymao/comments/commentRss/28998.htmlhttp://www.aygfsteel.com/cymao/services/trackbacks/28998.html

安装Oracle后,l常使用的修改表I间的SQL代码

【点击:(x) ?阿木??/A>
配置Q?
Windows NT 4.0 中文?
5?0.2GB SCSI盘
分:(x)C:盘、D:盘、E:盘、F:盘、G:?
Oracle 8.0.4 for Windows NT
NT安装在C:\WINNTQOracle安装在C:\ORANT

目标Q?
因系l的回滚D太,现打生成新的回滚段Q?
建立大的、新的表I间Q数据表I间、烦(ch)引表I间、回滚表I间、(f)时表I间、)(j)
Z个数据表I间、两个烦(ch)引表I间Q这样徏的目的是Ҏ(gu)实际应用Q?
如:(x)现有10个应用用P每个用户是一个独立子pȝQ如Q商业进销存MISpȝ中的财务、收ƾ、库存、h事、ȝ理等Q?
其大型商场中收ƾ机众多Q同时访问进E很多,l常辑ֈ50-100个进E同时访问,
q样Q通过建立多个用户表空间、烦(ch)引表I间Q把各个用户分别建在不同的表I间里(多个用户表空间放在不同的物理盘上)(j)Q?
减少了用户之间的I/O竞争、读写数据与写读索引的竞争(用户表空间、烦(ch)引表I间也分别放在不同的物理盘上)(j)

规划Q?
C:盘、NTpȝQOraclepȝ
D:盘、数据表I间1Q?GB、自动扩展)(j)、回滚表I间1Q?GB、自动扩展)(j)
E:盘、数据表I间2Q?GB、自动扩展)(j)、回滚表I间2Q?GB、自动扩展)(j)
F:盘、烦(ch)引表I间1Q?GB、自动扩展)(j)、(f)时表I间1Q?.5GB、不自动扩展Q?
G:盘、烦(ch)引表I间2Q?GB、自动扩展)(j)、(f)时表I间2Q?.5GB、不自动扩展Q?

注:(x)q只是一个简单的规划Q实际规划要依系l需求来定,量减少I/O竞争

实现Q?
1、首先查看系l有哪些回滚D及(qing)其状态?

SQL> col owner format a20
SQL> col status format a10
SQL> col segment_name format a20
SQL> col tablespace_name format a20

SQL> SELECT OWNER,SEGMENT_NAME,TABLESPACE_NAME,SUM(BYTES)/1024/1024 M 
  2  FROM DBA_SEGMENTS 
  3  WHERE SEGMENT_TYPE='ROLLBACK' 
  4  GROUP BY OWNER,SEGMENT_NAME,TABLESPACE_NAME
  5  /

OWNER                SEGMENT_NAME         TABLESPACE_NAME              M
-------------------- -------------------- -------------------- ---------
SYS                  RB1                  ROLLBACK_DATA        .09765625
SYS                  RB10                 ROLLBACK_DATA        .09765625
SYS                  RB11                 ROLLBACK_DATA        .09765625
SYS                  RB12                 ROLLBACK_DATA        .09765625
SYS                  RB13                 ROLLBACK_DATA        .09765625
SYS                  RB14                 ROLLBACK_DATA        .09765625
SYS                  RB15                 ROLLBACK_DATA        .09765625
SYS                  RB16                 ROLLBACK_DATA        .09765625
SYS                  RB2                  ROLLBACK_DATA        .09765625
SYS                  RB3                  ROLLBACK_DATA        .09765625
SYS                  RB4                  ROLLBACK_DATA        .09765625
SYS                  RB5                  ROLLBACK_DATA        .09765625
SYS                  RB6                  ROLLBACK_DATA        .09765625
SYS                  RB7                  ROLLBACK_DATA        .09765625
SYS                  RB8                  ROLLBACK_DATA        .09765625
SYS                  RB9                  ROLLBACK_DATA        .09765625
SYS                  RB_TEMP              SYSTEM               .24414063
SYS                  SYSTEM               SYSTEM                .1953125

查询?8记录.

SQL> SELECT SEGMENT_NAME,OWNER,
  2         TABLESPACE_NAME,SEGMENT_ID,FILE_ID,STATUS 
  3         FROM DBA_ROLLBACK_SEGS
  4  /

SEGMENT_NAME         OWNER                TABLESPACE_NAME      SEGMENT_ID   FILE_ID STATUS
-------------------- -------------------- -------------------- ---------- --------- ----------
SYSTEM               SYS                  SYSTEM                        0         1 ONLINE
RB_TEMP              SYS                  SYSTEM                        1         1 OFFLINE
RB1                  PUBLIC               ROLLBACK_DATA                 2         3 ONLINE
RB2                  PUBLIC               ROLLBACK_DATA                 3         3 ONLINE
RB3                  PUBLIC               ROLLBACK_DATA                 4         3 ONLINE
RB4                  PUBLIC               ROLLBACK_DATA                 5         3 ONLINE
RB5                  PUBLIC               ROLLBACK_DATA                 6         3 ONLINE
RB6                  PUBLIC               ROLLBACK_DATA                 7         3 OFFLINE
RB7                  PUBLIC               ROLLBACK_DATA                 8         3 OFFLINE
RB8                  PUBLIC               ROLLBACK_DATA                 9         3 OFFLINE
RB9                  PUBLIC               ROLLBACK_DATA                10         3 OFFLINE
RB10                 PUBLIC               ROLLBACK_DATA                11         3 OFFLINE
RB11                 PUBLIC               ROLLBACK_DATA                12         3 OFFLINE
RB12                 PUBLIC               ROLLBACK_DATA                13         3 OFFLINE
RB13                 PUBLIC               ROLLBACK_DATA                14         3 OFFLINE
RB14                 PUBLIC               ROLLBACK_DATA                15         3 OFFLINE
RB15                 PUBLIC               ROLLBACK_DATA                16         3 OFFLINE
RB16                 PUBLIC               ROLLBACK_DATA                17         3 OFFLINE

查询?8记录.

2、修改代码如下,可把以下代码存入一.sql文gQ如cg_sys.sqlQ然后以SQL> @cg_sys.sql调用执行?

--注意Q各个硬盘上要事先徏好oradata目录

--修改现有回滚D,使之失效Q下U?
alter rollback segment rb1 offline;
alter rollback segment rb2 offline;
alter rollback segment rb3 offline;
alter rollback segment rb4 offline;
alter rollback segment rb5 offline;
alter rollback segment rb6 offline;
alter rollback segment rb7 offline;
alter rollback segment rb8 offline;
alter rollback segment rb9 offline;
alter rollback segment rb10 offline;
alter rollback segment rb11 offline;
alter rollback segment rb12 offline;
alter rollback segment rb13 offline;
alter rollback segment rb14 offline;
alter rollback segment rb15 offline;
alter rollback segment rb16 offline;

--删除原有回滚D?
drop rollback segment rb1;
drop rollback segment rb2;
drop rollback segment rb3;
drop rollback segment rb4;
drop rollback segment rb5;
drop rollback segment rb6;
drop rollback segment rb7;
drop rollback segment rb8;
drop rollback segment rb9;
drop rollback segment rb10;
drop rollback segment rb11;
drop rollback segment rb12;
drop rollback segment rb13;
drop rollback segment rb14;
drop rollback segment rb15;
drop rollback segment rb16;

--建数据表I间1
--收款、库存、订货、远E通信
create tablespace USER_DATA1 datafile 
'd:\oradata\user1_1.ora' size 512M, 
'd:\oradata\user1_2.ora' size 512M, 
'd:\oradata\user1_3.ora' size 512M, 
'd:\oradata\user1_4.ora' size 512M, 
'd:\oradata\user1_5.ora' size 512M, 
'd:\oradata\user1_6.ora' size 512M 
AUTOEXTEND ON NEXT 5M MAXSIZE UNLIMITED
default storage (initial 128K next 2M pctincrease 0);
--initial 128KQ因为,用户建在表空间上Q而表建在用户里,为用h拥有Q?
--用户l承数据表空间的存储参数Q表l承用户的存储参?
--如果initial讄q大Q如Q?MQ则每徏一个空表就要占?M的空_(d)即一条记录也没有
--AUTOEXTEND ON NEXT 5M MAXSIZE UNLIMITEDQ设|数据文件自动扩展,每一ơ扩展增?MQ最大空间不受限

--建数据表I间2
--物h(hun)、h事、结、胦(ch)务、ȝ理、合同、统?
create tablespace USER_DATA2 datafile 
'e:\oradata\user2_1.ora' size 512M,
'e:\oradata\user2_2.ora' size 512M,
'e:\oradata\user2_3.ora' size 512M,
'e:\oradata\user2_4.ora' size 512M,
'e:\oradata\user2_5.ora' size 512M,
'e:\oradata\user2_6.ora' size 512M 
AUTOEXTEND ON NEXT 5M MAXSIZE UNLIMITED
default storage (initial 128K next 2M pctincrease 0);

--建烦(ch)引表I间1
create tablespace INDEX_DATA1 datafile 
'f:\oradata\index1_1.ora' size 512M,
'f:\oradata\index1_2.ora' size 512M,
'f:\oradata\index1_3.ora' size 512M,
'f:\oradata\index1_4.ora' size 512M 
AUTOEXTEND ON NEXT 5M MAXSIZE UNLIMITED
default storage (initial 128K next 2M pctincrease 0);

--建烦(ch)引表I间2
create tablespace INDEX_DATA2 datafile 
'g:\oradata\index2_1.ora' size 512M,
'g:\oradata\index2_2.ora' size 512M,
'g:\oradata\index2_3.ora' size 512M,
'g:\oradata\index2_4.ora' size 512M 
AUTOEXTEND ON NEXT 5M MAXSIZE UNLIMITED
default storage (initial 128K next 2M pctincrease 0);

--建回滚表I间1
--讄初始?0MQinitial 40MQ,则每在这个表I间中徏一个回滚段Q?
--此回滚段自动l承此回滚表I间的存储参敎ͼ也即默认文g?0M
create tablespace ROLLBACK_DATA1 datafile 
'd:\oradata\roll1_1.ora' size 512MQ?
'd:\oradata\roll1_2.ora' size 512M 
AUTOEXTEND ON NEXT 5M MAXSIZE UNLIMITED
default storage (initial 40M next 5M pctincrease 0);

--建回滚表I间2
create tablespace ROLLBACK_DATA2 datafile 
'e:\oradata\roll2_1.ora' size 512M,
'e:\oradata\roll2_2.ora' size 512M 
AUTOEXTEND ON NEXT 5M MAXSIZE UNLIMITED
default storage (initial 40M next 5M pctincrease 0);

--Z(f)时表I间1
create tablespace TEMPORARY_DATA1 datafile 
'f:\oradata\temp1_1.ora' size 512M 
default storage (initial 10M next 3M pctincrease 0);

--Z(f)时表I间2
create tablespace TEMPORARY_DATA2 datafile 
'g:\oradata\temp2_1.ora' size 512M 
default storage (initial 10M next 3M pctincrease 0);

--使其真正成ؓ(f)临时?
alter tablespace TEMPORARY_DATA1 temporary;
alter tablespace TEMPORARY_DATA2 temporary;

--建立新的回滚D,每个都一样大Q不同大的回滚D|有什么意义,pȝ是随机选择的?
--建多个Q根据ƈ发访问用L(fng)多少Q?
--如果你们公司每天?0-100个h员用Oraclepȝ开发的理软gQ应?0个以?

create public rollback segment rb01 tablespace rollback_data1;
create public rollback segment rb02 tablespace rollback_data1;
create public rollback segment rb03 tablespace rollback_data1;
create public rollback segment rb04 tablespace rollback_data1;
create public rollback segment rb05 tablespace rollback_data1;
create public rollback segment rb06 tablespace rollback_data1;
create public rollback segment rb07 tablespace rollback_data1;
create public rollback segment rb08 tablespace rollback_data1;
create public rollback segment rb09 tablespace rollback_data2;
create public rollback segment rb10 tablespace rollback_data2;
--?个徏在回滚表I间1中,?个在回滚表空?
create public rollback segment rb11 tablespace rollback_data2;
create public rollback segment rb12 tablespace rollback_data2;
create public rollback segment rb13 tablespace rollback_data2;
create public rollback segment rb14 tablespace rollback_data2;
create public rollback segment rb15 tablespace rollback_data2;
create public rollback segment rb16 tablespace rollback_data2;
create public rollback segment rb17 tablespace rollback_data2;
create public rollback segment rb18 tablespace rollback_data2;
create public rollback segment rb19 tablespace rollback_data2;
create public rollback segment rb20 tablespace rollback_data2;

--使回滚段onlineQ即有效
alter rollback segment rb01 online;
alter rollback segment rb02 online;
alter rollback segment rb03 online;
alter rollback segment rb04 online;
alter rollback segment rb05 online;
alter rollback segment rb06 online;
alter rollback segment rb07 online;
alter rollback segment rb08 online;
alter rollback segment rb09 online;
alter rollback segment rb10 online;
alter rollback segment rb11 online;
alter rollback segment rb12 online;
alter rollback segment rb13 online;
alter rollback segment rb14 online;
alter rollback segment rb15 online;
alter rollback segment rb16 online;
alter rollback segment rb17 online;
alter rollback segment rb18 online;
alter rollback segment rb19 online;
alter rollback segment rb20 online;

--查看现有回滚D及(qing)其状?
col segment format a30
SELECT SEGMENT_NAME,OWNER,TABLESPACE_NAME,SEGMENT_ID,FILE_ID,STATUS FROM DBA_ROLLBACK_SEGS;

--查看数据文g?qing)其所在表I间、大、状?
col file_name format a40
col tablespace_name format a20
select file_name,file_id,tablespace_name,bytes,status from dba_data_files;


xQ表I间重新规划完毕Q这里讲的比较通俗Q还有好多参数值得讄Q能够把Oracle讄到最优的境界Q?
表空间设|完了,下面Q就该好好的整理一下Oracle的内存区了,
Oracle很有意思,内存大Q效果越明显Q所以有必要好好调整一下SGA区,也就是主要配|ininorcl.ora参数文g?


]]>
Oracle 8.1.6 for Win2000 pȝ文g解释 http://www.aygfsteel.com/cymao/archive/2006/01/23/28996.html?/dc:creator>?/author>Mon, 23 Jan 2006 03:45:00 GMThttp://www.aygfsteel.com/cymao/archive/2006/01/23/28996.htmlhttp://www.aygfsteel.com/cymao/comments/28996.htmlhttp://www.aygfsteel.com/cymao/archive/2006/01/23/28996.html#Feedback0http://www.aygfsteel.com/cymao/comments/commentRss/28996.htmlhttp://www.aygfsteel.com/cymao/services/trackbacks/28996.html Oracle 8.1.6 for Win2000 pȝ文g解释
  • pȝ环境Q?
      1、操作系l:(x)Windows 2000
      2、数据库Q Oracle 8i R2 (8.1.6) for NT 企业?BR>3、安装\径:(x)C:\ORACLE
  • 解释Q?
      Oracle 8i R2 (8.1.6) for NT 企业版默认安装完毕后?x)在所在盘W创Z下三个目? adminQ? 记录Oracle实例的配|、运行日志等文gQ每个实例一个目? Ora81Q? Oraclepȝ文g oradataQOracle实例q行所需的所有具体文Ӟ数据文g、日志文件、控制文Ӟ(j)Q每个实例一个目? 一般来ԌOracle文g分以下几个类型:(x) 数据文gQ      真实数据 重做日志文gQ    联机日志、归档日? 控制文gQ      包含物理文g到数据字怸的逻辑表空间之间的映射 初始化参数文Ӟ(x)   控制内存 警告和追t日志文Ӟ(x) 备䆾文gQ? C:\Oracle\admin\oradb\pfile\init.ora         --初始化参数文? C:\Oracle\admin\oradb\bdump\oradbALRT.LOG       --警告日志文g C:\Oracle\admin\oradb\udump\ORA00960.TRC C:\Oracle\oradata\oradb\SYSTEM01.DBF         --表空间数据文? C:\Oracle\oradata\oradb\USERS01.DBF C:\Oracle\oradata\oradb\INDX01.DBF C:\Oracle\oradata\oradb\RBS01.DBF C:\Oracle\oradata\oradb\TEMP01.DBF C:\Oracle\oradata\oradb\TOOLS01.DBF C:\Oracle\oradata\oradb\DR01.DBF C:\Oracle\oradata\oradb\OEM_REPOSITORY.ORA C:\Oracle\oradata\oradb\CONTROL01.CTL         --控制文g C:\Oracle\oradata\oradb\CONTROL02.CTL C:\Oracle\oradata\oradb\CONTROL03.CTL C:\Oracle\oradata\oradb\REDO01.LOG          --联机日志文g C:\Oracle\oradata\oradb\REDO02.LOG C:\Oracle\oradata\oradb\REDO03.LOG C:\Oracle\oradata\oradb\archive\ORADB2T001S01100.ARC --归档日志文g ... C:\Oracle\oradata\oradb\archive\ORADB2T001S01199.ARC C:\Oracle\Ora81\BIN\afiedt.buf         --SQL*Plus默认~辑文g C:\Oracle\Ora81\BIN\oradc.ocx          --Oracle ActiveX控gQ可用于VB中)(j) C:\Oracle\Ora81\DATABASE\PWDoradb.ora      --internal密码文g C:\Oracle\Ora81\DATABASE\initoradb.ora     --启动参数文g C:\Oracle\Ora81\DATABASE\oradim.log       --SVRMGRL理器出错日? C:\Oracle\Ora81\network\log\listener.log    --监听器日志文? C:\Oracle\Ora81\network\log\sqlnet.log     --Sql*Net 日志文g C:\Oracle\Ora81\network\ADMIN\tnsnames.ora   --TNS q接文gQ数据库别名Q? C:\Oracle\Ora81\network\ADMIN\sqlnet.ora    --Sql*Net 环境文g C:\Oracle\Ora81\network\ADMIN\listener.ora   --监听器参数文? C:\Oracle\Ora81\sqlplus\admin\glogin.sql    --Sql*Plusd自动执行脚本 C:\Oracle\Ora81\sqlplus\admin\sqlplus.ini    --Sql*Plus环境初始化文? C:\Oracle\Ora81\precomp\demo\proc        --Pro*C目录 C:\Oracle\Ora81\RDBMS\ADMIN\BUILDALL.SQL    --生成所有对象脚? C:\Oracle\Ora81\RDBMS\ADMIN\standard.sql    --建立数据库基本结构的? C:\Oracle\Ora81\RDBMS\ADMIN\catalog.sql     --建立数据字典视图脚本Q以SYS、INTERNALq接 C:\Oracle\Ora81\RDBMS\ADMIN\catexp.sql     --建立EXP/IMP用数据字典视? C:\Oracle\Ora81\RDBMS\ADMIN\catexp7.sql     --使v7版本的EXP文g可以导入到v8? C:\Oracle\Ora81\RDBMS\ADMIN\catdbsyn.sql    --建立DBAU有数据字典视图 C:\Oracle\Ora81\RDBMS\ADMIN\cataudit.sql    --建立审计用数据字典视? C:\Oracle\Ora81\RDBMS\ADMIN\catsnap.sql     --建立快照数据字典视图Q以SYS、INTERNALq接 C:\Oracle\Ora81\RDBMS\ADMIN\SCOTT.SQL      --生成SCOTT用户?qing)其用户数? C:\Oracle\Ora81\dbs\pupbld.sql         --新徏一个数据库之后需要执行的脚本


]]>
Toad 使用快速入门(转蝲Q?/title><link>http://www.aygfsteel.com/cymao/archive/2005/12/21/24925.html</link><dc:creator>?/dc:creator><author>?/author><pubDate>Wed, 21 Dec 2005 03:18:00 GMT</pubDate><guid>http://www.aygfsteel.com/cymao/archive/2005/12/21/24925.html</guid><wfw:comment>http://www.aygfsteel.com/cymao/comments/24925.html</wfw:comment><comments>http://www.aygfsteel.com/cymao/archive/2005/12/21/24925.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.aygfsteel.com/cymao/comments/commentRss/24925.html</wfw:commentRss><trackback:ping>http://www.aygfsteel.com/cymao/services/trackbacks/24925.html</trackback:ping><description><![CDATA[<TABLE class=pageSpaceNewsSeparator cellSpacing=0 cellPadding=1 width="100%" border=0> <TBODY> <TR> <TD> <TABLE cellSpacing=0 cellPadding=5 width="100%" border=0> <TBODY> <TR> <TD class=titleNews>Toad 使用快速入门(转蝲Q?/TD></TR></TBODY></TABLE></TD></TR> <TR> <TD> <TABLE cellSpacing=0 cellPadding=4 width="100%" border=0> <TBODY> <TR> <TD class=titleNewsRemark height=72> <P><FONT color=#f26c4f>文章作者:(x)</FONT> <BR>责Q~辑Q?FONT color=#000000>蒙面h</FONT> 录入旉Q?004-10-12 19:58:10 来源Q[csdn]<BR>频道声明Q本频道的文章除部分特别声明止转蝲的专E外Q可以自p{?但请务必注明出出处和原始作?文章版权归本频道与文章作者所?对于被频道{载文章的个h和网?我们表示深深的谢? </P></TD></TR></TBODY></TABLE></TD></TR></TBODY></TABLE> <TABLE height=117 cellSpacing=5 cellPadding=0 width="100%" border=0> <TBODY> <TR> <TD class=content id=fontzoom style="WORD-WRAP: break-word" height=40><SPAN id=ArticleContent1_ArticleContent1_lblContent>  <P>Toad 使用快速入?nbsp;                                     </P> <P>目录</P> <P>一QToad功能lD<BR>二.pȝ需?BR>三.安装指南<BR>四.快速入?BR>1Q?Schema browser的用法简?BR>2Q?SQL Editor的用介l?BR>3Q?Procedure Editor的用法介l?BR>4Q?如何q行PLSQL的debug<BR>5Q?如何使用SQLab Xpert优化SQL<BR>6Q?如何使用SQL Modeler来编写查?BR>7Q?如何使用Toad的DBA斚w的功?/P> <P>一?Toad功能lD</P> <P>在Oracle 应用E序的开发过E中Q访问数据库对象和编写SQLE序是一件乏味且耗费旉的工作,Ҏ(gu)据库q行日常理也是需要很多SQL脚本才能完成的。Quest Software为此提供了高效的Oracle应用开发工?ToadQTools of Oracle Application DevelopersQ。在Toad的新版本中,q加入了DBA模块Q可以帮助DBA完成许多日常理工作。它最大的特点是单易用,讉K速度快。?ToadQ我们可以通过一个图形化的用L(fng)面快速访问数据库Q完成复杂的SQL和PL/SQL代码~辑和测试工作。Toad由O(jin)racle开发专家专门ؓ(f)开发h员而设计,是一个功能强大、结构紧凑的专业化PL/SQL开发环境?BR>Toad 主要h如下特点Q?BR>模式览Q?BR>模式览功能可以让我们快速访问数据字典,览数据库中的表、烦(ch)引、存储过E。Toad 提供Ҏ(gu)据库的快速访问,使用极ؓ(f)方便Q用L(fng)面简z,l构安排合理。当我们点击一个单独的数据库对象,Toad立即昄此对象的详细信息。例如,当我们点一个数据库的表Q所有和此表相关的烦(ch)引、约束、存储过E、SQL语句以及(qing)和其他表的相互引用关p都在同一界面昄出来。ؓ(f)了简化操作,用户可以在浏览窗口操作数据库对象?/P> <P>SQL ~辑器:(x)<BR>SQL ~辑器的主要功能是编辑、运行和调整SQL语句。TOAD 的高U编辑窗口包括众多的Ҏ(gu)来提高开发h员编写SQL语句的品化E度。例如,单地生成代码模板Q在~写SQL前自动发现包的内容和列的名字{等?BR>SQL ~辑器包括一个编辑窗口和q行l果H口Q允许开发h员在~辑的过E中试q行l果。SQL~辑器中不仅包括标准的编辑命令,也包括一些增强的功能Q如快速查询表中的字段、将SQL语句的内Ҏ(gu)式化{等。这个窗口可以处理大?GB 的内容,对大的开发项目来说非常有用。便L(fng)书签可以让开发h员非常容易地扑ֈ相关位置。在q行l果H口可提供用户定义的配置功能Q支持LONG 和LONG RAW列,可以数据卸出到盘、打印数据、编辑数据等{?/P> <P>存储q程~辑器:(x)<BR>存储q程~辑器的主要功能是编辑、编译、测试、调试存储过E和触发器。TOAD提供语法标识、错误标识和其他很多易于使用的功能,如在弹出H口昄表名、列名和Oracle函数。和其他?PL/SQL ~辑工具不同QTOAD 允许在一个文件中操作多个数据库对象,可以~译一个对象、编译多个对象、编译到当前光标、从光标开始编译。在q行出现错误Ӟ存储q程停止到有问题的语句。用户可以用快h式或模板来快速编写PL/SQL,也可以根据需要生成自q模板。用Toad可以非常方便地进行编辑工作,可如讄书签、取消注释、格式化SQL语句{等?/P> <P>PL/SQL Debugger选项Q?BR>Toad 提供单易用的PL/SQL 调试功能Q可以节省开发h员在大型目中用于开发和试的宝贉|_(d)提高应用开发的质量。在存储q程开发的q程中,Toad可以逐行~辑、调试和q行代码。运行时可以Ҏ(gu)需要输入参敎ͼ观察相关参数的变化来(g)查存储过E的正确性。在调式q程中,Toad 可以通过H口昄所有的断点、参? 调用堆栈和输出参数。用ToadQ非常容易检到存储q程的错误,开发h员可以一步一步运行PL/SQL语句来识别问题。调试会(x)话可以和其他E序?x)话同时q行?/P> <P>SQLab Xpert OptionQ?BR>帮助开发h员优化SQLQؓ(f)他们提供各种优化模式下SQL执行计划Qƈ且能够给Z化的Q能够比较各U模式下实际的SQLq行l果Q帮助开发h员真正高速地开发高效地代码?/P> <P>Toad q可以外挂一些别的品,比如PL/Formatter, RevealNet Knowledge Base , SQL Impact{,q些都能够和Toad紧密集成Q共同提供了一个完的集成开发环境。新版本q新增加了DBA模块Q更加拓q了Toadq个产品的适用范围?/P> <P><BR>二、系l要求:(x)<BR>客户端:(x)<BR>ü Windows 95 / 98 / NT/2000中英文均?BR>ü 完整安装的SQL*Net 2.0或者Net8<BR>ü 盘Q一般安装需?0M左右的空_(d)Ҏ(gu)所选择模块的不同和安装方式的不同,最也?M的磁盘空_(d)从网l服务器dQ?BR>ü 内存QWindows 9x/Me:16M 内存QWindows NT/2000: Min 32M]<BR>ü Tuning模块需要额外的25MI间</P> <P>服务器端Q?BR>ü Oracle 7.3 或者更高,在Q何硬件^C?BR>ü 需要一个DBA用户帐号</P> <P>三.安装Q?BR>1Q?三种安装方式的选择Q?BR>a) TOAD and Personal Configuration Files to PC<BR> 默认安装选择Q完成一个完整的Client端的安装Q把所有需要的文g拯到本地Toad目录?BR>l大多数用户应该选择使用q个安装方式?BR>b) Personal Config Files to PC, read TOAD from Network Server<BR>从网l服务器dToadE序Q在本地计算机安装一些自定义的文Ӟq且创徏到服务器文g的快h式,一般不推荐使用q个方式Q而且要求|络服务器已l配|?BR>c) TOAD to Network Server<BR>把Toad安装到网l服务器上,以便q样别的用户能够q行Personal Config Files to PC, read TOAD from Network Serverq种方式的安装?BR>2Q?Ҏ(gu)需要用到的特性,需要运行一些脚?都在Toad\temps目录?<BR>ü 如果需要用Toad来查看执行计划,必须q行脚本PrepToad.sql或者notoad.sql<BR>n 如果希望专门建立一个Toad 用户来存放Toad需要用的对象的话Q就q行preptoad.sql?BR>n 如果希望在当前连接用h式下建立toad需要用的对象的话Q就q行notoad.sql?BR>n 注意Q如果是选择了专门徏立toadq个用户的话Q需要先修改一下脚本,指定用户的默认表I间和(f)时表I间?BR>ü 需要用Oracle8i 的Profile analyzerQ必运行ToadProfiler.sql<BR>ü 需要加强Toad的安全性,必须q行ToadSecurity.sql</P> <P>四、Toad使用快速入?BR>1Q?Schema BrowserQ?BR>Schema browser是Toad的极为有特色的模块。在schema browser的帮助下Q可以方便的览数据库内部的各类数据库对象,比如表,索引Q序列,存储q程{,而且可以方便的倒出DDL语句和进行各U修改,重徏工作。定位到某一cd象上Q这列对象允许的操作都会(x)自动列出来?BR>特色Q?<BR>l 支持Oracle数据库里面所有对象的新徏、查看、修改,集成了几乎对所有数据库对象的管理所需要的功能?BR>l 按照 模式->对象cd ->对象->对象可操作属?-> 对象本n的详l信息和对象相关的信?来组l,非常有条理,Ҏ(gu)定位对象Q也能够看到所有你需要的对象的相关信息?BR>l 对于表:(x)<BR>i. 完备的徏表向|不用输入冗长的语法,更加全面地替你考虑?BR>ii. 可以修改表的各种逻辑和物理属性,修改列的属性,增加列,删除?在Oracle8i里面)Q修改表的物理存储属性,TruncateQDrop{?BR>iii. 可以生成的完整的DDl语句Q包括存储信息,权限信息Q约束,索引和触发器{,而这些手工很隑ց到?BR>iv. 可以方便的对表进行分析,查看表地所有信息,可以有条件的倒出表里面的数据Qƈ且保存ؓ(f)sql语句?BR>v. 可以方便的对表进行重l,可以完成exp/imp作不到的事情Q而且更少Ch工参与,更加安全?/P> <P>l 对于视图</P></SPAN></TD></TR></TBODY></TABLE>Q存储过E:(x)<BR>i. 可以保存建立视图、存储过E的语句为文本,<BR>ii. 重新~译失效的视图,存储q程Q修改视囄定义语句{。方便的查看存储q程的代码,怺依赖关系Q权限信息等保存为文本等?BR>l 回滚D,<BR>i. z明了的onlineQoffline状态,方便地online/offline操作<BR>ii. 详细的回滚段物理信息和当前状态?BR>iii. 可以方便的修改物理存储属? <P></P> <P>l 表空_(d)(x)<BR>i. Tablespace MapQ直观的昄数据物理的在表空间上的分?BR>ii. 直观的查看各个表I间的利用率、剩余空间、破情늭信息<BR>iii. 可以q行各种alter操作Qonline, offline, 增加数据文gQ改变数据文件大,改变物理存储属性等<BR>l 对其他数据库对象也有完备的操作支持?/P> <P>2Q?SQL Editor:<BR>a) ȀzSQL Editor的三U方式:(x) <BR>i. q接到数据库之后QToad自动打开SQL Editorq个H口?BR>ii. 点击dh上最左边的那个按?BR>iii. 从菜单栏QDatabase -> SQL Editor<BR>b) 特点Q?BR>l 允许同时打开多个~辑H口Q同时编辑多个SQL语句<BR>l 支持同时q接到多个数据库Q同时对多个数据库进行操?BR>l 允许~辑SQLQPLSQLQJAVAQHTML和文?BR>l 使用书签功能Q可以在大量SQL语句里,快速定位某个语句所在位|?BR>l SQL Editor本nh强大的编辑功能,非常方便~辑SQL语句?BR>l 强大的快捷键支持和工h快速按钮的支持Q更加高效编?很多快捷键可以自己定义,在View ->options ->SQL Editor里面)<BR>l 能够Ҏ(gu)前面的条Ӟ推测需要输入的代码Q可以做到某U程度的代码填充<BR>l 把鼠标定位到?视图/存储q程名称之上Q按F4Q可以打开对象描述H口Q方便的查看表和视图的定义,存储q程的源代码Q?BR>l 非常Ҏ(gu)对SQL语句的分析其执行计划Q单dh上的 按钮可以看到Explain Plan的结?BR>l 支持部分SQL*Plus命o(h)Q可以方便的执行大量的ؓ(f)SQL*Plus~写的数据库脚本<BR>l 可以通过SQLab xpert来对当前SQL语句q行全面的分析,l出各种合理的调优意见,只需要单dh上的Tuning按钮Q?BR>l 可以方便的保存,打开和运行SQL脚本<BR>l 支持Ҏ(gu)询结果进行修改,<BR>l 可以把查询结果以多种格式保存hQ可以保存ؓ(f)HTMLQ纯文本QXLS{多U格?BR>l 很容易的得到SQL函数的列表和用法描述QShow SQL help Window 按钮Q?BR>l 可以查看SQL语句的执行情况:(x)通过下方的AutoTraceH口 Q看到SQL语句的实际执行结果和执行效率?BR>l 支持历史SQL(F8)  Q可以方便的查询以前执行q的SQLQ不用反复重新输入?BR>l 可以执行匿名块,存储q程Q从下方的窗口看到DBMS_OUTPUT的结果,如:(x)</P> <P>3Q?Stored Procedure Editor<BR>a) 打开存储q程~写器的几个途径Q?BR>l 单击总菜单栏上的W三个按钮:(x)  <BR>l 点击Database - > Procedure Editor Q?BR>l 可以通过Schema browser来调?BR>b) 一些特点和优点Q?BR>1Q?强大的自定义讄Q从保留字的昄方式Q到自动替换Q到各种快捷键的定义{等Q用得越熟越手?BR>2Q?<BR>3Q?nbsp; 自动用不同颜色显CSQL和PL/SQL关键字,语法清晰明了Q可Ҏ(gu)自己的习(fn)惯来具体定制各类关键字的具体昄方式。可以自定义存储q程得模板,在新建存储过E的时候,自动生成E序的框架可以方便的调用Schema BrowserQ把鼠标定位于某个对象上QF4QSchema Browser打开该对象的详细描述Q帮助顺利快速开发程序。支持代码自动更正,如输入ndfQ自动替换成NO_DATA_FOUNDQ输入the自动替换成theQ类似的自动替换q可以自׃改和d?BR>7Q?方便的左边行hC,单击左边行号可以实现调试断点的增加/删除<BR>8Q?对各U快捷键的支持,不但包括常见的编辑操作,q可以有自己定义的PLSQL块的支持Q自己定义快h式)(j)。如可以定义CTRL+SHIFT+D:弹出所有PLSQL Block的类型,可以自己选择?BR>9Q?可以在一个集成开发环境里面,一边编码,一边调试,不用多处切换<BR>10Q?方便的同时打开多个存储q程Q通过面快速切?BR>11Q?快速编译存储过E,快速定位错误所在,自己选择是否同时~译依赖的存储过E?BR>12Q?内置对PL/FormatterQ可以用PL/Formatter对存储过E进行格式化Qƈ且可以提供存储过E的概要分析和修改徏?BR>PL/Formatter可以对现有的存储q程q行高速的格式化,使所有的存储q程都符合同L(fng)~写标准Q这h有利于提高程序的可读性,避免不同人写的模块的风格上的很差异?BR>PL/Formatter q有助于提高E序的模块化Q增强程序的l构清晰度,增强SQL的共用性?BR>PL/Formatter q可以帮助完成PL/SQL和Oracle版本之间的管理?/P> <P> </P> <P> </P> <P> </P> <P> </P> <P> </P> <P> </P> <P><BR>13Q?内置RevealNet Knowledge BaseQ单击鼠标右键就可以打开Q快速得到技术上的支持,解决技术难?BR>nPL/SQL:<BR>n包含整个开发过E中可能遇到问题的答?BR>nCode Library:大量的严谨的PL/SQL代码例子和现成过E,完全源代码提?BR>n各种错误处理模块可供参考,各类字符日期函数<BR>n包含1400多个主题<BR>nAdminQ?BR>n解答DBA日常工作?0%的常见问题,覆盖2400多个主题<BR>n从网l到性能优化Q从备䆾恢复到Error message,一应俱?BR>例子Q遇到失效的存储q程怎么办?<BR>4. 如何对存储过E进行DebugQ?BR>u 需要Toad单独的Debug Option(Standard Version 没有q个选项)<BR>u 要用Toad对存储过E进行debugQ必d装Oracle的系l包Qdbms_debugQ而且必须安装Oracle Probe API v2.0 或者更高的版本?BR>u 集成在Stored Precedure Editor里面Q可以一边编写一边调试,大大提高开发效?BR>u 打开Procedure Editor后,Debug菜单Ȁz,可以开始进行Debug工作?BR>u 允许对存储过E进行逐行调试、断点调?也支持对触发器进行调试?BR>u 可以有断Ҏ(gu)持,支持Watch变量Q允许运行时改变变量的?BR>u 允许对多层调用的Debug支持<BR>调试步骤具体举例Q?BR>1Q?点击菜单栏的W三个按钮:(x) Q打开Procedure Editor<BR>2Q?点击Procedure Editor的菜单栏?按钮Q调出需要调试的存储q程<BR>3Q?单击工具栏上的按?Q输入需要传入的参数Q如果不需要传入参敎ͼ可以直接单击工具栏上的按钮:(x) Q直接开始调试,如下图输入传入参敎ͼ(x)</P> <P>4Q?单击菜单栏的按钮Q?Q可以单步跟t,也可以定义一个断点,直接q行到断点在单步执行Q在存储q程q行的过E中Q当前语句会(x)高亮度显C,q且把鼠标指针定位到变量上,Toad自动昄该变量的当前倹{?/P> <P>5Q?可以随时中止E序的执行,只要点Debug ->Halt ExecutionQ或者菜单栏上的按钮 Q就可以中止E序的执?BR>6Q?nbsp; 当碰C个存储过E调用另外一个存储过E的时候,可以选择跌(Step Over)  Q这样就直接q行那个被调用的存储q程Q返回调用结果,l箋q个存储q程的调试,也可以选择Trace Into Q这样就打开被调用的存储q程Q进一步深入调试那个被调用的子存储q程。如果需要保持Debug信息Q在~译的时候应该选择Compile Dependencies with Debug InformationQ就是Procedure Editor工具栏最双的那个按??BR>7Q?支持对变量实时追t:(x)使用WatchQ?BR>可以在运行前Q或者运行过E中Ҏ(gu)个变量进行实时跟t:(x)Add WatchQ把鼠标定位到该变量上,然后点击Debug ->Add  Watch At CursorQ该变量׃(x)出现在Debug状态窗口上Q而且实时反应该变量的当前倹{如上图中的变量v_empname。可以运行时M?BR>8Q?断点支持Q?BR>单击存储q程需要加断点的地方的行号Q该行颜色变U,输入参数Q单?yn)L行按?Q可以直接运行到断点处,可以不必逐行q踪Q更加高效率的进行调试?BR>Debug Optionq支持条件断点,只有当满x件的时候才?x)在那个地方停止Q否则就好像不存在这个断点一L(fng)l运行?BR></P> <P>?? 注意DBMS_OUTPUT.PUT_LINE的结果只有当E序执行完成以后才会(x)出现Q在E序执行q程中是没有l果的?/P> <P><BR>4Q?如何用SQLab Xpert对存储过E进行调优?<BR>我们知道QOralce数据库的优化Q最主要的步骤就在于SQL的优化。而在没有专门的工P如ToadQ的帮助下,q行SQL优化是一仉常困隑֒乏味的事情,q且需要对Oracle的深入理解和高超的Oracle调优技巧。用Toad的SQLab Xpert Tuning模块Q可以我们普通开发h员也能够非常快速,_的对SQLq行专家U的分析<BR>在SQL Editor和Procedure Editor里面Q选中需要调试的SQL语句QSQLab Xpert只能调试Select,Insert, Update,Delete语句Q,复制到SQL Editor里面Q然后点dh上的调优按钮 QToad?x)自动打开SQLab xpert H口Q捕获当前的SQL语句Qƈ且把它{化ؓ(f)W合explain plan格式的语句?BR>W一ơ打开Xpert的时候,Toad?x)提CZQ需要安装一些Server端的表、视囑֒包等对象Q可以把表存储到某个指定的表I间(如Tools)里面。可以简单的按照提示一步一步做可以了。如果系l设定不允许Job的话QJob_queue_process=0Q?Toad提示有些部g不会(x)现在安装Q可以忽略。安装完成以后,可以选择让某些非DBA用户也可以用Toad的SQLab Xpert调优功能?BR>安装完成以后QToad?x)提CZ一些关于优化目标方面的问题Q你可以选择每次优化都可以重新设定,或者一ơ设定,以后一直用这个设定。当然如果需要,q是可以更改的,在SQLab Option xpert的窗口的Administration和Preference下面重新讑֮?BR>例子Q?BR>下面q个SQL语句涉及(qing)到多表之间的兌Q有一定的复杂性,我们可以借助Toad的SQLab Xpert Option来帮助分析:(x)<BR>select a.name. b.name, c.emp_name<BR>from dep a, manager b,emp c<BR>where a.dep_no=c.DEP_NO<BR>and b.manag_id=c.manag_id<BR>and c.emp_no=3<BR> 我们把这个SQL复制到SQL Editor里面Q单M面的调优按钮QToad打开SQLab Xpert OptionH口?BR>如下图:(x)</P> <P>从上面的图中我们可以斚w的看刎ͼ(x)在各U优化模式下Q该SQL语句的执行计划分别是什么样的,Toadl出了每一U执行计划的具体每一个步骤,每个步骤的成本,该表涉及(qing)的相关的数据{,如果SQL存取的表q没有经q分析,Toad?x)以U色警告昄Qƈ且很方便的帮助你对该表进行分析,攉l计数据Q重建烦(ch)引等Q以有助于优化器作出最好的选择。可以把当前的分析结果保存到它的资料库里边,以备以后再次调用之需?BR> 我们q可以求助与SQLab 的自动优化功能:(x)点击Original SQL下面的auto tune按钮QToad?x)对执行l果按照tkprofq行分析Q当?dng)q需要你在initsid.ora里面讄好utl_file_dirQ如果服务器是在Unix机器上的话,q需要通过FTP方式得到Trace文gQ有一些小的讄Q?BR> 自动优化非常高效的对所有执行计划进行实际运行比较,q且l出实际执行的时间的Ҏ(gu)Q如下图Q?/P> <P> 我们q可以让Toadl出实际的优化徏议:(x)点击Original SQL,单击下面的Advice按钮QToadҎ(gu)对SQL的分析和执行l果l出合理的徏议:(x)<BR>如:(x)<BR>1Q?把表和烦(ch)引分别放C个不同的表空_(d)因ؓ(f)我们在创Q加上约束的时候没有指定USING INDEX子句Q所以表和烦(ch)引都建立在了用户的默认表I间上了?BR>2Q?对表EMPQDEP和MANAGERq行分析Q收集最新的l计数据Q有利于CBO得到最优的执行计划<BR>3Q?在合适的列上创徏索引QEMP的manag_id和dep_no。当表中存在大量的数据的时候,q样可以大大减少׃全表扫描带来的成本?/P> <P><BR>5Q?SQL ModelerQ?BR>SQL Modeler可以帮助开发h员很Ҏ(gu)的写出各U复杂的SQL语句Q只需通过单的拖动鼠标Q就能够写出复杂的SQL语句来?BR>打开SQL Modeler的几个途径Q?BR>i. 菜单?Database -> SQL Modeler Q打开H口<BR>ii. 单击工具栏第四个按钮 Q打开SQL ModelerH口<BR>H口׃个主要部分组成:(x)<BR>n 表选择区域Q最双的那个部分,用来选择From子句中用到的表。拖动到左边的区域或者双d选择了该表?BR>n 表模型区域:(x)用来囑Ş化的昄选择的表和表之间的关联关pR?BR>n 生成SQL区域Q这里显C用囑Ş化方式创建的查询对应的SQL语句Q?/P> <P> 在SQL Modeler里面Q还支持对生成的SQLq行Explain PlanQ调试SQL的性能Q运行SQLQ看是否得到了希望的l果Q保存生成的语句Q或者把语句_脓(chung)到SQL Editor里面?/P> <P> 有了SQL Modeler的帮助,即是初U的E序员也能编写出复杂而又高效的SQL查询来?BR>比如下面的例子;</P> <P>生成步骤Q?BR>1Q?选出表emp, dep, manager<BR>2Q?用鼠标拖住emp的emp_name和emp_no, dep的name,manager的name<BR>3Q?双击criteriaH口的emp_no condition列,弹出H口Q输入查询条Ӟ比如emp_no=3<BR>4Q?׃l果里面不希望emp_no出现Q双击emp_no列的visibleQ设|ؓ(f)false<BR>5Q?q样出来了需要的查询Q现在可以运行查询得到结果,Ҏ(gu)询SQLq行分析Q或者在SQL Editor里面打开q个SQLQ或者保存ؓ(f)SQL Model文gQ或者再q一步处理,比如加排序, 汇ȝ?/P> <P>DBA斚w的功能:(x)<BR>Toad在DBA日常理斚w的能力是非常强大的,可以帮助DBA安全快速地完成许多日常工作Q还有ToadҎ(gu)的一些小工具能完成一些普通方法很隑ց到的功能。下面大概讲qC各个常用模块的主要功能:(x)<BR>a) Database Monitor<BR>提供直观的Oracle数据库运行状况,包括下面q些详细信息Q?BR>可以看到逻辑IOQ物理IOQ各个状态的session数目QSGA的利用率Q共享池的用状况,各类事g的等待状况,以及(qing)各类事g随着旉的变化情?BR>b) Instance Monitor<BR>i. 可以用来(g)查本地tnsnames.ora文g里面定义的所有节炏VListener和数据库的运行状态和版本{相关信息?BR>ii. 可以q程启动、关闭数据库Q如果设|了password验证方式Q?BR>c) Unix MonitorQ?BR>i. 可以监控Unix机器的运行状冉|如详l的机器启动旉QCPU利用率,主要的进E以?qing)这些进E占用的资源Q主要的盘I(y)O{?BR>d) Trace/Kill session<BR>i. 方便的查看所有的q接用户相关信息Q比如终端,E序Q连接时间等<BR>ii. Ҏ(gu)个用戯行跟t,查看用户执行的SQL语句Q查看语句的执行计划Q?BR>iii. 方便的查阅系l的Lock对象Q有没有什么等待别的事务释N的情况,q能够轻易查出等待什么用L(fng)什么事件结束,那个用户执行的是什么SQL?BR>iv. 查看回滚D늚使用状态,什么用P什么语句,使用的什么回滚段Q多读写量{?BR>e) Oracle Parameter<BR>i. 可以方便的查看Oraclepȝ的参敎ͼ(x)是否默认|参数作用的简要描qͼ是否可以用alter session/alter system来动态改变,对于那些可以动态改变的参数Q可以双击鼠标来q行修改</P> <P>f) NLS_PARAMETER:<BR>i. 方便的查看sessionQinstanceQdatabase一U的NLS参数|<BR>ii. 可以动态修改session的NLS参数?/P> <P>g) Extents<BR>i. 可以查看某个用户下的表和索引的详l的存储情况Q?BR>ii. 发现那些占用大量I间的表和烦(ch)引,可以考虑使用相应的对{,比如分区<BR>iii. 发现那些卛_辑ֈmax_extents的表和烦(ch)引ƈ可以?qing)时U正<BR>iv. 发现那些索引和表处于同一个表I间的情况,q可以及(qing)时纠正?/P> <P>h) Tablespace<BR>i. 直观的查看每个表I间的利用率Qȝ_(d)已用空_(d)剩余可是用空间以?qing)默认存储参敎ͼ和表I间是否需要整理等信息<BR>ii. 查看每个表空间的状态,l成的数据文Ӟ 以及(qing)每个数据文g的详l信?BR>iii. 查看每个表空间里面存在的对象和这些对象的详细存储Ҏ(gu)?BR>i) Tablespace MapQ?BR>i. 囑Ş化的昄表空间里面各个表/索引所占用的空_(d)各个segment的大,segment是否q箋{信息,非常直观<BR>ii. <BR>j)<BR>Server Statistics:<BR>i. 可以非常直观的看到系lMq行情况Q迅速定位系l瓶颈所?BR>ii. 可以查看pȝ范围内各cȝ待事件的状况Q查看每个连接会(x)话的状况Q?BR>k) Pinned CodeQ?BR>i. 我们知道Q频J执行的大的存储q程最好PinhQ这样可以避免被Oracle在内存不的情况下换出内存,避免动态加载,也避免flush shared pool的时候被清出内存?BR>ii. Ҏ(gu)每个模块的大,执行ơ数Q决定是否要把某个存储过EPINh。一个按钮就搞定了?BR>l) Control Files:<BR>可以查看当前pȝ有哪几个控制文gQ以?qing)控制文件内部记录的详细信息?BR>Q实际上是V$CONTROLFILE, V$CONTROLFILE_RECORD_SECTIONQ?BR>m) Redo Log Manager:<BR>i. 可以方便的查看LOG的组Q当前日志,每个l里面的成员名字Q大,方便的增加、删除logl,切换当前日志Q对日志归档q行具体的控制?BR>ii. 可以在这个界面里完成几乎所有的对redo log的操作?BR>n) Repair chained rows:<BR>i. Chained rows影响pȝ性能Q处于系l性能的考虑Q需要把chained rows修复成普通的表的行。用repaie chained rows,可以比较容易的做到q一炏V选择需要分析的表,然后分析一下,看有没有chained rowsQ如果有Q点击repairQToad帮你把那些chained rowsl修复了?BR>o) Identify Space Deficits<BR>如果pȝ出现1659,1653错误Q就是一个不合格的DBA。但是要x预见q些错误Q还是有一定的隑ֺ的。有了Toad的这个小工具之后Q一Ҏ(gu)个表I间Q就知道q个表空间里面的剩余自由I间是否允许M表能够扩展到下一个extent。ƈ能够在发现问题之后,直接Ҏ(gu)问题?</P> <P></P> <P>p) Estimate Table/Index Size<BR>i. 数据库的物理规划中,?索引的存储子句的定义是非帔R要的Q媄(jing)响系l。但是没有什么工L(fng)话,要ؓ(f)表定义合理的存储子句也不Ҏ(gu)?BR>ii. 在Toad里面Q专门有工具帮助你合理定义表/索引的存储情况:(x)<BR>1. 自己可以定义来表中需要存储的数据的数?BR>2. 多种估计方式Q?BR>a) Ҏ(gu)对已有的数据的分析来定义表的大小Q最_Q但是比较慢Q?BR>b) Ҏ(gu)表定义数据类型来定义表的大小<BR>c) Ҏ(gu)数据字典中以前分析过的数据来估计大小Q需要近期分析过该表Q?/P> <P>q) Analyze All Tables<BR>i. ZCBO的SQL需要CBO提供最优化的执行\径来提高E序的执行效率,但是假如对表q行大量的DML操作之后Q不?qing)时更新表的l计数据Q这时候C(j)BO׃能选择最为有效的执行路径Q导致程序执行效率低?BR>ii. 手工分析表比较麻?ch),一个一个做?BR>iii. 用Toad的Analyze Alltablesq个工具Q可以一ơ分析整个模式下面的所有表Q有丰富的控刉项Q包括是采用估计q是完全Q是否同时分析烦(ch)引,估计的话Q采用多大的癑ֈ比等?BR>r) Rebuild Table<BR>i.  当表中的数据被反复大量的DML之后Q而且PCTFREE和PCTUSED定义的不合理的情况下Q表可能?x)变得非常破,占用大量的extentQ烦(ch)引也?x)相当破,D效率相当低下?BR>ii. 传统的方式是通过exp/imp来解册个问题,但是步骤实在比较ȝ(ch)Q手工操作也有一定的危险性?BR>iii. 使用Rebuild Table工具Q轻松搞定,而且可以手工修改一些通过EXP/IMP无法修改的参敎ͼ比如freelists ,freelists group, tablespaceQinitial{,q能够更改列的名字?BR>s) Relocate Index<BR>i. 我们知道Q表和烦(ch)引一般都需要分开存放C同的表空_(d)q样比较便于理Q性能上也?x)有一定的提高Q因为可以对表和索引同时存取?BR>ii. 但是实际上很多时候,׃q样那样的原因,常常忽略了烦(ch)引单独存放这个基本概念,比如建立主键U束的时候没有加USING INDEX子句Q后来disable/enable了主键约?唯一性约束等Q都?x)导致把索引直接存放到和表同一个表I间里面?BR>iii. 手工发现q些索引Q再逐个Ud非常ȝ(ch)Q容易出错,在Toad里面Q就很容易根据用?表空间来发现那些不恰当存攄索引Q可以批量移动这些烦(ch)引,q且允许重新定义索引的存储子句?BR>t) Generate Schema ScriptsQ?BR>i. 可以用来生成整个用户下所?部分对象的DDL语句。可以把l果保存为sql语句或者保存ؓ(f)TOAD的自定义格式?BR>ii. 可以用来复制表结构,QEXP/IMP有非怸重的~陷Q就是从一个大的数据库倒出的表l构Q无法导入到一个小的数据库里面Q因为里面包含了原来表的存储信息Q即佉K择rows=NQ也要在导入数据库里面占用相当大的空_(d)(j)<BR>u) Compare SchemaQ?BR>i. 在开发的时候,有时候同时在几个开发库上开发,但是最后两个库的结构不完全一P很难比较<BR>ii. 用TOAD的这个功能,可以对两个数据库的模式(用户Q下面的所有对象(包括存储q程Q进行比较,可以选择具体的比较内宏V?BR>iii. 可以通过直接打开两个到各自数据库的连接,或者根据Toad generate schame scripts生成的文件进行对比?BR>iv. 可以直接生成同步两个数据库的sql脚本Q给出汇ȝ区别要和详细报告{?BR>--------------------------------------------------------------------------------</P> <P>几乎是学?fn)TOAD的唯一中文使用说明Q我再也找不到比q个更好的了Q特跟大家分享?BR>转蝲的,找不到出处了。如果原作者有意见的话Q我把q个删掉好了^_^<BR></P></SPAN><img src ="http://www.aygfsteel.com/cymao/aggbug/24925.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.aygfsteel.com/cymao/" target="_blank">?/a> 2005-12-21 11:18 <a href="http://www.aygfsteel.com/cymao/archive/2005/12/21/24925.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss> <footer> <div class="friendship-link"> <a href="http://www.aygfsteel.com/" title="狠狠久久亚洲欧美专区_中文字幕亚洲综合久久202_国产精品亚洲第五区在线_日本免费网站视频">狠狠久久亚洲欧美专区_中文字幕亚洲综合久久202_国产精品亚洲第五区在线_日本免费网站视频</a> </div> </footer> վ֩ģ壺 <a href="http://" target="_blank"></a>| <a href="http://" target="_blank">ɽ</a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank">ľ</a>| <a href="http://" target="_blank">˾</a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank">ʯɽ</a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank">ǰ</a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank">̨</a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank">ϰˮ</a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank">û</a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank">ʯɽ</a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank">뵺</a>| <a href="http://" target="_blank">ԭ</a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank">ʼ</a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank">ֹ</a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank">Ӽ</a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank">̫ԭ</a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank"></a>| <script> (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })(); </script> </body>