﻿<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/"><channel><title>C++博客-天空之城-随笔分类-数据库</title><link>http://www.cppblog.com/linhong34/category/1915.html</link><description>  new,think,program,happy to live</description><language>zh-cn</language><lastBuildDate>Tue, 20 May 2008 05:44:28 GMT</lastBuildDate><pubDate>Tue, 20 May 2008 05:44:28 GMT</pubDate><ttl>60</ttl><item><title>oracle日志分析工具LogMiner使用(实战)</title><link>http://www.cppblog.com/linhong34/archive/2007/06/06/25651.html</link><dc:creator>太极虎~宏</dc:creator><author>太极虎~宏</author><pubDate>Wed, 06 Jun 2007 06:07:00 GMT</pubDate><guid>http://www.cppblog.com/linhong34/archive/2007/06/06/25651.html</guid><wfw:comment>http://www.cppblog.com/linhong34/comments/25651.html</wfw:comment><comments>http://www.cppblog.com/linhong34/archive/2007/06/06/25651.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/linhong34/comments/commentRss/25651.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/linhong34/services/trackbacks/25651.html</trackback:ping><description><![CDATA[<p>要安装LogMiner工具，必须首先要运行下面这样两个脚本，这两个脚本必须均以SYS用户身份运行。其中第一个脚本用来创建DBMS_LOGMNR包，该包用来分析日志文件。第二个脚本用来创建DBMS_LOGMNR_D包，该包用来创建数据字典文件。</p>
<p>1..$ORACLE_HOME/rdbms/admin/dbmslm.sql 2. $ORACLE_HOME/rdbms/admin/dbmslmd.sql.</p>
<p>SQL&gt; @d:\oracle\product\10.2.0\db_2\RDBMS\ADMIN\dbmslm.sql</p>
<p>程序包已创建。</p>
<p>授权成功。</p>
<p>SQL&gt; @d:\oracle\product\10.2.0\db_2\RDBMS\ADMIN\dbmslmd.sql</p>
<p>程序包已创建。</p>
<p>&nbsp;</p>
<p>使用LogMiner工具</p>
<p>&nbsp;</p>
<p>1、创建数据字典文件（data-dictionary）</p>
<p>数据字典文件是一个文本文件，使用包DBMS_LOGMNR_D来创建。如果我们要分析的数据库中的表有变化，影响到库的数据字典也发生变化，这时就需要重新创建该字典文件。另外一种情况是在分析另外一个数据库文件的重作日志时，也必须要重新生成一遍被分析数据库的数据字典文件。</p>
<p>在ORACLE8I的时候，首先在init.ora初始化参数文件中，指定数据字典文件的位置，也就是添加一个参数UTL_FILE_DIR，该参数值为服务器中放置数据字典文件的目录。如： </p>
<p>UTL_FILE_DIR = (e:\Oracle\logs)&nbsp; </p>
<p>ORACLE9I后，推荐使用SPFILE启动，可以动态调整参数；</p>
<p>SQL&gt; show parameter spfile</p>
<p>NAME&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; TYPE&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; VALUE&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </p>
<p>------------------------------------ ----------- ------------------------------ </p>
<p>spfile&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; string&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; D:\ORACLE\PRODUCT\10.2.0\DB_2\ </p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; DATABASE\SPFILESGTEST2.ORA&nbsp;&nbsp;&nbsp;&nbsp; </p>
<p>SQL&gt; alter system set utl_file_dir='d:\oracle\logs' scope=spfile;</p>
<p>系统已更改。</p>
<p>SQL&gt; startup force</p>
<p>ORACLE 例程已经启动。</p>
<p>&nbsp;</p>
<p>Total System Global Area&nbsp; 289406976 bytes&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </p>
<p>Fixed Size&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 1248600 bytes&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </p>
<p>Variable Size&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 96469672 bytes&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </p>
<p>Database Buffers&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 188743680 bytes&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </p>
<p>Redo Buffers&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 2945024 bytes&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </p>
<p>数据库装载完毕。</p>
<p>数据库已经打开。</p>
<p>SQL&gt; show parameter utl_file_dir</p>
<p>&nbsp;</p>
<p>NAME&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; TYPE&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; VALUE&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </p>
<p>------------------------------------ ----------- ------------------------------ </p>
<p>utl_file_dir&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; string&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; d:\oracle\logs&nbsp;&nbsp; </p>
<p>&nbsp;</p>
<p>然后创建数据字典文件</p>
<p>SQL&gt; @d:\dbms_logmnr_d.build.txt</p>
<p>&nbsp;</p>
<p>PL/SQL 过程已成功完成。</p>
<p>&nbsp;</p>
<p>脚本dbms_logmnr_d.build.txt</p>
<p>BEGIN</p>
<p>dbms_logmnr_d.build(</p>
<p>dictionary_filename =&gt; 'logminer_dict.dat',</p>
<p>dictionary_location =&gt; 'd:\oracle\logs');</p>
<p>END;</p>
<p>/</p>
<p><br>2、创建要分析的日志文件列表</p>
<p>&nbsp;&nbsp;&nbsp; Oracle的重作日志分为两种，在线（online）和离线（offline）归档日志文件，我这里主要分析归档日志，在线日志原理一样。</p>
<p>&nbsp;&nbsp;&nbsp; A.创建列表<br>SQL&gt;execute dbms_logmnr.add_logfile(options =&gt;dbms_logmnr.new,logfilename =&gt;'D:\oracle\product\10.2.0\oradata\oracle9i\REDO01.LOG');</p>
<p><br>B.添加另外的日志文件到列表<br>SQL&gt;execute dbms_logmnr.add_logfile(options =&gt;dbms_logmnr.addfile,logfilename=&gt;'D:\oracle\product\10.2.0\oradata\oracle9i\REDO02.LOG');</p>
<p>SQL&gt; execute dbms_logmnr.add_logfile(options =&gt;dbms_logmnr.addfile,logfilename=&gt;'D:\oracle\product\10.2.0\oradata\oracle9i\REDO03.LOG');<br>删除<br>SQL&gt; execute dbms_logmnr.add_logfile(options =&gt;dbms_logmnr.removefile,logfilenam</p>
<p>e =&gt;'D:\oracle\product\10.2.0\oradata\oracle9i\REDO03.LOG');</p>
<p>&nbsp;8.启动LogMiner进行分析</p>
<p>BEGIN</p>
<p>dbms_logmnr.start_logmnr(</p>
<p>dictfilename =&gt; 'd:\oracle\logs\logminer_dict.dat');</p>
<p>END;</p>
<p>/</p>
<p>&nbsp;<br>4、观察分析结果（v$logmnr_contents）</p>
<p>到现在为止，我们已经分析得到了重作日志文件中的内容。动态性能视图v$logmnr_contents包含LogMiner分析得到的所有的信息。 </p>
<p>SELECT sql_redo FROM v$logmnr_contents;&nbsp; </p>
<br><br><br>网上这种东西很多,但好多都会报错,着是经过我实际操作过的. 
<img src ="http://www.cppblog.com/linhong34/aggbug/25651.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/linhong34/" target="_blank">太极虎~宏</a> 2007-06-06 14:07 <a href="http://www.cppblog.com/linhong34/archive/2007/06/06/25651.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>索引组织表</title><link>http://www.cppblog.com/linhong34/archive/2006/06/08/8278.html</link><dc:creator>太极虎~宏</dc:creator><author>太极虎~宏</author><pubDate>Wed, 07 Jun 2006 16:42:00 GMT</pubDate><guid>http://www.cppblog.com/linhong34/archive/2006/06/08/8278.html</guid><wfw:comment>http://www.cppblog.com/linhong34/comments/8278.html</wfw:comment><comments>http://www.cppblog.com/linhong34/archive/2006/06/08/8278.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/linhong34/comments/commentRss/8278.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/linhong34/services/trackbacks/8278.html</trackback:ping><description><![CDATA[索引组织表的数据按主键排序手段被存储在B-树索引中，除了存储主键列值外还存储非键列的值。普通索引只存储索引列，而索引组织表则存储表的所有列的值。<br />索引组织表一般适应于静态表，且查询多以主键列。当表的大部分列当作主键列时，且表相对静态，比较适合创建索引组织表！（8i以上）<br />索引组织表的创建：<br />CREATE TABLE docindex(<br />token char(20),<br />doc_id NUMBER,<br />token_frequency NUMBER,<br />token_offsets VARCHAR2(512),<br />CONSTRAINT pk_docindex PRIMARY KEY (token, doc_id))<br />ORGANIZATION INDEX TABLESPACE ind_tbs;<br />必须给索引结构表指定主键。 <img src ="http://www.cppblog.com/linhong34/aggbug/8278.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/linhong34/" target="_blank">太极虎~宏</a> 2006-06-08 00:42 <a href="http://www.cppblog.com/linhong34/archive/2006/06/08/8278.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Oracle 的位图索引</title><link>http://www.cppblog.com/linhong34/archive/2006/06/07/8230.html</link><dc:creator>太极虎~宏</dc:creator><author>太极虎~宏</author><pubDate>Tue, 06 Jun 2006 16:34:00 GMT</pubDate><guid>http://www.cppblog.com/linhong34/archive/2006/06/07/8230.html</guid><wfw:comment>http://www.cppblog.com/linhong34/comments/8230.html</wfw:comment><comments>http://www.cppblog.com/linhong34/archive/2006/06/07/8230.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/linhong34/comments/commentRss/8230.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/linhong34/services/trackbacks/8230.html</trackback:ping><description><![CDATA[
		<table cellspacing="0" cellpadding="0" width="98%" align="center" border="0">
				<tbody>
						<tr>
								<td bgcolor="#e8e8e8" height="30">
										<div align="center">
												<font color="#ff0000" size="4">
														<strong>Oracle 的位图索引</strong>
												</font>
										</div>
								</td>
						</tr>
						<tr>
								<td>
										<!--内容开始-->
										<h3>
												<p>
														<font color="#008080" size="3">         </font>
														<span class="Code">
																<p>
																		<font color="#008080" size="3"> Oracle的索引主要包含两类：BTree和位图索引。默认情况下大多使用Btree索引，该索引就是通常所见 唯一索引、聚簇索引等等，Btree用在OLTP，加快查询速度。位图索引是Oracle的比较引人注目的地方，其主要用在OLAP（联机数据分析）方面，也就是数据仓库方面用到，目的是在加快查询速度是，节省存储空间。通常情况下，索引都要耗费比较大的存储空间，位图采用了压缩技术实现磁盘空间缩减。Btree用在高基数（即列的数据相异度大），位图用在低基数列。位图索引的基本原理是在索引中使用位图而不是列值。通常在事实表和维表的键之间有很低的集的势（cardinality），使用位图索引，存储更为有效，与B*Tree索引比较起来，只需要更少的存储空间，这样每次读取可以读到更多的记录，而且与B*Tree索引相比,位图索引将比较,连接和聚集都变成了位算术运算,大大减少了运行时间，从而得到性能上的极大的提升。</font>
																</p>
																<p>
																		<font color="#008080" size="3">在Oracle中如何合理的使用位图索引？以下的几个事项应该考虑。 <br />  <br />           *  如果要使用位图索引，初始化参数STAR_TRANSFORMATION_ENABLED应该设置为 <br />              TRUE. <br />           *   优化模式应该是CBO。对于数据仓库的环境中，总是应该考虑使用CBO（COST-BASED   <br />             OPTIMIZER）。 <br />           *   位图索引应该建立在每一个事实表的外键列上。(这只是一个一般的规则.) <br />  <br />      此外，对于数据表中的cardinality如何客观的确定也是一个问题，一万条数据中只包含3个值的集和算是低的了，那么一亿条记录中包含3万条记录算不算低的呢？对于这样的情况，建议几行一下数据的模拟测试，一般来说，在数据仓库环境中，位图索引的性能要好于B*Tree索引。还要注意位图索引不是为OLTP数据库设计的，不应该在OLTP数据库中大量的使用它，尤其是对那些有更新操作的表 。 </font>
																</p>
														</span>
												</p>
												<p>
												</p>
										</h3>
								</td>
						</tr>
				</tbody>
		</table>
<img src ="http://www.cppblog.com/linhong34/aggbug/8230.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/linhong34/" target="_blank">太极虎~宏</a> 2006-06-07 00:34 <a href="http://www.cppblog.com/linhong34/archive/2006/06/07/8230.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>