??xml version="1.0" encoding="utf-8" standalone="yes"?>亚洲电影在线播放,美女主播一区,一级日韩一区在线观看http://m.shnenglu.com/tbwshc/category/19592.htmltbwzh-cnMon, 23 Jul 2012 04:26:30 GMTMon, 23 Jul 2012 04:26:30 GMT60Oracle容灾Ҏ的选择 http://m.shnenglu.com/tbwshc/archive/2012/07/22/184604.htmltbwshctbwshcSun, 22 Jul 2012 05:58:00 GMThttp://m.shnenglu.com/tbwshc/archive/2012/07/22/184604.html---- 容灾首先是一个概念,要认识到Z么做容灾Q才能做好容灾。世界上没有卖后悔药的,当灾N临了Q如果没有行之有效的数据保护、数据恢复的容灾措施Q带来不可预估的损失是无法避免的。类似电信行业、金融行业,证券行业也是如此Q动辄涉及数以百亿计的资金、涉及庞大的客户量,在系l数据的准确、业务的q箋、关键业务的不中断等斚w更是不容出现M的差错?/span>
 
----目前Q业界具有容灑֊能的常用解决Ҏ主要包括以下几类Q磁盘阵列复制技术,主要׃些磁盘阵列厂商提供,?/span>EMC SRDF?/span>IBM PPRC ?/span>HP BusinessCopy?/span>HDS TrueCopy{;存储卷复制技术,tb׃些卷理?/span>件厂商提供,?/span>VERITAS VVRQ数据库复制技术,由数据库厂商以及一些第三方厂商提供Q如DSG RealSyncQ?/span>Quest SharePlex{;应用层复制技术,由各pȝ的应用厂商自己提供?/span>
 
----盘阵列复制技术主要适用于数据中心的v量数据复Ӟ此技术用户必需采用支持该功能的盘阵列型号Q而这些阵列大都ؓ高端阵列Q投资非常昂cƈ且,׃政府行业用户的带宽有限,而磁盘阵列复制技术对带宽的要求又相对很高Q动辄需要上GB的带宽。此外,采用盘阵列复制技术,其目标端无法提供实时数据查询Q由于目标端数据库在复制q程中不能被打开Q难于实C易与查询的分,同时也造成大量投资费。因此,盘阵列复制技术无法满x些行业集中交易系l的容灾需求,使得q些用户难以选择此种解决Ҏ?/span>
 
----存储卷复制技术主要适用于工作组U的数据复制Q它?/span>CPU资源占用高。同L于目标端数据无法提供实时数据查询和对带宽的要求高Q得证券等行业用户也难以选择?/span>
 
----而应用层复制技术只适合那些在应用中提供了该技术的应用Q由于它的非标准化、开发和l护工作量大Q得其应用不成熟也不普遍。关键行业对数据的可靠性要求又非常之高Q得关键行业用户也不敢冒然选择此种复制技术?/span>
 
----DSG RealSync属于数据库复制技术,它适用于从工作l、企业到数据中心的复刉求,无论pȝ采用什么样的服务器q_、什么样的存储^収ͼ只要?/span>ORACLEpȝ之间的复制即可适用。采?/span>DSG RealSync复制技术,其目标端数据库在复制q程中处于可用状态,帮助关键行业用户实现生pȝ与查询统计报表系l的分离Q其源端pȝ和目标端pȝ可以采用异构的操作系l^台、存储^収ͼ支持选择性复Ӟx持只复制指定?/span>user、指定的Table、指定的行和列,从而节省存储空_提高应用灉|性;支持1对多Q多?/span>1的复制结构,卻I能够多个数据库中的数据复制C个数据库中,能够一个数据库中的不同数据分发C同的数据库中Q也节约带宽和网l资源,其所需带宽一般在?/span>Mbps,几十Mbps?/span>
 
----随着用户容灾意识的逐渐增强Q关键行业也提出了徏设一套高效、可靠、投资回收比高的N备䆾pȝ的需求,以确保系l的数据安全和灾隑֏生时数据的快速恢复?/span>   


tbwshc 2012-07-22 13:58 发表评论
]]>
Oracle临时表在实际开发中的应用详?/title><link>http://m.shnenglu.com/tbwshc/archive/2012/07/08/182184.html</link><dc:creator>tbwshc</dc:creator><author>tbwshc</author><pubDate>Sun, 08 Jul 2012 02:49:00 GMT</pubDate><guid>http://m.shnenglu.com/tbwshc/archive/2012/07/08/182184.html</guid><wfw:comment>http://m.shnenglu.com/tbwshc/comments/182184.html</wfw:comment><comments>http://m.shnenglu.com/tbwshc/archive/2012/07/08/182184.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://m.shnenglu.com/tbwshc/comments/commentRss/182184.html</wfw:commentRss><trackback:ping>http://m.shnenglu.com/tbwshc/services/trackbacks/182184.html</trackback:ping><description><![CDATA[<p><strong>Oracle临时?/strong>在实际开发中的应用是本文我们主要要介l的内容Q我们知道,SQL Server 在编写查询式?strong>存储q程</strong>的时候,一直都令我Z赞叹。Create procedure ps_procedure_name as select * from table; Select查询语句可以作ؓSQL Server存储q程的一部分Q直接返回结果集。但在Oracle实现q种形式的存储过E是不合语法的?/p> <p>Z辑ֈq种目的Q我们需要用Oracle临时表(q是其中一U解x案)?/p> <p>Oracle数据库除了可以保存永久表外,q可以徏立时表temporary tables。Oracle临时表分Z话临时表(ON COMMIT PRESERVE ROWSQ和事务U时表QON COMMIT DELETE ROWSQ?a ><span style="color: #000000">tb</span></a>会话U时表是指临时表中的数据只在会话生命周期之中存在,当用户退Z话结束的时候,Oracle自动清除临时表中数据?/p> <p>事务U时表是指临时表中的数据只在事务生命周期中存在。当一个事务结束(commit or rollbackQ,Oracle自动清除临时表中数据。时表中的数据只对当前Session有效Q每个Session都有自己的时数据,q且不能讉K其它Session的时表中的数据?/p> <p><strong>//在数据库建立一个时表Q?/strong></p> <p> </p><pre><ol class="dp-xml"><li id="hvzpftn" class="alt"><span>CREATE GLOBAL TEMPORARY TABLE ESPS.ESPS_EMP_RANK_TEMP  </span></li><li><span>(  </span></li><li id="hvzpftn" class="alt"><span>COM                VARCHAR2(20 BYTE),  </span></li><li><span>EMPNO             VARCHAR2(20 BYTE),  </span></li><li id="hvzpftn" class="alt"><span>EMPNAME          VARCHAR2(100 BYTE),  </span></li><li><span>DEPTNAME         VARCHAR2(300 BYTE),  </span></li><li id="hvzpftn" class="alt"><span>AMOUNT            NUMBER,  </span></li><li><span>APPROVED_AMOUNT  NUMBER,  </span></li><li id="hvzpftn" class="alt"><span>FOLDING_AMOUNT   NUMBER,  </span></li><li><span>BENEFIT          NUMBER,  </span></li><li id="hvzpftn" class="alt"><span>EXECUTED_RATE    NUMBER,  </span></li><li><span>FOLDING_RANK     NUMBER,  </span></li><li id="hvzpftn" class="alt"><span>BENEFIT_RANK     NUMBER,  </span></li><li><span>RANK             NUMBER,  </span></li><li id="hvzpftn" class="alt"><span>TOTAL_RANK       NUMBER  </span></li><li><span>)  </span></li><li id="hvzpftn" class="alt"><span>//ON COMMIT PRESERVE ROWS         --q里代表的是事务U时表  </span></li><li><span>ON COMMIT PRESERVE ROWS          --q里代表的是会话U时表 </span></li></ol></pre> <p> </p> <p>在实际的操作中,我就验证q上面所说的。一开始我使用了事务临时表,数据插入到临时表时Q用commit操作Q结果时表的内ҎIZ。例如是QINSERT INTO ESPS_EMP_RANK_TEMP select * from tableQcommintQ执行这两段SQL后,相当于没有插入数据?/p> <p>如果我们使用会话U时表Q即使用了commitQ时表中的内容q是存在的。直C话断开Ӟ临时表中的内Ҏ真正的清I。所以,在实际的开发过E中Q我们因该结合场景,使用不同cd的时表?/p> <p>在徏议提案系l开发的q程中,我用了会话U的临时表。将查询的数据插入到临时表中Qƈ且读取时表的内容,会话断开Ӟ临时表中的内容自动清I?nbsp;</p> <p><strong>在C#里面调用的三大步骤:</strong></p> <p>//C#里面定义的一个Stringcd的变量,存储一D动态SQLQ存储过EؓQ?/p><pre><ol class="dp-xml"><li id="hvzpftn" class="alt"><span>ESPS_EMP_RANK_STATISTIS({0},'{1}')  </span></li><li><span>public static string </span><span id="hvzpftn" class="attribute">I_EMP_RANK_STATISTIS</span><span> = </span><span id="hvzpftn" class="attribute-value">"BEGIN ESPS_EMP_RANK_STATISTIS({0},'{1}'); END;"</span><span>; </span></li></ol></pre> <p> </p> <p>//执行存储q程Q把l果集插入到临时表ESPS_EMP_RANK_TEMP</p> <p> </p><pre><ol class="dp-xml"><li id="hvzpftn" class="alt"><span>WAF.COM.Core.OracleHelper. ExecuteNonQuery(conn, CommandType.Text, string.Format(SqlCollector.I_EMP_RANK_STATISTIS, 2,’2011’)); </span></li></ol></pre> <p> </p> <p>//d临时表中保存的结果集</p> <p> </p><pre><ol class="dp-xml"><li id="hvzpftn" class="alt"><span>Oracle DataReader </span><span id="hvzpftn" class="attribute">dr</span><span> = </span><span id="hvzpftn" class="attribute-value">WAF</span><span>.COM.Core.OracleHelper. ExecuteReader(“select * from ESPS_EMP_RANK_TEMP”) </span></li></ol></pre> <p> </p> <p>关于Oracle临时表在实际开发中的应用的相关知识׃l到q里了,希望本次介绍能够Ҏ有所收获Q?/p><img src ="http://m.shnenglu.com/tbwshc/aggbug/182184.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://m.shnenglu.com/tbwshc/" target="_blank">tbwshc</a> 2012-07-08 10:49 <a href="http://m.shnenglu.com/tbwshc/archive/2012/07/08/182184.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Oracle临时表和SQL Server临时表的不同点对?/title><link>http://m.shnenglu.com/tbwshc/archive/2012/07/08/182183.html</link><dc:creator>tbwshc</dc:creator><author>tbwshc</author><pubDate>Sun, 08 Jul 2012 02:47:00 GMT</pubDate><guid>http://m.shnenglu.com/tbwshc/archive/2012/07/08/182183.html</guid><wfw:comment>http://m.shnenglu.com/tbwshc/comments/182183.html</wfw:comment><comments>http://m.shnenglu.com/tbwshc/archive/2012/07/08/182183.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://m.shnenglu.com/tbwshc/comments/commentRss/182183.html</wfw:commentRss><trackback:ping>http://m.shnenglu.com/tbwshc/services/trackbacks/182183.html</trackback:ping><description><![CDATA[<p>Oracle数据库创Z时表的过E以及和<strong>SQL Server临时?/strong>的不同点的对比的相关知识是本文我们主要要介绍的内容,接下来就让我们一h了解一下这部分内容吧,希望能够Ҏ有所帮助?/p> <p><strong>1.?/strong></p> <p>Oracle数据库除了可以保存永久表外,q可以徏立时表temporary tables。这些时表用来保存一个会话SESSION的数据,或者保存在一个事务中需要的数据。当会话退出或者用h交commit和回滚rollback事务的时候,临时表的数据自动清空Q但是时表的结构以及元数据q存储在用户的数据字怸?/p> <p><strong>2.详细介绍</strong></p> <p><strong>Oracle临时?/strong>分ؓ会话U时表和事务临时表?/p> <p>会话U时表是指临时表中的数据只在会话生命周期之中存在,当用户退Z话结束的时候,Oracle自动清除临时表中数据?/p> <p>事务U时表是指临时表中的数据只在事务生命周期中存在。当一个事务结束(commit or rollbackQ,Oracle自动清除临时表中数据?/p> <p>临时表中的数据只对当前Session有效Q每个Session都有自己的时数据,q且不能讉K其它Session的时表中的数据。因此,临时表不需要DML锁?/p> <p>当一个会话结?用户正常退?用户不正帔R?ORACLE实例崩溃)或者一个事务结束的时候,Oracle对这个会话的表执?TRUNCATE 语句清空临时表数?但不会清I其它会话时表中的数据.</p> <p>你可以烦引时表和在临时表基上徏立视?同样,建立在时表上的索引也是临时?也是只对当前会话或者事务有? 临时表可以拥有触发器.</p> <p><strong>3.建立临时?/strong></p> <p>临时表的定义Ҏ有会话SESSION都是可见?但是表中的数据只对当前的会话或者事务有?</p> <p>建立ҎQ?/p><pre><ol class="dp-xml"><li id="hvzpftn" class="alt"><span>1) ON COMMIT DELETE ROWS 定义了徏立事务临时表的Ҏ.  </span></li><li><span>CREATE GLOBAL TEMPORARY TABLE admin_work_area  </span></li><li id="hvzpftn" class="alt"><span>(startdate DATE,  </span></li><li><span>enddate DATE,  </span></li><li id="hvzpftn" class="alt"><span>class CHAR(20))  </span></li><li><span>ON COMMIT DELETE ROWS;  </span></li><li id="hvzpftn" class="alt"><span>EXAMPLE:  </span></li><li><span>SQL</span><span id="hvzpftn" class="tag">></span><span> CREATE GLOBAL TEMPORARY TABLE admin_work_area  </span></li><li id="hvzpftn" class="alt"><span>2 (startdate DATE,  </span></li><li><span>3 enddate DATE,  </span></li><li id="hvzpftn" class="alt"><span>4 class CHAR(20))  </span></li><li><span>5 ON COMMIT DELETE ROWS;  </span></li><li id="hvzpftn" class="alt"><span>SQL</span><span id="hvzpftn" class="tag">></span><span> create table permernate( a number);  </span></li><li><span>SQL</span><span id="hvzpftn" class="tag">></span><span> insert into admin_work_area values(sysdate,sysdate,'temperary table');  </span></li><li id="hvzpftn" class="alt"><span>SQL</span><span id="hvzpftn" class="tag">></span><span> insert into permernate values(1);  </span></li><li><span>SQL</span><span id="hvzpftn" class="tag">></span><span> commit;  </span></li><li id="hvzpftn" class="alt"><span>SQL</span><span id="hvzpftn" class="tag">></span><span> select * from admin_work_area;  </span></li><li><span>SQL</span><span id="hvzpftn" class="tag">></span><span> select * from permernate;  </span></li><li id="hvzpftn" class="alt"><span>A  </span></li><li><span>1  </span></li><li id="hvzpftn" class="alt"><span>2)ON COMMIT PRESERVE ROWS 定义了创Z话临时表的Ҏ.  </span></li><li><span>CREATE GLOBAL TEMPORARY TABLE admin_work_area  </span></li><li id="hvzpftn" class="alt"><span>(startdate DATE,  </span></li><li><span>enddate DATE,  </span></li><li id="hvzpftn" class="alt"><span>class CHAR(20))  </span></li><li><span>ON COMMIT PRESERVE ROWS;  </span></li><li id="hvzpftn" class="alt"><span>EXAMPLE: </span></li></ol></pre> <p> </p> <p>会话1Q?/p><pre><ol class="dp-xml"><li id="hvzpftn" class="alt"><span>SQL</span><span id="hvzpftn" class="tag">></span><span> drop table admin_work_area;  </span></li><li><span>SQL</span><span id="hvzpftn" class="tag">></span><span> CREATE GLOBAL TEMPORARY TABLE admin_work_area  </span></li><li id="hvzpftn" class="alt"><span>2 (startdate DATE,  </span></li><li><span>3 enddate DATE,  </span></li><li id="hvzpftn" class="alt"><span>4 class CHAR(20))  </span></li><li><span>5 ON COMMIT PRESERVE ROWS;  </span></li><li id="hvzpftn" class="alt"><span>SQL</span><span id="hvzpftn" class="tag">></span><span> insert into permernate values(2);  </span></li><li><span>SQL</span><span id="hvzpftn" class="tag">></span><span> insert into admin_work_area values(sysdate,sysdate,'session temperary');  </span></li><li id="hvzpftn" class="alt"><span>SQL</span><span id="hvzpftn" class="tag">></span><span> commit;  </span></li><li><span>SQL</span><span id="hvzpftn" class="tag">></span><span> select * from permernate;  </span></li><li id="hvzpftn" class="alt"><span>A  </span></li><li><span>----------  </span></li><li id="hvzpftn" class="alt"><span>1  </span></li><li><span>2  </span></li><li id="hvzpftn" class="alt"><span>SQL</span><span id="hvzpftn" class="tag">></span><span> select * from admin_work_area;  </span></li><li><span>STARTDATE ENDDATE CLASS  </span></li><li id="hvzpftn" class="alt"><span>---------- ---------- --------------------  </span></li><li><span>17-1?? -03 17-1?? -03 session temperary </span></li></ol></pre> <p> </p> <p>会话2Q?/p><pre><ol class="dp-xml"><li id="hvzpftn" class="alt"><span>SQL</span><span id="hvzpftn" class="tag">></span><span> select * from permernate;  </span></li><li><span>A  </span></li><li id="hvzpftn" class="alt"><span>----------  </span></li><li><span>1  </span></li><li id="hvzpftn" class="alt"><span>2  </span></li><li><span>SQL</span><span id="hvzpftn" class="tag">></span><span> select * from admin_work_area;  </span></li><li id="hvzpftn" class="alt"><span>未选择? </span></li></ol></pre> <p> </p> <p>会话2看不见会?中时表的数据?/p> <p><strong>4.Oracle临时表和SQL Server临时表异?/strong></p> <p>SQL Server也可以创Z时表。时表与永久表怼Q但临时表存储在tempdb中,当不再用时会自动删除?/p> <p>有本地和全局两种cd的时表Q二者在名称、可见性和可用性上均不相同。本C时表的名UC单个数字W号 (#) 打头Q它们仅对当前的用户q接是可见的Q当用户?Microsoft SQL Server实例断开q接时被删除。全局临时表的名称以数学符?(##) 打头Q创建后对Q何用户都是可见的Q当所有引用该表的用户?SQL Server 断开q接时被删除?/p> <p>SQL 语句使用 CREATE TABLE 语句中ؓ table_name 指定的名U引用时表Q?/p><pre><ol class="dp-xml"><li id="hvzpftn" class="alt"><span>CREATE TABLE #MyTempTable (cola INT PRIMARY KEY)  </span></li><li><span>INSERT INTO #MyTempTable VALUES (1) </span></li></ol></pre> <p> </p> <p>如果本地临时表由存储q程创徏或由多个用户同时执行的应用程序创建,?SQL Server 必须能够区分׃同用户创建的表。ؓ此,SQL Server 在内部ؓ每个本地临时表的表名q加一个数字后~。存储在 tempdb 数据库的 sysobjects 表中的时表Q其全名?CREATE TABLE 语句中指定的表名和系l生成的数字后缀l成。ؓ了允许追加后~Qؓ本地临时表指定的表名 table_name 不能过116 个字W?/p> <p>除非使用 DROP TABLE 语句昑ּ除去临时表,否则临时表将在退出其作用域时ql自动除去:</p> <p>当存储过E完成时Q将自动除去在存储过E中创徏的本C时表。由创徏表的存储q程执行的所有嵌套存储过E都可以引用此表。但调用创徏此表的存储过E的q程无法引用此表?/p> <p>所有其它本C时表在当前会话结束时自动除去?/p> <p>全局临时表在创徏此表的会话结束且其它d停止对其引用时自动除厅RQ务与表之间的兌只在单个 Transact-SQL 语句的生存周期内保持。换a之,当创建全局临时表的会话l束Ӟ最后一条引用此表的Transact-SQL语句完成后,自动除L表?/p> <p>例如Q如果创建名?employees 的表Q则M人只要在数据库中有用该表的安全权限可以用该表,除非它已删除。如果创建名?#employees 的本C时表Q只有您能对该表执行操作且在断开q接时该表删除。如果创建名?##employees 的全局临时表,数据库中的Q何用户均可对该表执行操作。如果该表在您创建后没有其他用户使用Q则当您断开q接时该表删除。如果该表在您创建后有其他用户用,?SQL Server在所有用h开q接后删除该表?/p> <p>在存储过E或触发器中创徏的本C时表与在调用存储q程或触发器之前创徏的同名时表不同。如果查询引用时表Q而同时有两个同名的时表Q则不定义针对哪个表解析该查询?a ><span style="color: #000000">tb</span></a>嵌套存储q程同样可以创徏与调用它的存储过E所创徏的时表同名的时表。嵌套存储过E中对表名的所有引用都被解释ؓ是针对该嵌套q程所创徏的表Q例如:</p> <p> </p><pre><ol class="dp-xml"><li id="hvzpftn" class="alt"><span>CREATE PROCEDURE Test2  </span></li><li><span>AS  </span></li><li id="hvzpftn" class="alt"><span>CREATE TABLE #t(x INT PRIMARY KEY)  </span></li><li><span>INSERT INTO #t VALUES (2)  </span></li><li id="hvzpftn" class="alt"><span>SELECT </span><span id="hvzpftn" class="attribute">Test2Col</span><span> = </span><span id="hvzpftn" class="attribute-value">x</span><span> FROM #t  </span></li><li><span>GO  </span></li><li id="hvzpftn" class="alt"><span>CREATE PROCEDURE Test1  </span></li><li><span>AS  </span></li><li id="hvzpftn" class="alt"><span>CREATE TABLE #t(x INT PRIMARY KEY)  </span></li><li><span>INSERT INTO #t VALUES (1)  </span></li><li id="hvzpftn" class="alt"><span>SELECT </span><span id="hvzpftn" class="attribute">Test1Col</span><span> = </span><span id="hvzpftn" class="attribute-value">x</span><span> FROM #t  </span></li><li><span>EXEC Test2  </span></li><li id="hvzpftn" class="alt"><span>GO  </span></li><li><span>CREATE TABLE #t(x INT PRIMARY KEY)  </span></li><li id="hvzpftn" class="alt"><span>INSERT INTO #t VALUES (99)  </span></li><li><span>GO  </span></li><li id="hvzpftn" class="alt"><span>EXEC Test1  </span></li><li><span>GO  </span></li></ol></pre> <p> </p> <p>下面是结果集Q?/p><pre><ol class="dp-xml"><li id="hvzpftn" class="alt"><span>(1 row(s) affected)  </span></li><li><span>Test1Col   </span></li><li id="hvzpftn" class="alt"><span>-----------   </span></li><li><span>1   </span></li><li id="hvzpftn" class="alt"><span>(1 row(s) affected)  </span></li><li><span>Test2Col   </span></li><li id="hvzpftn" class="alt"><span>-----------   </span></li><li><span>2 </span></li></ol></pre> <p> </p> <p>当创建本地或全局临时表时QCREATE TABLE 语法支持?FOREIGN KEY U束以外的其它所有约束定义。如果在临时表中指定 FOREIGN KEY U束Q该语句返回警告信息,指出此约束已被忽略,表仍会创建,但不h FOREIGN KEY U束。在 FOREIGN KEY U束中不能引用时表?/p> <p>考虑使用表变量而不使用临时表。当需要在临时表上昑ּ地创建烦引时Q或多个存储q程或函数需要用表值时Q时表很有用。通常Q表变量提供更有效的查询处理?/p> <p><strong>和Oracle的不同点Q?/strong></p> <p>1. SQL Server临时表是一U?#8221;内存?#8221;,<a ><span style="color: #000000">tb</span></a>表是存储在内存中?ORACLE临时表除非执行DROP TABLE,否则表定义会保留在数据字怸?/p> <p>2. SQL Server临时表不存在cMORACLE临时表事务别上的功能?/p> <p>3.SQL Server本地临时?#) ?ORACLE的会话别时表cM,但是在会话退出的时?ORACLE不会删除表?/p> <p>4.SQL Server的全局临时?##) 是指多个q接׃n同一片内?当没有指针引用该内存区域?SQL Server自动释放全局临时表?/p> <p>5.׃Oracle不是一U内存中的数据库. 所以如果OraclecMSQL Server 频繁的对临时表进行徏立和删除,必定会媄响性能.所以Oracle会保留时表的定义直到用户DROP TABLE?/p> <p>6.在Oracle?如果需要多个用户共享一个表(cMSQL Server的全局临时?#).则可以利用永久表,q且在表中添加一些可以唯一标识用户的列.利用触发器和视图.当用户退出的时?Ҏ该登陆用L唯一信息删除相应的表中的数据. q种ҎlOracle带来了一定量的负载?/p> <p> </p> <p>关于Oracle临时表和SQL Server临时表的不同点对比的相关知识׃l到q里了,希望本次的介l能够对您有所收获Q?/p><img src ="http://m.shnenglu.com/tbwshc/aggbug/182183.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://m.shnenglu.com/tbwshc/" target="_blank">tbwshc</a> 2012-07-08 10:47 <a href="http://m.shnenglu.com/tbwshc/archive/2012/07/08/182183.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>详解Oracle临时表的几种用法及意?/title><link>http://m.shnenglu.com/tbwshc/archive/2012/07/07/182066.html</link><dc:creator>tbwshc</dc:creator><author>tbwshc</author><pubDate>Sat, 07 Jul 2012 05:26:00 GMT</pubDate><guid>http://m.shnenglu.com/tbwshc/archive/2012/07/07/182066.html</guid><wfw:comment>http://m.shnenglu.com/tbwshc/comments/182066.html</wfw:comment><comments>http://m.shnenglu.com/tbwshc/archive/2012/07/07/182066.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://m.shnenglu.com/tbwshc/comments/commentRss/182066.html</wfw:commentRss><trackback:ping>http://m.shnenglu.com/tbwshc/services/trackbacks/182066.html</trackback:ping><description><![CDATA[<p>Oracle临时表可以说是提高数据库处理性能的好ҎQ在没有必要存储Ӟ只存储在Oracle临时表空间中。希望本文能对大家有所帮助?/p> <p>1 、前a</p> <p> </p> <p>Oracle Logo</p> <p>目前所有?Oracle 作ؓ数据库支撑^台的应用Q大部分数据量比较庞大的pȝQ即表的数据量一般情况下都是在百万以上的数据量?/p> <p>当然?Oracle 中创建分区是一U不错的选择Q但是当你发C的应用有多张表关联的时候,q且q些表大部分都是比较庞大Q而你兌的时候发现其中的某一张或者某几张表关联之后得到的l果集非常小q且查询得到q个l果集的速度非常快,那么q个时候我考虑?Oracle 中创?#8220;临时?#8221;?/p> <p>我对临时表的理解Q在 Oracle 中创Z张表Q这个表不用于其他的什么功能,主要用于自己的Y件系l一些特有功能才用的Q而当你用完之后表中的数据没用了?Oracle 的时表创徏之后基本不占用表I间Q如果你没有指定临时?包括临时表的索引)存放的表I的时候,你插入到临时表的数据是存攑֜ ORACLE pȝ的时表I间? TEMP )?/p> <p>2 、时表的创?/p> <p>创徏Oracle 临时表,可以有两U类型的临时表:</p> <p>会话U的临时?/p> <p>事务U的临时??/p> <p>1) 会话U的临时表因q个临时表中的数据和你的当前会话有关p,当你当前SESSION 不退出的情况下,临时表中的数据就q存在,而当你退出当前SESSION 的时候,临时表中的数据就全部没有了,当然q个时候你如果以另外一个SESSION 登陆的时候是看不到另外一个SESSION 中插入到临时表中的数据的。即两个不同的SESSION 所插入的数据是互不相干的。当某一个SESSION 退Z后时表中的数据p截断(truncate table Q即数据清空)了。会话的时表创徏ҎQ?/p> <p><br />Create Global Temporary Table Table_Name  (Col1 Type1,Col2 Type2...) On Commit Preserve Rows ; <br />举例Q?/p> <p><br />create global temporary table Student  (Stu_id Number(5),  Class_id Number(5),  Stu_Name Varchar2(8),  Stu_Memo varchar2(200)) on Commit Preserve Rows ; <br />2) 事务U时表是指该时表与事务相养I当进行事务提交或者事务回滚的时候,临时表中的数据将自行被截断,其他的内容和会话U的临时表的一?包括退出SESSION 的时候,事务U的临时表也会被自动截断)。事务临时表的创徏ҎQ?/p> <p><br />Create Global Temporary Table Table_Name  (Col1 Type1,Col2 Type2...) On Commit Delete Rows ; <br />举例Q?/p> <p>create global temporary table Classes  (Class_id Number(5),  Class_Name Varchar2(8),  Class_Memo varchar2(200)) on Commit delete Rows ; 3) 两中cd临时表的区别</p> <p>会话U时表采用 on commit preserve rows ;而事务则采?on commit delete rows ;用法上,会话U别只有当会话结束时表中的数据才会被截断,而且事务U时表则不是 commit ?rollback 或者是会话l束Q?a ><span style="color: #000000">tb</span></a>临时表中的数据都被截断</p> <p>4 )什么时候用时表</p> <p>1 )、当某一?SQL 语句兌的表?2 张及以上Qƈ且和一些小表关联。可以采用将大表q行分拆q且得到比较的l果集合存放在时表?/p> <p>2 )、程序执行过E中可能需要存放一些时的数据Q这些数据在整个E序的会话过E中都需要用的等{?/p> <p>3 . 例子Q略</p> <p>4 .临时表的不之处</p> <p>1 )不支?lob 对象Q这也许是设计者基于运行效率的考虑Q但实际应用中确实需要此功能时就无法使用临时表了?/p> <p>2 )不支持主外键关系</p> <p>所以,׃以上原因Q我们可以自己创Z时表Q以弥补 oracle 临时表的不之处</p> <p>上面的都是本人经q测试的Q但下面是在|上搜烦到的ҎQ本人具体没有测试过Q不q觉得可行性很强,有时间测试下</p> <p>创徏ҎQ?/p> <p>1 、以常规表的形式创徏临时数据表的表结构,但要在每一个表的主键中加入一?SessionID 列以区分不同的会话?可以?lob 列和d?</p> <p>2 、写一个用h销触发器,在用L束会话的时候删除本ơ会话所插入的所有记?(SessionID {于本次会话 ID 的记?) ?/p> <p>3 、程序写入数据时Q要Z当前的会话 ID(SessionID) 写入表中?/p> <p>4 、程序读取数据时Q只d与当前会?ID 相同的记录即可?/p> <p>功能增强的扩展设计:</p> <p>1 、可以在数据表上建立一个视图,视图对记录的{选条件就是当前会话的SessionID ?/p> <p>2 、数据表中的SessionID 列可以通过Trigger 实现Q以实现对应用层的透明性?/p> <p>3 、高U用户可以访问全局数据Q以实现更加复杂的功能?/p> <p>扩展临时表的优点Q?/p> <p>1 、实C与Oracle 的基于会话的临时表相同的功能?/p> <p>2 、支持SDO_GEOMETRY {lob 数据cd?/p> <p>3 、支持表间的d键连接,且主外键q接也是Z会话的?/p> <p>4 、高U用户可以访问全局数据Q以实现更加复杂的功?/p> <p> </p><img src ="http://m.shnenglu.com/tbwshc/aggbug/182066.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://m.shnenglu.com/tbwshc/" target="_blank">tbwshc</a> 2012-07-07 13:26 <a href="http://m.shnenglu.com/tbwshc/archive/2012/07/07/182066.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>ORACLE联机日志文g丢失或损坏的处理Ҏhttp://m.shnenglu.com/tbwshc/archive/2012/07/07/182065.htmltbwshctbwshcSat, 07 Jul 2012 05:24:00 GMThttp://m.shnenglu.com/tbwshc/archive/2012/07/07/182065.htmlhttp://m.shnenglu.com/tbwshc/comments/182065.htmlhttp://m.shnenglu.com/tbwshc/archive/2012/07/07/182065.html#Feedback0http://m.shnenglu.com/tbwshc/comments/commentRss/182065.htmlhttp://m.shnenglu.com/tbwshc/services/trackbacks/182065.html联机日志分ؓ当前联机日志和非当前联机日志Q非当前联机日志的损坏是比较单的Q一般通过clear命o可以解决问题?/p>

损坏非当前联机日志:
1、启动数据库Q遇到ORA-00312 or ORA-00313错误Q如:
ORA-00313: open failed for members of log group 4 of tbhread 1
ORA-00312: online log 3 thread 1: '/opt/oracle/db04/oradata/ORCL/redo03.log'
从这里我们知道日志组1的数据文件损坏或丢失?br />从报警文件可以看到更详细的信?br />2、查看V$log视图:
SQL> select group#,sequence#,archived,status from v$log;

GROUP# SEQUENCE# ARC STATUS

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

1 54 YES INACTIVE

2 55 NO CURRENT

3 53 YES INACTIVE

可以知道Q该l是非当前状态,而且已经归档?br />3、用CLEAR命o重徏该日志文?br />SQL>alter database clear logfile group 3;
如果是该日志l还没有归Q则需要用
SQL>alter database clear unarchived logfile group 3;
4、打开数据库,重新备䆾数据?br />SQL>alter database open;
说明Q?br />1)、如果损坏的是非当前的联机日志文Ӟ一般只需要clear可以重日志文gQ但是如果该数据库处于归状态但该日志还没有归Q就需要强行clear?br />2)、徏议clearQ特别是clear后作一ơ数据库的全备䆾?br />3)、此Ҏ适用于归档与非归数据库?/p>

损坏当前联机日志Q?/p>

归模式下当前日志的损坏有两U情况,
一、是数据库是正常关闭Q日志文件中没有未决的事务需要实例恢复,当前日志l的损坏可以直接用alter database clear unarchived logfile group n来重建?br />二、是日志l中有活动的事务Q数据库需要媒体恢复,日志l需要用来同步,有两U补救办?br />A. 最好的办法是通过不完全恢复,可以保证数据库的一致性,但是q种办法要求在归档方式下Qƈ且有可用的备?br />B. 通过强制性恢复,但是可能D数据库不一致?br />下面分别用来说明q两U恢复方?br />5.1.2.1 通过备䆾来恢?br />1、打开数据库,会遇C个类似的错误
ORA-00313: open failed for members of log group 1 of thread 1
ORA-00312: online log 1 thread 1: 'D:ORACLEORADATATESTREDO01.LOG'
ORA-27041: unable to open file
OSD-04002: unable to open file
O/S-Error: (OS 2) pȝ找不到指定的文g

2、查看V$logQ发现是当前日志
SQL> select group#,sequence#,archived,status from v$log;

GROUP# SEQUENCE# ARCHIVED STATUS
---------- ---------- -------- ----------------
1 1 NO CURRENT
2 2 YES INACTIVE
3 3 YES INACTIVE

3、发现clear不成?br />SQL> alter database clear unarchived logfile group 1;
alter database clear unarchived logfile group 1
*
ERROR at line 1:
ORA-01624: log 1 needed for crash recovery of thread 1
ORA-00312: online log 1 thread 1: 'D:ORACLEORADATATESTREDO01.LOG'

4、拷贝有效的数据库的全备份,q不完全恢复数据?br />可以采用获取最q的SCN的办法用until scn恢复或用until cnacel恢复
recover database until cancel
先选择autoQ尽量恢复可以利用的归日志Q然后重?br />recover database until cancel
q次输入cancelQ完成不完全恢复Q也是说恢复两ơ?br />如:
SQL> recover database until cancel;
Auto
……
SQL> recover database until cancel;
Cancel;
5、利用alter database open resetlogs打开数据?br />说明Q?br />1、这U办法恢复的数据库是一致的不完全恢复,会丢失当前联机日志中的事务数?br />2、这U方法适合于归数据库q且有可用的数据库全备䆾?br />3、恢复成功之后,记得再做一ơ数据库的全备䆾?br />4、徏议联机日志文件一定要实现镜相在不同的盘上,避免q种情况的发生,因ؓM数据的丢失对于生产来说都是不容许的?/p>

如果没有备䆾Q进行强制性恢?br />1、打开数据库,会遇C个类似的错误
ORA-00313: open failed for members of log group 1 of thread 1
ORA-00312: online log 1 thread 1: 'D:ORACLEORADATATESTREDO01.LOG'
ORA-27041: unable to open file
OSD-04002: unable to open file
O/S-Error: (OS 2) pȝ找不到指定的文g

2、查看V$logQ发现是当前日志
SQL> select group#,sequence#,archived,status from v$log;

GROUP# SEQUENCE# ARCHIVED STATUS
---------- ---------- -------- ----------------
1 1 NO CURRENT
2 2 YES INACTIVE
3 3 YES INACTIVE

3、发现clear不成?br />SQL> alter database clear unarchived logfile group 1;
alter database clear unarchived logfile group 1
*
ERROR at line 1:
ORA-01624: log 1 needed for crash recovery of thread 1
ORA-00312: online log 1 thread 1: 'D:ORACLEORADATATESTREDO01.LOG'

4、把数据库down?br />SQL>shutdown immediate

5、在init<sid>.ora中加入如下参?br />_allow_resetlogs_corruption=TRUE

6、重新启动数据库,利用until cancel恢复
SQL>recover database until cancel;
Cancel
如果出错Q不再理会,发出
SQL>alter database open resetlogs;

7、数据库被打开后,马上执行一个full export

8、shutdown数据?L_all_resetlogs_corrupt参数

9、重建库

10、importq完成恢?/p>

11、徏议执行一下ANALYZE TABLE ...VALIDATE STRUCTURE CASCADE;
说明Q?br />1、该恢复Ҏ是没有办法之后的恢复ҎQ一般情况下不要采用Q因Ҏ可能D数据库的不一?br />2、该Ҏ也丢失数据,但是丢失的数据没有上一U方法的数据多,主要是未写入数据文g的已提交或未提交数据?br />3、徏议成功后严格执行以上??1步,完成数据库的查与分析
4、全部完成后做一ơ数据库的全备䆾
5、徏议联机日志文件一定要实现镜相在不同的盘上,避免q种情况的发生,因ؓM数据的丢失对于生产来说都是不容许的?/p>

tbwshc 2012-07-07 13:24 发表评论
]]>
青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            ŷƷva߹ۿ| þ͵Ƶ| һ| ŷƵվ| ƷþþþӰԺɫϴ | þav| þþƷ77777| þþۺ| ޸岻av| ޾žž߹ۿ| һղ| ŷۺϹ| ŷۺɫС˵| ŷպþ| ŷһ| պ㽶Ƶ| 㽶ۺ߹ۿ| þþƷ| ŷɫ| ߲Ƶ| þҹɫƷŷҼƷ| ŷպӰ| ҹƷþþ| ˳վɫww| ŷպۺϾƷ| þaaaaxxxx| һһþaþþƷۺ鶹| ŷĻƵ| Ʒ| ŷۺϹһ| þþþþۺ| һһþۺϺݺϾӰҵ | ձɫ| þҾƷ| 18þ| ŷƬѹۿ߹ۿվƼ| ƷӰƬ߹ۿ| һƷѾƷþ75| þŮƵ| ۺϹ| ƷvպƷ| պƵһ߲| þպһ| ҹƷ17c| ŷպۺ| ޹Ʒһ| þ| ŷĻ߲| պŷƷۺ| ŷպIJ| պ| ŷպһ| 91þþƷ91þ| ŷhd18ձ| þۺһ| ݺɫݺɫۺ| þþþø| þþþùƷһ| ŷ| þþþһ| þþƷŷ| ޴av| ŷպƵ| ŷƷ߲| Ƶ߹ۿƵ| av˹| Ůͬ| һɫþ88Ʒۺ| ŷ۵Ӱ߲| 99Ʒ| һ12Ƶdvd| ŷպƵ߹ۿһ| ˽Ӱ| ҹһ| ޹Ʒa߹ۿ| ޹ƷþþþþŮ| ŷ龫Ʒþþþþ| Ƶ߹ۿ| ŷƵ| ŷ1| ŷһƵۿ | պŷƷ| þƵ߹ۿ| ŮھƷԲ߲| ޿Ƭһ| ŷƷsuv| ޼վѹۿ| պŷƷ| Ƶһ| պ㽶Ƶ| Ůþ| ѸƵ| һƷ| һ³˿| С˵һ| þþ| 崿| ŷһվ| һѿ| þþƷëƬ| ŷպһ | һ һ| ŷվ߹ۿ| ۲ӰԺþþþ| ޾Ʒϵ| þһ| ҹƷƵ| պƵ| þ| þþƵ| ŷϵϵ| ޾Ʒ㶮| պ| | ҹӰ| ŷպƷһ | պվ߿Ƭ㶮| ƷˬҵĿɰ| ݺݸɳۺ| Ѹһ| Ʒҹɫav| ޾Ʒþþþ| ޾| þ޶| þۺƵӰԺ| ղƷһĹۿʽ| þùƵվ| žž| ŷƵ| ŷպһ| ޵һվ| þ91Ʒþþþþò| þþƷþһ | Ʒþþþþþþö | Ů㽶þ**ëƬƷ| ţţƷ| ޹91Ʒ| þһ| ŷۺ| ޾ƷĻŮͬ| ŷƵ| ޾ƷƷ벻99| һպŷ| ŷպһ߹ۿƵ| 99Ƶһ| ŷһƷ| Ƶһ | ŷֻ| һѹۿ| ŷһƵ| ѹۿþû| þùƷþwŮspa| þӰƬ| ޸Ƶ| ŷƷһ߹ۿ| ҹþþþþ| þþƷ̳| ձĻ߲| ŷպƷ| һɫþۺ޾Ʒ| ŷһ13˾| ͵ľƷ| ţţƷ| Ƶպŷ| þþƷһ| 91þþƷ| Ʒձһ| þ޾Ʒ| Ƶ߹ۿһ| þþùһ| ޼鲻| պ߲| ŷ˳վ| þþƷƵ| ڲһ| ѳվ| ŮƵ| ޹| Ƶ꾫Ʒ| ŷպר| þþþ| ɫӰۺ| ޹Ʒ| þþƷ| һһ| һѹۿ| ŷպۺӰԺ| һƷƵ| 鶹ƷƵ߹ۿ| һ| ޵һר| дavһ| ŷձҴxxxxx| þþþþ9999| ŷ͵| 99߾Ʒۿ| Ѽ| ޸߾Ʒ| ŷ㶮| ŷ69av|