??xml version="1.0" encoding="utf-8" standalone="yes"?>久久亚洲精品中文字幕无码,亚洲制服在线观看,91嫩草亚洲精品http://www.tkk7.com/gf7/category/3280.html<a target="_blank"><img src="http://union.keepc.com/templates/default/images/1/950X90.gif" alt="KC|络电话Q中国最优秀的网l电? width="950" height="90" border="0"></a>zh-cnSun, 01 Jul 2012 23:58:41 GMTSun, 01 Jul 2012 23:58:41 GMT60使用Oracle trunc 来指定精的q月日时分秒http://www.tkk7.com/gf7/archive/2012/07/01/381933.html?/dc:creator>?/author>Sun, 01 Jul 2012 15:20:00 GMThttp://www.tkk7.com/gf7/archive/2012/07/01/381933.htmlhttp://www.tkk7.com/gf7/comments/381933.htmlhttp://www.tkk7.com/gf7/archive/2012/07/01/381933.html#Feedback0http://www.tkk7.com/gf7/comments/commentRss/381933.htmlhttp://www.tkk7.com/gf7/services/trackbacks/381933.html

函数trunc是一个Oracle内置的函敎ͼ可以?a target="_self">datecd数据q行“度n裁剪”Q来适应不同cd的数据需求?/span>

 

在前?span lang="EN-US">Oracle日期cd操作几个问题》中Q我们已l了解到datecd的基本知识。datecd是一U包括年、月、日、时、分和秒的数据类型,可以表示相对_的时间信息。内部存储上Qdatecd是类g数字cd的,可以通过加减操作实现Ҏ期的推进和后退?/span>

 

但是Q日期格式的_常常l我们带来一些困扎ͼ特别是其中的时分U信息。很多时候,我们对这部分信息是不需要的。比如指定日期查询、只昄天信息等{。借助To_char虽然可以实现一部分q种需要,但是q样做格式上比较复杂Q而且q行了数据类型的转换。是否存在不变化数据cd的方法,Ҏ期型数据q行处理。答案就是trunc函数?/span>

 

trunc(date)

 

截断函数trunc的作用就是将日期cd数据按照指定格式截断Q返回一个日期变量数据。例如:

 

SQL> select to_char(sysdate,'yyyy-mm-dd hh24:mi:ss') from dual;

 

TO_CHAR(SYSDATE,'YYYY-MM-DDHH2

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

2010-12-10 20:39:58

 

SQL> select trunc(sysdate) from dual;

 

TRUNC(SYSDATE)

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

2010-12-10

 

SQL> select to_char(trunc(sysdate),'yyyy-mm-dd hh24:mi:ss') from dual;

 

TO_CHAR(TRUNC(SYSDATE),'YYYY-M

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

2010-12-10 00:00:00

 

默认情况下,sysdate函数q回的日期类型数据包括当前的具体旉。通过trunc(date)的处理,直接截取到天信息Q返回指定天的零时?/span>

 

trunc函数q支持一个重载参敎ͼ格式字符Ԍtrunc(date,format)Q用于指定截断的位置。如下:

 

//截断到年

SQL> select trunc(sysdate,'yyyy') from dual;

 

TRUNC(SYSDATE,'YYYY')

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

2010-1-1

//截断到月

SQL> select trunc(sysdate,'mm') from dual;

 

TRUNC(SYSDATE,'MM')

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

2010-12-1

//截断到日

SQL> select trunc(sysdate,'dd') from dual;

 

TRUNC(SYSDATE,'DD')

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

2010-12-10

//截断到小?/font>

SQL> select trunc(sysdate,'hh24') from dual;

 

TRUNC(SYSDATE,'HH24')

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

2010-12-10 20:00:00

//截断到分?/font>

SQL> select trunc(sysdate,'mi') from dual;

 

TRUNC(SYSDATE,'MI')

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

2010-12-10 20:52:00

 

使用不同的格式标志,可以指示不同的截断位|,获取各种零刻旉?/font>

 

 

格式字符?/font>

说明

q?/font>

yyyy或者year

q度W一天(一月一日零Ӟ

?/font>

mm或者month

月䆾W一天(一日零Ӟ

?/font>

dd或者day

日期零时Q?span lang="EN-US">00:00:00Q?/span>

hh或者hh24

几时_XX:00:00Q?/span>

?/font>

mi

几分_XX:XX:00Q?/span>

 

借助trunc函数和日期类型加减处理,我们可以实现一些特D日期的讄Q实现日期功能,使用在例如Job调度斚w?/span>

 

//明天零点

SQL> select to_char(trunc(sysdate)+1,'yyyy-mm-dd hh24:mi:ss') from dual;

 

TO_CHAR(TRUNC(SYSDATE)+1,'YYYY

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

2010-12-11 00:00:00

 

//当天早上十点

SQL> select to_char(trunc(sysdate)+10/24,'yyyy-mm-dd hh24:mi:ss') from dual;

 

TO_CHAR(TRUNC(SYSDATE)+10/24,'

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

2010-12-10 10:00:00

 

//当月三号Q上?0点半

SQL> select to_char(trunc(sysdate,'mm')+2+10/24+1/48, 'yyyy-mm-dd hh24:mi:ss') from dual;

注:trunc(sysdate,'mm')时间取到当前月?号零旉分零U,那么加上2pC当前月?好零旉分零U,再加?10/24'('10/24'本n表示10个小?是表示当月3L十点零分零秒Q再加上'1/48'('1/48'本n表示30分钟)pC当?号十点三十分零秒

 

TO_CHAR(TRUNC(SYSDATE,'MM')+2+

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

2010-12-03 10:30:00 

 

较复杂的to_charQtrunc更加可以发挥日期cd数值本w的特色和优势,无论是代码整z度q是处理效率都是值得x的?/span>

 

额外多说一句,trunc本nq具有处理数字截断功能,用于截断指定位数的数字类型?/span>

 

//默认截断到整敎ͼ不进行四舍五入;

SQL> select trunc(15.743) from dual;

 

TRUNC(15.743)

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

          15

//截断到小数点后一位;

SQL> select trunc(15.793,1) from dual;

 

TRUNC(15.793,1)

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

          15.7

//截断到小数点前一位;

SQL> select trunc(15.793,-1) from dual;

 

TRUNC(15.793,-1)

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

             10

 

truncҎ字和日期cd处理Q也折射出日期类型数据和数字之间的间接关pR?/font>

 

原文地址Qhttp://space.itpub.net/17203031/viewspace-681548

 


 trunc不仅可以用来处理日期Q还可以用来处理数字

TRUNC(i1,i2)截取i1的i2位而不四舍五入Q如果i2是正截取小数点双W几位,如果是i2是负是截取数点左边第几位?/p>

例如Q?/p>

 

  1. select TRUNC(0.10005767,1) from dual; 
  2.  
  3. TRUNC(0.10005767,1) 1 0.1

而如果trunc函数没有指定参i2Q那么其作用为取_且取整的时候不会四舍五?/p>

例如Q?/p>

  1. select TRUNC(2.60005767) from dual; 
  2.  
    TRUNC(2.60005767)


round函数和trunc函数的区别:

ROUND(i1,i2)四舍五入,i1四舍五入Q如果i2是正保留数点后i2位。如果是i2是负敎ͼ表示保留数点前?左边W几?

TRUNC(i1,i2)截取i1的i2位而不四舍五入Q如果i2是正截取小数点双W几位,如果是i2是负是截取数点左边第几位?/p>

 



]]>
Oracleq程DCPU 100%的具体解x?/title><link>http://www.tkk7.com/gf7/archive/2010/11/19/338484.html</link><dc:creator>?/dc:creator><author>?/author><pubDate>Fri, 19 Nov 2010 07:57:00 GMT</pubDate><guid>http://www.tkk7.com/gf7/archive/2010/11/19/338484.html</guid><wfw:comment>http://www.tkk7.com/gf7/comments/338484.html</wfw:comment><comments>http://www.tkk7.com/gf7/archive/2010/11/19/338484.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.tkk7.com/gf7/comments/commentRss/338484.html</wfw:commentRss><trackback:ping>http://www.tkk7.com/gf7/services/trackbacks/338484.html</trackback:ping><description><![CDATA[<div class="nbvhdtj" id="clickeye_content"> <div class="dtrpdlt" id="fontsize" class="article_c"> <p>  1:查系l?/p> <code>sar -u 5 5</code> <p> </p> <p>  2: 看谁在用CPU</p> <code>topas<br /> ps -ef |grep ora #查第四列QC的大(unitQ?00 per cpuQ?/code> <p> </p> <p>  3:查CPU数量</p> <code>/usr/sbin/bindprocessor -q<br />   <br /> lsattr El proc0</code> <p> </p> <p>  4:两种可能Q?/p> <code>1: A Background (instance) process<br />   <br /> 2: An oracle (user) process Q此U可能最大?/code> <p> </p> <p>  5: 如果是用戯E:那么高CPU的主要原因有Q?/p> <code>Large Queries, Procedure compilation or execution,<br /> Space management and Sorting</code> <p> </p> <p>  5.1 查看每个Session的CPU利用情况Q?/p> <code>select ss.sid,se.command,ss.value CPU ,se.username,se.program<br /> from v$sesstat ss, v$session se<br /> where ss.statistic# in<br /> (select statistic#<br /> from v$statname<br /> where name = 'CPU used by this session')<br /> and se.sid=ss.sid<br /> and ss.sid>6<br /> order by ss.sid</code> <p> </p> <p>  5.2: 比较上述Session</p> <p>  比较一下哪个session的CPU使用旉最多,然后查看该Session的具体情况:</p> <code>select s.sid, event, wait_time, w.seq#, q.sql_text<br /> from v$session_wait w, v$session s, v$process p, v$sqlarea q<br /> where s.paddr=p.addr and<br /> s.sid=&p and<br /> s.sql_address=q.address;</code> <p> </p> <p>  5.3:查看</p> <p>  得到上述信息后,查看相应操作是否有hash joins ?full table scans。如果有hash joins ?full table scans那么必须创徏相应的Index或者检查Index是否有效?/p> <p>  另外必须查是否有q行的查询存在和同一时刻有多个用户在执行相同的SQL语句Q如果有必须关闭q行的查询和Mcd的ƈ行提C?hints);如果查询使用intermedia数据Q那么ؓ了减ȝIndex大小Q必限制用Intermedia的Worldlist。(try restricting the wordlist that intermedia uses to help reduce the total indexsizeQ?/p> <p>  6:注意事项</p> <p>  上述Ҏ只能Ҏ已经q行完成的操作,对于正在执行的长旉操作只能{操作完成后才能得到。因此我们可以通过另外一个很好的工具来检正在运行的长时间操作语句。v$session_longops,q个视图昄那些操作正在被运行,或者已l完成。每个process完成后会h本视囄信息?/p> <p>  7:怎样L集中使用CPU的ProcessQ?/p> <p>  很多时候会发现有N个Process在^均分享着CPU的利用率Q这U情况唯一的可能性就是这些Process在执行着相同的Package或者Query.</p> <p>  q种情况Q徏议通过statspack,在CPU高利用率额时候运行几个快照,然后Ҏq些快照查Statspack报告Q检查报告中最TOP的Query。然后?sql_trace and tkprof 工具去跟t一下?/p> <p>  同时查buffer cache 的命中率是否大雨95Q?/p> <p>  同时在报告中q需要检查一下table scans (long tables)Q看是否在报告生成期间有存在全表扫描?/p> <p>  8:参数</p> <p>  另外q有一些不是特别重要的Q但是也必须兛_查的参数可能消耗CPU?/p> <p>  parallel query q行查询Q?/p> <p>  q行查询最好用于数据仓库的环境下,那种情况M时候只有几个用户在同时使用。在一个联Z务处理环境中Q当同时许多用户dƈ行查询一个数据库的巨大表时候,会导致CPU的爆满。所以最好在数据库的U别关闭q行查询Q设|参数如下:</p> <code>parallel_min_server = 0  parallel_max_server = 0  <br /> parallel_automatic_tuning = false;</code> <p> </p> <p>  在配|上q参数后Q如果SQL语句中用的q行的提C,那么q是有可能会出现q行查询的情况,所以还需要l监视相关的SQL语句Q如果有可以直接去除提示?/p> </div> </div> <img src ="http://www.tkk7.com/gf7/aggbug/338484.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.tkk7.com/gf7/" target="_blank">?/a> 2010-11-19 15:57 <a href="http://www.tkk7.com/gf7/archive/2010/11/19/338484.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Redhat Linux AS4(AS5)下oracle10g自启动脚本设|?/title><link>http://www.tkk7.com/gf7/archive/2010/10/27/336314.html</link><dc:creator>?/dc:creator><author>?/author><pubDate>Wed, 27 Oct 2010 11:46:00 GMT</pubDate><guid>http://www.tkk7.com/gf7/archive/2010/10/27/336314.html</guid><wfw:comment>http://www.tkk7.com/gf7/comments/336314.html</wfw:comment><comments>http://www.tkk7.com/gf7/archive/2010/10/27/336314.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.tkk7.com/gf7/comments/commentRss/336314.html</wfw:commentRss><trackback:ping>http://www.tkk7.com/gf7/services/trackbacks/336314.html</trackback:ping><description><![CDATA[<p>以redhat as4和oracle 10gZ。单机在安装q程依照oracle官方的文档一步步下来Q只要设|好 参数、安装好必要的包Q一般不会出什么问题。安装好了以后系l重启,oracle重启服务Q网上很多h自己写脚本(其实脚本也很单)Q这里讲的是?oracle本n的脚本实玎ͼ当然不可避免最后还要写一点点的?/p> <p>1、配|dbstart和dbshut</p> <p>?ORACLE_HOME/bin 中,有dbstart和dbshutq两个脚本,more dbstart看一下可以看刎ͼ</p> <p>#<br /> # $Id: dbstart.sh.pp 11-may-2005.18:18:07 vikrkuma Exp $<br /> # Copyright (c) 1991, 2005, Oracle. All rights reserved.<br /> #</p> <p>###################################<br /> #<br /> # usage: dbstart<br /> #<br /> # This script. is used to start ORACLE from /etc/rc(.local).<br /> # It should ONLY be executed as part of the system boot procedure.<br /> #<br /> # This script. will start all databases listed in the oratab file<br /> # whose third field is a "Y". If the third field is set to "Y" and<br /> # there is no ORACLE_SID for an entry (the first field is a *),<br /> # then this script. will ignore that entry.<br /> #<br /> # This script. requires that ASM ORACLE_SID's start with a +, and<br /> # that non-ASM instance ORACLE_SID's do not start with a +.<br /> #<br /> # If ASM instances are to be started with this script, it cannot<br /> # be used inside an rc*.d directory, and should be invoked from<br /> # rc.local only. Otherwise, the CSS service may not be available<br /> # yet, and this script. will block init from completing the boot<br /> # cycle.<br /> #<br /> # Note:<br /> # Use ORACLE_TRACE=T for tracing this script.<br /> #<br /> # The progress log for each instance bringup plus Error and Warning message[s]<br /> # are logged in file $ORACLE_HOME/startup.log. The error messages related to<br /> # instance bringup are also logged to syslog (system log module).<br /> # The Listener log is located at $ORACLE_HOME_LISTNER/listener.log<br /> ......</p> <p>可以看出q个脚本是用来启动oracle服务的,包括listener、instance、asm instancesQƈ且可以放?etc/rc(.local).Q同样dbshut也是起到关闭服务的作用?/p> <p>配置pȝ使这个脚本v?用:</p> <p>1Q、以root~辑/etc/oratabQ类?orcl:/u01/product/10.2.0/db_1:N q种格式Q其中orcl是你的ORACLE_SIDQ?u01/product/10.2.0/db_1是ORACLE_HOMEQ这里需要把N改ؓYQ?即orcl:/u01/product/10.2.0/db_1:Yq样?/p> <p>2Q、以oracle~辑$ORACLE_HOME/bin /dbstartQ找到其中第78?ORACLE_HOME_LISTNER=改ؓ你自q路径Q或者可以改?ORACLE_HOME_LISTNER=$ORACLE_HOME</p> <p>保存脚本Q以oracle用户q行dbshut和dbstart看是 否能关闭、启动数据库。如 果不能,一般是参数讄Q根据报错找到对应位|更攏V?/p> <p>2?把dbstart和dbshut加到redhat启动服务?/p> <p>l过上一步的配置Q可以直接用 dbstart命o启动数据listener、instance、asm instancesQ但是还没有启动oracle10g的EMQORACLE利用web?面管理数据库相当方便Q也 ?0g的一个特Ԍ所以应该一q启动v该服务来?/p> <p>$ORACLE_HOME/bin/emctl start dbconsole</p> <p>因此我们可以用rc.local或者redhat服务都可以实现要求的开机启动。下面分别说一下:</p> <p>1Q、利?rc.local。直接把dbstart加到rc.local中,实现开动启动。这里需要注意的是必Moracle启动该脚本?/p> <p>?root~辑/etc/rc.localQ添加下面一行:</p> <p>su - oracle -c "/u01/product/10.2.0/db_1/bin/dbstart"<br /> su - oracle -c "/u01/product/10.2.0/db_1/bin/emctl start dbconsole"</p> <p>q里/u01/product/10.2.0/db_1需要替换成实际的ORACLE_HOME</p> <p>保存q出后Qreboot服务器测试一下,可以看到Q当pȝ启动以后oracle监听、实?和em都已lv来了</p> <p>2Q、如果我们不用rc.localQ也可以加到redhat服务中。在/etc/rc.d /init.d中添加如下脚本文Ӟ命名为oracleQ?/p> <p>#!/bin/sh<br /> #chkconfig: 2345 99 01<br /> #description: ORACLE 10g Server</p> <p>ORACLE_HOME=/u01/product/10.2.0/db_1</p> <p>if [ ! -f $ORACLE_HOME/bin/dbstart ]<br /> then<br /> echo "ORACLE cannot start"<br /> exit<br /> fi</p> <p>case "$1" in<br /> 'start')<br /> echo "Starting Oracle Database..."<br /> su - oracle -c "$ORACLE_HOME/bin/dbstart"<br /> su - oracle -c "$ORACLE_HOME/bin/emctl start dbconsole"<br /> ;;<br /> 'stop')<br /> echo "Stoping Oracle Database"<br /> su - oracle -c "$ORACLE_HOME/bin/emctl stop dbconsole"<br /> su - oracle -c "$ORACLE_HOME/bin/dbshut"<br /> ;;<br /> esac</p> <p>注意其中两行注释Q网上很多脚本因为少了这两行不能使服务自启动Q?/p> <p>#chkconfig: 2345 99 01<br /> #description: ORACLE 10g Server</p> <p>其中chkconfigQ?345 99 01 是指脚本ؓq行U????启动oracle 10g服务Q启动优先?9Q关闭优先?1?/p> <p>然后以root权限:</p> <p># cd /etc/rc2.d<br /> # ln -s /etc/rc.d/init.d/oracle S99oracle<br /> # chkconfig --list oracle<br /> # chkconfig --level 2345 oracle on</p> <p>重启pȝQ就可以在启动的q程中看?Starting oracleQ因为我们设|的优先Uؓ99Q一般是最后启动。[OK]以后可以了。因启动emctlQ可能有ҎQ等待的旉要稍微长一炏V?/p> <p>?动以后可以以root执行oracle start或者oracle stop来启动或停止服务?/p> <p><br />  </p> <img src ="http://www.tkk7.com/gf7/aggbug/336314.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.tkk7.com/gf7/" target="_blank">?/a> 2010-10-27 19:46 <a href="http://www.tkk7.com/gf7/archive/2010/10/27/336314.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>深刻理解Oracle数据库的启动和关?/title><link>http://www.tkk7.com/gf7/archive/2010/09/11/331734.html</link><dc:creator>?/dc:creator><author>?/author><pubDate>Sat, 11 Sep 2010 05:18:00 GMT</pubDate><guid>http://www.tkk7.com/gf7/archive/2010/09/11/331734.html</guid><wfw:comment>http://www.tkk7.com/gf7/comments/331734.html</wfw:comment><comments>http://www.tkk7.com/gf7/archive/2010/09/11/331734.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.tkk7.com/gf7/comments/commentRss/331734.html</wfw:commentRss><trackback:ping>http://www.tkk7.com/gf7/services/trackbacks/331734.html</trackback:ping><description><![CDATA[       Oracle数据库提供了几种不同的数据库启动和关闭方式,本文详l介l这些启动和关闭方式之间的区别以及它们各自不同的功能? <p>  一、启动和关闭Oracle数据?/p> <p>  对于大多数Oracle DBA来说Q启动和关闭Oracle数据库最常用的方式就是在命o行方式下的Server Manager。从Oracle 8i以后Q系l将Server Manager的所有功能都集中CSQL*Plus中,也就是说?i以后对于数据库的启动和关闭可以直接通过SQL*Plus来完成,而不再另外需要Server ManagerQ但pȝZ保持向下兼容Q依旧保留了Server Manager工具。另外也可通过囑Ş用户工具QGUIQ的Oracle Enterprise Manager来完成系l的启动和关闭,囑Ş用户界面Instance Manager非常单,q里不再详述?/p> <p>  要启动和关闭数据库,必须要以hOracle 理员权限的用户登陆Q通常也就是以hSYSDBA权限的用L陆。一般我们常用INTERNAL用户来启动和关闭数据库(INTERNAL用户实际上是SYS用户以SYSDBAq接的同义词Q。Oracle数据库的新版本将逐步淘汰INTERNALq个内部用户Q所以我们最好还是设|DBA用户hSYSDBA权限?/p> <p>  二、数据库的启动(STARTUPQ?/p> <p>  启动一个数据库需要三个步骤:</p> <p>   1?创徏一个Oracle实例Q非安装阶段Q?/p> <p>   2?由实例安装数据库Q安装阶D)</p> <p>   3?打开数据库(打开阶段Q?/p> <p>  在Startup命o中,可以通过不同的选项来控制数据库的不同启动步骤?/p> <p>  1、STARTUP NOMOUNT</p> <p>  NONOUNT选项仅仅创徏一个Oracle实例。读取init.ora初始化参数文件、启动后台进E、初始化pȝ全局区(SGAQ。Init.ora文g定义了实例的配置Q包括内存结构的大小和启动后台进E的数量和类型等。实例名ҎOracle_SID讄Q不一定要与打开的数据库名称相同。当实例打开后,pȝ显CZ个SGA内存l构和大的列表Q如下所C:</p> <p>SQL> startup nomount<br /> ORACLE 例程已经启动?br /> Total System Global Area 35431692 bytes<br /> Fixed Size 70924 bytes<br /> Variable Size 18505728 bytes<br /> Database Buffers 16777216 bytes<br /> Redo Buffers 77824 bytes  </p> <p>  2、STARTUP MOUNT </p> <p>  该命令创建实例ƈ且安装数据库Q但没有打开数据库。Oraclepȝd控制文g中关于数据文件和重作日志文g的内容,但ƈ不打开该文件。这U打开方式常在数据库维护操作中使用Q如Ҏ据文件的更名、改变重作日志以及打开归档方式{。在q种打开方式下,除了可以看到SGApȝ列表以外Q系l还会给?数据库装载完?的提C?/p> <p>  3、STARTUP</p> <p>  该命令完成创建实例、安装实例和打开数据库的所有三个步骤。此时数据库使数据文件和重作日志文g在线Q通常q会h一个或者是多个回滚Dc这时系l除了可以看到前面Startup Mount方式下的所有提C外Q还会给Z?数据库已l打开"的提C。此Ӟ数据库系l处于正常工作状态,可以接受用户h?</p> <p>  如果采用STARTUP NOMOUNT或者是STARTUP MOUNT的数据库打开命o方式Q必采用ALTER DATABASE命o来执行打开数据库的操作。例如,如果你以STARTUP NOMOUNT方式打开数据库,也就是说实例已经创徏Q但是数据库没有安装和打开。这是必运行下面的两条命oQ数据库才能正确启动?/p> <p>ALTER DATABASE MOUNT;<br /> ALTER DATABASE OPEN; </p> <p>  而如果以STARTUP MOUNT方式启动数据库,只需要运行下面一条命令即可以打开数据库:</p> <p>    ALTER DATABASE OPEN. </p> <p>  4、其他打开方式</p> <p>  除了前面介绍的三U数据库打开方式选项外,q有另外其他的一些选项?/p> <p>  (1) STARTUP RESTRICT </p> <p>  q种方式下,数据库将被成功打开Q但仅仅允许一些特权用PhDBA角色的用P才可以用数据库。这U方式常用来Ҏ据库q行l护Q如数据的导?导出操作时不希望有其他用戯接到数据库操作数据?/p> <p>  (2) STARTUP FORCE</p> <p>  该命令其实是关闭数据库(shutdown abortQ和启动数据库(startupQ两条命令的一个综合。该命o仅在关闭数据库遇到问题不能关闭数据库旉用?/p> <p>  (3) ALTER DATABASE OPEN READ ONLY;</p> <p>  该命令在创徏实例以及安装数据库后Q以只读方式打开数据库。对于那些仅仅提供查询功能的产品数据库可以采用这U方式打开?/p> <p><br />   三、数据库的关闭(SHUTDOWNQ?/p> <p>  对于数据库的关闭Q有四种不同的关闭选项Q下面对其进行一一介绍?/p> <p>  1、SHUTDOWN NORMAL</p> <p>  q是数据库关闭SHUTDOWN命o的确省选项。也是说如果你发出SHUTDOWNq样的命令,也即是SHUTDOWN NORNAL的意思?/p> <p>  发出该命令后QQ何新的连接都再不允许连接到数据库。在数据库关闭之前,Oracle等待目前连接的所有用户都从数据库中退出后才开始关闭数据库。采用这U方式关闭数据库Q在下一ơ启动时不需要进行Q何的实例恢复。但需要注意一点的是,采用q种方式Q也许关闭一个数据库需要几天时_也许更长?/p> <p>  2、SHUTDOWN IMMEDIATE </p> <p>  q是我们常用的一U关闭数据库的方式,惛_快地关闭数据库,但又惌数据库干净的关闭,帔R用这U方式?/p> <p>  当前正在被Oracle处理的SQL语句立即中断Q系l中M没有提交的事务全部回滚。如果系l中存在一个很长的未提交的事务Q采用这U方式关闭数据库也需要一D|_该事务回滚时_。系l不{待q接到数据库的所有用户退出系l,回滚当前所有的zd事务Q然后断开所有的q接用户?/p> <p>  3、SHUTDOWN TRANSACTIONAL</p> <p>  该选项仅在Oracle 8i后才可以使用。该命o常用来计划关闭数据库Q它使当前连接到pȝ且正在活动的事务执行完毕Q运行该命o后,M新的q接和事务都是不允许的。在所有活动的事务完成后,数据库将和SHUTDOWN IMMEDIATE同样的方式关闭数据库?/p> <p>  4、SHUTDOWN ABORT </p> <p>  q是关闭数据库的最后一招,也是在没有Q何办法关闭数据库的情况下才不得不采用的方式,一般不要采用。如果下列情况出现时可以考虑采用q种方式关闭数据库?/p> <p>  1?数据库处于一U非正常工作状态,不能用shutdown normal或者shutdown immediateq样的命令关闭数据库;</p> <p>  2?需要立卛_闭数据库Q?/p> <p>  3?在启动数据库实例旉到问题;</p> <p>  所有正在运行的SQL语句都将立即中止。所有未提交的事务将不回滚。Oracle也不{待目前q接到数据库的用户退出系l。下一ơ启动数据库旉要实例恢复,因此Q下一ơ启动可能比qx需要更多的旉?/p> <p>  ?可以清楚地看Cq四U不同关闭数据库的区别和联系?/p> <p>   ? Shutdown数据库不同方式对比表<br /> </p> <table border="1" cellspacing="0" width="500" align="center"> <tbody> <tr> <td width="250">关闭方式</td> <td width="66">A </td> <td width="47">I </td> <td width="67">T </td> <td width="48">N </td> </tr> <tr> <td width="250">允许新的q接</td> <td width="66">×</td> <td width="47">× </td> <td width="67">× </td> <td width="48">×</td> </tr> <tr> <td width="250">{待直到当前会话中止</td> <td width="66">×</td> <td width="47">× </td> <td width="67">× </td> <td width="48">√</td> </tr> <tr> <td width="250">{待直到当前事务中止</td> <td width="66">×</td> <td width="47">× </td> <td width="67">√ </td> <td width="48">√</td> </tr> <tr> <td width="250">强制CheckPointQ关闭所有文?</td> <td width="66">× </td> <td width="47">√ </td> <td width="67">√ </td> <td width="48">√</td> </tr> </tbody> </table> <p> </p> <p>  其中QA-Abort I-Immediate T-Transaction N-Nornal</p> <img src ="http://www.tkk7.com/gf7/aggbug/331734.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.tkk7.com/gf7/" target="_blank">?/a> 2010-09-11 13:18 <a href="http://www.tkk7.com/gf7/archive/2010/09/11/331734.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>oracle查询命中率调优的一个方?有用?http://www.tkk7.com/gf7/archive/2010/07/21/326691.html?/dc:creator>?/author>Tue, 20 Jul 2010 22:37:00 GMThttp://www.tkk7.com/gf7/archive/2010/07/21/326691.htmlhttp://www.tkk7.com/gf7/comments/326691.htmlhttp://www.tkk7.com/gf7/archive/2010/07/21/326691.html#Feedback0http://www.tkk7.com/gf7/comments/commentRss/326691.htmlhttp://www.tkk7.com/gf7/services/trackbacks/326691.html构徏一个企业的应用系l,往往数据库成为最l的一个负载瓶颈,在我们优化完sql语句、优化完应用E序之后Q数据库的调优必不可,下面基于sql查询的命中率的oracle调优做一个简单的说明?br /> 1.先检验数据库的查询命中率Q请执行下面?lsql语句Qƈ且分别记录修改之前的数倹{?br /> W一lsql语句如下Q?br /> select 100- (j.value-( a.value+b.value )) /(u.value+v.value-a.value-b.value)*100 as 命中?from
(select value from v$sysstat where name ='physical reads direct' ) a,
(select value from v$sysstat where name ='physical reads direct (lob)' ) b,
(select value from v$sysstat where name ='physical reads') j,
(select value from v$sysstat where name ='consistent gets') u,
(select value from v$sysstat where name = 'db block gets') v ;

W二lsql语句如下Q?br /> select sum(gets) "h存取?,sum(getmisses) "不命中数" , (1-sum(getmisses)/sum(gets) )*100 "命中?
from v$rowcache;

2.如果W一lsql语句执行的结果是<90%Q则说明需要调整oracle数据库的内存QSGA的大)Q第二组sql语句作ؓ一个参照?br /> 一般经验:?1G 的内存的服务器上Q我们能分配lSGA的内存大Uؓ400?00M 。若?G的内存,大约可以分到1G的内存给 SGAQ?G 的内存可以分?G的内存给SGA?/p>

考虑到数据库服务器的机器内存大小?G, 可以按照以下脚本执行修改Q?br /> 【注:Lhdba权限的用L?#8220;login as sysdba”dQ可以用pl/sql工具?br />
--修改前备份一下sqfile
create pfile='d:\oracle\ora9init.ora' from spfile;

--修改׃n池大?br /> alter system set shared_pool_size =256M scope=spfile;

--修改~冲池大?br /> alter system set db_cache_size=896M scope=spfile;

--大缓冲池
alter system set large_pool_size=100m scope=spfile;
--修改链接q程?br /> alter system set processes=1500 scope=spfile;
--会话?br /> alter system set sessions=900 scope=spfile;
--事务?br /> alter system set transactions=900 scope=spfile;
--打开游标?br /> alter system set open_cursors =1000 scope=spfile;

3.用pl/sql工具修改了这些参C后,需要重启oracle服务。当重启之后再查执行开始的2lsql语句Q对比数值的差异?/p>

]]>
Oracle内存参数调优技术详?http://www.tkk7.com/gf7/archive/2010/07/21/326689.html?/dc:creator>?/author>Tue, 20 Jul 2010 20:58:00 GMThttp://www.tkk7.com/gf7/archive/2010/07/21/326689.htmlhttp://www.tkk7.com/gf7/comments/326689.htmlhttp://www.tkk7.com/gf7/archive/2010/07/21/326689.html#Feedback0http://www.tkk7.com/gf7/comments/commentRss/326689.htmlhttp://www.tkk7.com/gf7/services/trackbacks/326689.html前言

q来公司技?/span>,研发都在问我关于内存参数如何讄可以优化oracle的性能,所以抽旉整理了这文?/span>,以做参?/span>.

目的

希望通过整理此文?/span>,使大家对oracle内存l构有一个全面的了解,q在实际的工作中灉|应用,?/span>oracle的内存性能辑ֈ最优配|,提升应用E序反应速度Qƈq行合理的内存?/span>.

内容

实例l构

oracle实例=内存l构+q程l构

oracle实例启动的过E,其实是oracle内存参数讄的值加载到内存中,q启动相应的后台q程q行相关的服务过E?/span>

q程l构

oracleq程=服务器进E?/span>+用户q程

几个重要的后台进E?/span>Q?/span>

DBWRQ数据写入进E?/span>.

LGWR:日志写入q程.

ARCH:归档q程.

CKPT:查点q程(日志切换Q上一个检查点之后Q又过了指定的旉Q预定义的日志块写入盘Q例E关闭,DBA强制产生,表空?/span>offline)

LCKnQ?/span>0-9Q:锁q程.

Dnnn:调度q程.

内存l构(我们重点讲解?/span>)

内存l构=SGAQ系l全局区)+PGAQ程序全局区)

SGAQ是用于存储数据库信息的内存区,该信息ؓ数据库进E所׃n。它包含Oracle 服务器的数据和控制信?/span>,它是?/span>Oracle服务器所ȝ的计机的实际内存中得以分配Q如果实际内存不够再往虚拟内存中写

 

我们重点是讄SGAQ理ZSGA可占OSpȝ物理内存?/span>1/2—?/span>1/3

原则Q?/span>SGA+PGA+OS使用内存<ȝ?/span>RAM

SGA=((db_block_buffers*blocksize)+(shared_pool_size+large_pool_size+java_pool_size+log_buffers)+1MB

1?/span>SGApȝ全局?/span>.(包括以下五个?/span>)

A、数据缓冲区:Q?/span>db_block_buffersQ存储由盘数据文gd的数据?/span>

大小: db_block_buffers*db_block_size

         Oracle9i讄数据~冲ZؓQ?/span>Db_cache_size

         原则Q?/span>SGA中主要设|对象,一般ؓ可用内存40%?/span>

B、共享池:Q?/span>shared_pool_sizeQ?/span>:数据字典Q?/span>sql~冲Q?/span>pl/sql语法分析.加大可提速度?/span>

原则Q?/span>SGA中主要设|对象,一般ؓ可用内存10%

C、日志缓冲区:Q?/span>log_bufferQ存储数据库的修改信?/span>.

         原则Q?/span>128K ---- 1M 之间Q不应该太大

D ?/span>JAVA池(Java_pool_sizeQ主要用?/span>JAVA语言的开?/span>.

         原则Q若不?/span>javaQ原则上不能于20MQ给30M通常够?/span>
E
?/span> 大池Q?/span>Large_pool_sizeQ?/span>  如果不设|?/span>MTSQ主要用于数据库备䆾恢复理?/span>RMAN?/span>

         原则Q若不?/span>MTS,5---- 10M 之间Q不应该太大

SGA=. db_block_buffers*db_block_size+ shared_pool_size+ log_buffer+Java_pool+size+large_pool_size

       原则Q?/span> 辑ֈ可用内存?/span>55-58%可以了.

2?/span>PGAE序全局?/span>

PGAQ包含单个服务器q程或单个后台进E的数据和控制信息,与几个进E共享的SGA 正相?/span>PGA 是只被一个进E用的区域Q?/span>PGA 在创E时分配在终止进E时回收.

A?/span>Sort_area_size 用于排序所占内?/span>

B?/span>Hash_area_size 用于散列联接Q位囄?/span>

q两个参数在?/span>MTS下都是属?/span>PGA Q不属于SGA,是ؓ每个session单独分配的,在我们的服务器上除了OS + SGA,一定要考虑q两部分
原则Q?/span>OS 使用内存+SGA+q发执行q程?/span>*(sort_area_size+hash_ara_size+2M) < 0.7*d?/span>

实例配置

一Q物理内存多?/span>

二:操作pȝ估计需要用多内?/span>

三:数据库是使用文gpȝq是裸设?/span>

四:有多ƈ发连?/span>

五:应用?/span>OLTP cdq是OLAP cd

基本掌握的原则是Q?/span> db_block_buffer 通常可以可能的大,shared_pool_size 要适度Q?/span>log_buffer 通常大到几百K?/span>1M差不多?/span>

     A、如?/span>512M RAM 单个CPU   db_block_size ?/span>8192 bytes
 SGA=0.55*512M=280M
左右

shared_pool_size = 50M, db_block_buffer* db_block_size = 200M
具体: shared_pool_size =52428800 #50M

db_block_buffer=25600      #200M

log_buffer = 131072         # 128k (128K*CPU个数)

             large_pool_size=7864320      #7.5M

             java_pool_size = 20971520    # 20 M

             sort_area_size = 524288      # 512k (65k--2M)

             sort_area_retained_size = 524288   # MTS ?/span> sort_area_retained_size = sort_area_size

B、如?/span>1G RAM     单个CPU   db_block_size ?/span>8192 bytes
SGA=0.55*1024M=563M
左右
shared_pool_size = 100M , db_block_buffer* db_block_size = 400M
具体: shared_pool_size=104857600    #100M

          db_block_buffer=51200         #400M

 log_buffer = 131072         # 128k (128K*CPU个数)

               large_pool_size=15728640       #15M

          java_pool_size = 20971520    # 20 M

sort_area_size = 524288      # 512k (65k--2M)

              sort_area_retained_size = 524288   # MTS ?/span> sort_area_retained_size = sort_area_size

 

C、如?/span>2G     单个CPU   db_block_size ?/span>8192 bytes

SGA=0.55*2048M=1126.4M左右
shared_pool_size = 200M , db_block_buffer *db_block_size = 800M

       具体: shared_pool_size=209715200    #200M

          db_block_buffer=103192         #800M

 log_buffer = 131072            # 128k (128K*CPU个数)

               large_pool_size= 31457280      #30M

          java_pool_size = 20971520      # 20 M

sort_area_size = 524288         # 512k (65k--2M)

              sort_area_retained_size = 524288   # MTS ?/span> sort_area_retained_size = sort_area_size

 

 

假定64 bit ORACLE

内存4G

shared_pool_size = 200M , data buffer = 2.5G

 

内存8G

shared_pool_size = 300M , data buffer = 5G

 

内存 12G

shared_pool_size = 300M-----800M , data buffer = 8G

参数更改方式

oracle8iQ?/span>

主要都是通过修改oracle启动参数文gq行相关的配|?/span>

参数文g位置Q?/span>

d:\oracle\admin\DB_Name\pfile\init.ora

按以上修改以上参数值即可?/span>

Oracle9i:

两种方式Q第一U是修改oracle启动参数文g后,通过此参数文件再创徏服务器参数文?/span>

          W二U是直接q行oracle修改命oq行修改?/span>

SQL>alter system set db_cache_size=200M scope=spfile;

SQL>alter system set shared_pool_size=50M scope=spfile;



]]>
win7下安装Oracle10ghttp://www.tkk7.com/gf7/archive/2010/02/04/311861.html?/dc:creator>?/author>Wed, 03 Feb 2010 16:55:00 GMThttp://www.tkk7.com/gf7/archive/2010/02/04/311861.htmlhttp://www.tkk7.com/gf7/comments/311861.htmlhttp://www.tkk7.com/gf7/archive/2010/02/04/311861.html#Feedback0http://www.tkk7.com/gf7/comments/commentRss/311861.htmlhttp://www.tkk7.com/gf7/services/trackbacks/311861.html工具|上的资料改了refhost.xml文g d?br /> <!--Microsoft Windows 7-->
<OPERATING_SYSTEM>
<VERSION VALUE="6.1"/>
</OPERATING_SYSTEM>
后来用xp sp3 兼容模式Q管理员q行安装Q?br /> 刚装?Oracle 10gQ然后,q行em后,界面出来了,但报了一个错Q?br /> java.lang.Exception: Exception in sending Request :: null
很多功能不能用,提示重新d

解决ҎQ找C面的文g
$ORACLE_HOME\db_1\$HOSTNAME\sysman\config\emd.properties
其中的agentTZRegion~省是GMT,改ؓ你所在的时区卛_,例如:
agentTZRegion=Asia/Harbin
关于时区的列表参考:10.2.0\db_1\sysman\admin\supportedtzs.lst
然后先停?dbconsole 使时|生效ƈ重启OracleDBConsoleQ?br /> 然后先停止dbconsole 在重启dbconsole Q?br /> set ORACLE_SID=orcl

emctl stop dbconsole

emctl start dbconsole



]]>
Oracle10g卸蝲后再ơ安装,讄的SID相同出现“指定的SID在本Z已经存在。。。解x?/title><link>http://www.tkk7.com/gf7/archive/2010/02/04/311860.html</link><dc:creator>?/dc:creator><author>?/author><pubDate>Wed, 03 Feb 2010 16:52:00 GMT</pubDate><guid>http://www.tkk7.com/gf7/archive/2010/02/04/311860.html</guid><wfw:comment>http://www.tkk7.com/gf7/comments/311860.html</wfw:comment><comments>http://www.tkk7.com/gf7/archive/2010/02/04/311860.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.tkk7.com/gf7/comments/commentRss/311860.html</wfw:commentRss><trackback:ping>http://www.tkk7.com/gf7/services/trackbacks/311860.html</trackback:ping><description><![CDATA[<p><font size="2">1、开始-Q设|-Q控刉板-Q管理工PQ服?停止所有Oracle服务?<br /> 2?开始-Q程序-QOracle - OraHome81Q>Oracle Installation ProductsQ> Universal Installer 卸装所有Oracle产品Q但Universal Installer本n不能被删?<br /> 5?q行regeditQ选择HKEY_LOCAL_MACHINE\SOFTWARE\ORACLEQ按del键删除这个入口?<br /> 6?q行regeditQ选择HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\ServicesQ滚?q个列表Q删除所有Oracle入口?<br /> 7?q行refeditQ?HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Eventlog\ApplicationQ?删除所有Oracle入口?<br /> 8?开始-Q设|-Q控刉板-Q系l-Q高U-Q环境变?删除环境变量CLASSPATH和PATH中有关Oracle的设?<br /> 9?从桌面上、STARTUPQ启动)l、程序菜单中Q删除所有有关Oracle的组和图?<br /> 10?删除\Program Files\Oracle目录 <br /> 11?重新启动计算机,重v后才能完全删除Oracle所在目录(到这基本可以安装 Q?nbsp;                           <br /> 12?删除与Oracle有关的文Ӟ选择Oracle所在的~省目录C:\OracleQ删除这个入 口目录及所有子目录Qƈ从Windows 2000目录Q一般ؓC:\WINNTQ下删除以下?件ORACLE.INI、oradim73.INI、oradim80.INI、oraodbc.ini{等?nbsp;                                                                                                           <br /> 13?WIN.INI文g中若有[ORACLE]的标记段Q删除该D?<br /> 14?如有必要Q删除所有Oracle相关的ODBC的DSN <br /> 15?C件查看器中,删除Oracle相关的日?说明Q?如果有个别DLL文g无法删除的情况,则不用理会,重新启动Q开始新的安装, 安装Ӟ选择一个新的目录,则,安装完毕q新启动后Q老的目录及文件就可以删除掉了?/font></p> <img src ="http://www.tkk7.com/gf7/aggbug/311860.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.tkk7.com/gf7/" target="_blank">?/a> 2010-02-04 00:52 <a href="http://www.tkk7.com/gf7/archive/2010/02/04/311860.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Oracle 10g 可以自动׃n内存理http://www.tkk7.com/gf7/archive/2009/06/20/283335.html?/dc:creator>?/author>Sat, 20 Jun 2009 02:47:00 GMThttp://www.tkk7.com/gf7/archive/2009/06/20/283335.htmlhttp://www.tkk7.com/gf7/comments/283335.htmlhttp://www.tkk7.com/gf7/archive/2009/06/20/283335.html#Feedback0http://www.tkk7.com/gf7/comments/commentRss/283335.htmlhttp://www.tkk7.com/gf7/services/trackbacks/283335.html是不是很隑և地分配不同的池所需的内存数Q自动共享内存管理特性得自动将内存分配到最需要的地方L为可能?br style="padding-right: 0px; padding-left: 0px; padding-bottom: 0px; margin: 0px; padding-top: 0px; word-wrap: break-word" />   
  无论您是一个刚入门?DBA q是一个经验丰富的 DBAQ您肯定臛_看到q一ơ类g下的错误Q?span class="Apple-converted-space"> 

  
  ORA-04031:unable to allocate 2216 bytes of shared memory ("shared pool"... ...
  
  或者这U错误: 
  ORA-04031:unable to allocate XXXX bytes of shared memory 
  ("large pool","unknown object","session heap","frame") 
  
  
  或者可能这U错误: 
  ORA-04031:unable to allocate bytes of shared memory ("shared pool",
  "unknown object","joxlod:init h", "JOX:ioc_allocate_pal")
  
  W一U错误的原因很明显:分配l共享池的内存不以满用户h。(在某些情况下Q原因可能不是池本n的大,而是未用绑定变量导致的q多分析造成的碎片,q是我很喜欢的一个主题;但目前让我们把重Ҏ在手头的问题上。)其它的错误分别来自大型池?span class="Apple-converted-space"> Java 池的I间不?span class="Apple-converted-space"> 
  
  您需要解册些错误情况,而不作Q何与应用E序相关的修攏V那么有哪些Ҏ可选呢Q问题是如何?a class="channel_keylink" style="padding-right: 0px; padding-left: 0px; font-size: 14px; padding-bottom: 0px; margin: 0px; color: rgb(0,0,255); line-height: 22px; padding-top: 0px; font-family: 宋体; text-decoration: none; word-wrap: break-word" target="_blank">Oracle 例程所需的所有池之间划分可用的内存?span class="Apple-converted-space"> 
  
  馅饼怎么分? 
  正如您所了解的,一?span class="Apple-converted-space"> Oracle 例程的系l全局区域 (SGA) 包含几个内存区域Q包括缓冲高速缓存、共享池?a class="channel_keylink" style="padding-right: 0px; padding-left: 0px; font-size: 14px; padding-bottom: 0px; margin: 0px; color: rgb(0,0,255); line-height: 22px; padding-top: 0px; font-family: 宋体; text-decoration: none; word-wrap: break-word" target="_blank">Java 池、大型池和重做日志缓Ԍ。这些池在操作系l的内存I间中占据了固定的内存数Q它们的大小?DBA 在初始化参数文g中指定?span class="Apple-converted-space"> 
  
  q四个池Q数据库块缓冲高速缓存、共享池、Java 池和大型池)几乎占据?SGA 中所有的I间。(与其它区域相比,重做日志~冲没有占据多少I间Q对我们q里的讨论无关紧要。)作ؓ DBAQ您必须保它们各自的内存分配是充的?span class="Apple-converted-space"> 
  
  假定您决定了q些池的值分别是 2GB?GB?GB ?1GB。您设|以下初始化参数来ؓ数据库例E规定池的大?span class="Apple-converted-space"> 
  db_cache_size = 2g
  shared_pool_size = 1g
  large_pool_size = 1g
  java_pool_size = 1g
  
  现在Q仔l看一下这些参数。坦白讲Q这些值是否准? 
  
  我相信您一定会有疑虑。在实际中,没有够ؓq些池指定确切的内存??它们太依赖于数据库内部的处理Q而处理的Ҏ随时在变化?span class="Apple-converted-space"> 
  
  下面是一个示例场景。假定您有一个典型的、大部分属于 OLTP 的数据库Qƈ且ؓ~冲高速缓存分配的专用内存比ؓU?OLTP 数据库(现在已经很少见了Q分配的要少。有一天,您的用户攑ּ了一些非常大的全表扫描,以创建当天的l束报表。Oracle9i 数据库ؓ您提供了在线修改内存分配的功能,但由于提供的ȝ理内存有限,您决定从大型池和 Java 池中取出一些内存: 
  alter system set db_cache_size = 3g scope=memory;
  alter system set large_pool_size = 512m scope=memory;
  alter system set java_pool_size = 512m scope=memory;
  
  q个解决Ҏ能够很好地工作一D|_但是接着夜间?RMAN 作业Q它们用大型池Q开始了Q大型池立卛_现内存不뀂同P您从数据库高速缓存中取出一些内存来补充大型池,以挽救这U局面?span class="Apple-converted-space"> 
  
  RMAN 作业完成Q然后启动一个广泛?Java 的批处理E序Q接着您开始看C Java 池相关的错误。因此,您(再次Q重新分配池Q以满 Java 池和数据库高速缓存上的内存需求: 
  alter system set db_cache_size = 2G scope=memory;
  alter system set large_pool_size = 512M scope=memory;
  alter system set java_pool_size = 1.5G scope=memory;
  
  W二天早上,OLTP 作业恢复在线Q这个@环又完全重复Q?span class="Apple-converted-space"> 
  
  解决q种恶性@环的一U替代方法是怹讄每个池的最大需求。不q,q么做的话,您分配的ȝ SGA 可能出可用的内??从而在为每个池分配的内存数不Ӟ增?a class="channel_keylink" style="padding-right: 0px; padding-left: 0px; font-size: 14px; padding-bottom: 0px; margin: 0px; color: rgb(0,0,255); line-height: 22px; padding-top: 0px; font-family: 宋体; text-decoration: none; word-wrap: break-word" target="_blank">交换和分늚风险。h工重新分配的ҎQ虽然不实际Q目前看h很不错?span class="Apple-converted-space"> 
  
  另一U替代方法是D为可接受的最倹{不q,当需求增长且内存不能完全满Ӟ性能受到媄响?span class="Apple-converted-space"> 
  
  注意在所有这些示例中Q分配给 SGA 的d存保持不变,而池之间的内存分配根据即时的需求进行修攏V如?RDBMS 自动探来自用L需求ƈ相应地重新分布内存分配,那不是很好吗Q?span class="Apple-converted-space"> 
  
  Oracle 数据?10g 中的自动׃n内存理Ҏ正好能够实现这一目的。您可以军_ SGA 的d,然后讄一个名UCؓ SGA_TARGET 的参敎ͼq个参数军_ SGA 的d。SGA 内部的各个池根据工作负载动态地q行配置。实现自动内存分配仅仅需?SGA_TARGET 参数的一个非零倹{?span class="Apple-converted-space"> 
  
  讄自动׃n内存理 
  让我们看看该Ҏ是如何工作的。首先,定 SGA 的d。您可以通过定现在分配了多内存来估计q个倹{?span class="Apple-converted-space"> 
  SQL> select sum(value)/1024/1024 from v$sga;
  
  SUM(VALUE)/1024/1024
  --------------------
         500
  
  此时 SGA 的当前d近gؓ 500MBQƈ且这个值将变ؓ SGA_TARGET 的倹{接下来Q执行语句: 
  alter system set sga_target = 500M scope=both;
  
  q种Ҏ不需要ؓ各个池设|不同|因而,您将需要在参数文g中它们的gؓ零或全部删除它们?span class="Apple-converted-space"> 
  shared_pool_size = 0
  large_pool_size = 0
  java_pool_size = 0
  db_cache_size = 0   
  
  再@环数据库Qɘq些值生效?span class="Apple-converted-space"> 
  
  q个人工q程q可以通过 Enterprise Manager 10g 实施。从数据库主中Q选择 "Administration" 选项卡,然后选择 "Memory Parameters"。对于h工配|的内存参数Q将昄标记?"Enable" 的按钮,以及所有h工配|的池的倹{单?"Enable" 按钮Q启用自动共享内存管理特性。企业管理器完成剩下的工作?span class="Apple-converted-space"> 
  
  在配|了自动内存分配之后Q您可以利用以下命o查它们的大小Q?span class="Apple-converted-space"> 
  SQL> select current_size from v$buffer_pool;
  
  CURRENT_SIZE
  ------------
     340
  
  SQL> select pool, sum(bytes)/1024/1024 Mbytes from v$sgastat group by pool;
  
  POOL       MBYTES
  ------------ ----------
  java pool       4
  large pool      4
  shared pool     148
  
  正如您所看到的,所有的池都?500MB 的ȝ标大中自动q行分配。(参见?1。)~冲高速缓存大是 340MBQJava 池是 4MBQ大型池?4MBQ共享池?148MB。它们合hȝ大小?(340+4+4+148=) 496MBQ近g 500MB 的目?SGA 的大相同?br style="padding-right: 0px; padding-left: 0px; padding-bottom: 0px; margin: 0px; padding-top: 0px; word-wrap: break-word" />   
 

  
?1Q池的初始分?/center>
  
  现在假定提供l?Oracle 的主机内存从 500MB 减少?300MBQ这意味着我们必须减少?SGA 的大。我们可以通过减小目标 SGA 大小来反映这U变化?span class="Apple-converted-space"> 
  
  alter system set sga_target = 300M scope=both;
  
  现在查看各个池,我们可以看到Q?span class="Apple-converted-space"> 
  SQL> select current_size from v$buffer_pool;
  
  CURRENT_SIZE
  ------------
     244
  
  SQL> select pool, sum(bytes)/1024/1024 Mbytes from v$sgastat group by pool;
  
  POOL       MBYTES
  ------------ ----------
  java pool       4
  large pool      4
  shared pool     44
  
  占用的d是 240+4+4+44 = 296MBQ接q于目标?300MB。注意如?2 所C,?SGA_TARGET 改变Ӟ如何自动重新分配池?br style="padding-right: 0px; padding-left: 0px; padding-bottom: 0px; margin: 0px; padding-top: 0px; word-wrap: break-word" />   
 

  
?2Q在?SGA 大小减少?300MB 之后重新分配?/center>
  
  q些池的大小是动态的。池根据工作负载扩展,以容U需求的增长Q或~小以容U_一个池的扩展。这U扩展或~小自动发生Q无需 DBA 的干预,q与本文开头的CZ不同。让我们暂时q回到那个场景,假定在初始分配后QRMAN 作业启动Q指C需要一个更大的大型池,大型池将?4MB 扩展?40MBQ以容纳需求。这个额外的 36MB 从数据库缓冲中划出Q数据库块缓冲将~小Q如?3 所C?br style="padding-right: 0px; padding-left: 0px; padding-bottom: 0px; margin: 0px; padding-top: 0px; word-wrap: break-word" />   
 

  
?3Q在对大型池的需求增长之后经q重新分配的?/center>
  
  池的大小变化Zpȝ上的工作负蝲Q因此不需要ؓ最坏的情况调整池的大小 ?它们根据需求的增长自动调整。此外,SGA 的d始l在?SGA_TARGET 指定的最大g内,因此不存在内存需求的增长比例pQ这导致分和交换Q的风险。您可以动态地?SGA_TARGET 增加至绝Ҏ大?q个l对最大值是通过调整参数 SGA_MAX_SIZE 指定的?span class="Apple-converted-space"> 
  
  哪些池不受媄响? 
  SGA 中的一些池不受动态大调整的影响Q但是必L式指定这些池。其中值得注意的是非标准块大小的缓冲池Q以?KEEP 池或 RECYCLE 池的非默认块大小。如果您的数据库有一个块大小?8KQ而您惌配置 2K?K?6K ?32K 块大的池,那么您必L动设|它们。它们的大小保持不变;它们不会根据负载羃或扩展。当使用多种大小的缓冲池、KEEP 池和 RECYCLE 池时Q您应当考虑q个因素。此外,日志~冲不受内存调整的媄??不管工作负蝲如何Q?/span>

]]>ORA-02095: 无法修改指定的初始化参数http://www.tkk7.com/gf7/archive/2009/06/20/283333.html?/dc:creator>?/author>Sat, 20 Jun 2009 02:44:00 GMThttp://www.tkk7.com/gf7/archive/2009/06/20/283333.htmlhttp://www.tkk7.com/gf7/comments/283333.htmlhttp://www.tkk7.com/gf7/archive/2009/06/20/283333.html#Feedback0http://www.tkk7.com/gf7/comments/commentRss/283333.htmlhttp://www.tkk7.com/gf7/services/trackbacks/283333.html有些参数不能动态修改,需要用ALTER SYSTEM SET parameter = value  SCOPE = SPFILEQ然后重新启动数据库才能生效?br />
而ALTER SYSTEM SET parameter = value 使用的默认SCOPE = BOTHQ包括同时修改spfile 和当前的讄?/span>


]]>
调整Oracle应用pȝ性能的原则和Ҏhttp://www.tkk7.com/gf7/archive/2009/06/20/283332.html?/dc:creator>?/author>Sat, 20 Jun 2009 02:38:00 GMThttp://www.tkk7.com/gf7/archive/2009/06/20/283332.htmlhttp://www.tkk7.com/gf7/comments/283332.htmlhttp://www.tkk7.com/gf7/archive/2009/06/20/283332.html#Feedback0http://www.tkk7.com/gf7/comments/commentRss/283332.htmlhttp://www.tkk7.com/gf7/services/trackbacks/283332.html

摘要Q?/strong>通过探讨和研IOracle服务器和Client/Server的特点和原理Q阐qC提高、调整Oracle应用pȝ性能的一些原则和Ҏ?/p>

关键词:OracleQ客?服务器;pȝ全程区;|络I/OQ回滚段?/p>

Oracle 数据库广泛应用在C会的各个领域,特别是在Client/Server模式的应用,但是应用开发者往往到整个pȝ的性能随着数据量的增大显著下降的问题,Z解决q个问题Q从以下几个斚wQ数据库服务器、网lI/O、应用程序等Ҏ个系l加以调_充分发挥Oracle的效能,提高整个pȝ的性能?/p>

1 调整数据库服务器的性能

Oracle数据库服务器是整个系l的核心Q它的性能高低直接影响整个pȝ的性能Qؓ了调整Oracle数据库服务器的性能Q主要从以下几个斚w考虑Q?/p>

1.1 调整操作pȝ以适合Oracle数据库服务器q行

Oracle数据库服务器很大E度上依赖于q行服务器的操作pȝQ如果操作系l不能提供最好性能Q那么无论如何调_Oracle数据库服务器也无法发挥其应有的性能?/p>

1.1.1 为Oracle数据库服务器规划pȝ资源

据已有计机可用资源, 规划分配lOracle服务器资源原则是Q尽可能使Oracle服务器用资源最大化,特别在Client/Server中尽量让服务器上所有资源都来运行Oracle服务?/p>

1.1.2 调整计算机系l中的内存配|?/p>

多数操作pȝ都用虚存来模拟计机上更大的内存Q它实际上是盘上的一定的盘I间。当实际的内存空间不能满_用Y件的要求Ӟ操作pȝ将用这部分的磁盘空间对内存中的信息q行面替换Q这引起大量的盘I/O操作Q整个服务器的性能下降。ؓ了避免过多地使用虚存Q应加大计算机的内存?/p>

1.1.3 为Oracle数据库服务器讄操作pȝq程优先U?/p>

不要在操作系l中调整Oracleq程的优先Q因为在Oracle数据库系l中Q所有的后台和前台数据库服务器进E执行的是同{重要的工作Q需要同{的优先U。所以在安装Ӟ让所有的数据库服务器q程都用缺省的优先U运行?/p>

1.2 调整内存分配

Oracle数据库服务器保留3个基本的内存高速缓存,分别对应3U不同类型的数据Q库高速缓存,字典高速缓存和~冲区高速缓存。库高速缓存和字典高速缓存一h成共享池Q共享池再加上缓冲区高速缓存便构成了系l全E区(SGA)。SGA是对数据库数据进行快速访问的一个系l全E区Q若SGA本n需要频J地q行释放、分配,则不能达到快速访问数据的目的Q因此应把SGA攑֜d中,不要攑֜虚拟内存中。内存的调整主要是指调整l成SGA的内存结构的大小来提高系l性能Q由于Oracle数据库服务器的内存结构需求与应用密切相关Q所以内存结构的调整应在盘I/O调整之前q行?/p>

1.2.1 库缓冲区的调?/p>

库缓冲区中包含私用和׃nSQL和PL/SQL区,通过比较库缓冲区的命中率军_它的大小。要调整库缓冲区Q必首先了解该库缓冲区的活动情况,库缓冲区的活动统计信息保留在动态性能表v$librarycache数据字典中,可通过查询该表来了解其zd情况Q以军_如何调整?/p>

Select sum(pins),sum(reloads) from v$librarycache;

Pins列给出SQL语句QPL/SQL块及被访问对象定义的L敎ͼReloads列给出SQL 和PL/SQL块的隐式分析或对象定义重装蝲时在库程序缓冲区中发生的错误。如果sum(pins)/sum(reloads) ?Q则库缓冲区的命中率合适;若sum(pins)/sum(reloads)>1, 则需调整初始化参?shared_pool_size来重新调整分配给׃n池的内存量?/p>

1.2.2 数据字典~冲区的调整

数据字典~冲区包含了有关数据库的l构、用戗实体信息。数据字典的命中率,对系l性能影响极大。数据字典缓冲区的用情况记录在动态性能表v$librarycache中,可通过查询该表来了解其zd情况Q以军_如何调整?/p>

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

Gets列是对相应项hơ数的统计;Getmisses 列是引v~冲区出错的数据的请求次数。对于频J访问的数据字典~冲区,sum(getmisses)/sum(gets)<10%?5%。若大于此百分数Q则应考虑增加数据字典~冲区的定wQ即需调整初始化参数shared_pool_size来重新调整分配给׃n池的内存量?/p>

1.2.3 ~冲区高速缓存的调整

用户q程所存取的所有数据都是经q缓冲区高速缓存来存取Q所以该部分的命中率Q对性能臛_重要。缓冲区高速缓存的使用情况记录在动态性能表v$sysstat中,可通过查询该表来了解其zd情况Q以军_如何调整?/p>

  Select name,value from v$sysstat where name in
            ('dbblock gets','consistent gets','physical reads');

  

dbblock gets和consistent gets的值是h数据~冲ZȝL数。physical reads的值是h数据时引起从盘中L件的ơ数。从~冲区高速缓存中ȝ可能性的高低UCؓ~冲区的命中率,计算公式Q?/p>

Hit Ratio=1-(physical reds/(dbblock gets+consistent gets))

如果Hit Ratio<60%?0%Q则应增大db_block_buffers的参数倹{db_block_buffers可以调整分配l缓冲区高速缓存的内存量,即db_block_buffers可设|分配缓冲区高速缓存的数据块的个数。缓冲区高速缓存的d节数=db_block_buffers的?db_block_size的倹{db_block_size 的DC数据块大小的字节数Q可查询 v$parameter 表:

  select name,value from v$parameter where name='db_block_size';

在修改了上述数据库的初始化参C后,必须先关闭数据库Q在重新启动数据库后才能使新的设|v作用?/p>

1.3 调整盘 I/O

盘的I/O速度Ҏ个系l性能有重要媄响。解军_盘I/O问题Q可显著提高性能。媄响磁盘I/O的性能的主要原因有盘竞争、I/Oơ数q多和数据块I间的分配管理?/p>

为Oracle数据库服务器创徏新文件时Q不论是表空间所用的数据文gq是数据事务d所用的日志文gQ都应仔l考虑数据库服务器上的可用盘资源。如果服务器上有多个盘Q则可将文g分散存储到各个可用磁盘上Q减对数据库的数据文g及事务日志文件的竞争Q从而有效地改善服务器的性能。对于不同的应用pȝ都有各自的数据集Q应当创见不同的表空间分别存储各自应用系l的数据Qƈ且尽可能的把表空间对应的数据文g存放在不同的盘上,q种从物理上把每个应用系l的表空间分散存攄ҎQ可以排除两个应用系l竞争磁盘的可能性。数据文件、事务日志文件分别存攑֜不同的磁盘上Q这样事务处理执行的盘讉K不妨对相应的事物日志登记的盘讉K。如果有多个盘可用Q将两个事物日志成员攑֜不同的磁盘驱动器上,可以消除日志文件可能生的盘竞争。应把一个应用的表数据和索引数据分散存放不同表空间上Qƈ且尽量把不同cd的表I间存放在不同磁盘上Q这样就消除了表数据和烦引数据的盘竞争?/p>

1.4 调整数据库服务器的回滚段

回滚D|一个存储区域,数据库用该存储区域存放曄׃个事务更新或删除的行的原始数据倹{如果用戯回滚一个事务所做的改变Q那么数据库׃回滚D中d改变前的数据q该事务媄响的行改变ؓ它们的原状态。回滚段控制着数据库处理事务的能力Q因而在数据库成功中L关键性的作用Q不数据库的其它部分设计得多好Q如果它设计得不合理Q将会严重媄响系l的性能。徏立和调整回滚D늚原则如下?/p>

1.4.1 分离回滚D?/p>

分离回滚D|指单独ؓ回滚D创Z个以上的表空_使回滚段与数据字典、用h据、烦引等分离开来。由于回滚段的写入与数据和烦引的写入是ƈ行进行的Q因此将它分d来可以减I/O争用。如果回滚段与数据不分离Q倘若要某个表I间脱机或撤消,那么在该表空间中的各个回滚段没有全部脱机之前Q不能将q个表空间脱机或撤消。而一旦该表空间不可用Q则该表I间中的所有回滚段也不能用,q将费所有分配的盘I间。所以,独立回滚D可使数据库理变得Ҏ。回滚段的经常性收~,使得表空间的自由块更Ҏ形成片。分d滚段可以减少数据库表I间的碎片生?/p>

1.4.2 创徏不同大小的回滚段?/p>

对于一些联Z物处理,他们一般是频繁地对量数据q行修改Q创多小的回滚段对之有利。每一个事物的入口只能限于一个回滚段Q回滚段应该充分大以容纳一个完整的事物处理Q因此对一些较大型事物Q需要较大型的回滚段。极个别脱机处理事物会生大量的回滚信息Q这旉要一个特大号的回滚段来处理。根据这些理论,在Oracle数据库服务器中针对上q?U事物处理创Zl:事物组、较大事物组、特大事物组{大不同的回滚D늾Qƈ且将之分散到3个不同的表空间上Q群内大相同,应能满该组事物处理的最大要求?/p>

1.4.3 创徏数量适当的回滚段

一般回滚段数量与ƈ发事物个数有养I以下l出׃q发事物个数而应建立回滚D늚参考数Q?/p>

q发事物QnQ   回滚D|
            n<16        4
            16 ≤ n<32     8
            n≥ 32      n/4

2 调整 Client/Server 模式下的|络 I/O

Client/Server环境中的应用处理是分布在客户应用E序和数据库服务E序之间的。在 Client/Server环境中Client与Server之间的网lI/O是整个系l性能提高的瓶颈,一个客户应用程序引L|络I/O少Q应用及整个pȝ的性能好。减网lI/O的最重要的一条原则:应用逻辑集中在数据库服务器中?/p>

2.1 使用Oracle数据库的完整U束?/strong>

当ؓ应用Ӟ应当Z些有Ҏ要求的数据加上适当的完整性约束,q样p实现由数据库本n而不是应用程序来U束数据W合一定的条g。数据库服务器端的完整约束的执行操作是在比SQL语句U别更低的系l机制上优化Q它与客L无关Q只在服务器中运行,不需在Client 端和Server端之间传递SQL语句Q有效地减轻|络I/O负担?/p>

2.2 使用数据库触发器

完整U束性只能实C些较单的数据U束条gQ对一些较复杂的事物处理规则就无能为力Q这时最好不要在应用E序中实施复杂的E序控制Q而是应当采用数据库触发器来实施复杂的事物规则。数据库触发器能实现由数据库本nQ而不是应用程序,来约束数据符合复杂的事物处理规则Qƈ且容易创建,便于理Q避免大量的|络I/O?/p>

例如Q将当前表A中成为历史的记录从A表中转储到历史表B中,表示为Lsbs?/p>

在应用程序中实现Q       用数据库触发器实玎ͼ
            Beign              Create trigger delete1
             Update A set lsbs='T';      After update of lsbs on A
             Insert into B          For each row
             Select * from A where lsbs='T'; Insert into B
             Delete A where lsbs='T';     select * from A where :new.lsbs='T';
            End;               Delete A where :new.lsbs='T';
                               End delete1;

在应用程序中实现Ӟ所有的SQL命oh传送的数据都要通过|络在Client端和Server端进行交换,而不像数据库触发器一PSQL本n在Server端,不需要通过|络传输数据。当q行操作的数据量相当大时Qƈ且多个用户同时操作时Q通过在应用程序中实现复杂的控Ӟ必将增大|络I/O的负P使整个系l的性能降低Q而用数据库触发器能完全避免这U情况发生?/p>

2.3 使用存储q程、存储函数和?/strong>

Oracle的存储过E和存储函数是命名的能完成一定功能ƈ且存储在Server端的PL/SQL的集合。包是一U把有关的过E和函数l织装成一个数据库E序单元的方法。它们相对于应用E序的过E、函数而言Q把SQL命o存储在Server端。用存储过E和存储函数Q应用程序不必再包含多个|络操作的SQL语句L行数据库服务器操作,而是单调用存储过E和存储函数Q在|络上传输的只是调用q程的名字和输出l果Q这样就可减大量的|络I/O?/p>

例如Q基表A、B的定义:name char(20)Qdetail char(10)QA?00万记录,应用E序从A中检索detail列符合给出条件的记录Qƈ之插入B?/p>

  
            Declare
            Cursor cursor1 is select*from A;poin cursor1%typeQ?
            con1 number(2);res1 char(4)='abcd';
            Begin Insert into B values(poin.name,poin.detail);end if;
            For poin in cursor1 loop   End loop;End loop;
            For con1 in 1..7 loop    Commit;
            If substr(poin.detail ,con1,4)=res1 then End;

  

如果在Developer/2000 From中按钮触发器直接用PL/SQL实现和把它改写ؓ一个Oracle存储q程Q然后在From中调用此q程实现比较Q后者性能显著提高?/p>

在考虑使用上述3U方法时Q首先考虑使用完整U束性。对于数据库触发器和存储q程Q如果需要所有访问数据库的程序自动实施一定规则或查,那么使用数据库触发器Q如果只需对少数的E序实施一定的规则或检查,则可创徏一个过E,让有关程序调用这个过E?/p>

3 应用E序的调?/strong>

3.1 SQL语句的优?/strong>

SQL语句的执行速度Q可以受很多因素的媄响而变化。但主要的媄响因素是Q驱动表、执行操作的先后序和烦引的q用。可以由很多不同的方法间接地改变q些因素Q以辑ֈ最优的执行速度。这里主要探讨当对多个表q行q接查询时应遵@的优化原则:

(1) 用于q接的子句的列应被烦引、在Where子句中应量利用索引Q而不是避开索引?/p>

(2) q接操作应从q回较少行上驱动?/p>

(3) 如果所q接的表A和BQA表长度远q大于B表,从较大的A表上驱动?/p>

(4) 如果Where子句中含有选择性条?Where No=20Q将最h选择性部分放在表辑ּ最后?/p>

(5) 如果只有一个表有烦引,另一表无索引Q无索引的表通常作ؓ驱动表。如A表的No列以被烦引,而B表的No 列没被烦引,则应当B表作为驱动表QA表作驱动表?/p>

(6) 若用于连接的列和Where子句中其他选择条g列均有烦引,则按各个索引Ҏ询的有效性和选择性分别定出别,l合表中具体数据构成情况Q从中选出优化路径Q一般需要考虑Q子句中哪些列可以用烦引、哪些烦引具有唯一性及被查询表行数目等?/p>

3.2 建立和用视图、烦?/strong>

利用视图可以基表中的列或行q行裁减、隐藏一部分数据Qƈ且能够将涉及到多个表的复杂查询以视图的方式给出,使应用程序开发简z快速。利用烦引可以提高查询性能Q减磁?I/OQ优化对数据表的查询Q加速SQL语句的执行。但M时候徏立烦引都能提高性能Q何时徏立烦引应当遵循以下原则:该表常用来在索引列上查询Q该表不常更新、插入、删除等操作Q查询出来的l果记录数应控制在原表的2%?%?/p>

3.3 使用 Oracle 的数l接?/strong>

当一个客户应用程序插入一行或用一个查询来向服务器h某行Ӟ不是发送具有单个行的网l包Q而是采用数组处理Q即把要插入的多个行或检索出的多个行~冲在数l中Q然后通过很少的几个包可在网上传送这些数l。例如,一个给定的Select语句q回2000行数据,每行q_大小?0个字节,数据包的大小?kBQ而数l大参?arraysize)讄?0 Q则需从服务器发?00个数据包到客h。如果简单地?arraysize)讄?000Q那么同L操作只需要传?20个数据包。这样就减少了网l的传输量,提高了所有应用的性能?/p>

4 ȝ

我们在开发应用程序时Q遵循上q的Ҏ和原则,对系l进行调_收到了o人满意的效果。但是应当指出,׃客户机、网l、服务器q?个相互依存的l成部分都必调整和同步才能产生最佳的性能Q因此还应根据系l的具体情况Q具体分析和调整?/p>

]]>
oracle下蝲地址http://www.tkk7.com/gf7/archive/2009/06/08/280713.html?/dc:creator>?/author>Mon, 08 Jun 2009 11:33:00 GMThttp://www.tkk7.com/gf7/archive/2009/06/08/280713.htmlhttp://www.tkk7.com/gf7/comments/280713.htmlhttp://www.tkk7.com/gf7/archive/2009/06/08/280713.html#Feedback0http://www.tkk7.com/gf7/comments/commentRss/280713.htmlhttp://www.tkk7.com/gf7/services/trackbacks/280713.htmlOracle Database 10g Release 2 (10.2.0.1.0)   Enterprise/Standard Edition for Microsoft Windows (32-bit)
http://download.oracle.com/otn/nt/oracle10g/10201/10201_database_win32.zip
http://download.oracle.com/otn/nt/oracle10g/10201/10201_client_win32.zip
http://download.oracle.com/otn/nt/oracle10g/10201/10201_clusterware_win32.zip
http://download.oracle.com/otn/nt/oracle10g/10201/10201_gateways_win32.zip

Oracle Database 10g Release 2 (10.2.0.1.0) Enterprise/Standard Edition for Microsoft Windows (x64)
http://download.oracle.com/otn/nt/oracle10g/10201/102010_win64_x64_database.zip
http://download.oracle.com/otn/nt/oracle10g/10201/102010_win64_x64_client.zip
http://download.oracle.com/otn/nt/oracle10g/10201/102010_win64_x64_clusterware.zip

Oracle Database 10g Release 2 (10.2.0.1.0) Enterprise/Standard Edition for Linux x86
http://download.oracle.com/otn/linux/oracle10g/10201/10201_database_linux32.zip
http://download.oracle.com/otn/linux/oracle10g/10201/10201_client_linux32.zip
http://download.oracle.com/otn/linux/oracle10g/10201/10201_gateways_linux32.zip

Oracle Database 10g Release 2 (10.2.0.1.0) Enterprise/Standard Edition for Linux x86-64
http://download.oracle.com/otn/linux/oracle10g/10201/10201_database_linux_x86_64.cpio.gz
http://download.oracle.com/otn/linux/oracle10g/10201/10201_client_linux_x86_64.cpio.gz
http://download.oracle.com/otn/linux/oracle10g/10201/10201_clusterware_linux_x86_64.cpio.gz
http://download.oracle.com/otn/linux/oracle10g/10201/10201_gateways_linux_x86_64.cpio.gz

Oracle Database 10g Release 2 (10.2.0.1.0) Enterprise/Standard Edition for AIX5L
http://download.oracle.com/otn/aix/oracle10g/10201/10gr2_aix5l64_database.cpio.gz
http://download.oracle.com/otn/aix/oracle10g/10201/10gr2_aix5l64_client.cpio.gz
http://download.oracle.com/otn/aix/oracle10g/10201/10gr2_aix5l64_cluster.cpio.gz
http://download.oracle.com/otn/aix/oracle10g/10201/10gr2_aix5l64_gateways.cpio.gz

Oracle Database 10g Release 2 (10.2.0.2) Enterprise/Standard Edition for Solaris Operating System (x86)
http://download.oracle.com/otn/solaris/oracle10g/10202/10202_database_solx86.zip
http://download.oracle.com/otn/solaris/oracle10g/10202/10202_client_solx86.zip
http://download.oracle.com/otn/solaris/oracle10g/10202/10202_clusterware_solx86.zip

Oracle Database 10g Release 2 (10.2.0.1.0) Enterprise/Standard Edition for Solaris Operating System (x86-64)
http://download.oracle.com/otn/solaris/oracle10g/10201/x8664/10201_database_solx86_64.zip
http://download.oracle.com/otn/solaris/oracle10g/10201/x8664/10201_client_solx86_64.zip
http://download.oracle.com/otn/solaris/oracle10g/10201/x8664/10201_clusterware_solx86_64.zip
---------------------------------------------------------------------------------------------------------

更多oracle10g数据库相关下载请参考下面的官方下蝲|址Q?a target="_blank" rel="external">http://www.oracle.com/technology/global/cn/software/products/database/index.html

ORACLE10gR2下蝲_oracle10G官方下蝲_Oracle10G Release2(10.2.0.1.0)下蝲_Oracle10g下蝲_oracle下蝲(Authour: 王大?Email: dashuaiwang@126.com 个hI间Q?a >http://wds.3u.cn)

ORACLE10G 补丁_ORACLE10g PATCH下蝲地址Q?/p>

oracle 10.2.0.2 patch:
ftp://updates.oracle.com/4547817/p4547817_10202_AIX64-5L.zip
ftp://updates.oracle.com/4547817/p4547817_10202_HP64.zip
ftp://updates.oracle.com/4547817/p4547817_10202_HPUX-IA64.zip
ftp://updates.oracle.com/4547817/p4547817_10202_LINUX.zip
ftp://updates.oracle.com/4547817/p4547817_10202_Linux-IA64.zip
ftp://updates.oracle.com/4547817/p4547817_10202_Linux-x86-64.zip
ftp://updates.oracle.com/4547817/p4547817_10202_MVS.zip
ftp://updates.oracle.com/4547817/p4547817_10202_SOLARIS.zip
ftp://updates.oracle.com/4547817/p4547817_10202_SOLARIS64.zip
ftp://updates.oracle.com/4547817/p4547817_10202_WINNT.zip
ftp://updates.oracle.com/4547817/p4547817_10202_WINNT64.zip

oracle 10.2.0.3 patch:
ftp://updates.oracle.com/5337014/p5337014_10203_WINNT.zip
ftp://updates.oracle.com/5337014/p5337014_10203_WINNT64.zip
ftp://updates.oracle.com/5337014/p5337014_10203_AIX5L.zip
ftp://updates.oracle.com/5337014/p5337014_10203_WINNT.zip
ftp://updates.oracle.com/5337014/p5337014_10203_WINNT.zip
ftp://updates.oracle.com/5337014/p5337014_10203_WINNT.zip

oracle 10.2.0.4 patch:
ftp://updates.oracle.com/6810189/p6810189_10204_AIX5L.zip
ftp://updates.oracle.com/6810189/p6810189_10204_LINUX.zip
ftp://updates.oracle.com/6810189/p6810189_10204_Linux-x86-64.zip
ftp://updates.oracle.com/6810189/p6810189_10204_Linux-x86.zip
ftp://updates.oracle.com/6810189/p6810189_10204_Win32.zip
ftp://updates.oracle.com/6810189/p6810189_10204_Win64.zip



Oracle9i

Oracle9i Database Release 2 Enterprise/Standard/Personal Edition for Windows NT/2000/XP

http://download.oracle.com/otn/nt/oracle9i/9201/92010NT_Disk1.zip
http://download.oracle.com/otn/nt/oracle9i/9201/92010NT_Disk2.zip
http://download.oracle.com/otn/nt/oracle9i/9201/92010NT_Disk3.zip

Oracle9i Database Release 2 Enterprise/Standard/Personal/Client Edition for Windows XP 2003/Windows Server 2003 (64-bit)

http://download.oracle.com/otn/nt/oracle9i/9202/92021Win64_Disk1.zip
http://download.oracle.com/otn/nt/oracle9i/9202/92021Win64_Disk2.zip

Oracle9i Database Release 2 Enterprise/Standard Edition for Intel Linux

http://download.oracle.com/otn/linux/oracle9i/9204/ship_9204_linux_disk1.cpio.gz
http://download.oracle.com/otn/linux/oracle9i/9204/ship_9204_linux_disk2.cpio.gz
http://download.oracle.com/otn/linux/oracle9i/9204/ship_9204_linux_disk3.cpio.gz

Oracle9i Database Release 2 (9.2.0.4) Enterprise/Standard Edition for Linux x86-64

http://download.oracle.com/otn/linux/oracle9i/9204/amd64_db_9204_Disk1.cpio.gz
http://download.oracle.com/otn/linux/oracle9i/9204/amd64_db_9204_Disk2.cpio.gz
http://download.oracle.com/otn/linux/oracle9i/9204/amd64_db_9204_Disk3.cpio.gz

Oracle9i Database Release 2 Enterprise/Standard Edition for AIX - Based 4.3.3 Systems (64-bit)

http://download.oracle.com/otn/aix/oracle9i/9201/server_9201_AIX64_Disk1.cpio.gz
http://download.oracle.com/otn/aix/oracle9i/9201/server_9201_AIX64_Disk2.cpio.gz
http://download.oracle.com/otn/aix/oracle9i/9201/server_9201_AIX64_Disk3.cpio.gz
http://download.oracle.com/otn/aix/oracle9i/9201/server_9201_AIX64_Disk4.cpio.gz

Oracle9i Database Release 2 Enterprise/Standard Edition for AIX- Based 5L Systems

http://download.oracle.com/otn/aix/oracle9i/9201/A99331-01.zip
http://download.oracle.com/otn/aix/oracle9i/9201/A99331-02.zip
http://download.oracle.com/otn/aix/oracle9i/9201/A99331-03.zip
http://download.oracle.com/otn/aix/oracle9i/9201/A99331-04.zip

Oracle9i Database Release 2 Enterprise/Standard Edition for Sun SPARC Solaris (32-bit)

http://download.oracle.com/otn/solaris/oracle9i/9201/92010Sol_Disk1.cpio.gz
http://download.oracle.com/otn/solaris/oracle9i/9201/92010Sol_Disk2.cpio.gz
http://download.oracle.com/otn/solaris/oracle9i/9201/92010Sol_Disk3.cpio.gz

Oracle9i Database Release 2 Enterprise/Standard Edition for Sun SPARC Solaris (64-bit)

http://download.oracle.com/otn/solaris/oracle9i64/9201/solaris64_9.2.0.1.0.Disk1.cpio.gz
http://download.oracle.com/otn/solaris/oracle9i64/9201/solaris64_9.2.0.1.0.Disk2.cpio.gz
http://download.oracle.com/otn/solaris/oracle9i64/9201/solaris64_9.2.0.1.0.Disk3.cpio.gz



]]>
oracle 9i 表空间误删除的恢复方?/title><link>http://www.tkk7.com/gf7/archive/2009/04/01/263288.html</link><dc:creator>?/dc:creator><author>?/author><pubDate>Wed, 01 Apr 2009 02:27:00 GMT</pubDate><guid>http://www.tkk7.com/gf7/archive/2009/04/01/263288.html</guid><wfw:comment>http://www.tkk7.com/gf7/comments/263288.html</wfw:comment><comments>http://www.tkk7.com/gf7/archive/2009/04/01/263288.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.tkk7.com/gf7/comments/commentRss/263288.html</wfw:commentRss><trackback:ping>http://www.tkk7.com/gf7/services/trackbacks/263288.html</trackback:ping><description><![CDATA[昨天老项目的客户来电话说pȝ有问题了Q过M看是数据库v不来了,看来一下日志?br /> Errors in file /opt/ora9/admin/xwoa/udump/xwoa_ora_17933.trc:<br /> ORA-01115: 从文?16 d块时出现 IO 错误 (?# 189544)<br /> ORA-27072: skgfdisp: I/O 错误<br /> Linux Error: 25: Inappropriate ioctl for device<br /> Additional information: 189543<br /> 靠,数据表空间文件被删除?br /> 好在数据库采用了归档模式?br /> 开始恢复:<br />  1、SQL>shutdown immediate<br /> 备䆾全部数据文g和控制文件和log以防恢复q程中出现问题?br /> 2、SQL> startup mount;<br /> 3、SQL> alter database create datafile '/opt/ora9/oradata/xwoa/CHAOYANGJP.dbf'    as '/opt/ora9/oradata/xwoa/CHAOYANGJP.dbf'  reuse;<br /> 创徏误删除的数据文g?br /> 4、recover datafile '/opt/ora9/oradata/xwoa/CHAOYANGJP.dbf';<br /> <p>ORA-00279: 更改 57900012 (?09/19/2007 10:27:05 生成) 对于U程 1 是必需?br /> ORA-00289: : /opt/ora9/oradata/xwoa/archive/1_863.dbf<br /> ORA-00280: 更改 57900012 对于U程 1 是按序列 # 863 q行?/p> <p><br /> 指定日志: {<RET>=suggested | filename | AUTO | CANCEL} </p> 输入QAUTO回R<br /> 开始恢复过E,q个旉比较ѝ?br /> <br /> 5、SQL> select d.file#,d.name,d.status,h.status from v$datafile d,v$datafile_header<br />  h where d.file#=h.file# ;<br /> 查看一下数据文件是否online?br /> 如果没有onlineQ?br /> 6、SQL> ALTER DATABASE DATAFILE '/opt/ora9/oradata/xwoa/CHAOYANGJP.dbf' ONLINE;<br /> okQ完成恢复过E? <img src ="http://www.tkk7.com/gf7/aggbug/263288.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.tkk7.com/gf7/" target="_blank">?/a> 2009-04-01 10:27 <a href="http://www.tkk7.com/gf7/archive/2009/04/01/263288.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>如何收羃数据文g的大?http://www.tkk7.com/gf7/archive/2007/08/10/135803.html?/dc:creator>?/author>Fri, 10 Aug 2007 05:56:00 GMThttp://www.tkk7.com/gf7/archive/2007/08/10/135803.htmlhttp://www.tkk7.com/gf7/comments/135803.htmlhttp://www.tkk7.com/gf7/archive/2007/08/10/135803.html#Feedback0http://www.tkk7.com/gf7/comments/commentRss/135803.htmlhttp://www.tkk7.com/gf7/services/trackbacks/135803.html
下面q个实验用于描述如何通过move tablespace来完成resize datafile?
  
HWM的概念就不在此阐qC?
  
试环境为Oracle10g for LinuxQ其它版本的一栗?
  
我们先创Z个表I间Q分别ؓt_tbs和t_tbs1Q分别有一个数据文Ӟ大小都是5M
再创Z个test_user用户Q给q个用户上述两个表空间的无限限额Qƈ且设|默认表I间是t_tbs?
[zhangleyi@as zhangleyi]$ sqlplus / as sysdba
  
SQL*Plus: Release 10.1.0.2.0 - Production on Tue Apr 13 21:01:25 2004
  
Copyright (c) 1982, 2004, Oracle.  All rights reserved.
  
Connected to:
Oracle Database 10g Enterprise Edition Release 10.1.0.2.0 - Production
With the Partitioning, OLAP and Data Mining options
  
SYS at orcl10>alter user test_user default tablespace t_tbs;
  
User altered.
  
SYS at orcl10>alter user test_user quota unlimited on t_tbs;
  
User altered.
  
SYS at orcl10>alter user test_user quota unlimited on t_tbs1;
  
User altered
  
用test_userdQ创
TEST_USER at orcl10>create table t_obj as select * from dba_objects where rownum&lt;10000;
  
Table created.
  
TEST_USER at orcl10>insert into t_obj select * from t_obj;
  
9999 rows created.
  
TEST_USER at orcl10>/
  
19998 rows created.
  
TEST_USER at orcl10>/
insert into t_obj select * from t_obj
*
ERROR at line 1:
ORA-01653: unable to extend table TEST_USER.T_OBJ by 128 in tablespace T_TBS
  
TEST_USER at orcl10>commit;
  
Commit complete.
  
TEST_USER at orcl10>select sum(blocks) "Total Blocks",sum(bytes) "Total Size" from dba_extents where owner='TEST_USER' and segment_name='T_OBJ';
  
Total Blocks Total Size
------------ ----------
          512    4194304
  
好,上面我们创徏了一个表Qƈ且插入了很多数据Q通过dba_extents视图我们可以看到d用的block熟和d的大?
  
下面我们用delete删除全部数据Qƈ且插入新?999条数?
TEST_USER at orcl10>delete from t_obj;
  
39996 rows deleted.
  
TEST_USER at orcl10>insert into t_obj select * from dba_objects where rownum&lt;10000;
  
9999 rows created.
  
TEST_USER at orcl10>commit;
  
Commit complete.
  
TEST_USER at orcl10>select sum(blocks) "Total Blocks",sum(bytes) "Total Size" from dba_extents
   2  where owner='TEST_USER' and segment_name='T_OBJ';
  
Total Blocks Total Size
------------ ----------
          512    4194304
  
再次查看dba_extents视图Q发现占用的I间q没有减?
  
我们试resizeq个数据文gQfile#?的是t_tbs表空间下面的数据文g
SYS at orcl10>alter database datafile 6 resize 4M;
alter database datafile 6 resize 4M
*
ERROR at line 1:
ORA-03297: file contains used data beyond requested RESIZE value
  
SYS at orcl10>alter database datafile 6 resize 4500000;
  
Database altered.
  
我们发现想resize?M不可以,但是resize?500000可以了Q因Z面查看出来的Total Size?194304Q这个值大?M而小?500000?
  
然后我们moveq张表到t_tbs1表空_q个表空间下面的数据文gfile#?
  
EST_USER at orcl10>alter table t_obj move tablespace t_tbs1;
  
Table altered.
  
TEST_USER at orcl10>select sum(blocks) "Total Blocks",sum(bytes) "Total Size" from dba_extents
   2  where owner='TEST_USER' and segment_name='T_OBJ';
  
Total Blocks Total Size
------------ ----------
          128    1048576
  
我们查dba_extents视图Q发现Total Size已经变化了,此时已经可以说明move表是会重新进行block的整理的Q同时也重置了HWM?
  
下面我们resizeq个数据文g?
SYS at orcl10>alter database datafile 8 resize 2M;
  
Database altered.
  
SYS at orcl10>host
[zhangleyi@as ORCL10]$ cd /oracle/oradata/ORCL10/datafile/
[zhangleyi@as datafile]$ ls -l
ȝ?1419076
-rw-r-----    1 zhangleyi dba      20979712  4?13 21:17 cattbs01.dbf
-rw-r-----    1 zhangleyi dba      157294592  4?13 21:17 o1_mf_example_02p0gpoj_.dbf
-rw-r-----    1 zhangleyi dba      419438592  4?13 21:20 o1_mf_sysaux_02p09kny_.dbf
-rw-r-----    1 zhangleyi dba      555753472  4?13 21:17 o1_mf_system_02p09kno_.dbf
-rw-r-----    1 zhangleyi dba      20979712  4?13 21:02 o1_mf_temp_02p0fzsd_.tmp
-rw-r-----    1 zhangleyi dba      62922752  4?13 21:20 o1_mf_undotbs1_02p09kog_.dbf
-rw-r-----    1 zhangleyi dba      209723392  4?13 21:17 o1_mf_users_02p09kqv_.dbf
-rw-r-----    1 zhangleyi dba       2105344  4?13 21:21 TEST01.DBFQ这是file#8Q?
-rw-r-----    1 zhangleyi dba       4513792  4?13 21:20 test.dbfQ这是file#6Q?
  
可以看到我们的目的已l达C?
  
在真实应用中Q我们可以将一个表I间中的所有objectQ全部moveC个新的表I间中,然后drop掉原来的表空_再从盘上删除原来表I间中的数据文g?
  
至于如何得知HWMQ我们可以通过analyze之后的数据字典得刎ͼ那么如果不进行analyze的话Q我们也可以q行下面q个脚本?
q个脚本可以用于查一个object占有的dblock数和处于HWM之上的block敎ͼq当然也q道了HWM是在什么位|?
  
DECLARE
v_total_blocks NUMBER;
v_total_bytes NUMBER;
v_unused_blocks NUMBER;
v_unused_bytes NUMBER;
v_last_used_extent_file_id NUMBER;
v_last_used_extent_block_id NUMBER;
v_last_used_block NUMBER;
BEGIN
dbms_space.unused_space('SCOTT','BIGEMP','TABLE',v_total_blocks,v_total_bytes,v_unused_blocks,v_unused_bytes,v_last_used_extent_file_id,v_last_used_extent_block_id,v_last_used_block);
dbms_output.put_line('Total Blocks: '||TO_CHAR(v_total_blocks));
dbms_output.put_line('Blocks above HWM: '||TO_CHAR(v_unused_blocks));
END;
/
  
Total Blocks: 256
Blocks above HWM: 0
  
PL/SQL procedure successfully completed
  
Executed in 0.01 seconds


]]>
修改oracle 150 的最大连接数http://www.tkk7.com/gf7/archive/2007/03/13/103556.html?/dc:creator>?/author>Tue, 13 Mar 2007 07:50:00 GMThttp://www.tkk7.com/gf7/archive/2007/03/13/103556.htmlhttp://www.tkk7.com/gf7/comments/103556.htmlhttp://www.tkk7.com/gf7/archive/2007/03/13/103556.html#Feedback2http://www.tkk7.com/gf7/comments/commentRss/103556.htmlhttp://www.tkk7.com/gf7/services/trackbacks/103556.html
c:\sqlplus /nolog
SQL>conn / as sysdba

SQL> show parameter processes;

NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
aq_tm_processes integer 1
db_writer_processes integer 1
job_queue_processes integer 10
log_archive_max_processes integer 1
processes integer 150

SQL> alter system set processes=300 scope = spfile;

pȝ已更攏V?br />
SQL> show parameter processes;

NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
aq_tm_processes integer 1
db_writer_processes integer 1
job_queue_processes integer 10
log_archive_max_processes integer 1
processes integer 150

SQL> create pfile from spfile;

文g已创建?br />

重启数据库,OKQ?img src ="http://www.tkk7.com/gf7/aggbug/103556.html" width = "1" height = "1" />

]]>
itpub上的ORACLE之常用FAQ V1.0http://www.tkk7.com/gf7/archive/2006/08/01/61179.html?/dc:creator>?/author>Tue, 01 Aug 2006 05:18:00 GMThttp://www.tkk7.com/gf7/archive/2006/08/01/61179.htmlhttp://www.tkk7.com/gf7/comments/61179.htmlhttp://www.tkk7.com/gf7/archive/2006/08/01/61179.html#Feedback0http://www.tkk7.com/gf7/comments/commentRss/61179.htmlhttp://www.tkk7.com/gf7/services/trackbacks/61179.html阅读全文

]]>
ORACLE中的物化视图http://www.tkk7.com/gf7/archive/2006/07/09/57321.html?/dc:creator>?/author>Sun, 09 Jul 2006 02:56:00 GMThttp://www.tkk7.com/gf7/archive/2006/07/09/57321.htmlhttp://www.tkk7.com/gf7/comments/57321.htmlhttp://www.tkk7.com/gf7/archive/2006/07/09/57321.html#Feedback0http://www.tkk7.com/gf7/comments/commentRss/57321.htmlhttp://www.tkk7.com/gf7/services/trackbacks/57321.html       物化视图是包括一个查询结果的数据库对像,它是q程数据的的本地副本Q或者用来生成基于数据表求和的汇总表。物化视囑֭储基于远E表的数据,也可以称为快照?/span>

       物化视图可以查询表,视图和其它的物化视图?/span>

       通常情况下,物化视图被称Z表(在复制期_或明l表Q在数据仓库中)?/span>

       对于复制Q物化视囑օ怽在本地维护远E数据的副本 , q些副本是只ȝ。如果你想修Ҏ地副本,必须用高U复制的功能。当你想从一个表或视图中抽取数据Ӟ你可以用从物化视图中抽取?/span>

       对于数据仓库Q创建的物化视图通常情况下是聚合视图Q单一表聚合视囑֒q接视图?/span>

本文我们会看到怎样创徏物化视图q且讨论它的h选项?/span>

       在复制环境下Q创建的物化视图通常情况下主键, rowid, 和子查询视图?/span>

1. 主键物化视图Q?/span>

              下面的语法在q程数据库表 emp 上创Z键物化视?/span>

				
						
								
										SQL> CREATE MATERIALIZED VIEW mv_emp_pk
								
						
				
				
						
								
										REFRESH FAST START WITH SYSDATE 
								
						
				
				
						
								
										
												    NEXT  SYSDATE + 1/48
								
						
				
				
						
								
										WITH PRIMARY KEY 
								
						
				
				
						
								
										
												    AS SELECT * FROM emp@remote_db;
								
						
				
				
						
								
										Materialized view created.
										
   
注意Q当?/span> FAST 选项创徏物化视图Q必d建基于主表的视图日志 , 如下 :
      SQL> CREATE MATERIALIZED VIEW LOG ON emp;Materialized view log created.

2. Rowid 物化视图

              下面的语法在q程数据库表 emp 上创?/span> Rowid 物化视图

				
						
								
										SQL> CREATE MATERIALIZED VIEW mv_emp_rowid 
								
						
				
				
						
								
										REFRESH WITH ROWID 
								
						
				
				
						
								
										
												     AS SELECT * FROM emp@remote_db; 
								
						
				
				
						
								
										Materialized view log created.
								
						
				
		

3. 子查询物化视?/span>

              下面的语法在q程数据库表 emp 上创建基?/span> emp ?/span> dept 表的子查询物化视?/span>

				
						
								
										
												
												SQL> CREATE MATERIALIZED VIEW  mv_empdept
								
						
				
				
						
								
										AS SELECT * FROM emp@remote_db e
								
						
				
				
						
								
										
												     WHERE EXISTS
								
						
				
				
						
								
										
												   (SELECT * FROM dept@remote_db d
								
						
				
				
						
								        WHERE e.dept_no = d.dept_no)
				
				
						
								
										Materialized view log created.
										
										
								
						
				
				
						
								
										       
								
						
				
				
						REFRESH 
				
				
						子句
				
				
						
								
								
						
				
		
				
						
								
										[refresh [fast|complete|force]
								
						
				
				
						
								
										
												         [on demand | commit]
								
						
				
				
						
								
										
												         [start with date] [next date]
								
						
				
				
						
								
										
												         [with {primary key|rowid}]]
								
						
				
		

       Refresh 选项说明 :

a.       oracle 用刷新方法在物化视图中刷新数?/span> .

b.       是基于主键还是基?/span> rowid 的物化视?/span>

c.        物化视图的刷新时间和间隔h旉

 

Refresh Ҏ -FAST 子句

       增量h用物化视图日志(参照上面所qͼ来发送主表已l修改的数据行到物化视图?/span> . 如果指定 REFRESH FAST 子句Q那么应该对主表创徏物化视图日志

				
						
								
										SQL> CREATE MATERIALIZED VIEW LOG ON emp;
								
						
				
				
						Materialized view log created.
				
		

       对于增量h选项Q如果在子查询中存在分析函数Q则物化视图不v作用?/span>

 

Refresh Ҏ -COMPLETE 子句

       完全h重新生成整个视图Q如果请求完全刷斎ͼ oracle 会完?/span>        完全h即增量h可用?/span>

 

Refresh Method ?FORCE 子句

       当指?/span> FORCE 子句Q如果增量刷新可?/span> Oracle 完成增量刷斎ͼ否则完成完全刷?/span> , 如果不指定刷新方?/span> (FAST, COMPLETE, or FORCE),Force 选项是默认选项

 

主键?/span> ROWD 子句

       WITH PRIMARY KEY 选项生成主键物化视图 , 也就是说物化视图是基于主表的主键Q而不?/span> ROWID( 对应?/span> ROWID 子句 ). PRIMARY KEY 是默认选项 , Z生成 PRIMARY KEY 子句Q应该在主表上定义主键,否则应该用基?/span> ROWID 的物化视?/span> .

       主键物化视图允许识别物化视图主表而不影响物化视图增量h的可用性?/span>

       Rowid 物化视图只有一个单一的主表,不能包括下面M一?/span> :

n          Distinct 或者聚合函?/span> .

n          Group by Q子查询Q连接和 SET 操作

 

h旉       

       START WITH 子句通知数据库完成从主表到本地表W一ơ复制的旉 , 应该及时估计下一ơ运行的旉?/span> , NEXT 子句说明了刷新的间隔旉 .

				
						
								
										SQL> CREATE MATERIALIZED VIEW mv_emp_pk
								
						
				
				
						
								
										
												            REFRESH FAST 
								
						
				
				
						
								
										
												            START WITH SYSDATE 
								
						
				
				
						
								
										
												            NEXT  SYSDATE + 2
								
						
				
				
						
								
										
												            WITH PRIMARY KEY 
								
						
				
				
						
								
										
												              AS SELECT * FROM emp@remote_db;
                 Materialized view created.

在上面的例子中,物化视图数据的第一个副本在创徏时生成,以后每两天刷C?/span> .

 

ȝ

物化视图提供了可伸羃的基于主键或 ROWID 的视?/span> , 指定了刷新方法和自动h的时间?/span>

查询本数据库用户模式下有多少物化视图
select * from user_mviews

查询增量复制是否成功
select* from user_jobsQ查看其中的failure?br />
物化视图立即h
exec dbms_snapshot.refresh('"CUSTCARE"."MV_Name"','C')Q?br />
使用复制q需要注意:
     相应主表的log大小Q如log占有的空间太大,会媄响性能


]]>
Oracle性能调优实践中的几点心得http://www.tkk7.com/gf7/archive/2005/10/28/17153.html?/dc:creator>?/author>Fri, 28 Oct 2005 03:53:00 GMThttp://www.tkk7.com/gf7/archive/2005/10/28/17153.htmlhttp://www.tkk7.com/gf7/comments/17153.htmlhttp://www.tkk7.com/gf7/archive/2005/10/28/17153.html#Feedback0http://www.tkk7.com/gf7/comments/commentRss/17153.htmlhttp://www.tkk7.com/gf7/services/trackbacks/17153.html
一、通过操作pȝ的一些工h查系l的状态,比如CPU、内存、交换、磁盘的利用率,Ҏl验或与pȝ正常时的状态相比对Q有时系l表面上看v来看I闲q也可能不是一个正常的状态,因ؓcpu可能正等待IO的完成。除此之外我们还应观注那些占用系l资?cpu、内?的进E?

   1、如何检查操作系l是否存在IO的问题?使用的工hsar,q是一个比较通用的工兗?

   Rp1#Sar -u 2 10

   x?U检察一ơ,共执?0ơ,当然q些都由你决定了?

   CZq回Q?

   HP-UX hpn2 B.11.00 U 9000/800 08/05/03

   18:26:32 %usr %sys %wio %idle

   18:26:34 80 9 12 0

   18:26:36 78 11 11 0

   18:26:38 78 9 13 1

   18:26:40 81 10 9 1

   18:26:42 75 10 14 0

   18:26:44 76 8 15 0

   18:26:46 80 9 10 1

   18:26:48 78 11 11 0

   18:26:50 79 10 10 0

   18:26:52 81 10 9 0

   Average 79 10 11 0

   其中?usr指的是用戯E用的cpu资源的百分比Q?sys指的是系l资源用cpu资源的百分比Q?wio指的是等待io完成的百分比Q这是值得我们观注的一,%idle即空闲的癑ֈ比。如果wio列的值很大,如在35%以上Q说明你的系l的IO存在瓉Q你的CPUp了很大的旉ȝ待IO的完成。Idle很小说明pȝCPU很忙。像我的q个CZQ可以看到wioq_gؓ11说明io没什么特别的问题Q而我的idlegؓӞ说明我的cpu已经满负药行了?

   当你的系l存在IO的问题,可以从以下几个方面解?

   Q联pȝ应的操作pȝ的技术支持对q方面进行优化,比如hp-ux在划定卷l时的条带化{方面?

   Q查找Oracle中不合理的sql语句Q对其进行优?

   Q对Oracle中访问量频繁的表除合理徏索引外,再就是把q些表分表空间存放以免访问上产生热点Q再有就是对表合理分区?

   2、关注一下内存?

   常用的工具便是vmstatQ对于hp-unix来说可以用glance,Aix来说可以用topas,当你发现vmstat中pi列非Ӟmemory中的free列的值很,glance,topas中内存的利用率多?0%Ӟq时说明你的内存斚w应该调节一下了Q方法大体有以下几项?

   Q划lOracle使用的内存不要超q系l内存的1/2,一般保在系l内存的40%为益?

   为系l增加内?

   Q如果你的连接特别多Q可以用MTS的方?

   Q打全补丁,防止内存漏洞?

   3、如何找到点用系用资源特别大的Oracle的session及其执行的语句?

   Hp-unix可以用glance,top

   IBM AIX可以用topas

   此外可以使用ps的命令?

   通过q些E序我们可以扑ֈ点用pȝ资源特别大的q些q程的进E号Q我们就可以通过以下的sql语句发现q个pid正在执行哪个sqlQ这个sql最好在pl/sql developer,toad{Y件中执行, ?lt;>中的spid换成你的spid可以了?

   SELECT a.username,

   a.machine,

   a.program,

   a.sid,

   a.serial#,

   a.status,

   c.piece,

   c.sql_text

   FROM v$session a,

   v$process b,

   v$sqltext c

   WHERE b.spid=

   AND b.addr=a.paddr

   AND a.sql_address=c.address(+)

   ORDER BY c.piece

   我们可以把得到的这个sql分析一下,看一下它的执行计划是否走索引Q对其优化避免全表扫描,以减IO{待Q从而加快语句的执行速度?

   提示Q我在做优化sqlӞl常到使用in的语句,q时我们一定要用exists把它l换掉,因ؓOracle在处理In时是按Or的方式做的,即使用了烦引也会很慢?

   比如Q?

   SELECT col1,col2,col3 FROM table1 a

   WHERE a.col1 not in (SELECT col1 FROM table2)

   可以换成Q?

   SELECT col1,col2,col3 FROM table1 a

   WHERE not exists

   (SELECT 'x' FROM table2 b

   WHERE a.col1=b.col1)

   4、另一个有用的脚本Q查扑։十条性能差的sql.

   SELECT * FROM

   (
   SELECT PARSING_USER_ID

     EXECUTIONS,

     SORTS,

     COMMAND_TYPE,

     DISK_READS,

     sql_text

   FROM v$sqlarea

   ORDER BY disk_reads DESC

   )

   WHERE ROWNUM<10 ;
   二、迅速发现Oracle Server的性能问题的成因,我们可以求助于v$session_waitq个视图Q看pȝ的这些session在等什么,使用了多的IO。以下是我提供的参考脚本:

   脚本说明Q查看占io较大的正在运行的session

   SELECT se.sid,

     se.serial#,

     pr.SPID,

     se.username,

     se.status,

     se.terminal,

     se.program,

     se.MODULE,

     se.sql_address,

     st.event,

     st.p1text,

     si.physical_reads,

     si.block_changes

   FROM v$session se,

     v$session_wait st,

     v$sess_io si,

     v$process pr

   WHERE st.sid=se.sid

     AND st.sid=si.sid

     AND se.PADDR=pr.ADDR

     AND se.sid>6

     AND st.wait_time=0

     AND st.event NOT LIKE '%SQL%'

   ORDER BY physical_reads DESC
   Ҏ索出的结果的几点说明Q?

   1、我是按每个正在{待的session已经发生的物理读排的序,因ؓ它与实际的IO相关?

   2、你可以看一下这些等待的q程都在忙什么,语句是否合理Q?

   Select sql_address from v$session where sid= ;

   Select * from v$sqltext where address= ;

   执行以上两个语句便可以得到这个session的语句?

   你也以用alter system kill session 'sid,serial#';把这个session杀掉?


   3、应观注一下eventq列Q这是我们调优的关键一列,下面对常出现的event做以要的说明Q?
a、buffer busy waitsQfree buffer waitsq两个参数所标识是dbwr是否够用的问题,与IO很大相关的,当v$session_wait中的free buffer wait的条目很或没有的时侯,说明你的pȝ的dbwrq程军_够用Q不用调_free buffer wait的条目很多,你的pȝ感觉h一定很慢,q时说明你的dbwr已经不够用了Q它产生的wio已经成ؓ你的数据库性能的瓶颈,q时的解军_法如下:

   a.1增加写进E,同时要调整db_block_lru_latches参数

   CZQ修Ҏd如下两个参数
   db_writer_processes=4

   db_block_lru_latches=8

   a?开异步IOQIBMq方面简单得多,hp则麻烦一些,可以与Hp工程师联pR?

   b、db file sequential readQ指的是序读,卛_表扫描,q也是我们应该尽量减的部分Q解x法就是用烦引、sql调优Q同时可以增大db_file_multiblock_read_countq个参数?

   c、db file scattered read,q个参数指的是通过索引来读取,同样可以通过增加db_file_multiblock_read_countq个参数来提高性能?

   d、latch free,与栓相关的了Q需要专门调节?

   e、其他参数可以不特别观注?

   l篇Q匆忙之中写下了q篇文章Q希望能抛砖引玉Q能Z的Oracle调优实践带来帮助?



]]>
ORACLE性能调优原则http://www.tkk7.com/gf7/archive/2005/10/28/17151.html?/dc:creator>?/author>Fri, 28 Oct 2005 03:50:00 GMThttp://www.tkk7.com/gf7/archive/2005/10/28/17151.htmlhttp://www.tkk7.com/gf7/comments/17151.htmlhttp://www.tkk7.com/gf7/archive/2005/10/28/17151.html#Feedback2http://www.tkk7.com/gf7/comments/commentRss/17151.htmlhttp://www.tkk7.com/gf7/services/trackbacks/17151.htmlM事情都有它的源头Q要解决问题Q也得从源头开始,影响ORACLE性能的源头非常多Q主要包括如下方面:
 数据库的g配置QCPU、内存、网l条?/P>

1.         CPUQ在M机器中CPU的数据处理能力往往是衡量计机性能的一个标志,q且ORACLE是一个提供ƈ行能力的数据库系l,在CPU斚w的要求就更高了,如果q行队列数目过了CPU处理的数目,性能׃下降Q我们要解决的问题就是要适当增加CPU的数量了Q当然我们还可以需要许多资源的q程KILL掉;

2.         内存Q衡量机器性能的另外一个指标就是内存的多少了,在ORACLE中内存和我们在徏数据库中的交换区q行数据的交换,L据时Q磁盘I/O必须{待物理I/O操作完成Q在出现ORACLE的内存瓶颈时Q我们第一个要考虑的是增加内存Q由于I/O的响应时间是影响ORACLE性能的主要参敎ͼ我将在这斚wq行详细的讲?/P>

3.         |络条gQNET*SQL负责数据在网l上的来往Q大量的SQL会o|络速度变慢。比?0M的网卡和100的网卡就对NET*SQL有非常明昄影响Q还有交换机、集U器{等|络讑֤的性能对网l的影响很明显,在Q何网l中不要试图?个集U器来将|段互联?/P>

Ø         OS参数的设|?/P>

下表l出了OS的参数设|及说明QDBA可以Ҏ实际需要对q些参数q行讄

内核参数?/P>

说明

bufpages

对bufferI间不按静态分配,采用动态分配,使bufpages值随nbuf一起对bufferI间q行动态分配?/P>

create_fastlinks

对HFS文gpȝ允许快速符号链接,

dbc_max_pct

加大最大动态bufferI间所占物理内存的癑ֈ比,以满_用系l的d命中率的需要?/P>

dbc_min_pct

讄最动态bufferI间所占物理内存的癑ֈ?/P>

desfree

提高开始交换操作的最低空闲内存下限,保障pȝ的稳定性,防止出现不可预见的系l崩溃(CrashQ?/P>

fs_async

允许q行盘异步操作Q提高CPU和磁盘的利用?/P>

lotsfree

提高pȝ解除换页操作的空闲内存的上限|保证应用E序有够的可用内存I间?/P>

maxdsiz

针对pȝ数据量大的特点,加大最大数据段的大,保证应用的需要。(32位)

maxdsiz_64bit

maximum process data segment size for 64_bit

Maxssiz

加大最大堆栈段的大。(32_bitQ?/P>

maxssiz_64bit

加大最大堆栈段的大(64_bitQ?/P>

Maxtsiz

提高最大代码段大小Q满_用要?/P>

maxtsiz_64bit

原D大,应调?/P>

Minfree

提高停止交换操作的自由内存的上限

Shmem

允许q行内存׃nQ以提高内存的利用率?/P>

Shmmax

讄最大共享内存段的大,完全满目前的需要?/P>

Timeslice

׃pȝ的瓶颈主要反映在盘I/O上,因此 降低旉片的大小Q一斚w可避免因盘I/O不畅造成CPU的等待,从而提高了CPU的综合利用率。另一斚w减少了进E的d量?/P>

unlockable_mem

提高了不可锁内存的大,使可用于换页和交换的内存I间扩大,用以满pȝ对内存管理的要求?/P>


用户SQL质量

以上讲的都是g斚w的东西,在条件有限的条g下,我们可以调整应用E序的SQL质量Q?/P>

1.         不要q行全表扫描QFull Table ScanQ:全表扫描D大量的I/O

2.         量建好和用好索引Q徏索引也是有讲I的Q在建烦引时Q也不是索引多好Q当一个表的烦引达?个以上时QORACLE的性能可能q是改善不了Q因为OLTPpȝ每表过5个烦引即会降低性能Q而且在一个sql 中, Oracle 从不能用超q?5个烦引;当我们用到GROUP BY和ORDER BY?ORACLE׃自动Ҏ据进行排?而ORACLE在INIT.ORA中决定了sort_area_size区的大小,当排序不能在我们l定的排序区完成?ORACLE׃在磁盘中q行排序,也就是我们讲的时表I间中排? q多的磁盘排序将会o free buffer waits 的值变?而这个区间ƈ不只是用于排序的,对于开发h员我提出如下忠告:

1)、select,update,delete 语句中的子查询应当有规律地查扑ְ?0%的表?如果一个语句查扄行数过总行数的20%,它将不能通过使用索引获得性能上的提高.   

2Q、烦引可能生碎?因ؓ记录从表中删除时,相应也从表的索引中删?表释攄I间可以再用,而烦引释攄I间却不能再?频繁q行删除操作的被索引的表,应当阶段性地重徏索引,以避免在索引中造成I间片,影响性能.在许可的条g?也可以阶D|地truncate?truncate命o删除表中所有记?也删除烦引碎?

3Q、在使用索引时一定要按烦引对应字D늚序q行引用?/P>

4Q、用Q?Q比用NOT IN更有效率?/P>

Ø         降低ORACLE的竞争:

先讲几个ORACLE的几个参敎ͼq几个参数关pdORACLE的竞争:

1Q、freelists ?freelist l:他们负责ORACLE的处理表和烦引的I间理Q?/P>

2Q、pctfree ?pctusedQ该参数军_了freelists ?freelist l的行ؓQpctfree 和pctused 参数的唯一目的是Z控制块如何在 freelists 中进?/P>

讄好pctfree ?pctused对块在freelists的移走和d很重要?/P>

Ø         其他参数的设|?/P>

1Q、包括SGA区(pȝ全局区)Q系l全局区(SGAQ是一个分配给Oracle 的包含一?Oracle 实例的数据库的控制信息内存段?/P>

 主要包括数据库高速缓?the database buffer cache)Q?/P>

 重演日志~存Qthe redo log bufferQ,

 ׃n池(the shared poolQ,

 数据字典~存Qthe data dictionary cacheQ以及其它各斚w的信?/P>

2Q、db_block_buffersQ数据高速缓冲区Q访问过的数据都攑֜q一片内存区域,该参数越大,Oracle在内存中扑ֈ相同数据的可能性就大Q也卛_快了查询速度?/P>

3Q、share_pool_size QSQL׃n~冲池)Q该参数是库高速缓存和数据字典的高速缓存?/P>

4Q、Log_buffer Q重演日志缓冲区Q?/P>

5Q、sort_area_sizeQ排序区Q?/P>

6Q、processes Q同时连接的q程敎ͼ

7Q、db_block_size Q数据库块大)QOracle默认块ؓ2KBQ太了Q因为如果我们有一?KB的数据,?KB块的数据库要?ơ盘Q才能读完,?KB块的数据库只?ơ就d了,大大减少了I/O操作。数据库安装完成后,׃能再改变db_block_size的gQ只能重新徏立数据库q且建库Ӟ要选择手工安装数据库?/P>

8Q、open_links Q同时打开的链接数Q?/P>

9Q、dml_locks

10Q、open_cursors Q打开光标敎ͼ

11Q、dbwr_io_slaves Q后台写q程敎ͼ



]]>
oracle 9 linux 自启动方?/title><link>http://www.tkk7.com/gf7/archive/2005/09/08/12446.html</link><dc:creator>?/dc:creator><author>?/author><pubDate>Thu, 08 Sep 2005 09:03:00 GMT</pubDate><guid>http://www.tkk7.com/gf7/archive/2005/09/08/12446.html</guid><wfw:comment>http://www.tkk7.com/gf7/comments/12446.html</wfw:comment><comments>http://www.tkk7.com/gf7/archive/2005/09/08/12446.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.tkk7.com/gf7/comments/commentRss/12446.html</wfw:commentRss><trackback:ping>http://www.tkk7.com/gf7/services/trackbacks/12446.html</trackback:ping><description><![CDATA[<P>1\创徏文gora9 ,注意里面的\?.<BR><BR>#!/bin/bash<BR>#<BR># (c) <A href="mailto:denis.klaric@in2.hr">denis.klaric@in2.hr</A><BR>#<BR># name: /etc/rc.d/init.d/ora9<BR># des cription: starts and stops oracle 9i database, TNS listener<BR># http server, and fixes kernel parameters for oracle</P> <P>. /etc/rc.d/init.d/functions</P> <P>prog=oracle</P> <P>start() {<BR>        echo -n $"Starting $prog: "<BR>        #daemon "startOracle"<BR>        su - oracle -c "lsnrctl start"<BR>        su - oracle -c "/usr/oracle/product/9.2.0.4/bin/dbstart"<BR>}</P> <P>stop() {<BR> echo -n $"Stopping $prog: "<BR>        #stopOracle<BR>        su - oracle -c "lsnrctl stop"<BR>        su - oracle -c "/usr/oracle/product/9.2.0.4/bin/dbshut"<BR>}<BR>case $1 in<BR>start)<BR> start<BR> ;;<BR>stop)<BR> stop<BR> ;;<BR>*)<BR>echo "Usage: ora9 [start|stop]"<BR>;;</P> <P>esac<BR><BR><BR>2\拯?/etc/init.d/ ?BR><BR>3\ q行如下命o<BR>ln -s /etc/init.d/ora9 /etc/rc.d/rc2.d/S99ora9<BR>ln -s /etc/init.d/ora9 /etc/rc.d/rc3.d/S99ora9<BR>ln -s /etc/init.d/ora9 /etc/rc.d/rc4.d/S99ora9<BR>ln -s /etc/init.d/ora9 /etc/rc.d/rc5.d/S99ora9<BR>ln -s /etc/init.d/ora9 /etc/rc.d/rc0.d/S99ora9<BR>ln -s /etc/init.d/ora9 /etc/rc.d/rc0.d/K99ora9<BR>ln -s /etc/init.d/ora9 /etc/rc.d/rc6.d/K99ora9<BR><BR>4\修改/etc/oratab 把sid|ؓY<BR><BR>5?BR>sqlplus /nolog<BR>conn sys/pwd as sysdba<BR>create pfile from spfile<BR>6\reboot</P><img src ="http://www.tkk7.com/gf7/aggbug/12446.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.tkk7.com/gf7/" target="_blank">?/a> 2005-09-08 17:03 <a href="http://www.tkk7.com/gf7/archive/2005/09/08/12446.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Oracle 9.2.0.4 ?Redhat AS3 上安装全q程http://www.tkk7.com/gf7/archive/2005/09/08/12444.html?/dc:creator>?/author>Thu, 08 Sep 2005 08:58:00 GMThttp://www.tkk7.com/gf7/archive/2005/09/08/12444.htmlhttp://www.tkk7.com/gf7/comments/12444.htmlhttp://www.tkk7.com/gf7/archive/2005/09/08/12444.html#Feedback0http://www.tkk7.com/gf7/comments/commentRss/12444.htmlhttp://www.tkk7.com/gf7/services/trackbacks/12444.htmlOracle 9.2.0.4 ?Redhat AS3 上安装全q程

折腾?天?ȝ是搞定了 同一版本的Oracle 装在不同版本Redhat?装法都不?真是ȝ 难怪微软称怸?他的产品毕竟好装又好用上|看了别人的装配l历若干 但即使是同一版本的Redhat 每h的配|又都不一?装法也有差别 Linux的可配置性太高这点不象windows 每个人的windows都差不多 微Y没留太多的配|余地给用户 好了说正l的

基本参数  
操作pȝ: Redhat Enterprise Linux as3  默认配置外加所有开发Y件包 内存臛_512?swap分区讄为内存的二倍。不要采用DHCP讄L名和IP地址Q而是“手工设|”。否则会在安装oracle的时候出现如下错误:Thrown when the IP address of a host cannot be determined 

Oracle: 9.2.0.4  Q注意不?.2.0.1 q个版本安装后要打补丁升U到 9.2.0.4Q?/P>

所需的Y?BR>Oracle: 9.2.0.4 安装文g
ship_9204_linux_disk1.cpio.gz
ship_9204_linux_disk2.cpio.gz
ship_9204_linux_disk3.cpio.gz

从网上下载升U补丁包, 
所有的补丁说明如下Q ?
p3006854_9204_LINUX.zip 在运?runInstaller 之前?
p2617419_210_GENERIC.zip 打其他补丁所需要的工具. 
p3119415_9204_LINUX.zip 在升U到9.2.0.4.0之后? 
p3238244_9204_LINUX.zip 用来修agent服务不能启动的错?/P>

安装需要在2个帐户下q行 分别?root ?oracle帐户 理员帐戯责基设施创徏 oracle帐户则负责Oracle软g的安?帐户切换可用 su
每步安装操作一定要看清楚在那个帐户q行  注意我下面的帐户提示

现在开?/P>

1Q先以rootd  在root帐户下进行下面操?/P>

首先准备安装需要的软g包和补丁?先看安装所需要的软g包是否都装了
a  察开发Y件包 用下面的命o
rpm -q gcc cpp compat-libstdc++ glibc-devel glibc-headers glibc-kernheaders binutils

b  察安装依赖Y件包 查看pȝ中是否安有以下几个Y件包
compat-libstdc++-7.3-2.96.122 
compat-gcc-c++-7.3-2.96.122 
compat-libstdc++-devel-7.3-2.96.122 
compat-db-4.0.14-5 
compat-gcc-7.3-2.96.122 
setarch-1.3-1.i386.rpm
tcl-8.3.5-92.i386.rpm
nss_db-compat-2.2-20.i386.rpm 

如果q没?它们都在W?和第3张盘?把它们都装上 保险的做法是把他们都拷到你当前目录下用下面的命o
装过的它会自动蟩q?BR>rpm -ivh \
compat-db-4.0.14-5.i386.rpm \
compat-gcc-7.3-2.96.122.i386.rpm \
compat-gcc-c++-7.3-2.96.122.i386.rpm \
compat-libstdc++-7.3-2.96.122.i386.rpm \
compat-libstdc++-devel-7.3-2.96.122.i386.rpm \
openmotif21-2.1.30-8.i386.rpm \
setarch-1.3-1.i386.rpm \
tcl-8.3.5-92.i386.rpm\
nss_db-compat-2.2-20.i386.rpm 

注意Q在装Redhat时一定要选上 gnome开发Y件包 否则来配置 Oracle http是会出错 没装的话现在装上q来的及

2Q还是在root帐户?准备安装q程中需要的用户和用L  对就是那个oracle帐户
# groupadd oinstall 
# groupadd dba 
# useradd -g oinstall -G dba oracle 
# passwd oracle 

3Q还是在root帐户?准备文g目录Q?
# mkdir -p /usr/oracle/product/9.2 
# mkdir /var/opt/oracle 
# chown oracle.dba /var/opt/oracle 
# chown -R oracle.dba /usr/oracle 
# chmod 777 /var/opt/oracle

3Q还是在root帐户?讄内核参数Q调节信L及共享内存: 
# echo 250 32000 100 128 > /proc/sys/kernel/sem 
# echo 1073741824 > /proc/sys/kernel/shmmax 
# echo 4096 > /proc/sys/kernel/shmmni 
# echo 2097152 > /proc/sys/kernel/shmall 
# echo 65536 > /proc/sys/fs/file-max 
# echo 1024 65000 > /proc/sys/net/ipv4/ip_local_port_range 
 
当然Z一开机系l就能自动帮你设好这些参敎ͼ也可改动 /etc/sysctl.conf q个文gQ加入以下的语句Q?
kernel.shmmax = 1073741824 
kernel.shmmni = 4096       
kernel.shmall = 2097152 
kernel.sem = 250 32000 100 128 
fs.file-max = 65536 
net.ipv4.ip_local_port_range = 1024 65000 
保存

讄完成后用命o more /etc/sysctl.conf |grep kernel.s ?
ShmmaxQ?最大共享内?GB 物理内存如果的话可以设|成 536870912
ShmmniQ?最共享内?4096KBQ?/P>

4Q还是在root帐户?讄oracleҎ件的要求Q?
~辑文gQ?etc/security/limits.conf 加入以下语句Q?
oracle    soft    nofile    65536 
oracle    hard    nofile   65536 
oracle    soft    nproc    16384 
oracle    hard    nproc    16384 
保存

 

现在退出root帐户 以oracle帐户登陆
4Q在oracle帐户?设该|帐L?BR>打开.bash.profile文gQ将如下内容加入Q?
 
#oracle 9i 
export ORACLE_BASE=/usr/oracle 
export ORACLE_HOME=/usr/oracle/product/9.2 
export PATH=$ORACLE_HOME/bin:$ORACLE_HOME/Apache/Apache/bin:$PATH 
export ORACLE_OWNER=oracle 
export ORACLE_SID=db01 
export ORACLE_TERM=vt100 
export LD_ASSUME_KERNEL=2.4.1 
export THREADS_FLAG=native 
export LD_LIBRARY_PATH=/usr/oracle/product/9.2/lib:$LD_LIBRARY_PATH 
export PATH=/opt/ora9/product/9.2/bin:$PATH 

# change this NLS settings to suit your country: 
# example: 
# german_germany.we8iso8859p15, american_america.we8iso8859p2 etc. 

export LANG=en_US 

保存后退出。?
然后。退出登录,再次q入Q这时候oracle的环境就已经生效了?/P>

4Q{到root帐户?Q可?su  rootQ?BR>随便建立个安装目录把oracle安装文g和补丁都拯?BR>解压oracle安装文g
zcat ship_9204_linux_disk1.cpio.gz | cpio -idmv
zcat ship_9204_linux_disk2.cpio.gz | cpio -idmv
zcat ship_9204_linux_disk3.cpio.gz | cpio -idmv
解压完后看见Disk1,Disk2,Disk3q?个目?/P>

打安装前补丁 p3006854_9204_LINUX.zip 用下面的命o
# unzip p3006854_9204_LINUX.zip 
Archive: p3006854_9204_LINUX.zip 
creating: 3006854/ 
inflating: 3006854/rhel3_pre_install.sh 
inflating: 3006854/README.txt 
... 
# cd 3006854 
# sh rhel3_pre_install.sh 
退出root帐户

5Q回到oracle帐户?BR>q到Disk1目录q行
./runInstaller 
启动安装界面

- Welcome Screen:       Click Next
- Inventory Location:   Click Next
- Unix Group Name:      Use "oinstall" and click Next
                         会提C?/tmp/orainstRoot.sh, q行它然后l?BR>- File Locations:       Use default values
- Available Products:   Select "Oracle9i Database 9.2.0.4"
- Installation Types:   选择安装cd是“通用”除非你有特别要?如数据仓?或不惌产生默认数据?BR>- 输入全局数据库名Q   ?我一般设为和下面SID一?BR>- 数据文g的存放位|?    我采用的是默认位|,点“Next”;
出现安装lg的选择l果Q这时点“Install”,开始安装,复制文gQ进度条在一点一点的增加Q当安装qlink完后Q会提示q行root.sh q行它然后l?BR>出现配置工具界面Q默认数据库正确配置完毕后会自动产生2个数据库理员帐?SYS ?SYSTEM 分别讄密码然后l箋
agent服务不能配置成功Q忽略不用管Q在下面修复。DBCAQNETCAQHTTP都正配|完毕哦。下面开始修复错误?/P>

6Q{到root帐户?Q可?su  rootQ?BR>先加入下?个环境变?BR>#export ORACLE_BASE=/usr/oracle 
#export ORACLE_HOME=/usr/oracle/product/9.2

先解压补丁工?p2617419_210_GENERIC.zip q是打其他补丁所需要的工具opatch.
# unzip p2617419_210_GENERIC.zip 
Archive: p2617419_210_GENERIC.zip 
creating: OPatch/ 
creating: OPatch/docs/ 
inflating: Opatch/docs/FAQ 
...... 
inflating: README.txt  
# pwd 
解压所在目录?
# export PATH=$PATH:解压所在目?OPatch:/sbin

安装p3119415_9204_LINUX.zip 补丁
# unzip p3119415_9204_LINUX.zip 
Archive: p3119415_9204_LINUX.zip 
creating: 3119415/ 
...... 
inflating: 3119415/README.txt 
# cd 3119415 
# opatch apply 

安装p3238244_9204_LINUX.zip补丁
unzip p3238244_9204_LINUX.zip
# cd 3238244
...
# opatch apply

补丁修复完成Q需要relinked一?mk文g?BR>回到oracle帐户?BR>$ cd $ORACLE_HOME/network/lib
$ make -f ins_oemagent.mk install
现在在运行agentctl startQ看是不是可以成功运行agent服务了啊Q可以用stop、status来停止此服务或者检查服务的状?/P>

好了全部的安装就成功了. 
贺?恶梦l束了?

要配|数据库?BR>$dbca

要启动企业管理器
$oemapp console
看看能不能连上刚才创建的数据?/P>

注意Q下ơ从新开机后企业理器中打开数据库报ORA-12541:TNS:no listener错误
q是因ؓ监听服务QlistenerQ第一ơ是安装E序Z启动?以后你得自己启动 用下面的命o
$lsnrctl start



]]>
վ֩ģ壺 þþƷ޾Ʒ2020| һѹۿƵwww| 뾫Ʒþþþ| AVר벻| ѸƵ| һ߲ͨ| ޹Ƭ߹ۿ| videos| youjizz| ޾ƷִִˬAƬ| պ༤ѧ| ޾Һվ| ޾Ʒ9999þþþ| ؼëƬAëƬ100Ѳ| ɫһվ| AëƬվѿ| ҹ˾ѿƬ| ¸Ļ | ޹˾Ʒһ| պþþþþ| þþƷAVþþ| ޳a޳wwwţţ| ϼ߿| þþþþëƬѿ| ҹþþƷ| ֱѹۿ| Ƶһ| պϵ| ޹ƷԲӰ| vavaó| ޾ƷŮ2020þ| þþþùɫAVѹۿ| 91ѹԲ2021| Ƶһ| Ļ| ޾ƷӰ| Ʒ޳A߹ۿ| Ļ| 2021þþƷѹۿ| ޵һվ߹ۿ| avר߲|