﻿<?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>IT博客-SA Blog --系统管理员的博客生涯-随笔分类-数据库应用技术</title><link>http://www.cnitblog.com/201/category/1606.html</link><description>书写自己的系统管理博客生涯</description><language>zh-cn</language><lastBuildDate>Thu, 04 Apr 2019 13:14:31 GMT</lastBuildDate><pubDate>Thu, 04 Apr 2019 13:14:31 GMT</pubDate><ttl>60</ttl><item><title>mysql 日志文件mysql-bin文件清除方法，和mysql-bin相关文件的配置</title><link>http://www.cnitblog.com/201/archive/2019/04/01/91376.html</link><dc:creator>David</dc:creator><author>David</author><pubDate>Mon, 01 Apr 2019 09:49:00 GMT</pubDate><guid>http://www.cnitblog.com/201/archive/2019/04/01/91376.html</guid><wfw:comment>http://www.cnitblog.com/201/comments/91376.html</wfw:comment><comments>http://www.cnitblog.com/201/archive/2019/04/01/91376.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cnitblog.com/201/comments/commentRss/91376.html</wfw:commentRss><trackback:ping>http://www.cnitblog.com/201/services/trackbacks/91376.html</trackback:ping><description><![CDATA[<p style="font-family: Arial, 宋体; font-size: 14px; margin: 0px 0px 9px; line-height: 24px; color: #000000; font-style: normal; font-variant-ligatures: normal; font-variant-caps: normal; font-weight: 400; letter-spacing: normal; orphans: 2; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px; -webkit-text-stroke-width: 0px; text-decoration-style: initial; text-decoration-color: initial;">默认情况下mysql会一直保留mysql-bin文件，这样到一定时候，磁盘可能会被撑满，这时候是否可以删除这些文件呢，是否可以安全删除，是个问题。</p><p style="font-family: Arial, 宋体; font-size: 14px; margin: 0px 0px 9px; line-height: 24px; color: #000000; font-style: normal; font-variant-ligatures: normal; font-variant-caps: normal; font-weight: 400; letter-spacing: normal; orphans: 2; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px; -webkit-text-stroke-width: 0px; text-decoration-style: initial; text-decoration-color: initial;">首先要说明一下，这些文件都是mysql的日志文件，如果不做主从复制的话，基本上是没用的，虽然没用，但是不建议使用rm命令删除，这样有可能会不安全，正确的方法是通过mysql的命令去删除。</p><pre class="prettyprint mysql prettyprinted" style="padding: 5px; font-family: Consolas, Menlo, Monaco, &quot;Lucida Console&quot;, &quot;Liberation Mono&quot;, &quot;DejaVu Sans Mono&quot;, &quot;Bitstream Vera Sans Mono&quot;, &quot;Courier New&quot;, monospace, serif; margin-bottom: 10px; background-color: #e1e1e1; overflow: auto; width: auto; white-space: pre; background-position: left -384px !important; color: #000000; font-size: 12px; font-style: normal; font-variant-ligatures: normal; font-variant-caps: normal; font-weight: 400; letter-spacing: normal; orphans: 2; text-align: start; text-indent: 0px; text-transform: none; widows: 2; word-spacing: 0px; -webkit-text-stroke-width: 0px; text-decoration-style: initial; text-decoration-color: initial;"><span class="pln" style="font-family: Arial, 宋体; font-size: 14px; color: #000000;">mysql </span><span class="pun" style="font-family: Arial, 宋体; font-size: 14px; color: #000000;">-</span><span class="pln" style="font-family: Arial, 宋体; font-size: 14px; color: #000000;">u root </span><span class="pun" style="font-family: Arial, 宋体; font-size: 14px; color: #000000;">-</span><span class="pln" style="font-family: Arial, 宋体; font-size: 14px; color: #000000;">p
</span><span class="typ" style="font-family: Arial, 宋体; font-size: 14px; color: #2b91af;">Enter</span><span class="pln" style="font-family: Arial, 宋体; font-size: 14px; color: #000000;"> password</span><span class="pun" style="font-family: Arial, 宋体; font-size: 14px; color: #000000;">:</span><span class="pln" style="font-family: Arial, 宋体; font-size: 14px; color: #000000;"> 
</span><span class="typ" style="font-family: Arial, 宋体; font-size: 14px; color: #2b91af;">Welcome</span><span class="pln" style="font-family: Arial, 宋体; font-size: 14px; color: #000000;"> to the </span><span class="typ" style="font-family: Arial, 宋体; font-size: 14px; color: #2b91af;">MySQL</span><span class="pln" style="font-family: Arial, 宋体; font-size: 14px; color: #000000;"> monitor</span><span class="pun" style="font-family: Arial, 宋体; font-size: 14px; color: #000000;">.</span><span class="pln" style="font-family: Arial, 宋体; font-size: 14px; color: #000000;">  </span><span class="typ" style="font-family: Arial, 宋体; font-size: 14px; color: #2b91af;">Commands</span><span class="pln" style="font-family: Arial, 宋体; font-size: 14px; color: #000000;"> </span><span class="kwd" style="font-family: Arial, 宋体; font-size: 14px; color: #00008b;">end</span><span class="pln" style="font-family: Arial, 宋体; font-size: 14px; color: #000000;"> </span><span class="kwd" style="font-family: Arial, 宋体; font-size: 14px; color: #00008b;">with</span><span class="pln" style="font-family: Arial, 宋体; font-size: 14px; color: #000000;"> </span><span class="pun" style="font-family: Arial, 宋体; font-size: 14px; color: #000000;">;</span><span class="pln" style="font-family: Arial, 宋体; font-size: 14px; color: #000000;"> </span><span class="kwd" style="font-family: Arial, 宋体; font-size: 14px; color: #00008b;">or</span><span class="pln" style="font-family: Arial, 宋体; font-size: 14px; color: #000000;"> \g</span><span class="pun" style="font-family: Arial, 宋体; font-size: 14px; color: #000000;">.</span><span class="pln" style="font-family: Arial, 宋体; font-size: 14px; color: #000000;">
</span><span class="typ" style="font-family: Arial, 宋体; font-size: 14px; color: #2b91af;">Your</span><span class="pln" style="font-family: Arial, 宋体; font-size: 14px; color: #000000;"> </span><span class="typ" style="font-family: Arial, 宋体; font-size: 14px; color: #2b91af;">MySQL</span><span class="pln" style="font-family: Arial, 宋体; font-size: 14px; color: #000000;"> connection id </span><span class="kwd" style="font-family: Arial, 宋体; font-size: 14px; color: #00008b;">is</span><span class="pln" style="font-family: Arial, 宋体; font-size: 14px; color: #000000;"> </span><span class="lit" style="font-family: Arial, 宋体; font-size: 14px; color: #800000;">2819416</span><span class="pln" style="font-family: Arial, 宋体; font-size: 14px; color: #000000;">
</span><span class="typ" style="font-family: Arial, 宋体; font-size: 14px; color: #2b91af;">Server</span><span class="pln" style="font-family: Arial, 宋体; font-size: 14px; color: #000000;"> version</span><span class="pun" style="font-family: Arial, 宋体; font-size: 14px; color: #000000;">:</span><span class="pln" style="font-family: Arial, 宋体; font-size: 14px; color: #000000;"> </span><span class="lit" style="font-family: Arial, 宋体; font-size: 14px; color: #800000;">5.5</span><span class="pun" style="font-family: Arial, 宋体; font-size: 14px; color: #000000;">.</span><span class="lit" style="font-family: Arial, 宋体; font-size: 14px; color: #800000;">24</span><span class="pun" style="font-family: Arial, 宋体; font-size: 14px; color: #000000;">-</span><span class="lit" style="font-family: Arial, 宋体; font-size: 14px; color: #800000;">0ubuntu0.12</span><span class="pun" style="font-family: Arial, 宋体; font-size: 14px; color: #000000;">.</span><span class="lit" style="font-family: Arial, 宋体; font-size: 14px; color: #800000;">04.1</span><span class="pun" style="font-family: Arial, 宋体; font-size: 14px; color: #000000;">-</span><span class="pln" style="font-family: Arial, 宋体; font-size: 14px; color: #000000;">log </span><span class="pun" style="font-family: Arial, 宋体; font-size: 14px; color: #000000;">(</span><span class="typ" style="font-family: Arial, 宋体; font-size: 14px; color: #2b91af;">Ubuntu</span><span class="pun" style="font-family: Arial, 宋体; font-size: 14px; color: #000000;">)</span><span class="pln" style="font-family: Arial, 宋体; font-size: 14px; color: #000000;">

</span><span class="typ" style="font-family: Arial, 宋体; font-size: 14px; color: #2b91af;">Copyright</span><span class="pln" style="font-family: Arial, 宋体; font-size: 14px; color: #000000;"> </span><span class="pun" style="font-family: Arial, 宋体; font-size: 14px; color: #000000;">(</span><span class="pln" style="font-family: Arial, 宋体; font-size: 14px; color: #000000;">c</span><span class="pun" style="font-family: Arial, 宋体; font-size: 14px; color: #000000;">)</span><span class="pln" style="font-family: Arial, 宋体; font-size: 14px; color: #000000;"> </span><span class="lit" style="font-family: Arial, 宋体; font-size: 14px; color: #800000;">2000</span><span class="pun" style="font-family: Arial, 宋体; font-size: 14px; color: #000000;">,</span><span class="pln" style="font-family: Arial, 宋体; font-size: 14px; color: #000000;"> </span><span class="lit" style="font-family: Arial, 宋体; font-size: 14px; color: #800000;">2011</span><span class="pun" style="font-family: Arial, 宋体; font-size: 14px; color: #000000;">,</span><span class="pln" style="font-family: Arial, 宋体; font-size: 14px; color: #000000;"> </span><span class="typ" style="font-family: Arial, 宋体; font-size: 14px; color: #2b91af;">Oracle</span><span class="pln" style="font-family: Arial, 宋体; font-size: 14px; color: #000000;"> </span><span class="kwd" style="font-family: Arial, 宋体; font-size: 14px; color: #00008b;">and</span><span class="pun" style="font-family: Arial, 宋体; font-size: 14px; color: #000000;">/</span><span class="kwd" style="font-family: Arial, 宋体; font-size: 14px; color: #00008b;">or</span><span class="pln" style="font-family: Arial, 宋体; font-size: 14px; color: #000000;"> its affiliates</span><span class="pun" style="font-family: Arial, 宋体; font-size: 14px; color: #000000;">.</span><span class="pln" style="font-family: Arial, 宋体; font-size: 14px; color: #000000;"> </span><span class="typ" style="font-family: Arial, 宋体; font-size: 14px; color: #2b91af;">All</span><span class="pln" style="font-family: Arial, 宋体; font-size: 14px; color: #000000;"> rights reserved</span><span class="pun" style="font-family: Arial, 宋体; font-size: 14px; color: #000000;">.</span><span class="pln" style="font-family: Arial, 宋体; font-size: 14px; color: #000000;">

</span><span class="typ" style="font-family: Arial, 宋体; font-size: 14px; color: #2b91af;">Oracle</span><span class="pln" style="font-family: Arial, 宋体; font-size: 14px; color: #000000;"> </span><span class="kwd" style="font-family: Arial, 宋体; font-size: 14px; color: #00008b;">is</span><span class="pln" style="font-family: Arial, 宋体; font-size: 14px; color: #000000;"> a registered trademark of </span><span class="typ" style="font-family: Arial, 宋体; font-size: 14px; color: #2b91af;">Oracle</span><span class="pln" style="font-family: Arial, 宋体; font-size: 14px; color: #000000;"> </span><span class="typ" style="font-family: Arial, 宋体; font-size: 14px; color: #2b91af;">Corporation</span><span class="pln" style="font-family: Arial, 宋体; font-size: 14px; color: #000000;"> </span><span class="kwd" style="font-family: Arial, 宋体; font-size: 14px; color: #00008b;">and</span><span class="pun" style="font-family: Arial, 宋体; font-size: 14px; color: #000000;">/</span><span class="kwd" style="font-family: Arial, 宋体; font-size: 14px; color: #00008b;">or</span><span class="pln" style="font-family: Arial, 宋体; font-size: 14px; color: #000000;"> its
affiliates</span><span class="pun" style="font-family: Arial, 宋体; font-size: 14px; color: #000000;">.</span><span class="pln" style="font-family: Arial, 宋体; font-size: 14px; color: #000000;"> </span><span class="typ" style="font-family: Arial, 宋体; font-size: 14px; color: #2b91af;">Other</span><span class="pln" style="font-family: Arial, 宋体; font-size: 14px; color: #000000;"> names may be trademarks of their respective
owners</span><span class="pun" style="font-family: Arial, 宋体; font-size: 14px; color: #000000;">.</span><span class="pln" style="font-family: Arial, 宋体; font-size: 14px; color: #000000;">

</span><span class="typ" style="font-family: Arial, 宋体; font-size: 14px; color: #2b91af;">Type</span><span class="pln" style="font-family: Arial, 宋体; font-size: 14px; color: #000000;"> </span><span class="str" style="font-family: Arial, 宋体; font-size: 14px; color: #800000;">'help;'</span><span class="pln" style="font-family: Arial, 宋体; font-size: 14px; color: #000000;"> </span><span class="kwd" style="font-family: Arial, 宋体; font-size: 14px; color: #00008b;">or</span><span class="pln" style="font-family: Arial, 宋体; font-size: 14px; color: #000000;"> </span><span class="str" style="font-family: Arial, 宋体; font-size: 14px; color: #800000;">'\h'</span><span class="pln" style="font-family: Arial, 宋体; font-size: 14px; color: #000000;"> </span><span class="kwd" style="font-family: Arial, 宋体; font-size: 14px; color: #00008b;">for</span><span class="pln" style="font-family: Arial, 宋体; font-size: 14px; color: #000000;"> help</span><span class="pun" style="font-family: Arial, 宋体; font-size: 14px; color: #000000;">.</span><span class="pln" style="font-family: Arial, 宋体; font-size: 14px; color: #000000;"> </span><span class="typ" style="font-family: Arial, 宋体; font-size: 14px; color: #2b91af;">Type</span><span class="pln" style="font-family: Arial, 宋体; font-size: 14px; color: #000000;"> </span><span class="str" style="font-family: Arial, 宋体; font-size: 14px; color: #800000;">'\c'</span><span class="pln" style="font-family: Arial, 宋体; font-size: 14px; color: #000000;"> to clear the current input statement</span><span class="pun" style="font-family: Arial, 宋体; font-size: 14px; color: #000000;">.</span><span class="pln" style="font-family: Arial, 宋体; font-size: 14px; color: #000000;">

mysql</span><span class="pun" style="font-family: Arial, 宋体; font-size: 14px; color: #000000;">&gt;</span><span class="pln" style="font-family: Arial, 宋体; font-size: 14px; color: #000000;"> reset master</span><span class="pun" style="font-family: Arial, 宋体; font-size: 14px; color: #000000;">;</span><span class="pln" style="font-family: Arial, 宋体; font-size: 14px; color: #000000;">
</span><span class="typ" style="font-family: Arial, 宋体; font-size: 14px; color: #2b91af;">Query</span><span class="pln" style="font-family: Arial, 宋体; font-size: 14px; color: #000000;"> OK</span><span class="pun" style="font-family: Arial, 宋体; font-size: 14px; color: #000000;">,</span><span class="pln" style="font-family: Arial, 宋体; font-size: 14px; color: #000000;"> </span><span class="lit" style="font-family: Arial, 宋体; font-size: 14px; color: #800000;">0</span><span class="pln" style="font-family: Arial, 宋体; font-size: 14px; color: #000000;"> rows affected </span><span class="pun" style="font-family: Arial, 宋体; font-size: 14px; color: #000000;">(</span><span class="lit" style="font-family: Arial, 宋体; font-size: 14px; color: #800000;">3</span><span class="pln" style="font-family: Arial, 宋体; font-size: 14px; color: #000000;"> min </span><span class="lit" style="font-family: Arial, 宋体; font-size: 14px; color: #800000;">37.65</span><span class="pln" style="font-family: Arial, 宋体; font-size: 14px; color: #000000;"> sec</span><span class="pun" style="font-family: Arial, 宋体; font-size: 14px; color: #000000;">)</span></pre><p style="font-family: Arial, 宋体; font-size: 14px; margin: 0px 0px 9px; line-height: 24px; color: #000000; font-style: normal; font-variant-ligatures: normal; font-variant-caps: normal; font-weight: 400; letter-spacing: normal; orphans: 2; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px; -webkit-text-stroke-width: 0px; text-decoration-style: initial; text-decoration-color: initial;">其实关键的命令就是<code style="font-family: Consolas, Menlo, Monaco, &quot;Lucida Console&quot;, &quot;Liberation Mono&quot;, &quot;DejaVu Sans Mono&quot;, &quot;Bitstream Vera Sans Mono&quot;, &quot;Courier New&quot;, monospace, serif; background-color: #e1e1e1;">reset master;</code>这个命令会清空mysql-bin文件。</p><p style="font-family: Arial, 宋体; font-size: 14px; margin: 0px 0px 9px; line-height: 24px; color: #000000; font-style: normal; font-variant-ligatures: normal; font-variant-caps: normal; font-weight: 400; letter-spacing: normal; orphans: 2; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px; -webkit-text-stroke-width: 0px; text-decoration-style: initial; text-decoration-color: initial;">另外如果你的mysql服务器不需要做主从复制的话，建议通过修改my.cnf文件，来设置不生成这些文件，只要删除my.cnf中的下面一行就可以了。</p><pre class="prettyprint conf prettyprinted" style="padding: 5px; font-family: Consolas, Menlo, Monaco, &quot;Lucida Console&quot;, &quot;Liberation Mono&quot;, &quot;DejaVu Sans Mono&quot;, &quot;Bitstream Vera Sans Mono&quot;, &quot;Courier New&quot;, monospace, serif; margin-bottom: 10px; background-color: #e1e1e1; overflow: auto; width: auto; white-space: pre; color: #000000; font-size: 12px; font-style: normal; font-variant-ligatures: normal; font-variant-caps: normal; font-weight: 400; letter-spacing: normal; orphans: 2; text-align: start; text-indent: 0px; text-transform: none; widows: 2; word-spacing: 0px; -webkit-text-stroke-width: 0px; text-decoration-style: initial; text-decoration-color: initial;"><span class="pln" style="font-family: Arial, 宋体; font-size: 14px; color: #000000;">log</span><span class="pun" style="font-family: Arial, 宋体; font-size: 14px; color: #000000;">-</span><span class="pln" style="font-family: Arial, 宋体; font-size: 14px; color: #000000;">bin</span><span class="pun" style="font-family: Arial, 宋体; font-size: 14px; color: #000000;">=</span><span class="pln" style="font-family: Arial, 宋体; font-size: 14px; color: #000000;">mysql</span><span class="pun" style="font-family: Arial, 宋体; font-size: 14px; color: #000000;">-</span><span class="pln" style="font-family: Arial, 宋体; font-size: 14px; color: #000000;">bin</span></pre><p style="font-family: Arial, 宋体; font-size: 14px; margin: 0px 0px 9px; line-height: 24px; color: #000000; font-style: normal; font-variant-ligatures: normal; font-variant-caps: normal; font-weight: 400; letter-spacing: normal; orphans: 2; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px; -webkit-text-stroke-width: 0px; text-decoration-style: initial; text-decoration-color: initial;">如果你需要复制，最好控制一下这些日志文件保留的天数，可以通过下面的配置设定日志文件保留的天数：</p><pre class="prettyprint conf prettyprinted" style="padding: 5px; font-family: Consolas, Menlo, Monaco, &quot;Lucida Console&quot;, &quot;Liberation Mono&quot;, &quot;DejaVu Sans Mono&quot;, &quot;Bitstream Vera Sans Mono&quot;, &quot;Courier New&quot;, monospace, serif; margin-bottom: 10px; background-color: #e1e1e1; overflow: auto; width: auto; white-space: pre; color: #000000; font-size: 12px; font-style: normal; font-variant-ligatures: normal; font-variant-caps: normal; font-weight: 400; letter-spacing: normal; orphans: 2; text-align: start; text-indent: 0px; text-transform: none; widows: 2; word-spacing: 0px; -webkit-text-stroke-width: 0px; text-decoration-style: initial; text-decoration-color: initial;"><span class="pln" style="font-family: Arial, 宋体; font-size: 14px; color: #000000;">expire_logs_days </span><span class="pun" style="font-family: Arial, 宋体; font-size: 14px; color: #000000;">=</span><span class="pln" style="font-family: Arial, 宋体; font-size: 14px; color: #000000;"> </span><span class="lit" style="font-family: Arial, 宋体; font-size: 14px; color: #800000;">7</span></pre><p style="font-family: Arial, 宋体; font-size: 14px; margin: 0px 0px 9px; line-height: 24px; color: #000000; font-style: normal; font-variant-ligatures: normal; font-variant-caps: normal; font-weight: 400; letter-spacing: normal; orphans: 2; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px; -webkit-text-stroke-width: 0px; text-decoration-style: initial; text-decoration-color: initial;">表示保留7天的日志，这样老日志会自动被清理掉。</p><img src ="http://www.cnitblog.com/201/aggbug/91376.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cnitblog.com/201/" target="_blank">David</a> 2019-04-01 17:49 <a href="http://www.cnitblog.com/201/archive/2019/04/01/91376.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>MySQL常见错误分析与解决方法总结</title><link>http://www.cnitblog.com/201/archive/2015/05/27/90110.html</link><dc:creator>David</dc:creator><author>David</author><pubDate>Wed, 27 May 2015 07:03:00 GMT</pubDate><guid>http://www.cnitblog.com/201/archive/2015/05/27/90110.html</guid><wfw:comment>http://www.cnitblog.com/201/comments/90110.html</wfw:comment><comments>http://www.cnitblog.com/201/archive/2015/05/27/90110.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cnitblog.com/201/comments/commentRss/90110.html</wfw:commentRss><trackback:ping>http://www.cnitblog.com/201/services/trackbacks/90110.html</trackback:ping><description><![CDATA[<p><strong>一、Can&#8217;t connect to MySQL server on &#8216;localhost&#8217; (10061)</strong><br /> 翻译：不能连接到 localhost 上的mysql<br /> 分析：这说明&#8220;localhost&#8221;计算机是存在的，但在这台机器上却没提供MySQL服务。<br /> 需要启动这台机器上的MySQL服务,如果机子负载太高没空相应请求也会产生这个错误。<br /> 解决:既然没有启动那就去启动这台机子的mysql。如果启动不成功，多数是因为你的my.ini配置的有问题。重新配置其即可。<br /> 如果觉得mysql负载异常，可以到mysql/bin 的目录下执行mysqladmin -uroot -p123 processlist来查看mysql当前的进程。</p> <p><strong>二、Unknown MySQL Server Host &#8216;localhosadst&#8217; (11001)</strong><br /> 翻译：未知的MySQL服务器 localhosadst<br /> 分析：服务器 localhosasdst 不存在。或者根本无法连接<br /> 解决：仔细检查自己论坛下面的 ./config.inc.<a href="http://www.ttlsa.com/php/" title="php" target="_blank">php</a> 找到$dbhost重新设置为正确的mysql 服务器地址。</p> <p><strong>三、Access denied for user: &#8216;roota@localhost&#8217; (Using password: YES)</strong><br /> 翻译：用户 roota 访问 localhost 被拒绝（没有允许通过）<br /> 分析：造成这个错误一般数据库用户名和密码相对mysql服务器不正确<br /> 解决：仔细检查自己论坛下面的 ./config.inc.php 找到$dbuser、$dbpw核实后重新设置保存即可。</p> <p><strong>四、Access denied for user: &#8216;red@localhost&#8217; to database &#8216;newbbs&#8217;</strong><br /> 翻译：用户 red 在localhost 服务器上没有权限操作数据库newbbs<br /> 分析：这个提示和问题三是不同的。那个是在连接数据库的时候就被阻止了，而这个错误是在对数据库进行操作时引起的。比如在select  update等等。这个是因为该用户没有操作数据库相应的权力。比如select 这个操作在mysql.user.Select_priv里记录 Y  可以操作N 不可以操作。<br /> 解决：如果是自己的独立主机那么更新mysql.user 的相应用户记录，比如这里要更新的用户为red 。或者直接修改 ./config.inc.php 为其配置一个具有对数据库操作权限的用户<br /> 或者通过如下的命令来更新授权grant all privileges on dbname.* to &#8216;user&#8217;@&#8217;localhost&#8217; identified by &#8216;password&#8217;<br /> 提示：更新了mysql库中的记录一定要重启mysql服务器才能使更新生效<br /> FLUSH PRIVILEGES;</p> <p><strong>五、No Database Selected</strong><br /> 翻译：没有数据库被选择上<br /> 分析：产生的原因有两种<br /> config.inc.php 里面$dbname设置的不对。致使数据库根本不存在，所以在 $db-&gt;select_db($dbname); 时返回了false<br /> 和上面问题四是一样的，数据库用户没有select权限，同样会导致这样的错误。当你发现config.inc.php的设置没有任何问题，但还是提示这个错误，那一定就是这种情况了。<br /> 解决：对症下药<br /> 打开config.inc.php 找到$dbname核实重新配置并保存<br /> 同问题四的解决方法</p> <p><strong>六、Can&#8217;t open file: &#8216;xxx_forums.MYI&#8217;. (errno: 145)</strong><br /> 翻译：不能打开xxx_forums.MYI<br /> 问题分析：<br /> 这种情况是不能打开 cdb_forums.MYI 造成的，引起这种情况可能的原因有：<br /> 1、服务器非正常关机，数据库所在空间已满，或一些其它未知的原因，对数据库表造成了损坏。<br /> 2、类 unix 操作系统下直接将数据库文件拷贝移动会因为文件的属组问题而产生这个错误。<br /> 解决方法：<br /> 1、修复数据表<br /> 可以使用下面的两种方式修复数据表：（第一种方法仅适合独立主机用户）<br /> 1）使用 myisamchk ，MySQL 自带了专门用户数据表检查和修复的工具 &#8212;&#8212; myisamchk 。更改当前目录到 MySQL/bin  下面，一般情况下只有在这个下面才能运行 myisamchk 命令。常用的修复命令为：myisamchk -r 数据文件目录/数据表名.MYI；<br /> 2）通过 phpMyAdmin 修复， phpMyAdmin 带有修复数据表的功能，进入到某一个表中后，点击&#8220;操作&#8221;，在下方的&#8220;表维护&#8221;中点击&#8220;修复表&#8221;即可。<br /> 注意：以上两种修复方式在执行前一定要备份数据库。<br /> 2、修改文件的属组（仅适合独立主机用户）<br /> 1）复制数据库文件的过程中没有将数据库文件设置为 MySQL 运行的帐号可读写（一般适用于 <a href="http://www.ttlsa.com/linux/" title="linux" target="_blank">Linux</a> 和 FreeBSD 用户）。</p> <p><strong>七、Table &#8216;test.xxx_sessions&#8217; doesn&#8217;t exist</strong><br /> 翻译：xxxxx表不存在<br /> 分析：在执行sql语句时没有找到表，比如：SELECT * FROM xxx_members WHERE uid=&#8217;XX&#8217; 这里如果表xxx_members不存在于$dbname库里，那么就会提示这个错误。具体可分为以下三种情况来讨论：<br /> 安装插件或者hack时修改了程序文件，而忘记了对数据库作相应的升级。<br /> 后台使用了不完全备份，导入数据时没有导入到已经安装了相应版本的论坛的数据库中。<br /> 解决： 同样对症下药，不同的原因不同的处理方法。<br /> 仔细对照插件作者提供的安装说明，把遗漏的对数据库的操作补上，如果仍然不能解决问题，那么应该怀疑该插件的可用性了。去咨询一下插件作者，或者将其卸载。<br /> 不要张冠李戴，多大的脚就穿多大的鞋。总之使得程序文件和数据库配套即可.</p> <p><strong>八、Unknown column &#8216;column_name&#8217; in &#8216;field list&#8217;</strong><br /> 翻译：未知的字段名 column_name<br /> 分析：在执行sql语句是出现了指定表中没有的字段名称，就会出现这个错误。具体导致的原因可分为以下两种<br /> 安装插件或者hack时修改了程序文件，而忘记了对数据库作相应的升级。<br /> 程序文件和数据库不配套，比如d2.5的数据库配置给d4.1的程序来用肯定会出现这个错误。<br /> 解决： 导致的原因和问题八的1和 3是相同的，所以解决方法也一样。</p> <p><strong>九、You have an error in your SQL syntax</strong><br /> 翻译：有一个语法错误在你的sql中<br /> 分析：论坛标准的程序是没有sql语法错误的。所以造成这个错误的原因一般就两类<br /> 安装插件或擅自修改程序。<br /> 不同的数据库版本数据库导出导入，比如MySQL4.1的数据在导出的语句包含了MySQL4.0没有的功能，像字符集的设定，这时如果将这些sql导入到MySQL4.0的时候就会产生sql语法错误。<br /> 解决：<br /> 仔细检查看到底是哪里的错误，将其修正，实在不行就用标准程序把出错的程序替换。<br /> 在数据库备份的时候要留意，如果不打算倒入到其他版本的mysql中则不用特殊考虑，反之要特殊的设定。使用DZ4.1的后台数据备份，可以按照提示去设定想要的格式。独立主机的也可以在到处的时候将其导出为mysql4.0的格式。<br /> mysqldump -uroot -p &#8211;default-character-set=latin1 &#8211;set-charset=gbk &#8211;skip-opt databse &gt; test.sql</p> <p><strong>十、Duplicate entry &#8216;xxx&#8217; for key 1</strong><br /> 翻译：插入 xxx 使索引1重复<br /> 分析：索引如果是primary unique这两两种，那么数据表的数据对应的这个字段就必须保证其每条记录的唯一性。否则就会产生这个错误。<br /> 一般发生在对数据库写操作的时候，例如Discuz!4.1论坛程序要求所有会员的用户名username必须唯一，即username的索引是  unique，这时如果强行往cdb_members表里插入一个已有的username的记录就会发上这个错误，或者将一条记录的username更新  为已有的一个username。<br /> 改变表结构的时候也有可能导致这个错误。例如 Discuz!4.0论坛的数据库中cdb_members.username  的索引类型是index这个时候是允许有相同username的记录存在的，在升级到4.1的时候，因为要将username的索引由原来的index变  为unique。如果这时cdb_members里存在有相同的username的记录，那么就会引发这个错误。<br /> 导出数据据时有时会因为一些原因（作者目前还不清楚）导致同一条记录被重复导出，那么这个备份数据在导入的时候出现这个错误是在所难免的了。<br /> 修改了auto_increment的值，致使&#8220;下一个 Autoindex&#8221;为一条已经存在的记录<br /> 解决： 两种思路，一是破坏掉唯一性的索引。二是把重复的数据记录干掉，只保留一条。很显然第一种思路是不可取的。那么按照二的思路我们得出以下几种解决方法，对应上面的i ii iii<br /> 略<br /> 按照错误提示里的信息到数据库中将重复的记录删除，仅保留一条即可。之后继续执行升级操作。<br /> 这种情况发生的概率很小，可以用文本编辑器打开备份文档，查找重复的信息。将其多余的拿掉，仅保留一条即可。<br /> 查询出表中auto_increment最大的一条记录，设置auto_incerment比其大一即可。<br /> PS：repaire table &#8220;表名&#8220;，可以暂时解决问题。</p> <p><strong>十一、 Duplicate key name &#8216;xxx&#8217;</strong><br /> 翻译：索引名重复<br /> 分析：要创建的索引已经存在了，就会引发这个错误，这个错误多发生在升级的时候。可能是已经升级过的，重复升级引起的错误。也有可能是之前用户擅自加的索引，刚好与升级文件中的所以相同了。<br /> 解决： 看看已经存在的索引和要添加的索引是否一样，一样的话可以跳过这条sql语句，如果不一样那么现删除已存在的所以，之后再执行。</p> <p><strong>十二、 Duplicate column name &#8216;xxx&#8217;</strong><br /> 翻译：字段名xxx重复<br /> 分析：添加的字段xxx已经存在，多发生在升级过程中，与问题十二的产生是一样的。<br /> 解决： 看一下已经存在的字段是否和将要添加的字段属性完全相同，如果相同则可以跳过不执行这句sql，如果不一样则删除掉这个字段。之后继续执行升级程序。</p> <p><strong>十三、 Table &#8216;xxx&#8217; already exists</strong><br /> 翻译：数据表xxx已经存在<br /> 分析：xxx表已经存在于库中，再次试图创建这个名字的表就会引发这个错误。同样多发生在论坛的升级中。类似于问题十二。<br /> 解决： 看看已经存在的表是否和将要创建的表完全一样，一样的话可以跳过不执行这个sql，否则请将存在的表先删除，之后继续执行升级文件。</p> <p><strong>十四、 Can&#8217;t create database &#8216;xxx&#8217;. Database exists</strong><br /> 翻译：不能创建数据库xxx，数据库已经存在<br /> 分析：一个mysql下面的数据库名称必须保证唯一性，否则就会有这个错误。<br /> 解决：把已经存在的数据库改名或者把将要创建的数据库改名，总之不让他们的名称冲突。</p> <p><strong>十五、 小结（针对问题 11\12\13\14\15）</strong><br /> 此类问题错误提示中都暗藏一个关键词duplicate（重复）<br /> 那么对于mysql数据库来说什么东西是不能重复的呢？<br /> 数据库 database<br /> 同一个数据库下数据表 table<br /> 同一个数据表下字段 column<br /> 同一个数据表下索引 key<br /> 同一个数据表在索引唯一（UNIQUE PRIMARY）的情况下记录中的这些字段不可以重复</p> <p><strong>十六、Unknown system variable &#8216;NAMES&#8217;</strong><br /> 翻译：未知的系统变量NAMES<br /> 分析：Mysql版本不支持字符集设定，此时强行设定字符集就会出现这个错误。<br /> 解决： 将sql语句中的SET NAMES &#8216;xxx&#8217; 语句去掉</p> <p><strong>十七、 Lost connection to MySQL server during query</strong><br /> 翻译：MySQL服务器失去连接在查询期间<br /> 分析：远程连接数据库是有时会有这个问题。MySQL服务器在执行一条sql语句的时候失去了连接造成的。<br /> 解决： 一般不需要怎么去处理，如果频繁的出现那么考虑改善硬件环境。</p> <p><strong>十八、User &#8216;red&#8217; has exceeded the &#8216;max_updates&#8217; resource (current value: 500)</strong><br /> 翻译：msql用户red已经超过了&#8217;max_updates&#8217;（最大更新次数），&#8217;max_questions&#8217;（最大查询次数），&#8217;max_connections&#8217;（最大连接数），当前设定为500<br /> 分析：在mysql数据库的下有一个库为mysql，它其中有一个表为user这里面的纪录每一条都对应为一个mysql用户的授权。其中字段  max_questions max_updates max_connections分别记录着最大查询次数 最大更新数  最大连接数，当目前的任何一个参数大于任何一个设定的值就会产生这个错误。<br /> 解决： 独立主机用户可以直接修改授权表。修改完之后重启mysql或者跟新授权表，进入mysql提示符下执行<br /> FLUSH PRIVILEGES;<br /> 记得后面要有分号&#8217;;&#8217;<br /> 虚拟主机的用户如果总是出现这个问题可找空间商协商解决。</p> <p><strong>十九、Too many connections (1040)链接过多</strong><br /> 翻译：达到最大连接数<br /> 问题分析：<br /> 连接数超过了mysql设置的值，与max_connections 和wait_timeout 都有关系。wait_timeout的值越大，连接的空闲等待就越长，这样就会造成当前连接数越大<br /> 解决方法：<br /> 1.虚拟主机用户请联系空间商优化 MySQL 服务器的配置；<br /> 2.独立主机用户请联系服务器管理员优化 MySQL 服务器的配置，可参考：<br /> 修改 MySQL 配置文件 my.ini 或者 my.cnf 中的参数：<br /> max_connections= 1000<br /> wait_timeout = 10<br /> 修改后重启 MySQL ，如果经常性的报此错误，请做一下服务器的整体优化。</p> <p><strong>二十、There is no such grant defined for user &#8216;%s&#8217; on host &#8216;%s&#8217;</strong><br /> 错误编号：1141<br /> 问题分析：<br /> MySQL 当前用户无权访问数据库。<br /> 解决方法：<br /> 1、虚拟主机用户请联系空间商，确认给你提供的帐号是否有授权数据库的权限。<br /> 2、独立主机用户请联系服务器管理员，确认给您提供的数据库帐号是否有管理此数据库的权限。</p> <p><strong>二十一、Error on rename of &#8216;%s&#8217; to &#8216;%s&#8217; (errno: %d)</strong><br /> error.:1025<br /> 问题分析：<br /> 请检查一下您的程序是否有修改数据库表名的语句。<br /> 解决方法：<br /> 1.请检查您的程序中哪些地方需要修改数据库表名；<br /> 2.如果您的实际应用确实需要修改到数据库表名的话，请联系空间商或者服务器管理员给您开放修改库名的权限和服务器本身是否正常。</p> <p><strong>二十二、Error reading file &#8216;%s&#8217; (errno: %d)</strong><br /> error.:1023<br /> 问题分析：<br /> 数据库文件不能被读取。<br /> 解决方法：<br /> 1.虚拟主机用户请联系空间商查看数据库是否完好。<br /> 2.独立主机用户请联系服务器管理员检查一下 MySQL 本身是否正常， MySQL 是否可以读取文件，Linux 用户可以检查一下 MySQL 的数据库文件的属主是否正确以及本身的文件是否损坏。</p> <p><strong>二十三、Host &#8216;*****&#8217; is blocked because of many connection errors; unblock with &#8216;mysqladmin flush-hosts&#8217;</strong><br /> error.:1129<br /> 问题分析：<br /> 数据库出现异常，请重启数据库。<br /> 解决方法：<br /> 1. 由于存在很多连接错误，主机&#8217;****&#8217;被屏蔽，虚拟主机用户请联系空间商处理，独立主机用户请联系服务器管理员，在 MySQL 的命令控制台下执行&#8217;mysqladmin flush-hosts&#8217;解除屏蔽即可，或者重启 MySQL 数据库</p> <p><strong>二十四、dropping database (can&#8217;t delete &#8216;%s&#8217;, errno: %d)</strong><br /> error.:1009<br /> 问题分析：<br /> 不能删除数据库文件，导致删除数据库失败。<br /> 解决方法：<br /> 1.检查您使用的数据库管理帐号是否有权限删除数据。<br /> 2.检查数据库是否存在。</p> <p><strong>二十五、Got error 28 from table handler</strong><br /> error.:1030<br /> 问题分析：<br /> 数据库所在磁盘空间已满。<br /> 解决方法：<br /> 1.虚拟主机用户请联系空间商增加 MySQL 所在的磁盘空间或者清理一些无用文件；<br /> 2.独立主机用户请联系服务器管理员增加 MySQL 所在的磁盘空间或者清理一些无用文件</p> <p><strong>二十六、Can&#8217;t create a new thread; if you are not out of  available memory, you can consult the manual for a possible OS-dependent  bug。</strong><br /> error.:11/35<br /> 问题分析：<br /> 数据库服务器问题，数据库操作无法创建新线程。一般是两个原因：<br /> 1.服务器系统内存溢出。<br /> 2.环境软件损坏或系统损坏。<br /> 解决方法：<br /> 1.虚拟主机用户请联系下空间商数据库服务器的内存和系统是否正常。<br /> 2.独立主机用户请联系服务器管理员检查服务器的内存和系统是否正常，如果服务器内存紧张，请检查一下哪些进程消耗了服务器的内存，同时考虑是否增加服务器的内存来提高整个的负载能力。</p> <p><strong>二十七、Error: Client does not support authentication protocol requested by server; consider upgrading MySQL client</strong><br /> error.:1251<br /> 问题分析：<br /> 如果你升级 MySQL 到 4.1 以上版本后遇到以上问题,请先确定你的 MySQL Client 是 4.1 或者更高版本( <a href="http://www.ttlsa.com/windows/" title="windows" target="_blank">Windows</a> 下有问题你就直接跳到下面看解决方法了，因为 MySQL 在 Windows 是 client 和 server 一起装上了的)。<br /> 解决方法：<br /> 1. Windows 平台<br /> 主要是改变连接 MySQL 的帐户的加密方式，MySQL 4.1/5.0 是通过 PASSWORD 这种方式加密的。可以通过以下两种方法得到解决：<br /> 1) mysql-&gt;SET PASSWORD FOR &#8216;some_user&#8217;@&#8217;some_host&#8217;=OLD_PASSWORD(&#8216;new_password&#8217;);<br /> 2) mysql-&gt;UPDATE mysql.user SET Password=OLD_PASSWORD(&#8216;new_password&#8217;) WHERE Host=&#8217;some_host&#8217; AND User=&#8217;some_user';<br /> 2. Linux/Unix 平台<br /> Linux 平台下首先确定是否安装过 MySQL 的客户端，这个用 rpm 安装很简单，Linux 代码为：<br /> rpm -ivh MySQL-client-4.1.15-0.i386.rpm<br /> 然后在编译 php 的时候要加上：<br /> &#8211;with-mysql=/your/path/to/mysql<br /> 一般情况下都可以解决。如果还出现这种错误，可以按照下面的方法来做：<br /> mysql-&gt;SET PASSWORD FOR &#8216;some_user&#8217;@&#8217;some_host&#8217;=OLD_PASSWORD(&#8216;new_password&#8217;);<br /> mysql-&gt;UPDATE mysql.user SET Password=OLD_PASSWORD(&#8216;new_password&#8217;) WHERE Host=&#8217;some_host&#8217; AND User=&#8217;some_user';</p> <p><strong>二十八、Error: Can&#8217;t connect to local MySQL server through socket &#8216;/var/lib/mysql/mysql.sock&#8217;</strong><br /> error.:2002<br /> 问题分析：<br /> 出现这个错误一般情况下是因为下面两个原因：<br /> 1.MySQL 服务器没有开启。<br /> 2.MySQL 服务器开启了，但不能找到 socket 文件。<br /> 解决方法：<br /> 1.虚拟主机用户，请联系空间商确认数据库是否正常启动。<br /> 2.独立主机用户，请检查一下 MySQL 服务是否已经开启，没有开启，请启动 MySQL 服务；如果已经开启，并且是 Linux 系统，请检查一下 MySQL 的 socket 的路径，然后打开 config.inc.php 找到<br /> $dbhost = &#8216;localhost'; 在 hostname 后面加冒号&#8216;:&#8217;和 MySQL 的 socket 的路径。<br /> 比如 MySQL 服务器为 localhost<br /> MySQL 的 socket 的路径为 /tmp/mysql.sock<br /> 那么就改成如下：<br /> $dbhost = &#8216;localhost:/temp/mysql.sock';</p> <p><strong>二十九、Can&#8217;t connect to MySQL server on &#8216;localhost&#8217;</strong><br /> error.:2003<br /> 问题分析：<br /> MySQL 服务没有启动，一般是在异常的情况下 MySQL 无法启动导致的，比如无可用的磁盘空间，my.ini 里 MySQL 的 basedir 路径设置错误等。<br /> 解决方法：<br /> 1.检查磁盘空间是否还有剩余可用空间，尽量保持有足够的磁盘空间可用。<br /> 2.检查 my.ini 里的 basedir 等参数设置是否正确，然后重新启动下 MySQL 服务。</p> <p><strong>三十、Lost connection to MySQL server during query</strong><br /> error.:2013<br /> 问题分析：<br /> 数据库查询过程中丢失了与 MySQL 服务器的连接。<br /> 解决方法：<br /> 1.请确认您的程序中是否有效率很低的程序，比如某些插件，可以卸载掉插件，检查一下服务器是否正常；<br /> 2.服务器本身资源紧张，虚拟主机用户请联系空间商确认，独立主机用户请联系服务器管理员，检查一下服务器是否正常。</p> <p><strong>三十一、Got a packet bigger than \&#8217;max_allowed_packet\&#8217; bytes</strong><br /> 错误编号：1153<br /> 问题分析：调整了 Mantis 的上传附件的大小却没有调整 MySQL 的配置文件。<br /> 解决办法：<br /> 1、独立主机用户请按照以下方法调整：<br /> 查找 MySQL 的配置文件（my.cnf 或者 my.ini）<br /> 在 [mysqld] 部分添加一句（如果存在，调整其值就可以）：<br /> max_allowed_packet=10M<br /> 重启 MySQL 服务就可以了。这里设置的是 10MB。<br /> 2、虚拟主机用户请联系空间商调整此参数。</p><img src ="http://www.cnitblog.com/201/aggbug/90110.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cnitblog.com/201/" target="_blank">David</a> 2015-05-27 15:03 <a href="http://www.cnitblog.com/201/archive/2015/05/27/90110.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>使用blockrecover 对有坏块的数据文件进行恢复</title><link>http://www.cnitblog.com/201/archive/2012/08/27/84693.html</link><dc:creator>David</dc:creator><author>David</author><pubDate>Mon, 27 Aug 2012 09:40:00 GMT</pubDate><guid>http://www.cnitblog.com/201/archive/2012/08/27/84693.html</guid><description><![CDATA[使用blockrecover 对有坏块的数据文件进行恢复。<br /><br />先做一个测试环境。<br />SQL&gt; create tablespace tbs4 datafile '/oracle/oradata/pradb/tbs4.dbf' size 20m;<br /><br />Tablespace created.<br /><br /><br />SQL&gt; create table test_blk tablespace tbs4 as select * from dba_objects;<br /><br />Table created.<br /><br />SQL&gt; select count(*) from test_blk;<br /><br />  COUNT(*)<br />----------<br />     50720<br /><br />到此做一个数据的全备份。<br />RMAN&gt; run{<br />2&gt; allocate channel dev1 type disk;<br />3&gt; allocate channel dev2 type disk;<br />4&gt; backup tag='db_full_back_200907011656' database;<br />5&gt; release channel dev1;<br />6&gt; release channel dev2;<br />7&gt; }<br /><br /><br />为了保证数据文本版本的一致性，我把数据库关闭后模拟数据块的损坏。<br />SQL&gt; shutdown immediate<br />Database closed.<br />Database dismounted.<br />ORACLE instance shut down.<br /><br />用二进制编辑器编辑数据文件tbs4.dbf，我用的是FlexHEX.<br />说明:用vi或windows下的notepad都会造成整个数据文件的损坏，不建议使用文本编辑器。<br />把数据文本下载到windows下，用FlexHEX打开后，在主编辑窗口修改几个数值，然后保存。<br />把原来的数据文件tbs4.dbf改名为tbs4_back.dbf.然后把编辑过的文件传回来。<br /><br /><br />SQL&gt; startup<br />ORACLE instance started.<br /><br />Total System Global Area  285212672 bytes<br />Fixed Size                  1267044 bytes<br />Variable Size             155191964 bytes<br />Database Buffers          121634816 bytes<br />Redo Buffers                7118848 bytes<br />Database mounted.<br />Database opened.<br /><br />数据块有损坏，在启动过程中不会有任何错误提示。<br />但是我们在对驻留在该文件中的表做查询时就会报错：<br />SQL&gt; select count(*) from test_blk;<br />select count(*) from test_blk<br />                     *<br />ERROR at line 1:<br />ORA-01578: ORACLE data block corrupted (file # 14, block # 56)<br />ORA-01110: data file 14: '/oracle/oradata/pradb/tbs4.dbf'<br /><br />根据提示我们发现该文件有数据块损坏。<br />我们用dbv实用程序对该文件做数据块的检验:<br />[oracle@ceedb pradb]$ dbv file=tbs4.dbf blocksize=8192<br /><br />DBVERIFY: Release 10.2.0.4.0 - Production on Wed Jul 1 17:14:03 200<br /><br />Copyright (c) 1982, 2007, Oracle.  All rights reserved.<br /><br />DBVERIFY - Verification starting : FILE = tbs4.dbf<br />Page 56 is marked corrupt<br />Corrupt block relative dba: 0x03800038 (file 14, block 56)<br />Bad check value found during dbv:<br />Data in bad block:<br /> type: 6 format: 2 rdba: 0x03800038<br /> last change scn: 0x0000.003598ce seq: 0x1 flg: 0x04<br /> spare1: 0x0 spare2: 0x0 spare3: 0x0<br /> consistency value in tail: 0x98ce0601<br /> check value in block header: 0xd1d8<br /> computed block checksum: 0x2400<br /><br />Page 107 is marked corrupt<br />Corrupt block relative dba: 0x0380006b (file 14, block 107)<br />Bad check value found during dbv:<br />Data in bad block:<br /> type: 6 format: 2 rdba: 0x0380006b<br /> last change scn: 0x0000.003598e2 seq: 0x1 flg: 0x04<br /> spare1: 0x0 spare2: 0x0 spare3: 0x0<br /> consistency value in tail: 0x98e20601<br /> check value in block header: 0x4b8b<br /> computed block checksum: 0x3364<br /><br />Page 276 is marked corrupt<br />Corrupt block relative dba: 0x03800114 (file 14, block 276)<br />Bad check value found during dbv:<br />Data in bad block:<br /> type: 6 format: 2 rdba: 0x03800114<br /> last change scn: 0x0000.003598eb seq: 0x2 flg: 0x04<br /> spare1: 0x0 spare2: 0x0 spare3: 0x0<br /> consistency value in tail: 0x98eb0602<br /> check value in block header: 0x384c<br /> computed block checksum: 0x202d<br /><br />Page 517 is marked corrupt<br />Corrupt block relative dba: 0x03800205 (file 14, block 517)<br />Bad check value found during dbv:<br />Data in bad block:<br /> type: 6 format: 2 rdba: 0x03800205<br /> last change scn: 0x0000.003598f3 seq: 0x1 flg: 0x04<br /> spare1: 0x0 spare2: 0x0 spare3: 0x0<br /> consistency value in tail: 0x98f30601<br /> check value in block header: 0xab3e<br /> computed block checksum: 0x2d20<br /><br /> <br /><br />DBVERIFY - Verification complete<br /><br />Total Pages Examined         : 2560<br />Total Pages Processed (Data) : 693<br />Total Pages Failing   (Data) : 0<br />Total Pages Processed (Index): 0<br />Total Pages Failing   (Index): 0<br />Total Pages Processed (Other): 28<br />Total Pages Processed (Seg)  : 0<br />Total Pages Failing   (Seg)  : 0<br />Total Pages Empty            : 1835<br />Total Pages Marked Corrupt   : 4<br />Total Pages Influx           : 0<br />Highest block SCN            : 3512569 (0.3512569)<br /><br />可见有4个块损坏。分别是56，107，276，517块。<br /><br />我们还可以用<br />RMAN&gt; backup validate database;<br />对数据库中的坏块进行验证。<br />RMAN&gt; backup validate database;<br /><br />Starting backup at 01-JUL-09<br />using target database control file instead of recovery catalog<br />allocated channel: ORA_DISK_1<br />channel ORA_DISK_1: sid=133 devtype=DISK<br />channel ORA_DISK_1: starting full datafile backupset<br />channel ORA_DISK_1: specifying datafile(s) in backupset<br />input datafile fno=00001 name=/oracle/oradata/pradb/system01.dbf<br />input datafile fno=00003 name=/oracle/oradata/pradb/sysaux01.dbf<br />input datafile fno=00007 name=/oracle/oradata/pradb/idx_tbs.dbf<br />input datafile fno=00005 name=/oracle/oradata/pradb/example01.dbf<br />input datafile fno=00011 name=/oracle/oradata/pradb/PRADB/datafile/o1_mf_tbs2_52hhn82h_.dbf<br />input datafile fno=00008 name=/oracle/oradata/pradb/undo2.dbf<br />input datafile fno=00009 name=/oracle/oradata/pradb/audit_tab.dbf<br />input datafile fno=00010 name=/oracle/oradata/pradb/audit_idx.dbf<br />input datafile fno=00002 name=/oracle/oradata/pradb/tbs_test02.dbf<br />input datafile fno=00006 name=/oracle/oradata/pradb/tbs_test01.dbf<br />input datafile fno=00012 name=/oracle/oradata/pradb/testtbs.dbf<br />input datafile fno=00014 name=/oracle/oradata/pradb/tbs4.dbf<br />input datafile fno=00013 name=/oracle/oradata/pradb/test3.dbf<br />input datafile fno=00004 name=/oracle/oradata/pradb/users01.dbf<br /><br />channel ORA_DISK_1: backup set complete, elapsed time: 00:00:25<br />Finished backup at 01-JUL-09<br /><br />检验后我们查 V$DATABASE_BLOCK_CORRUPTION<br />SQL&gt; select * from v$database_block_corruption;<br /><br />     FILE#     BLOCK#     BLOCKS CORRUPTION_CHANGE# CORRUPTIO<br />---------- ---------- ---------- ------------------ ---------<br />        14        276          1                  0 CHECKSUM<br />        14        517          1                  0 CHECKSUM<br />        14        107          1                  0 CHECKSUM<br />        14         56          1                  0 CHECKSUM<br /><br /><br />刚才那些坏块都被列入到了视图V$DATABASE_BLOCK_CORRUPTION中。<br /><br />为了不影响业务的运行，通过RMAN使用oracle BMR(Block Media Recover).<br />BMR可以比使用restore database节省大量的宕机时间，在恢复期间只有坏块的文件不可访问，而<br />其他可以继续访问。<br /><br /><br />RMAN&gt; blockrecover datafile 14 block 56,107,276,517;<br /><br />Starting blockrecover at 01-JUL-09<br />using channel ORA_DISK_1<br /><br />channel ORA_DISK_1: restoring block(s)<br />channel ORA_DISK_1: specifying block(s) to restore from backup set<br />restoring blocks of datafile 00014<br />channel ORA_DISK_1: reading from backup piece /oracle/flash_recovery_area/PRADB/backup...<br />channel ORA_DISK_1: restored block(s) from backup piece 1<br />piece handle=/oracle/flash_recovery_area/PRADB/backupset/2009_07_01/o1_mf_nnndf_DB_FUL...<br />channel ORA_DISK_1: block restore complete, elapsed time: 00:00:04<br /><br />starting media recovery<br />media recovery complete, elapsed time: 00:00:04<br /><br />Finished blockrecover at 01-JUL-09<br /><br /><br />还可以通过RMAN&gt; blockrecover corruption list进行块的恢复，这是在大量块损坏时或全部块损坏时使用，<br />前提是先执行RMAN&gt;backup validate database,在V$DATABASE_BLOCK_CORRUPTION里有对应的坏块的列表。<br />RMAN&gt; blockrecover corruption list;<br /><br />Starting blockrecover at 01-JUL-09<br />using channel ORA_DISK_1<br /><br />starting media recovery<br />media recovery complete, elapsed time: 00:00:00<br /><br />Finished blockrecover at 01-JUL-09<br /><br /><br />恢复完成后，我们进行一下验证<br />[oracle@ceedb pradb]$ dbv file=tbs4.dbf blocksize=8192<br /><br />DBVERIFY: Release 10.2.0.4.0 - Production on Wed Jul 1 17:31:19 2009<br /><br />Copyright (c) 1982, 2007, Oracle.  All rights reserved.<br /><br />DBVERIFY - Verification starting : FILE = tbs4.dbf<br /><br /><br />DBVERIFY - Verification complete<br /><br />Total Pages Examined         : 2560<br />Total Pages Processed (Data) : 697<br />Total Pages Failing   (Data) : 0<br />Total Pages Processed (Index): 0<br />Total Pages Failing   (Index): 0<br />Total Pages Processed (Other): 28<br />Total Pages Processed (Seg)  : 0<br />Total Pages Failing   (Seg)  : 0<br />Total Pages Empty            : 1835<br />Total Pages Marked Corrupt   : 0<br />Total Pages Influx           : 0<br />Highest block SCN            : 3512569 (0.3512569)<br /><br />没有报告坏块。<br />再对test_blk执行查询<br />SQL&gt; select count(*) from test_blk;<br /><br />  COUNT(*)<br />----------<br />     50720<br /><br />可见恢复成功。<img src ="http://www.cnitblog.com/201/aggbug/84693.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cnitblog.com/201/" target="_blank">David</a> 2012-08-27 17:40 <a href="http://www.cnitblog.com/201/archive/2012/08/27/84693.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>WARNING: db_recovery_file_dest_size of 4070572032 bytes is 100.00% used, 错误解决方法</title><link>http://www.cnitblog.com/201/archive/2011/09/19/75540.html</link><dc:creator>David</dc:creator><author>David</author><pubDate>Mon, 19 Sep 2011 06:09:00 GMT</pubDate><guid>http://www.cnitblog.com/201/archive/2011/09/19/75540.html</guid><wfw:comment>http://www.cnitblog.com/201/comments/75540.html</wfw:comment><comments>http://www.cnitblog.com/201/archive/2011/09/19/75540.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cnitblog.com/201/comments/commentRss/75540.html</wfw:commentRss><trackback:ping>http://www.cnitblog.com/201/services/trackbacks/75540.html</trackback:ping><description><![CDATA[bash-3.00$ sqlplus / AS SYSDBA<br /><br />SQL*Plus: Release 11.2.0.1.0 Production on Wed Jun 1 18:02:57 2011<br /><br />Copyright (c) 1982, 2009, Oracle.  All rights reserved.<br /><br />Connected to an idle instance.<br /><br />SQL&gt; startup nomount<br />ORACLE instance started.<br /><br />Total System Global Area 6396977152 bytes<br />Fixed Size                  2222960 bytes<br />Variable Size            3338667152 bytes<br />Database Buffers         3036676096 bytes<br />Redo Buffers               19410944 bytes<br />SQL&gt; show parameter db_recovery_file_dest_size<br /><br />NAME                                 TYPE        VALUE<br />------------------------------------ ----------- ------------------------------<br />db_recovery_file_dest_size           big integer 3882M<br />SQL&gt; alter system set db_recovery_file_dest_size=4882M scope=spfile;<br /><br />System altered.<br /><br />SQL&gt; shutdown<br />ORA-01507: database not mounted<br /><br /><br />ORACLE instance shut down.<br />SQL&gt; startup<br />ORACLE instance started.<br /><br />Total System Global Area 6396977152 bytes<br />Fixed Size                  2222960 bytes<br />Variable Size            3338667152 bytes<br />Database Buffers         3036676096 bytes<br />Redo Buffers               19410944 bytes<br />Database mounted.<br />ORA-03113: end-of-file on communication channel<br />Process ID: 1017<br />Session ID: 421 Serial number: 5<br /><br /><br />SQL&gt;<img src ="http://www.cnitblog.com/201/aggbug/75540.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cnitblog.com/201/" target="_blank">David</a> 2011-09-19 14:09 <a href="http://www.cnitblog.com/201/archive/2011/09/19/75540.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Centos_x64 5.6+Oracle 11g x64 开机启动  	[</title><link>http://www.cnitblog.com/201/archive/2011/09/13/75438.html</link><dc:creator>David</dc:creator><author>David</author><pubDate>Tue, 13 Sep 2011 03:12:00 GMT</pubDate><guid>http://www.cnitblog.com/201/archive/2011/09/13/75438.html</guid><wfw:comment>http://www.cnitblog.com/201/comments/75438.html</wfw:comment><comments>http://www.cnitblog.com/201/archive/2011/09/13/75438.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cnitblog.com/201/comments/commentRss/75438.html</wfw:commentRss><trackback:ping>http://www.cnitblog.com/201/services/trackbacks/75438.html</trackback:ping><description><![CDATA[设置oracle自动启动<br /> 如果你想要Oracle数据库随系统的启动而自动启动，请按照以下步骤操作。<br /> 1. 修改oratab文件，把需要自动启动的实例的条目的最后一个字母改为"Y"<div><div id="code11"><ol><li>#vi /etc/oratab<br /> </li><li>hackweb:/opt/app/oracle:N (修改为：Y)</li></ol></div><em>复制代码</em></div>2.&nbsp; &nbsp;修改$ORACLE_HOME/bin/dbstart脚本<br /> Oracle 11自带的dbstart脚本根据操作系统以及系统版本的不同可能会需要进行细微的调整。<br /> 1 . 修改ORACLE_HOME_LISTNER变量<div><div id="code12"><ol><li>vi /home/u01/app/oracle/bin/dbstart <br /> </li><li>ORACLE_HOME_LISTNER=/ade/vikrkuma_new/oracle替换为$ORACLE_HOME，示例如下：<br /> </li><li>ORACLE_HOME_LISTNER=$ORACLE_HOME</li></ol></div><em>复制代码</em></div>在webmin--引导和关机--新建开机脚本<br /> 加入一下命令：<br /><br /> su - oracle -c 'dbstart'<br /> su - oracle -c 'lsnrctl start'<br /> su - oracle -c 'emctl start dbconsole'<br /><img src ="http://www.cnitblog.com/201/aggbug/75438.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cnitblog.com/201/" target="_blank">David</a> 2011-09-13 11:12 <a href="http://www.cnitblog.com/201/archive/2011/09/13/75438.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Oracle 11g删除 </title><link>http://www.cnitblog.com/201/archive/2011/09/08/75390.html</link><dc:creator>David</dc:creator><author>David</author><pubDate>Thu, 08 Sep 2011 00:41:00 GMT</pubDate><guid>http://www.cnitblog.com/201/archive/2011/09/08/75390.html</guid><wfw:comment>http://www.cnitblog.com/201/comments/75390.html</wfw:comment><comments>http://www.cnitblog.com/201/archive/2011/09/08/75390.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cnitblog.com/201/comments/commentRss/75390.html</wfw:commentRss><trackback:ping>http://www.cnitblog.com/201/services/trackbacks/75390.html</trackback:ping><description><![CDATA[<div><div lh22="">             原创作品，允许转载，转载时请务必以超链接形式标明文章 <a href="http://soulful.blog.51cto.com/468033/378995" target="_blank" style="text-decoration:underline">原始出处</a> 、作者信息和本声明。否则将追究法律责任。<a href="http://soulful.blog.51cto.com/468033/378995">http://soulful.blog.51cto.com/468033/378995</a>             </div>                    		<div>     		  <p><span style="font-size: 12px">1.使用SQL*PLUS停止数据库<br /> [oracle@OracleTest oracle]$ sqlplus /nolog<br /> SQL&gt; connect / as sysdba<br /> SQL&gt; shutdown [immediate]<br /> SQL&gt; exit</span></p> <p><span style="font-size: 12px">2.停止Listener<br /> [oracle@OracleTest oracle]$ lsnrctl stop</span></p> <p><span style="font-size: 12px">3.停止HTTP服务<br /> </span><span style="font-size: 12px">[root@OracleTest /root]# service httpd stop</span></p> <p><span style="font-size: 12px">4.用su或者重新登录到root(如想重新安装可以保留oracle用户，省得输入环境变量了)</span></p> <p><span style="font-size: 12px">5.将安装目录删除<br /> [root@OracleTest /root]# rm -rf&nbsp; /u01/app/oracle/</span></p> <p><span style="font-size: 12px">6.将/usr/bin下的文件删除<br /> [root@OracleTest /root]# rm /usr/local/bin/dbhome<br /> [root@OracleTest /root]# rm /usr/local/bin/oraenv<br /> [root@OracleTest /root]# rm /usr/local/bin/coraenv</span></p> <p><span style="font-size: 12px">7.将/etc/oratab删除<br /> [root@OracleTest /root]# rm /etc/oratab</span></p> <p><span style="font-size: 12px">8.将/etc/oraInst.loc删除<br /> [root@OracleTest /root]# rm /etc/oraInst.loc</span></p> <p><span style="font-size: 12px">9.将oracle用户删除(若要重新安装,可以不删除)<br /> [root@OracleTest /root]# userdel &#8211;r oracle</span></p> <p><span style="font-size: 12px">10.将用户组删除(若要重新安装,可以不删除)<br /> [root@OracleTest /root]# groupdel oinstall<br /> [root@OracleTest /root]# groupdel dba</span></p> <p><span style="font-size: 12px">11.将启动服务删除<br /> [root@OracleTest /root]# chkconfig --del dbora<br /> 到此为止重启后，你的Linux系统下的Oracle数据库已完全删除了！！！</span></p> <p>以上是CentOS5.4+Oracle 11g的环境。</p> <p>如果要再次安装， 最好先做一些备份工作。<br /> 包括用户的登录脚本，数据库自动启动关闭的脚本，和Listener自动启动的脚本。<br /> 要是有可能连创建数据库的脚本也保存下来。</p><p>本文出自 &#8220;<a href="http://soulful.blog.51cto.com/">生命不止，战斗不息！</a>&#8221; 博客，请务必保留此出处<a href="http://soulful.blog.51cto.com/468033/378995">http://soulful.blog.51cto.com/468033/378995</a></p>     		</div></div><img src ="http://www.cnitblog.com/201/aggbug/75390.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cnitblog.com/201/" target="_blank">David</a> 2011-09-08 08:41 <a href="http://www.cnitblog.com/201/archive/2011/09/08/75390.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>MYSQL 批量更新 对应字段内容</title><link>http://www.cnitblog.com/201/archive/2010/09/09/68747.html</link><dc:creator>David</dc:creator><author>David</author><pubDate>Thu, 09 Sep 2010 07:00:00 GMT</pubDate><guid>http://www.cnitblog.com/201/archive/2010/09/09/68747.html</guid><wfw:comment>http://www.cnitblog.com/201/comments/68747.html</wfw:comment><comments>http://www.cnitblog.com/201/archive/2010/09/09/68747.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cnitblog.com/201/comments/commentRss/68747.html</wfw:commentRss><trackback:ping>http://www.cnitblog.com/201/services/trackbacks/68747.html</trackback:ping><description><![CDATA[update components set initialowner=replace(initialowner,'13','9');<br> <img src ="http://www.cnitblog.com/201/aggbug/68747.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cnitblog.com/201/" target="_blank">David</a> 2010-09-09 15:00 <a href="http://www.cnitblog.com/201/archive/2010/09/09/68747.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>SQL Server维护计划实现数据库定时自动备份</title><link>http://www.cnitblog.com/201/archive/2010/01/11/63668.html</link><dc:creator>David</dc:creator><author>David</author><pubDate>Mon, 11 Jan 2010 06:32:00 GMT</pubDate><guid>http://www.cnitblog.com/201/archive/2010/01/11/63668.html</guid><wfw:comment>http://www.cnitblog.com/201/comments/63668.html</wfw:comment><comments>http://www.cnitblog.com/201/archive/2010/01/11/63668.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cnitblog.com/201/comments/commentRss/63668.html</wfw:commentRss><trackback:ping>http://www.cnitblog.com/201/services/trackbacks/63668.html</trackback:ping><description><![CDATA[在SQL Server中出于数据安全的考虑，所以需要定期的备份数据库。而备份数据库一般又是在凌晨时间基本没有数据库操作的
时候进行，所以我们不可能要求管理员每天守到晚上1点去备份数据库。要实现数据库的定时自动备份，最常用的方式就是使用SQL
Server代理中的作业。启动SQL Server
Agent服务，然后在其中新建作业，作业中添加1个备份步骤，类型是T-SQL脚本，然后在命令中输入如下SQL语句，该语句实现了对数据库
TestDB1的完整备份，备份文件在C盘Backup文件夹中，文件名就是TestDB1+当时备份的日期字符串.bak。<br>
<br>
declare @name varchar(250)<br>
set @name='C:\Backup\TestDB1_'+<br>
convert(varchar(50),getdate(),112)+'.bak'<br>
BACKUP DATABASE [TestDB1] TO&nbsp; &nbsp;<br>
DISK = @name<br>
WITH NOFORMAT, NOINIT,&nbsp; &nbsp;<br>
NAME = N'TestDB1-完整 数据库 备份',<br>
SKIP, NOREWIND, NOUNLOAD<br>
创建好步骤以后，接下来就是创建计划，创建计划的操作十分简单，界面上说明的很详细了，我就不多说了。另外还可以配置警报和通知，不过一般很少用这个。<br>
<br>
使用SQL作业中执行SQL脚本进行备份的方法虽然已经很简单了，但是至少还是要去写BACKUP脚本，这点有些人觉得不爽，那有没有更简单，更懒的方法来实现数据库的自动定时备份呢？有，那就是&#8220;维护计划&#8221;。<br>
<br>
&#8220;维护计划&#8221;是在SSMS的对象资源管理中&#8220;管理&#8221;节点下面。使用维护计划可以通过可视化的操作，只点点鼠标就可以创建数据库维护的SSIS包，然后仍然
是通过SQL Server作业的方式来运行。维护计划与前面说到的备份方法本质的不同就是：维护计划是SSIS包，上面的是T-SQL脚本。<br>
<br>
假设我们现在有一个生产系统的数据库需要进行备份，由于数据库中的数据很多，数据文件很大，如果每次都进行完整备份那么硬盘占用了很大空间，而且备份时间
很长，维护起来也很麻烦。对此我们可以采用完整备份+差异备份的方式，每周日进行一次完整备份，每天晚上进行一次差异备份。使用差异备份可以减小备份文件
的大小，同时还可以提高备份的速度，不过缺点就是必须使用上一次完整备份的文件和差异备份的文件才能还原差异备份时刻的数据库，单独只有差异备份文件是没
有意义。
<br><img src ="http://www.cnitblog.com/201/aggbug/63668.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cnitblog.com/201/" target="_blank">David</a> 2010-01-11 14:32 <a href="http://www.cnitblog.com/201/archive/2010/01/11/63668.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>让linux每天定时备份MySQL数据库并删除五天前的备份文件</title><link>http://www.cnitblog.com/201/archive/2010/01/11/63667.html</link><dc:creator>David</dc:creator><author>David</author><pubDate>Mon, 11 Jan 2010 06:31:00 GMT</pubDate><guid>http://www.cnitblog.com/201/archive/2010/01/11/63667.html</guid><wfw:comment>http://www.cnitblog.com/201/comments/63667.html</wfw:comment><comments>http://www.cnitblog.com/201/archive/2010/01/11/63667.html#Feedback</comments><slash:comments>2</slash:comments><wfw:commentRss>http://www.cnitblog.com/201/comments/commentRss/63667.html</wfw:commentRss><trackback:ping>http://www.cnitblog.com/201/services/trackbacks/63667.html</trackback:ping><description><![CDATA[MYSQL定期备份是一项重要的工作，但人工操作太繁琐，也难避免有所疏漏，使用下面的方法即可让系统定期备份数据。利用系统crontab来定时执行备份文件，按日期对备份结果进行保存，达到备份的目的。<br>
<br>
1、创建备份文件夹<br>
#cd /bak<br>
#mkdir mysqldata&nbsp;&nbsp;<br>
<br>
2、编写运行脚本<br>
#nano -w /usr/sbin/bakmysql.sh<br>
注：如使用nano编辑此代码需在每行尾添加'&amp;&amp;'或';'连接符，否则生成的文件名末尾字符为乱码<br>
<br>
代码：<br>
#!/bin/bash<br>
# Name:bakmysql.sh<br>
# This is a ShellScript For Auto DB Backup and Delete old Backup<br>
#<br>
backupdir=/bak/mysqlbak<br>
time=` date +%Y%m%d%H `<br>
mysql_bin_dir/mysqldump -u user -ppassword dataname1 | gzip &gt; $backupdir/name1$time.sql.gz<br>
mysql_bin_dir/mysqldump -u user -ppassword dataname2 | gzip &gt; $backupdir/name2$time.sql.gz<br>
#<br>
find $backupdir -name "name_*.sql.gz" -type f -mtime +5 -exec rm {} \; &gt; /dev/null 2&gt;&amp;1<br>
<br>
保存退出<br>
<br>
说明：<br>
代码中time=` date +%Y%m%d%H `也可以写为time="$(date +"%Y%m%d$H")"<br>
其中`符号是TAB键上面的符号，不是ENTER左边的'符号，还有date后要有一个空格。<br>
mysql_bin_dir：mysql的bin路径；<br>
dataname：数据库名；<br>
user：数据库用户名；<br>
password：用户密码；<br>
name：自定义备份文件前缀标识。<br>
-type f&nbsp; &nbsp; 表示查找普通类型的文件，f表示普通文件。<br>
-mtime +5&nbsp; &nbsp;按照文件的更改时间来查找文件，+5表示文件更改时间距现在5天以前；如果是 -mmin +5 表示文件更改时间距现在5分钟以前。<br>
-exec rm {} \;&nbsp; &nbsp;表示执行一段shell命令，exec选项后面跟随着所要执行的命令或脚本，然后是一对儿{ }，一个空格和一个\，最后是一个分号。<br>
/dev/null 2&gt;&amp;1&nbsp;&nbsp;把标准出错重定向到标准输出，然后扔到/DEV/NULL下面去。通俗的说，就是把所有标准输出和标准出错都扔到垃圾桶里面；其中的&amp; 表示让该命令在后台执行。
<br><br>3、为脚本添加执行权限<br>
# chmod +x /usr/sbin/bakmysql.sh<br>
<br>
4、修改/etc/crontab（在centOS5中测试可行）<br>
#nano -w /etc/crontab&nbsp;&nbsp;<br>
在最后一行中加入：&nbsp;&nbsp;<br>
00 3 * * * root /usr/sbin/bakmysql.sh<br>
表示每天3点00分执行备份<br>
<br>
注：crontab配置文件格式如下：<br>
分　时　日　月　周　 命令<br>
<br>
Redhat方法：<br>
Redhat的crontab采用按时间调用4个目录（/etc/cron.hourly：每小时；/etc/cron.daily：每天；/etc/cron.weekly：每周；/etc/cron.monthly：每月）中脚本出来运行的方式。<br>
Redhat中只需要将刚才编辑的脚本复制到相应的目录即可。<br>
<br>
5、重启crontab<br>
# /etc/rc.d/init.d/crond restart&nbsp;&nbsp;<br>
完成。&nbsp;&nbsp;<br>
<br>
6、恢复数据备份文件：<br>
<br>
非压缩备份文件恢复：<br>
&nbsp; &nbsp;#mysql -u root -p dataname &lt; name2008010103.sql<br>
<br>
从压缩文件直接恢复：<br>
&nbsp; &nbsp;#gzip &lt; name2008010103.sql.gz | mysql -u root -p dataname<br>
或：<br>
# zcat name2008010103.sql.gz&nbsp;&nbsp;| mysql -u root -p
<br><br><img src ="http://www.cnitblog.com/201/aggbug/63667.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cnitblog.com/201/" target="_blank">David</a> 2010-01-11 14:31 <a href="http://www.cnitblog.com/201/archive/2010/01/11/63667.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Oracle 11g Software Installation on Linux—CentOS-5 .3</title><link>http://www.cnitblog.com/201/archive/2009/12/14/63159.html</link><dc:creator>David</dc:creator><author>David</author><pubDate>Mon, 14 Dec 2009 14:47:00 GMT</pubDate><guid>http://www.cnitblog.com/201/archive/2009/12/14/63159.html</guid><wfw:comment>http://www.cnitblog.com/201/comments/63159.html</wfw:comment><comments>http://www.cnitblog.com/201/archive/2009/12/14/63159.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://www.cnitblog.com/201/comments/commentRss/63159.html</wfw:commentRss><trackback:ping>http://www.cnitblog.com/201/services/trackbacks/63159.html</trackback:ping><description><![CDATA[Oracle 11g Software Installation on Linux—CentOS-5<br><br> <br><br>Author   : James F. Koopmann<br><br>More at  : www.jameskoopmann.com<br><br> <br><br> <br><br>Introduction<br><br>This paper takes a look at installing Oracle 11g (11.1) on Linux (CentOS-5).You can read about CentOS at www.centos.org and be assured of its' Enterprise-class quality. This paper will use Oracle's Quick Installation Guide for Linux x86 as its' guide—noting where additional information may be obtained but getting Oracle installed on Linux as fast as possible. We at thecheapdba.com have years of experience installing Oracle—starting back with Oracle 7. We will point out best practices so that you end up with a reliable database that provides exceptional performance. We will occasionally re-visit, edit, and post additions to this paper as we find further configuration best practices.<br><br>This paper will not cover the installation of CentOS-5 as that can be acquired through the CentOS website and additional Linux guides. We will however point out those alterations to the Linux environment that pertains to getting Oracle installed.<br><br>Our goal is to provide you with the steps to properly install the Oracle 11g software without having to read Oracle's installation guide from front to back cover. We will provide you the commands to execute (just cut-n-paste) and the desired outcome of those commands. If you get something other than what is expected it would be time for you to re-visit earlier steps in this process. So hold on, here we go.<br><br>It is assumed that the installer of Oracle software has access and is running on an X Window System workstation. Please consult X Server documentation if you need help. We at thecheapdba.com typically will use cygwin ( www.cygwin.com ) for all interfacing with our Linux distribution. It has an X Window System that works quite well—and as we always like is free.<br><br> <br><br>Checking Hardware Requirements<br><br>Log into the CentOS-5 system as the root user.<br><br>For setting up the system to be used by Oracle there are a few prerequisites that must be checked and possibly changed by the root user. Log in as the root user and this document will tell you when it is time to switch from the root user to someone else.<br><br>How much memory<br><br>command: grep -i memtotal /proc/meminfo<br><br>results: should be at least 1GB<br><br> <br><br>How much swap<br><br>command: grep -i swaptotal /proc/meminfo<br><br>results: should be 1.5 the size of memtotal if memtotal &lt; 2GB<br><br>         should be equal to memtotal if memtotal is between 2GB and 8GB<br><br>         should be .75 the size of memtotal if memtotal &gt; 8GB<br><br> <br><br>What processor type<br><br>command: grep "model name" /proc/cpuinfo<br><br>results: informational<br><br>How much available RAM and swap<br><br>command: free<br><br>results: informational<br><br> <br><br>How much shared memory available<br><br>command: df -k /dev/shm<br><br>results: informational<br><br>purpose: The shared memory should be sized to be at least the greater of MEMORY_MAX_TARGET and MEMORY_TARGET for each Oracle instance on the computer.<br><br> <br><br>How much disk space in /tmp<br><br>command: df -k /tmp<br><br>results: should have at least 400MB available<br><br> <br><br>How much disk space for Oracle binaries<br><br>command: df -k<br><br>results: Depending on installation type you should have between 1.5GB and 3.5GB<br><br> <br><br>Checking Software Requirements<br><br>What distribution and version of Linux is installed<br><br>command: cat /proc/version<br><br>results: Linux version 2.6.18-8.1.15.el5 (mockbuild@builder6.centos.org)<br><br>         (gcc version 4.1.1 20070105 (Red Hat 4.1.1-52))<br><br>         #1 SMP Mon Oct 22 08:32:04 EDT 2007<br><br> <br><br>What version of the kernel is installed<br><br>command: uname -r<br><br>results: 2.6.18-8.1.15.el5<br><br> <br><br> <br><br>Are the following packages installed (assumes CentOS-5 and above distribution)<br><br>command:rpm -q binutils \<br><br>            compat-libstdc++ \<br><br>            elfutils-libelf \<br><br>            elfutils-libelf-devel \<br><br>            glibc \<br><br>            glibc-common \<br><br>            glibc-devel \<br><br>            glibc-headers \<br><br>            gcc \<br><br>            gcc-c++ \<br><br>            libaio-devel \<br><br>            libaio \<br><br>            libgcc \<br><br>            libstdc++ \<br><br>            libstdc++ \<br><br>            make \<br><br>            sysstat \<br><br>            unixODBC \<br><br>            unixODBC-devel<br><br>results: you will probably get quite a few packages that are not installed with a typical installation. You can investigate missing packages with the following command making sure you add/subtract from this list if necessary.<br><br>yum list available "compat*" \<br>"elfutils*" \<br>"glibc*" \<br>"gcc*" \<br>"libaio*" \<br>"sysstat*" \<br>"unixODBC*"<br><br>action : Our base installation left us needing to issue the following command to install missing packages.<br><br> <br><br>yum -y install compat-libstdc++-296.i386 \<br>compat-libstdc++-33.i386 \<br>elfutils-libelf-devel.i386 \<br>glibc-devel.i386 \<br>glibc-headers.i386 \<br>gcc.i386 \<br>gcc-c++.i386 \<br>libaio-devel.i386 \<br>sysstat.i386 \<br>unixODBC.i386 \<br>unixODBC-devel.i386<br><br> <br><br> <br><br>Create Oracle user and group<br><br>Create groups oinstall &amp; dba<br><br>command: /usr/sbin/groupadd oinstall<br><br>         /usr/sbin/groupadd dba<br><br> <br><br>Create the Oracle and change password<br><br>command: /usr/sbin/useradd -g oinstall -G dba -s /bin/bash oracle<br><br>         /usr/bin/passwd oracle<br><br> <br><br>Validate the nobody user exists<br><br>command: /usr/bin/id nobody<br><br>results: this user is almost always created on a base CentOS installation<br><br>action : if this user is not created use the following command to create<br><br>         /usr/sbin/useradd nobody<br><br> <br><br>Configuring kernel parameters<br><br>The following kernel parameters must be validated and possibly changed. Use the commands given below to view a particular kernel setting and then change if the setting is lower than the recommendation given in the following table.<br><br> <br><br>You can make the changes by editing the /etc/sysctl.conf file and then rebooting the server. The following results are what we observed on our server and should not be expected on yours.<br><br>shmmni<br>	<br><br>4096<br><br>shmall<br>	<br><br>2097152<br><br>shmmax<br>	<br><br>2147483648<br><br>semmsl<br>	<br><br>250<br><br>semmns<br>	<br><br>32000<br><br>semopm<br>	<br><br>100<br><br>semmni<br>	<br><br>128<br><br>file-max<br>	<br><br>65536<br><br>ip_local_port_range<br>	<br><br>1024 - 65000<br><br>rmem_default<br>	<br><br>1048576<br><br>rmem_max<br>	<br><br>1048576<br><br>wmem_default<br>	<br><br>262144<br><br>wmem_max<br>	<br><br>262144<br><br> <br><br> <br><br>command: /sbin/sysctl -a | grep kernel.sem<br><br>results: kernel.sem = 250        32000   100     128<br><br> <br><br>command: /sbin/sysctl -a | grep kernel.shm<br><br>results: kernel.shmmni = 4096<br><br>         kernel.shmall = 268435456<br><br>         kernel.shmmax = 4294967295<br><br> <br><br>command: /sbin/sysctl -a | grep file-max<br><br>results: fs.file-max = 102440<br><br> <br><br>command: /sbin/sysctl -a | grep ip_local_port_range<br><br>results: net.ipv4.ip_local_port_range = 32768    61000<br><br> <br><br>command: /sbin/sysctl -a | grep rmem_default<br><br>results: net.core.rmem_default = 109568<br><br> <br><br>command: /sbin/sysctl -a | grep rmem_max<br><br>results: net.core.rmem_max = 131071<br><br> <br><br>command: /sbin/sysctl -a | grep wmem_default<br><br>results: net.core.wmem_default = 109568<br><br> <br><br>command: /sbin/sysctl -a | grep wmem_max<br><br>results: net.core.wmem_max = 131071<br><br> <br><br>sample /etc/sysctl.conf file. This is given as an example only and does not reflect the results obtained above by the /sbin/sysctl commands. Only add lines that are needed and do not change any values to be lower than the base installation might have assigned.<br><br> <br><br>kernel.shmall = 2097152<br><br>kernel.shmmax = 2147483648<br><br>kernel.shmmni = 4096<br><br>kernel.sem = 250 32000 100 128<br><br>fs.file-max = 65536<br><br>net.ipv4.ip_local_port_range = 1024 65000<br><br>net.core.rmem_default = 4194304<br><br>net.core.rmem_max = 4194304<br><br>net.core.wmem_default = 262144<br><br>net.core.wmem_max = 262144<br><br> <br><br> <br><br>Setting shell limits for the Oracle user<br><br>Add the following lines to /etc/security/limits.conf<br><br>oracle soft nproc  2047<br>oracle hard nproc  16384<br>oracle soft nofile 1024<br>oracle hard nofile 65536<br><br> <br><br>Add the following lines to /etc/pam.d/login<br><br>session required /lib/security/pam_limits.so<br>session required pam_limits.so<br><br> <br><br>Add the following lines to /etc/profile<br><br>if [ $USER = "oracle" ]; then<br>if [ $SHELL = "/bin/ksh" ]; then<br>ulimit -p 16384<br>ulimit -n 65536<br>else<br>ulimit -u 16384 -n 65536<br>fi<br>fi<br><br> <br><br>Creating Directories to Install the Oracle Software<br><br>Validate you have enough space on disk and choose a directory to install<br><br>command: df -k<br><br>results: pick a mount point that has enough space—we have chosen /opt for the our.<br><br> <br><br>Create subdirectories and give permissions to the oracle user<br><br>The following directory used is common for Oracle installations. Note that we are creating all directories under /opt and that there are no other applications using /opt/app and below. This is very important as we are changing permissions with the following commands.<br><br>command: mkdir -p /opt/app/oracle/product/11.1.0<br><br>         chown -R oracle:oinstall /opt/app<br><br>         chmod -R 775 /opt/app<br><br> <br><br>Switch to the oracle user<br><br>Up to know we have been doing everything as the root user. It is now time to switch to the oracle user to actually install the Oracle software.<br><br>command: su &#8211; oracle<br><br>Add the following line to $HOME/.bash_profile<br><br>umask 022<br><br> <br><br> <br><br>Execute oracle's bash_profile to use new setting<br><br>command: . ./.bash_profile<br><br> <br><br>Make sure the oracle user is using an X Windows System<br><br>It is assumed you know how to set up an X Windows System as stated earlier in the document. Please verify it is working by issuing the xterm command and validating an X Terminal comes up. You may close the X Terminal if you wish.<br><br> <br><br>Set Oracle environment for the installation<br><br>Issue the following commands to set/unset particular Oracle environments in preparation for the installation.<br><br>command: export ORACLE_BASE=/opt/app/oracle<br><br>         export ORACLE_SID=orcl<br><br>         unset  ORACLE_HOME<br><br>         unset  TNS_ADMIN<br><br>Start Oracle Installer<br><br>This paper assumes you have downloaded the Oracle software from the net and have unzipped the files. We have unzipped our software into /opt and the following commands will take you through starting the Oracle installer form that mount point.<br><br>command: cd /opt/database<br><br>         ./runInstaller<br><br>From this point, Oracle will do a few minor checks on the operating system and then put up the Oracle Installation screen. Our particular configuration did not throw any errors at this point but it should be noted, as it can be helpful, that sometimes the Oracle installer will complain at this very early stage about various Linux system configurations. If this is the case you might be able to bypass them by adding an additional argument to the runInstaller command. Please only use this as a last resort to the normal installation path.<br><br>root command: xhost +<br><br>command: ./runInstaller -ignoreSysPrereqs<br><br> <br><br>From this point on we will walk through each of the prompts one at a time to give you a simple feel for a full installation of the Oracle software.<br><br> <br><br>Select installation method<br><br>This screen is very busy to say the least. We are not going to create any databases at this point as it is not required nor is it suggested to do at this point. We like to create databases separately through the Database Creation Assistant (DBCA) and not confuse the software installation process.<br><br>1.    Choose basic installation<br><br>1.    verify Oracle Base of '/opt/app/oracle'<br><br>2.    verify Oracle Home of '/opt/app/oracle/product/11.1.0/db_1'<br><br>3.    verify installation type of 'Enterprise Edition'<br><br>4.    verify dba group of 'dba'<br><br>2.    Un-check &#8220;Create Starter Database&#8221;<br><br>3.    Un-check &#8220;Advanced Installation&#8221;<br><br>4.    Click <next><br><br> <br><br>Specify Inventory directory and credentials<br><br>1.    verify path of inventory directory of '/opt/app/oraInventory'<br><br>2.    verify group name for install of 'oinstall'<br><br>3.    Click <next><br><br> <br><br>Product-Specific Prerequisite Checks<br><br>This screen, the installer will verify the system environment and report on any issues it may find. If all goes well you will get the status of 'Succeeded' for every check. Scroll through and make sure nothing has failed or look at the status box at the bottom of the screen and verify you get the following:<br><br>'Check complete. The overall result of this check is: Passed'<br><br>1.    verify all statuses<br><br>2.    Click <next><br><br> <br><br>Summary<br><br>This screen give a summary of the installation you are about to perform. It can be interesting to click and expand the products being installed to give you an idea of the what product and version is going to be installed.<br><br>1.    validate 'Global Settings' for directories<br><br>2.    validate 'Space Requirements'<br><br>3.    Click <next><br><br> <br><br> <br><br>Install<br><br>This screen gives a status of what is being installed. If all system settings have been properly set and all packages been installed properly then this should proceed without error. The status bar gives some indication of what is being installed at a particular point and the amount of work to be performed. But as all status bars you never really know how long in the process it is.<br><br>1.    Note the time it takes for specific products. If you notice one hanging or taking a long amount of time (greater than 10 minutes) you could have a condition that requires a pre-installation patch. Don't stop the installer yet but instead start looking for a bug / patch for the Oracle 11g installation process and the actual product being installed.<br><br>2.    Execute Configuration scripts<br><br>1.    open up a different terminal window<br><br>2.    login as the root user<br><br>3.    run /opt/app/oraInventory/orainstRoot.sh<br><br>4.    run /opt/app/oracle/product/11.1.0/db_1/root.sh<br><br>1.    accept default of /usr/local/bin<br><br>5.    Click <ok><br><br>3.    Click <exit><br><br>4.    Click <yes><br><br> <br><br>Cleanup<br><br>1.    If you downloaded the software from the net you can now remove .zip file and the complete directory structure you unzipped it to. That particular command is not given here as it can be quite disastrous if executed from the wrong directory.<br><br>2.    Add the following lines to oracle's $HOME/.bash_profile file. This will allow you to execute various Oracle binaries to create databases, configure network settings, and generally manage the Oracle database environment.<br><br>export ORACLE_HOME=/opt/app/oracle/product/11.1.0/db_1<br><br>export PATH=$ORACLE_HOME/bin:$PATH<br><br> <br><br>Installation is complete<br><br>Congratulations on a successful installation of the Oracle software. This paper hopefully was also successful in its attempt to guide you down a more simplistic path—giving you the commands to execute and working past the minor hurdles encountered during installation. Obviously this paper can not predict all the issues that you may encounter but if you have a relatively current system with ample memory and disk space there is no reason not to believe your installation wouldn't run smoothly.<br><br> </yes></exit></ok></next></next></next></next><br> <img src ="http://www.cnitblog.com/201/aggbug/63159.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cnitblog.com/201/" target="_blank">David</a> 2009-12-14 22:47 <a href="http://www.cnitblog.com/201/archive/2009/12/14/63159.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>mysql.servers 提示不存在问题解决</title><link>http://www.cnitblog.com/201/archive/2009/09/25/61572.html</link><dc:creator>David</dc:creator><author>David</author><pubDate>Fri, 25 Sep 2009 05:38:00 GMT</pubDate><guid>http://www.cnitblog.com/201/archive/2009/09/25/61572.html</guid><wfw:comment>http://www.cnitblog.com/201/comments/61572.html</wfw:comment><comments>http://www.cnitblog.com/201/archive/2009/09/25/61572.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cnitblog.com/201/comments/commentRss/61572.html</wfw:commentRss><trackback:ping>http://www.cnitblog.com/201/services/trackbacks/61572.html</trackback:ping><description><![CDATA[近日安装OTRS2.4，系统安装提示&#8220;table mysql.servers doesn't exist <br><br>发现缺省安装出来的mysql数据库 确实没有mysql.servers 表.<br>只能新建表了,<br><br>还好 mysql安装后本机已经有了原始数据表结构. 只用导入即可.<br><br>[root@localhost mysql]# ls -l *.sql<br>-rw-r--r-- 1 root root 591286 Sep 19 19:28 fill_help_tables.sql<br>-rw-r--r-- 1 root root&nbsp; 42121 Sep 19 19:28 mysql_fix_privilege_tables.sql<br>-rw-r--r-- 1 root root&nbsp;&nbsp; 1878 Sep 19 19:28 mysql_system_tables_data.sql<br>-rw-r--r-- 1 root root&nbsp; 16510 Sep 19 19:28 mysql_system_tables.sql<br>-rw-r--r-- 1 root root&nbsp;&nbsp; 9669 Sep 19 19:28 mysql_test_data_timezone.sql<br>[root@localhost mysql]# pwd<br>/usr/share/mysql<br><br>cd /usr/share/mysql/<br><br>[root@localhost mysql]#<br><br>mysql -u root -p<br>********<br><br>mysql&gt; use mysql;<br><br>输入密码后运行<br><br>mysql&gt; source mysql_fix_privilege_tables.sql<br><br><br>mysql&gt; show tables;<br><br>mysql&gt; show tables;<br>+---------------------------+<br>| Tables_in_mysql&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; |<br>+---------------------------+<br>| columns_priv&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; |<br>| db&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; |<br>| event&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; |<br>| func&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; |<br>| general_log&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; |<br>| help_category&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; |<br>| help_keyword&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; |<br>| help_relation&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; |<br>| help_topic&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; |<br>| host&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; |<br>| ndb_binlog_index&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; |<br>| plugin&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; |<br>| proc&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; |<br>| procs_priv&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; |<br>| servers&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; |<br>| slow_log&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; |<br>| tables_priv&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; |<br>| time_zone&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; |<br>| time_zone_leap_second&nbsp;&nbsp;&nbsp;&nbsp; |<br>| time_zone_name&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; |<br>| time_zone_transition&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; |<br>| time_zone_transition_type |<br>| user&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; |<br>+---------------------------+<br>23 rows in set (0.00 sec)<br><br><br><img src ="http://www.cnitblog.com/201/aggbug/61572.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cnitblog.com/201/" target="_blank">David</a> 2009-09-25 13:38 <a href="http://www.cnitblog.com/201/archive/2009/09/25/61572.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>在同一台主机配置MySQL Cluster</title><link>http://www.cnitblog.com/201/archive/2009/08/04/60559.html</link><dc:creator>David</dc:creator><author>David</author><pubDate>Tue, 04 Aug 2009 07:18:00 GMT</pubDate><guid>http://www.cnitblog.com/201/archive/2009/08/04/60559.html</guid><wfw:comment>http://www.cnitblog.com/201/comments/60559.html</wfw:comment><comments>http://www.cnitblog.com/201/archive/2009/08/04/60559.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cnitblog.com/201/comments/commentRss/60559.html</wfw:commentRss><trackback:ping>http://www.cnitblog.com/201/services/trackbacks/60559.html</trackback:ping><description><![CDATA[<div class="entry">
<p>MySQL cluster是share nothing的集群，采用ndb存储引擎，和Oracle的RAC采用集中存储不同，是一种分布式的架构，所以可以很轻松的实现在同一台主机上配置MySQL Cluster，相对RAC来说要简单得多。</p>
<p>在MySQL Cluster中，有三种不同的节点：</p>
<ul>
    <li>管理节点：守护进程为ndb_mgmd，用于管理cluster。</li>
    <li>数据节点: 守护进程为ndbd，用于存放数据</li>
    <li>SQL节点：守护进程为mysqld，就是一个MySQL实例，对外供客户端连接访问数据。</li>
</ul>
<p>本文将在一台64位linux主机上同时配置上述三种节点。在实际生产环境中，根据需要，可以在相同或者不同的机器部署节点。本次实例中共包含以下节点：</p>
<ul>
    <li>一个管理节点</li>
    <li>两个数据节点</li>
    <li>三个SQL节点</li>
</ul>
<p>下载Mysql cluster，当前版本7.0.6，<a href="http://dev.mysql.com/downloads/cluster/7.0.html">http://dev.mysql.com/downloads/cluster/7.0.html<br>
</a><br>
解压，并复制到安装目录</p>
<pre>tar zxvf mysql-cluster-gpl-7.0.6-linux-x86_64-glibc23.tar.gz<br>cp mysql-cluster-gpl-7.0.6-linux-x86_64-glibc23 /u01/mysql-cluster<br><br>cd /u01/mysql-cluster<br></pre>
<p>创建三个MySQL实例的数据目录</p>
<pre>mkdir data/data1<br>mkdir data/data2<br>mkdir data/data3<br><br>mkdir data/data1/mysql<br>mkdir data/data1/test<br><br>mkdir data/data2/mysql<br>mkdir data/data2/test<br><br>mkdir data/data3/mysql<br>mkdir data/data3/test<br></pre>
<p>Cluster配置文件如下</p>
<pre>$ more conf/config.ini<br>[ndbd default]<br>noofreplicas=2<br>[ndbd]<br>hostname=localhost<br>id=2<br>[ndbd]<br>hostname=localhost<br>id=3<br>[ndb_mgmd]<br>id = 1<br>hostname=localhost<br>[mysqld]<br>id=4<br>hostname=localhost<br>[mysqld]<br>id=5<br>hostname=localhost<br>[mysqld]<br>id=6<br>hostname=localhost<br></pre>
<p>三个MySQL实例配置文件如下</p>
<pre>$ more conf/my1.cnf<br>[mysqld]<br>ndb-nodeid=4<br>ndbcluster=true<br>datadir=/u01/mysql-cluster/data/data1<br>basedir=/u01/mysql-cluster<br>port=9306<br>server-id=1<br>log-bin<br><br>$ more conf/my2.cnf<br>[mysqld]<br>ndb-nodeid=5<br>ndbcluster=true<br>datadir=/u01/mysql-cluster/data/data2<br>basedir=/u01/mysql-cluster<br>port=9307<br>server-id=2<br>log-bin<br><br>$ more conf/my3.cnf<br>[mysqld]<br>ndb-nodeid=6<br>ndbcluster=true<br>datadir=/u01/mysql-cluster/data/data3<br>basedir=/u01/mysql-cluster<br>port=9308<br>server-id=3<br>log-bin<br></pre>
<p>初始化三个MySQL实例</p>
<pre>script/mysql_install_db --basedir=/u01/mysql-cluster --datadir=/u01/mysql-cluster/data/data1<br>script/mysql_install_db --basedir=/u01/mysql-cluster --datadir=/u01/mysql-cluster/data/data2<br>script/mysql_install_db --basedir=/u01/mysql-cluster --datadir=/u01/mysql-cluster/data/data3<br></pre>
<p>初始化管理节点</p>
<pre>bin/ndb_mgmd --initial -f conf/config.ini --configdir=/u01/mysql-cluster<br></pre>
<p>进入管理节点查看配置</p>
<pre>$ bin/ndb_mgm<br>-- NDB Cluster -- Management Client --<br>ndb_mgm&gt; help<br>---------------------------------------------------------------------------<br> NDB Cluster -- Management Client -- Help<br>---------------------------------------------------------------------------<br>HELP                                   Print help text<br>HELP COMMAND                           Print detailed help for COMMAND(e.g. SHOW)<br>SHOW                                   Print information about cluster<br>CREATE NODEGROUP <id>,<id>...          Add a Nodegroup containing nodes<br>DROP NODEGROUP <ng>                    Drop nodegroup with id NG<br>START BACKUP [NOWAIT | WAIT STARTED | WAIT COMPLETED]<br>START BACKUP [<backup id="">] [NOWAIT | WAIT STARTED | WAIT COMPLETED]<br>START BACKUP [<backup id="">] [SNAPSHOTSTART | SNAPSHOTEND] [NOWAIT | WAIT STARTED | WAIT COMPLETED]<br>                                       Start backup (default WAIT COMPLETED,SNAPSHOTEND)<br>ABORT BACKUP <backup id="">               Abort backup<br>SHUTDOWN                               Shutdown all processes in cluster<br>CLUSTERLOG ON [<severity>] ...         Enable Clus<br><severity> = ALERT | CRITICAL | ERROR | WARNING | INFO | DEBUG<br><category> = STARTUP | SHUTDOWN | STATISTICS | CHECKPOINT | NODERESTART | CONNECTION<br>| INFO | ERROR | CONGESTION | DEBUG | BACKUP<br><level>    = 0 - 15<br><id>       = ALL | Any database node id<br><br>For detailed help on COMMAND, use HELP COMMAND.<br><br>ndb_mgm&gt; show<br>Connected to Management Server at: localhost:1186<br>Cluster Configuration<br>---------------------<br>[ndbd(NDB)]     2 node(s)<br>id=2 (not connected, accepting connect from localhost)<br>id=3 (not connected, accepting connect from localhost)<br><br>[ndb_mgmd(MGM)] 1 node(s)<br>id=1    @localhost  (mysql-5.1.34 ndb-7.0.6)<br><br>[mysqld(API)]   3 node(s)<br>id=4 (not connected, accepting connect from localhost)<br>id=5 (not connected, accepting connect from localhost)<br>id=6 (not connected, accepting connect from localhost)<br></id></level></category></severity></severity></backup></backup></backup></ng></id></id></pre>
<p>初始化数据节点</p>
<pre>bin/ndbd --initial -c localhost:1186<br>2009-06-21 23:13:19 [ndbd] INFO     -- Configuration fetched from 'localhost:1186', generation: 1<br>bin/ndbd --initial -c localhost:1186<br>2009-06-21 23:13:50 [ndbd] INFO     -- Configuration fetched from 'localhost:1186', generation: 1<br></pre>
<p>启动SQL节点</p>
<pre>bin/mysqld --defaults-file=conf/my1.cnf&amp;<br>[1] 17843<br> 090621 23:14:36 [Warning] No argument was provided to --log-bin,<br>and --log-bin-index was not used; so replication may break when this MySQL server acts as a master<br>and has his hostname changed!! Please use '--log-bin=test-bin' to avoid this problem.<br>InnoDB: The first specified data file ./ibdata1 did not exist:<br>InnoDB: a new database to be created!<br>090621 23:14:36  InnoDB: Setting file ./ibdata1 size to 10 MB<br>InnoDB: Database physically writes the file full: wait...<br>090621 23:14:36  InnoDB: Log file ./ib_logfile0 did not exist: new to be created<br>InnoDB: Setting log file ./ib_logfile0 size to 5 MB<br>InnoDB: Database physically writes the file full: wait...<br>090621 23:14:36  InnoDB: Log file ./ib_logfile1 did not exist: new to be created<br>InnoDB: Setting log file ./ib_logfile1 size to 5 MB<br>InnoDB: Database physically writes the file full: wait...<br>InnoDB: Doublewrite buffer not found: creating new<br>InnoDB: Doublewrite buffer created<br>InnoDB: Creating foreign key constraint system tables<br>InnoDB: Foreign key constraint system tables created<br>090621 23:14:36  InnoDB: Started; log sequence number 0 0<br>090621 23:14:36 [Note] NDB: NodeID is 4, management server 'localhost:1186'<br>090621 23:14:37 [Note] NDB[0]: NodeID: 4, all storage nodes connected<br>090621 23:14:37 [Note] Starting Cluster Binlog Thread<br>090621 23:14:37 [Note] Event Scheduler: Loaded 0 events<br>090621 23:14:37 [Note] bin/mysqld: ready for connections.<br>Version: '5.1.34-ndb-7.0.6-cluster-gpl-log'  socket: '/tmp/mysql.sock'<br>port: 9306  MySQL Cluster Server (GPL)<br>090621 23:14:38 [Note] NDB Binlog: Ndb tables initially read only.<br>090621 23:14:38 [Note] NDB: Creating mysql.ndb_schema<br>090621 23:14:38 [Note] NDB Binlog: CREATE TABLE Event: REPL$mysql/ndb_schema<br>090621 23:14:38 [Note] NDB Binlog: logging ./mysql/ndb_schema (UPDATED,USE_WRITE)<br>090621 23:14:38 [Note] NDB: Creating mysql.ndb_apply_status<br>090621 23:14:39 [Note] NDB Binlog: CREATE TABLE Event: REPL$mysql/ndb_apply_status<br>090621 23:14:39 [Note] NDB Binlog: logging ./mysql/ndb_apply_status (UPDATED,USE_WRITE)<br>2009-06-21 23:14:39 [NdbApi] INFO     -- Flushing incomplete GCI:s &lt; 20/3<br>2009-06-21 23:14:39 [NdbApi] INFO     -- Flushing incomplete GCI:s &lt; 20/3<br>090621 23:14:39 [Note] NDB Binlog: starting log at epoch 20/3<br>090621 23:14:39 [Note] NDB Binlog: ndb tables writable<br></pre>
<pre>bin/mysqld --defaults-file=conf/my2.cnf&amp;<br>bin/mysqld --defaults-file=conf/my3.cnf&amp;<br></pre>
<p>查看cluster</p>
<pre>bin/ndb_mgm<br>-- NDB Cluster -- Management Client --<br>ndb_mgm&gt; show<br>Connected to Management Server at: localhost:1186<br>Cluster Configuration<br>---------------------<br>[ndbd(NDB)]     2 node(s)<br>id=2    @127.0.0.1  (mysql-5.1.34 ndb-7.0.6, Nodegroup: 0, Master)<br>id=3    @127.0.0.1  (mysql-5.1.34 ndb-7.0.6, Nodegroup: 0)<br><br>[ndb_mgmd(MGM)] 1 node(s)<br>id=1    @127.0.0.1  (mysql-5.1.34 ndb-7.0.6)<br><br>[mysqld(API)]   3 node(s)<br>id=4    @127.0.0.1  (mysql-5.1.34 ndb-7.0.6)<br>id=5    @127.0.0.1  (mysql-5.1.34 ndb-7.0.6)<br>id=6    @127.0.0.1  (mysql-5.1.34 ndb-7.0.6)<br></pre>
<p>创建测试表</p>
<pre>bin/mysql -uroot -h localhost -P 9306  --socket=/tmp/mysql.sock<br>Welcome to the MySQL monitor.  Commands end with ; or \g.<br>Your MySQL connection id is 2<br>Server version: 5.1.34-ndb-7.0.6-cluster-gpl-log MySQL Cluster Server (GPL)<br><br>Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.<br><br>root@(none) 11:21:24&gt;use test<br>Database changed<br>root@test 11:21:26&gt;create table test_ndb(i int,a varchar(20),primary key(i)) engine=ndb;<br>090621 23:22:32 [Note] NDB Binlog: CREATE TABLE Event: REPL$test/test_ndb<br>090621 23:22:32 [Note] NDB Binlog: logging ./test/test_ndb (UPDATED,USE_WRITE)<br>090621 23:22:32 [Note] NDB Binlog: DISCOVER TABLE Event: REPL$test/test_ndb<br>090621 23:22:32 [Note] NDB Binlog: DISCOVER TABLE Event: REPL$test/test_ndb<br>090621 23:22:32 [Note] NDB Binlog: logging ./test/test_ndb (UPDATED,USE_WRITE)<br>090621 23:22:32 [Note] NDB Binlog: logging ./test/test_ndb (UPDATED,USE_WRITE)<br>Query OK, 0 rows affected (1.10 sec)<br><br>root@test 11:22:32&gt;insert into test_ndb values(1,'NinGoo');<br>Query OK, 1 row affected (0.02 sec)<br><br>[mysql@dbconsole mysql-cluster]$ ls -l data/data1/test<br>total 12<br>-rw-rw----  1 mysql dba 8578 Jun 21 23:22 test_ndb.frm<br>-rw-rw----  1 mysql dba    0 Jun 21 23:22 test_ndb.ndb<br>[mysql@dbconsole mysql-cluster]$ ls -l data/data2/test<br>total 12<br>-rw-rw----  1 mysql dba 8578 Jun 21 23:22 test_ndb.frm<br>-rw-rw----  1 mysql dba    0 Jun 21 23:22 test_ndb.ndb<br>[mysql@dbconsole mysql-cluster]$ ls -l data/data3/test<br>total 12<br>-rw-rw----  1 mysql dba 8578 Jun 21 23:22 test_ndb.frm<br>-rw-rw----  1 mysql dba    0 Jun 21 23:22 test_ndb.ndb<br><br>$ bin/mysql -uroot -P 9307 --socket=/tmp/mysql.sock<br>Welcome to the MySQL monitor.  Commands end with ; or \g.<br>Your MySQL connection id is 3<br>Server version: 5.1.34-ndb-7.0.6-cluster-gpl-log MySQL Cluster Server (GPL)<br><br>Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.<br><br>root@(none) 11:24:38&gt;use test<br>Reading table information for completion of table and column names<br>You can turn off this feature to get a quicker startup with -A<br><br>Database changed<br>root@test 11:24:41&gt;select * from test_ndb;<br>+---+--------+<br>| i | a      |<br>+---+--------+<br>| 1 | NinGoo |<br>+---+--------+<br>1 row in set (0.02 sec)<br></pre>
</div>
<br><img src ="http://www.cnitblog.com/201/aggbug/60559.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cnitblog.com/201/" target="_blank">David</a> 2009-08-04 15:18 <a href="http://www.cnitblog.com/201/archive/2009/08/04/60559.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Exception String: Error in invoking target install of makefile</title><link>http://www.cnitblog.com/201/archive/2009/06/23/59574.html</link><dc:creator>David</dc:creator><author>David</author><pubDate>Tue, 23 Jun 2009 11:58:00 GMT</pubDate><guid>http://www.cnitblog.com/201/archive/2009/06/23/59574.html</guid><wfw:comment>http://www.cnitblog.com/201/comments/59574.html</wfw:comment><comments>http://www.cnitblog.com/201/archive/2009/06/23/59574.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cnitblog.com/201/comments/commentRss/59574.html</wfw:commentRss><trackback:ping>http://www.cnitblog.com/201/services/trackbacks/59574.html</trackback:ping><description><![CDATA[今天上午 在linux rh4 安装oracle 9.2.0.4 过程中运行到63%时<br><br>Exception String: Error in invoking target install of makefile /orasys/oracle/product/9.2.0/plsql/lib/ins_plsql.mk<br><br>该打的补丁包 也已经打了<br><br>检查安装日志<br><br>Exception String: Error in invoking target install of makefile /orasys/oracle/product/9.2.0/plsql/lib/ins_plsql.mk<br>Exception Severity: 1<br>Exception thrown from action: make<br>Exception Name: MakefileException<br>Exception String: Error in invoking target install of makefile /orasys/oracle/product/9.2.0/plsql/lib/ins_plsql.mk<br>Exception Severity: 1<br>Exception thrown from action: make<br>Exception Name: MakefileException<br>Exception String: Error in invoking target install of makefile /orasys/oracle/product/9.2.0/plsql/lib/ins_plsql.mk<br>Exception Severity: 1<br>Exception thrown from action: make<br>Exception Name: MakefileException<br>Exception String: Error in invoking target install of makefile /orasys/oracle/product/9.2.0/plsql/lib/ins_plsql.mk<br>Exception Severity: 1<br>Exception thrown from action: make<br>Exception Name: MakefileException<br>Exception String: Error in invoking target install of makefile /orasys/oracle/product/9.2.0/plsql/lib/ins_plsql.mk<br>Exception Severity: 1<br>Exception thrown from action: make<br><br>编译make -f ins_plsql.mk  也不成功<br><br>在linux下执行以下操作<br><br>mv /usr/bin/gcc /usr/bin/gccold<br>   <br><br>mv /usr/bin/gcc32 /usr/bin/gcc<br><br>然后安装正常 成功后记的改回去<br><br>mv /usr/bin/gcc  /usr/bin/gcc32<br><br>mv /usr/bin/gccold /usr/bin/gcc<br>  <img src ="http://www.cnitblog.com/201/aggbug/59574.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cnitblog.com/201/" target="_blank">David</a> 2009-06-23 19:58 <a href="http://www.cnitblog.com/201/archive/2009/06/23/59574.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>MYSQL主从复制高可用实施手册</title><link>http://www.cnitblog.com/201/archive/2009/02/01/54099.html</link><dc:creator>David</dc:creator><author>David</author><pubDate>Sun, 01 Feb 2009 08:55:00 GMT</pubDate><guid>http://www.cnitblog.com/201/archive/2009/02/01/54099.html</guid><wfw:comment>http://www.cnitblog.com/201/comments/54099.html</wfw:comment><comments>http://www.cnitblog.com/201/archive/2009/02/01/54099.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cnitblog.com/201/comments/commentRss/54099.html</wfw:commentRss><trackback:ping>http://www.cnitblog.com/201/services/trackbacks/54099.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: 声明：该方案不能进行主从自由切换，如果要在主节点当机在恢复使用必须时候手动来操作，首先要进行同步数据，然后在做同步复制，最后在切换！这一切操作必须人为干预！应用需求：双机热备提供备份，冗余功能安装环境：NODE1 主机名 master IP地址 10.10.10.101NODE2 主机名 slave IP地址 10.10.10.102VIA ...&nbsp;&nbsp;<a href='http://www.cnitblog.com/201/archive/2009/02/01/54099.html'>阅读全文</a><img src ="http://www.cnitblog.com/201/aggbug/54099.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cnitblog.com/201/" target="_blank">David</a> 2009-02-01 16:55 <a href="http://www.cnitblog.com/201/archive/2009/02/01/54099.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>sybase 基本操作</title><link>http://www.cnitblog.com/201/archive/2008/09/28/49607.html</link><dc:creator>David</dc:creator><author>David</author><pubDate>Sun, 28 Sep 2008 02:18:00 GMT</pubDate><guid>http://www.cnitblog.com/201/archive/2008/09/28/49607.html</guid><description><![CDATA[声明：本帖转自http://blog.chinaunix.net/u/10047/showart.php?id=1220438&nbsp; <a  href="http://szxsztszk.cublog.cn/" class="list1" target="_blank">szxsztszk.cublog.cn</a><br>只为收藏下来供以后学习sysbase 参考。<br><br><br>安装：FRO LINUX<br>1.用sybase身份安装：CD20045-55-1252-01.tgz<br>&nbsp;&nbsp;&nbsp; 建立sybase，家目录在/opt/sybase,加密码。解压到/tmp/inst/。修改/etc/hosts:ip&nbsp; tank<br>2.用sybase登录，启动xwindow，运行/tmp/inst/setup进行图形安装。<br>3。查看SYBASE服务命令：<br>$showserver<br>4.停止sybase服务：<br>$isql -Usa -STANK<br>&gt;shutdown SYB_BACKUP&nbsp; ---&gt;停backupserver<br>&gt;go<br>&gt;shutdown -------&gt;停dataserver<br>&gt;go<br>&gt;quit<br>5.启动sybase服务：<br>$cd ~ASE_125/install/<br>$startserver -f RUN_TANK<br>$startserver -f RUN_TANK_BS<br>$showserver<br><br>安装 FOR WIN<br>类似一般程序安装；在WIN服务管理里设置启动。<br>win下的SYBASE客户端sql advantage和dsedit等无法启动（本机LAN原因）解决方法：<br>修改本机X:\sybase\locales\locales文件里NT选项的locale = zh_CN, us_english, iso_1，加入本机LAN即可（如zh_CN）<br><br><br>常用操作：<br>1.su - sybase -c "isql -Usa -STANK"<br>2.修改SA的密码(SA默认密码为空):<br>用ISQL连接上后<br>&nbsp;sp_password null,"新密码" or&nbsp; sp_password "旧密码","新密码"<br>3.开始和确认事务(注意：有些命令不可以在事务里运行，见附录)<br>begin transaction和commit transaction可将任意数目的SQL语句封装起来，这两名的简单语法为：<br>begin transaction<br>commit transaction<br>or<br>begin tran<br>commit<br>&nbsp; ps:只有执行了commit数据才是真正写入库里。<br>4. 回退事务<br>在commit transaction命令提交前任何时候可取消或回退事务，该命令的简单语法为：<br>rollback transaction<br>or<br>rollback<br>5．检查事务状态<br>全局变量@@transtate记录了事务当前的状态。在执行一个语句后SQL Server通过记录所有事务变化来确定返回何种状态。<br>@@transtate可包含下列值：<br>值&nbsp; 意义<br>0事务进行中：一个显式或隐式事务有效；上一语句执行成功<br>1事务完成：事务完成并提交其变化<br>2语句异常中止：上一语句异常终止；对事务无影响<br>3事务异常中止：事务异常中止并回退所有变化<br>举例：在事务中，可在一个语句（如insert）后使用@@transtate确定该语句成功或失败对事务的影响。commit transaction<br>Begin transaction<br>Insert into publishers(pub_id)values(&#8216;9999&#8217;)<br>(1 row affected)<br>select @@transtate<br>&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;<br>0<br>commit transaction<br>select @@transtate<br>&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;<br>0<br>(1 row affected)<br><br>6.备份系统数据<br>SYBASE
系统的备份与恢复机制保证了在系统失败时重新获取数据的可能性。SQL Server
提供了两种不同类型的恢复机制：一类是系统自动完成的恢复，这种措施在每次系统启动时都自动进行，保证了在系统瘫痪前完成的事务都写到数据库设备上，而未
完成的事务都被回退；另一类是人工完成的恢复，这是通过 DUMP 和 LOAD
命令来执行人工备份和恢复工作。因此定期备份事务日志和数据库是一项十分重要的日常维护工作。 <br>7、备份数据库<br>每一个数据库都应在创建之后卸出，从而提供一个装入基点。在此之后按排定的时间周期表卸出。比如每周五卸出数据库。对一般数据库系统卸出数据库周期建议为每周一次。<br>除了按计划周期卸出数据库之外，还需在每次运行没有日志的操作后卸出数据库。例如：<br>&#183;每次强制地运行了 DUMP TRAN WITH NO_LOG （因为数据库的磁盘空溢出）；<br>&#183;每次用 sp_dboption 允许 select into/bulkcopy 做快速拷贝，或用 SELECT INTO 命令创建一个永久性的表，或使用了 WRITETEXT 命令。<br>卸出数据库的命令为：<br>DUMP DATABASE database_name<br>TO dump_device<br>database_name 是要卸出的数据库名称，dump_device 是卸出设备的名称。用系统过程 sp_helpdevice 可以获得设备的信息。<br>下面一条命令用来卸出数据库 my_db ：<br>DUMP DATABASE my_db<br>TO db_bk_dev<br>默认导出到C:\WINDOWS\SYSTEM32\下了。也可以指定路径。<br>8、备份事务日志<br>如果事务日志与数据库放在同一个设备上，则事务日志不应与数据库分开备份。master 数据库和小于 4M 的用户数据库就是这种情况。一般数据库系统的数据库和日志分别放在不同的设备上，因此，可以用 DUMP TRAN 命令单独备份日志。<br>备份事务日志的周期直接影响数据的恢复程度，因此建议每天备份。<br>备份事务日志的命令格式为：<br>DUMP TRANsaction database_name<br>[TO dump_device]<br>[WITH TRUNCATE_ONLY|WITH NO_LOG|WITH NO_TRUNCATE]<br>其中 database_name 是要备份事务的数据库名称，dump_device 是备份设备名称，仅当包含了 WITH TRUNCATE_ONLY 或 WITH NO_LOG 子句时，才可以备份到设备。<br>注意：如果总是用 DUMP DATEBASE （备份数据库及其日志），而不用 DUMP TRAN ，事务日志将不会刷新，而变得非常庞大。<br>对于 master 数据库和小型数据库每次运行 DUMP DATEBASE 之后应当运行 DUMP TRANsaction 命令刷新日志 。<br>下面一条命令备份数据库 db160 的事务日志到备份设备上：<br>DUMP TRANsaction db160<br>TO db_log_bk_dev<br>WITH TRUNCATE_ONLY<br>9、备份数据库及其日志间的相互作用<br>在至少卸出一次数据库前，卸出事务日志是毫无意义的。下图显示了备份数据库及其日志间的关系<br>如果在星期二下午5：01出现非硬件故障，需要做的所有工作是装入磁带5（参见下一节：数据恢复），由于磁带5是下午5：00刚备份的，因此只有备份和装入之间的一分钟内的数据损失。<br>但是，如果在星期二下午4：49失效会怎么样呢？在这种情况下，要装入磁带1（在星期五下午5：00的卸出）。然后，依次装入磁带2，3以及4。这样，系统将恢复到星期二上午10：00点的状态，星期二的大部分工作丢失了。此例显示了经常卸出事务的重要性。<br>10、万一系统失败时恢复数据库系统<br>如
果用户数据库存储的设备失效，从而数据库被破坏或不可存取，通过装入最新的数据库备份以及后来的事务日志备份可以恢复数据库。假设当前的事务日志存在于一
个并没有毁坏的设备上，带着 WITH NO_TRUNCATE 选项的 DUMP TRANsaction 命令卸出它。<br>要恢复数据库按如下步骤去做：<br>1）、如果日志存在于一个分离的设备上，用带着 NO_TRUNCATE 选项的 DUMP TRANsaction 命令卸出被毁坏的或者不可存取的用户数据库事务日志。<br>2）、用下面的查询检查设备分配已毁坏数据库的设备使用情况。必须为同一目的赋同样的空间块。<br>下面的查询显示了分配给数据库 mydb 设备使用和尺寸情况：<br>SELECT segmap，size FROM　sysusages<br>WHERE dbid =<br>（ SELECT dbid FROM sysdatabases WHERE name = &#8220;mydb&#8221;）<br>3）、检查查询的输出。在 segmap 列的 &#8216;3&#8217;代表数据分配，&#8216;4&#8217;代表日志分配。size 列代表 2K 数据块的数目。注意此信息的次序、使用和尺寸部分。例如，输出为：<br>4）、用 DROP DATABASE 命令删除毁坏设备上的数据库。如果系统报错，用DBCC DBREPAIR 命令的 DROPDB 选项。<br>5）、删除数据库后，用 sp_dropdevice 删除毁坏了的设备。<br>6）、用 DISK INIT 初始化新的数据库设备。<br>7）、重建数据库。用 CREATE DATABASE 命令从老的 sysusages 表拷贝所有的行，并包含第一逻辑设备。<br>对上例，命令为：<br>CREATE DATABASE mydb<br>ON datadev1=20，datadev2=10<br>LOG ON logdev1=10<br>8）、用 ALTER DATABASE 命令重建其余入口。在此例中，在datadev1上分配更多的空间，命令为：<br>ALTER DATABASE mydb ON datadev1=2<br>9）、用 LOAD DATABASE 重新装入数据库，然后用 LOAD TRAN 装入前面卸出的日志。<br>LOAD DATABASE 命令语法是：<br>LOAD DATABASE database_name<br>FROM dump_device<br><br>LOAD TRANsaction 命令的语法是：<br>LOAD TRANsaction database_name FROM dump_device<br><br>卸出数据库和事务日志的缺省权限归数据库所有者，且可以传递给其他用户；装载数据库和事务的权限也归数据库所有者，但不能传递。<br><br>11、产生用户信息表，并为信息表授权；<br>系统维护人员的另一个日常事务是为用户创建新的信息表，并为之授权。创建表以及为表授权的方法已经在讲过，在此只将有关命令语法写出来。<br>&#183;创建表的命令为：<br>CREATE TABLE table_name<br>（ column_1 datatype [NULL | NOT NULL | IDENTITY]，<br>column_2 &#8230;&#8230;<br>）<br>go<br><br>ALTER TABLE table_name<br>ADD PRIMARY KEY （column_list）<br>go<br><br>&#183;删除表的命令格式为：<br>DROP TABLE table_name<br>go<br><br>&#183;为表授权的命令格式为：<br>GRANT {ALL|permission_list}<br>ON table_name TO user_name<br>go<br><br>&#183;收回权限的命令格式为<br>REVOKE {ALL|permission_list}<br>ON table_name FROM user_name<br>go<br><br>12、监视系统运行状况，及时处理系统错误；<br>系统管理员的另一项日常工作是监视系统运行情况。主要有以下几个方面：<br>1）、监视当前用户以及进程的信息<br>使用系统过程：sp_who<br>说明：该命令显示当前系统所有注册用户及进程信息，如下表是某系统的信息。<br>SpidStatusLoginamehostnameblkdbnamecmd<br>---------------------------------------------------------------<br>1RunningSascosysv0MasterSELECT<br>2SleepingNULL0MasterNETWORK HANDLE<br>3SleepingNULL0MasterDEADLOCK TUNE<br>4SleepingNULL0MasterMIRROR HANDLER<br>5SleepingNULL0MasterHOUSEKEEPER<br>6SleepingNULL0MasterCHECKPOINT SLEEP<br>从左向右依次显示：进程号、当前状态、注册用户名、主机名、占用块数、数据库名以及当前命令。<br>如果监视时发现进程总数接近最大连接数（用系统过程：sp_configure &#8220;user conn&#8221; 查看）时，应下掉不活动或无关进程，以保证系统正常运做；另外亦可监视非法用户或用户使用不属于自己使用范围的数据库等情况。<br>2）、监视目标占用空间情况<br>使用系统过程：sp_spaceused<br>说明：该过程显示行数、数据页数以及当前数据库中由某个目标或所有目标所占用的空间。如下表是某数据库日志表的信息：<br><br>NameRow_totalreserveddataIndex_sizeunused<br>------------------------------------------------------------<br>SyslogsNot avail32KB32KB0KBNot avail<br><br>日常要监视的主要目标有：用户数据库、数据库日志表（syslogs）以及计费原始数据表等。如果发现占用空间过大，对日志表要进行转储；对其他目标则应扩充空间或清楚垃圾数据。<br>3）、监视 SQL Server 统计数字<br>使用系统过程：sp_monitor<br>说明：sp_monitor 显示SQL Server 的历史统计数字，下表是某系统的统计数字：<br><br>Last_runCurrent_runSeconds<br>---------------------------------------------------------------<br>May 13 2000 1:27PMMay 13 2000 3:01PM5678<br>CPU_busyIO_busyIdle<br>---------------------------------------------------------------<br>16(6)-0%0(0)-0%5727(5672)-99%<br>Packets_receivedPackets_sentPacket_errors<br>---------------------------------------------------------------<br>21(17)100(97)0(0)<br>Total_readTotal_writeTotal_errorsConnections<br>--------------------------------------------------------<br>785(366)311(113)0(0)3(2)<br><br>上表依次给出该系统本次运行统计的上一次时间、本次时间、间隔秒数、CPU占用、IO占用、收发包情况、系统读入写出情况等信息<br><br>13、保证系统数据安全，周期更改用户口令；<br>为保证系统数据的安全，系统管理员必须依据系统的实际情况，执行一系列的安全保障措施。其中，周期性的更改用户口令是比较常用且十分有效的措施。<br>更改用户口令是通过调用系统过程sp_password 来实现的。Sp_password 的语法为：<br>sp_password caller_password,new_password [,loginame]<br>其中caller_password 是登录口令（老口令），new_password是新口令，loginame是登录名称。<br><br>14.如何修改IP地址改变后的interfaces文件？<br>A.安装SYBASE Adapive Server的机器IP地址改变后, 应修改 interfaces 文件及有关的设置。<br>如果 interfaces 文件中使用的是机器名而不是 IP 地址, 则不需要变动。 但如果客户端联结服务器使<br>用的是服务器的 IP 地址而不是机器名,那么客户端需修改联结服务器的 IP 地址.。<br>如果 interfaces 文件中使用的是 IP 地址, 那么需要修改 interfaces 文件中和地址有关的部分,<br>可使用dscp 或 dsedit 进行修改。 如果客户端联结服务器使用的是服务器的地址而不是机器名,那么客<br>户端也需修改。<br>15。实现开机时自动装载Sybase数据库<br>　　原先要使Sybase SQL Server启动，一般需要先以sybase用户登录，然后运行$SYBASE/install目录下的startserver命令启动SYBASE_XXXX服务进程和SYB_BACKUP_XXXX备份服务进程。<br>　　要实现Unix系统启动时就能在后台装载Sybase的功能,我们可在/etc/rc2.d/目录下新建一文件S99sybase,内容如下:<br>　　SYBASE=/usr/sybase<br>　　PATH=$PATH:$SYBASE/bin<br>　　export $SYBASE $PATH<br>　　$SYBASE/install/startserver -f $SYBASE/install/RUN_SYBASE_XXXX &gt; /dev/null<br>　　$SYBASE/install/startserver -f $SYBASE/install/RUN_SYB_BACKUP_XXX &gt;/dev/null<br>　　然后修改Sybase的权限，重启系统即可。<br>16.实现关机时自动卸载Sybase数据库<br>
为保证Sybase系统的正常运行，每次在关闭Unix系统时要先结束Sybase SQL Server
的服务进程，从减轻系统管理人员操作的角度出发建立一用户halt，修改/etc/passwd文件，将halt用户的uid改为0（或其他可运行
shutdown的用户id），在/usr/halt/.profile中添加以下语句：<br>　　SYBASE=/usr/sybase<br>　　DSQUERY=SYBASE_XXXX<br>　　PATH=$PATH:$SYBASE/bin<br>　　export SYBASE DSQUERY PATH<br>　　isql -Usa -Pabcabc -ihalt.sql &gt; /dev/null<br>　　shutdown -y -g0<br>　　其中&#8220;abcabc&#8221;为sa用户的口令,halt.sql是一简单的文本文件，内容如下：<br>　　shutdown<br>　　go<br>　　这样每次只要以halt用户登录，就实现了自动卸下Sybase数据库，然后关闭Unix系统。<br>17. Sybase UTF-8中文字符集设置<br>(这里SYBASE的安装路径为c:\sybase) <br>&nbsp;1.c:\&gt;cd \sybase\charsets\cp936<br>&nbsp;2.c:\sybase\charsets\cp936&gt; charset -U用户名 -P密码 -S数据库服务器名称 binary.srt cp936<br>&nbsp;更改默认字符集为cp936<br>&nbsp;3.在SQL环境中<br>&nbsp;1&gt;select name,id from syscharsets(会列出字符集对应的id号)<br>&nbsp;2&gt;go<br>&nbsp;找到name为cp936对应的id(假设为171)<br>&nbsp; 1&gt;sp_configure "default character set id",171<br>&nbsp; 2&gt;go<br>&nbsp;5.重启server两次<br>（注:第一次启动后，server会自动宕掉，需要第二次重启后才能使用）<br><br>18.创建用户数据库<br>以下通过一个建立数据库的脚本说明建立数据库的过程：<br>//创建数据库设备，设备大小以页（2K）为单位<br>disk init<br>name="test_dbdev",<br>physname="/home/bk/test_dbdev.dat",<br>vdevno=5,<br>size=10240<br>go<br>disk init<br>name="test_logdev",<br>physname="/home/bk/test_logdev.dat",<br>vdevno=6,<br>size=5120<br>go<br>//创建数据库TEST_DB，其大小为20M，日志大小为10M<br>create database TEST_DB<br>on test_dbdev=20<br>log on test_logdev=10<br>go<br>//打开数据库<br>use TEST_DB<br>go<br>-----------<br>举例说明：<br>DISK INIT<br>Name=&#8217;My_Device&#8217;,<br>Physname=&#8217;D:\database\My_device.dat&#8217;,<br>Vdevno=3<br>Size=5000<br>注释：逻辑名、物理名、设备虚拟号、设备大小<br>------------------------<br>创建用户数据库<br>Create Database 数据库名<br>&nbsp; On 设备_1=Size_1,//单位：M<br>&nbsp;&nbsp;&nbsp;&nbsp; 设备_2=Size_2,<br>&#8230;&#8230;<br>log on 日志设备=Log_Size<br>[With Override]//在同一设备上创建数据库和事务日志时使用该选项<br>[For Load]&nbsp;&nbsp;&nbsp; //禁止用户访问直到数据库的装入或恢复操作完成为止<br>举例：<br>&nbsp;&nbsp;&nbsp; Create Database test_db<br>&nbsp;&nbsp;&nbsp; On data_dev=100,//单位：M<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Index_dev=50<br>&nbsp;&nbsp;&nbsp; Log on log_dev=30<br>说明：<br>（1）将日志放在单独的设备上，有利于数据库性能的提高；<br>（2）如果将数据库和日志放在同一设备上，就不能实现增量备份；<br>（3）通常将System和Default段缩减范围到一个设备上，如删除设备Index_dev上的System段和Default段，创建新的段，用来存放专门的数据库对象<br>19.备份和恢复DB数据<br>dump database mydb to '/u01/mydb_full.bk'<br>go<br><br>dump tranaction mydb to '/u01/mydb_tran.bk'<br>go<br><br>load database mydb from '/u01/mydb_full.bk'<br>load transaction mydb from '/u01/mydb_tran.bk'<br>online database mydb<br>go<br>&nbsp;ps:采用增量备份后，严禁日志截断! 即禁止使用：dump transaction sctf truncate_only&nbsp; 命令!<br>增量备份必须是在完整备份后的或上一次增量备份后，中间若遇到日志截断，后续的增量备份均告失败！<br>增量备份可以根据需要，如每小时备份一次，每次备份所需时间约2－5秒，所以时间极快。<br>&nbsp;ps:
单引号和双引号都能关闭shell对特殊字符的处理。不同的是，双引号没有单引号严格，单引号关闭所有有特殊作用的字符，而双引号只要求shell忽略大
多数，具体的说，就是①美元符号②反引号③反斜杠，这3种特殊字符不被忽略。 不忽略美元符号意味着shell在双引号内部也进行变量名替换。<br><br><br>*********************************************<br>下面资料来自SYBASE白皮书<br>1。客户端字符集修改 locales.dat<br>2.可以通过设置CHARSET驱动程序属性指定在应用程序中使用的字符集。<br>&nbsp; 或者设置jconnect字符集的方法来设置。<br>3。查看字符集：<br>SERVER：sp_helpsort<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; go<br>CLIENT：select @@client_csname<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; go<br>4.段+阀值：<br>默认是三个段: system default logsegment<br>system段: 数据库系统表存放处<br>default段: 未指明段的对象都存放在这里<br>logsegment段:数据库的事务日志存放处<br><br>阀值(threshold) : <br>建立阀值: sp_addthreshold 库名,段名,自由空间,存储过程名字<br>删除阀值: sp_dropthreshold 库名,段名,自由空间页 <br>显示阀值: sp_helpthreshold<br>管理阀值: sp_dboption<br>显示段空间信息:sp_helpsegment<br>阀值管理的流程如下:<br>先建存储过程:(下面的是日志的存储过程,原因:日志增长具有不可预见性,相比之下,数据增长具有可预见性,所以一般都建logsegment的阀值管理,default的阀值管理可不建) <br>create procedure szjj<br>@dbname varchar (30),<br>@segmentname varchar (30),<br>@space_left int,<br>@status int<br>as<br>dump transaction @dbname to "/tmp/bb.dat"<br>go<br>&nbsp; ps:上面是日志的存储过程,如果是数据的存储则用dump database...<br><br>查看当前日志自由空间情况: <br>sp_helpsegment logsegment<br>go<br>查看当前数据库数据自由空间情况: <br>sp_helpsegment default<br>go<br><br>查看当前阀值情况: <br>sp_helpthreshold<br>go<br><br>查看当前段情况: <br>sp_helpsegment<br>go<br><br>然后根据自由空间来定阀值参数:<br>sp_addthreshold test_db,logsegment,200,szjj<br>go<br><br>&nbsp;ps:当日志段的最后机会阀值被超越后,试图往该日志段上记日志的用户进程默认是被挂起.用下面的命令修改MASTER库参数,让阀值被超越后事务就会滚.<br>use master<br>go<br>sp_dboption test_db,"abort tran on log full",true<br>go<br><br>5.维护<br>1）对各ASE用户担当的角色和特权进行分派。<br>2）管理和监视磁盘空间的使用情况。<br>3）数据库空间：<br>&nbsp;&nbsp;&nbsp;&nbsp; sp_helpdb 查看各库情况<br>&nbsp;&nbsp;&nbsp;&nbsp; alter database 扩充空间<br>&nbsp;&nbsp;&nbsp;&nbsp; dump tran&nbsp; 截断日志<br>4）日常数据备份和恢复<br>5）SYBASE默认的服务器：<br>&nbsp;&nbsp;&nbsp;&nbsp; adaptive server:管理整个数据库系统，包括用户 数据 资源等的管理和控制。<br>&nbsp;&nbsp;&nbsp;&nbsp; backup server: 在备份和恢复时执行数据库的dump or load<br>&nbsp;&nbsp;&nbsp;&nbsp; xp server:执行扩展存储过程<br>&nbsp;&nbsp;&nbsp;&nbsp; monitor server:为性能调试分析采集数据。<br>&nbsp;&nbsp;&nbsp;&nbsp; historical server:保存来自monitor server的数据，以备将来分析。<br>6。单模式启动SYBASE<br>&nbsp; 1）停止ASE数据库服务<br>&nbsp; 2）*/install/startserver -f RUN_servername -m <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ps:windows下在服务的属性里加-m。<br>7.license序列号<br>&nbsp; 验证许可软件是否执行:*/bin/lmutil lmstat -c<br>&nbsp; 手工启动:*/bin/lmgrd -c $lm_license_file&amp;<br>&nbsp; 启动许可管理器：*/bin/lmgr<br>&nbsp; 运行：*/bin/lmutil lmreread<br>8.查看逻辑页大小<br>&nbsp; select @@maxpagesize<br>9.启动关闭SYBASE<br>&nbsp; 启动：*/startserver -f RUN_servername<br>&nbsp; 关闭：登录后shutdown关数据库服务&nbsp; shutdown SYB_BACKUP关备份服务器<br>10。帐户管理<br>SA帐户初始口令为空，具有SA和SSO角色。具有SSO的登录帐户可以添加其他登录帐户。<br>1）创建登录帐户<br>&nbsp;&nbsp; sp_addlogin login_name,password<br>&nbsp;&nbsp; go<br>2)修改帐户密码<br>&nbsp;&nbsp; sp_password caller_password,new_password,login_name<br>&nbsp;&nbsp; go<br>3)设置登录帐户的缺省数据库(如果不指定,默认是master库)<br>&nbsp;&nbsp; sp_addlogin login_name,password,default_db<br>&nbsp;&nbsp; go<br>or<br>&nbsp;&nbsp; sp_modifylogin login_name,"defdb",db_name<br>&nbsp;&nbsp; go<br>4）为登录帐户授予系统角色<br>&nbsp; sp_role "grant",role_name,login_name<br>&nbsp; go<br>or <br>&nbsp; grant role role_name to login_name<br>&nbsp; go<br>5)查看登录帐户的信息<br>&nbsp; sp_displaylogin login_name<br>&nbsp; go<br>6)SYBASE常用角色：sa sso oper<br>7)修改登录密码<br>&nbsp;sp_password caller_passwd,new_passwd[,login_name]<br>8)删除sa_role的口令<br>&nbsp; alter role sa_role drop passwd<br>9）创建数据库用户<br>&nbsp; sp_adduser loginname[,name_in_db[,grpname]]<br>&nbsp; go<br>10)添加用户并授予查询权限<br>&nbsp; sp_adduser 权限 on 表名 to 用户名<br>11）删除别名<br>&nbsp; sp_dropalias loginname<br>12)创建用户自定义组<br>&nbsp; sp_addgroup grpname<br>&nbsp; go<br>13)找回SA密码<br>&nbsp;&nbsp; 停止SYBASE服务--〉修改RUN_xxx,在命令行的最后加上-psa--〉startserver -f RUN_xxx--&gt;启动信息的最后会出来密码。<br><br>11。数据库管理<br>1）数据库选项的设置<br>&nbsp; sp_dboption[dbname,optname,{,true|false}]<br>2)建库<br>&nbsp; create database dbname on data_device_name=size log on log_device_name=size<br>&nbsp; go<br>&nbsp;ps:size default is M<br>3)查看库大小 sp_helpdb dbname<br>4)改变库的属主 sp_changedbowner loginname[,true]<br>5)扩展数据库<br>&nbsp; 扩展数据空间：alter database db_name on device_name<br>&nbsp; 扩展日志空间: alter database db_name log on device_name<br>6)设置数据库为单用户模式/可以在用户表中自动添加序号生成器/自动截断事务日志模式<br>use master<br>go<br>sp_dboption db_name,"signle user",true<br>go<br>sp_dboption db_name,"trunc log on chkpt",true <br>go<br>sp_dboption db_name,"auto identity",true<br>use db_name<br>go<br>checkpoint<br>go<br>7)查看当前库的进程信息<br>sp_who<br><br>附录=====================================<br>Explanation <br>
SQL commands are grouped into the following categories:<br>
SQL commands that are not allowed in transactions at all.<br>
SQL commands, such as Data Definition Language (DDL) commands, that are
allowed in transactions only if the required database option (ddl in
tran) is set to TRUE.<br>
<br>
SQL commands that are allowed only if the transaction affects some
other database. These commands include create table, drop table, and
other commands that are run across databases to create or drop objects
in another database when the database in which the objects are being
created or dropped has the database option ddl in tran set to TRUE.<br>
<br>
Error 226 occurs when Adaptive Server detects a command that is not
allowed in a multi-statement transaction. A multi-statement transaction
is a set of commands prefaced with the begin transaction command.<br>
The following commands are never allowed in multi-statement transactions:<br>
alter database <br>
create database <br>
dbcc reindex, dbcc fix_text <br>
disk init <br>
drop database <br>
dump database, dump transaction <br>
load database, load transaction <br>
select into <br>
set transaction isolation level <br>
truncate table <br>
update statistics <br>
setuser <br>
<br>
The following commands are not normally allowed in multi-statement
transactions but you can use them if you use sp_dboption to set ddl in
tran to TRUE first:<br style="color: #ff0102;">
<br>
create default<br>create index<br>create procedure<br>create rule<br>create schema<br>create table<br>create trigger<br>create view <br>
drop default<br>drop index<br>drop procedure<br>drop rule<br>drop table<br>drop trigger<br>drop view <br>
grant <br>
revoke <br>
Action <br>
<br>If the command is allowed in a multistatement transaction when ddl in
tran is set to TRUE, set ddl in tran to TRUE before running the
transaction. Setting ddl in tran to TRUE causes locks on system tables
and this can affect performance. You can check the current setting of
ddl in tran with sp_helpdb. <br>
<br>
If the command is never allowed in a multi-statement transaction, execute it outside the multi-statement transaction.
<br><img src ="http://www.cnitblog.com/201/aggbug/49607.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cnitblog.com/201/" target="_blank">David</a> 2008-09-28 10:18 <a href="http://www.cnitblog.com/201/archive/2008/09/28/49607.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>linux下 Oracle自动启动与停止</title><link>http://www.cnitblog.com/201/archive/2007/09/20/33819.html</link><dc:creator>David</dc:creator><author>David</author><pubDate>Thu, 20 Sep 2007 03:24:00 GMT</pubDate><guid>http://www.cnitblog.com/201/archive/2007/09/20/33819.html</guid><wfw:comment>http://www.cnitblog.com/201/comments/33819.html</wfw:comment><comments>http://www.cnitblog.com/201/archive/2007/09/20/33819.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cnitblog.com/201/comments/commentRss/33819.html</wfw:commentRss><trackback:ping>http://www.cnitblog.com/201/services/trackbacks/33819.html</trackback:ping><description><![CDATA[                                               linux下 Oracle自动启动与停止<br><br>1、 修改Oracle系统配置文件/etc/oratab<br>/etc/oratab 格式为： SID:ORACLE_HOME:AUTO<br>把AUTO域设置为Y(大写)，只有这样，oracle 自带的dbstart和dbshut才能够发挥作用。我的为：<br>ora9i:/home/oracle/ora/products/9.2.0:Y<br>2、 编写服务脚本：<br>如下<br>#!/bin/bash<br>#<br>#################FUNCTION#############<br>#<br># AutoStart Oracle and listener<br># AutoStop Oracle and listener<br>#<br>#####################################<br>#<br># Created by ZhouYS 2003-11-26<br>#<br><br>case "$1" in<br>start)<br>echo "Starting Oracle Databases ... " <br>echo "-------------------------------------------------" &gt;&gt; /var/log/oracle<br>date +" %T %a %D : Starting Oracle Databasee as part of system up." &gt;&gt; /var/log/oracle<br>echo "-------------------------------------------------" &gt;&gt; /var/log/oracle<br>su - oracle -c "dbstart" &gt;&gt; /var/log/oracle<br>echo "Done."<br>echo "Starting Oracle Listeners ... " <br>echo "-------------------------------------------------" &gt;&gt; /var/log/oracle<br>date +" %T %a %D : Starting Oracle Listeners as part of system up." &gt;&gt; /var/log/oracle<br>echo "-------------------------------------------------" &gt;&gt; /var/log/oracle<br>su - oracle -c "lsnrctl start" &gt;&gt; /var/log/oracle<br>echo "Done."<br>echo ""<br>echo "-------------------------------------------------" &gt;&gt; /var/log/oracle<br>date +" %T %a %D : Finished." &gt;&gt; /var/log/oracle<br>echo "-------------------------------------------------" &gt;&gt; /var/log/oracle<br>touch /var/lock/subsys/oracle<br><br>;;<br>stop)<br>echo "Stoping Oracle Listeners ... " <br>echo "-------------------------------------------------" &gt;&gt; /var/log/oracle<br>date +" %T %a %D : Stoping Oracle Listener as part of system down." &gt;&gt; /var/log/oracle<br>echo "-------------------------------------------------" &gt;&gt; /var/log/oracle<br>su - oracle -c "lsnrctl stop" &gt;&gt; /var/log/oracle<br>echo "Done."<br>rm -f /var/lock/subsys/oracle<br>echo "Stoping Oracle Databases ... "<br>echo "-------------------------------------------------" &gt;&gt; /var/log/oracle<br>date +" %T %a %D : Stoping Oracle Databases as part of system down." &gt;&gt; /var/log/oracle<br>echo "-------------------------------------------------" &gt;&gt; /var/log/oracle<br>su - oracle -c "dbshut" &gt;&gt;/var/log/oracle<br>echo "Done."<br>echo ""<br>echo "-------------------------------------------------" &gt;&gt; /var/log/oracle<br>date +" %T %a %D : Finished." &gt;&gt; /var/log/oracle<br>echo "-------------------------------------------------" &gt;&gt; /var/log/oracle<br><br>;;<br>restart)<br>$0 stop<br>$0 start<br><br>;;<br>*)<br>echo "Usage: oracle {start|stop|restart}" <br>exit 1<br>esac<br><br>将脚本命名为oracle，保存在/etc/rc.d/init.d下<br>改变文件属性：chmod 755 oracle<br><br>注意：在windows下编辑此文件时有DOS格式字符导致在linux下不能够正常运行，建议用gedit 或用 vi编辑<br><br>3、建立服务连接：<br>系统启动时启动数据库，我们需要以下连结∶<br>--------------------------------------------------------------------------------<br>$ ln -s ../init.d/oracle /etc/rc.d/rc2.d/S99oracle<br>$ ln -s ../init.d/oracle /etc/rc.d/rc3.d/S99oracle<br>$ ln -s ../init.d/oracle /etc/rc.d/rc5.d/S99oracle #rc4.d unused<br><br><br>--------------------------------------------------------------------------------<br><br>要在重新启动时停止数据库，我们需要以下连结∶ <br><br><br>--------------------------------------------------------------------------------<br><br>$ ln -s ../init.d/oracle /etc/rc.d/rc0.d/K01oracle # 停止<br>$ ln -s ../init.d/oracle /etc/rc.d/rc6.d/K01oracle # 重新启动
<br><img src ="http://www.cnitblog.com/201/aggbug/33819.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cnitblog.com/201/" target="_blank">David</a> 2007-09-20 11:24 <a href="http://www.cnitblog.com/201/archive/2007/09/20/33819.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Linux 下设置oracle 10g 自动启动服务</title><link>http://www.cnitblog.com/201/archive/2007/09/20/33818.html</link><dc:creator>David</dc:creator><author>David</author><pubDate>Thu, 20 Sep 2007 03:17:00 GMT</pubDate><guid>http://www.cnitblog.com/201/archive/2007/09/20/33818.html</guid><wfw:comment>http://www.cnitblog.com/201/comments/33818.html</wfw:comment><comments>http://www.cnitblog.com/201/archive/2007/09/20/33818.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cnitblog.com/201/comments/commentRss/33818.html</wfw:commentRss><trackback:ping>http://www.cnitblog.com/201/services/trackbacks/33818.html</trackback:ping><description><![CDATA[       Linux中在Oracle安装完毕以后，如果重新启动Linux ，Oracle是不会自动启动的，你可以通过手动调用dbstart命令来进行启动，不过这样似乎也很繁琐。我们可以通过配置Oracle的自动启动脚本，然后利用Linux的Service来启动Oracle服务器。<br><br>        首先在/etc/rc.d/init.d/目录下配置Oracle的服务文件。<br><br>touch oracle10g<br>chmod a+x oracle10g<br><br>        然后编辑此oracle10g文件。内容如下。<br># !/bin/bash<br># whoami<br># root<br># chkconfig: 345 51 49<br># description: starts the oracle dabase deamons<br>#<br>ORA_HOME=/opt/oracle<br>ORA_OWNER=oracle<br>case "" in<br>'start')<br>echo -n "Starting oracle10g: "<br>su - $ORA_OWNER -c "$ORA_HOME/bin/dbstart" &amp;<br>su - $ORA_OWNER -c "$ORA_HOME/bin/lsnrctl start"<br>touch /var/lock/subsys/oracle10g<br>echo<br>;;<br><br>'stop')<br>echo -n "shutting down oracle10g: "<br>su - $ORA_OWNER -c "$ORA_HOME/bin/dbshut" &amp;<br>su - $ORA_OWNER -c "$ORA_HOME/bin/lsnrctl stop"<br>rm -f /var/lock/subsys/oracle10g<br>echo<br>;;<br><br>'restart')<br>echo -n "restarting oracle10g: "<br>$0 stop<br>$0 start<br>echo<br>;;<br>*)<br>echo "usage: oracle10g "<br>exit 1<br><br>esac<br>exit 0<br><br>        保存文件，退出以后，添加并启动察看服务。<br>/sbin/chkconfig --add oracle10g<br>/sbin/chkconfig --list oracle10g<br><br>        重新启动Linux的时候，如果看到启动项Oracle出现OK，代表Oracle成功随Linux启动了。<br><img src ="http://www.cnitblog.com/201/aggbug/33818.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cnitblog.com/201/" target="_blank">David</a> 2007-09-20 11:17 <a href="http://www.cnitblog.com/201/archive/2007/09/20/33818.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>oracle 数据库本质 --- 来自itpub</title><link>http://www.cnitblog.com/201/archive/2007/09/13/33308.html</link><dc:creator>David</dc:creator><author>David</author><pubDate>Thu, 13 Sep 2007 07:19:00 GMT</pubDate><guid>http://www.cnitblog.com/201/archive/2007/09/13/33308.html</guid><description><![CDATA[<font face="verdana,arial,helvetica" size="1">今天看到一些大侠写的oracle 概念，感觉不错，留一份！<br><br>oracle数据库本质(E文看不懂,可以看这篇)</font>
<p><font face="verdana, arial, helvetica" size="2">要了解oracle体系结构必须先了解两个基本的概念: 数据库和实例.<br>
<br>
一 数据库<br>
<br>
数据库(database)是一个数据集合.<br>
<br>
无论数据库是采用关系结构还是面向对象结构, oracle数据库都将<br>
<br>
其数据存放在数据文件中. 在其内部, 数据库结构数据对文件的逻辑<br>
<br>
映射, 使不同的数据分开存储, 这些逻辑划分称为表空间.<br>
<br>
表空间和文件介绍:<br>
<br>
1: 表空间<br>
<br>
表空间(tablespace)是数据库的逻辑划分, 每个数据库至少有一个表空间,叫做系统表空间(system 表空间). 一个表空间只能属于一个数据库。<br>
<br>
每个表空间由同一个磁盘上的一个或多个文件组成, 这些文件称为数据文件.<br>
<br>
表空间的特性:<br>
<br>
(1)控制数据库数据磁盘分配<br>
<br>
(2)限制用户在表空间中可以使用的磁盘空间大小<br>
<br>
(3)表空间具有 online, offline, readonly, readwrite属性<br>
<br>
修改表空间的属性:<br>
<br>
SQL&gt; alter tablespace 表空间名称 属性;<br>
查询表空间状态:<br>
SQL&gt; select tablespace_name, status from dba_tablespaces;<br>
<br>
注意: system, undo, temp表空间不能设为offline属性.<br>
<br>
(4)完成部分数据库的备份与恢复<br>
<br>
(5)表空间通过数据文件来扩大, 表空间的大小等于构成该表空间的所以数据文件的大小只和.<br>
<br>
查询表空间与数据文件对应关系:<br>
<br>
SQL&gt; select tablespace_name, bytes, file_name from dba_data_files;<br>
<br>
基于表空间的几个操作:<br>
<br>
(1)查询用户缺省表空间:<br>
SQL&gt; select username, default_tablespace from dba_users;<br>
(2)查询表与存储该表的表空间:<br>
SQL&gt; select table_name, tablespace_name from user_tables;<br>
(3)修改用户缺省表空间:<br>
SQL&gt; alter user username default tablespace tablespace_name;<br>
(4)将数据从一个表空间移动到另一个表空间:<br>
SQL&gt; alter table table_name move tablespace tablespace_name;<br>
<br>
2.数据文件<br>
<br>
每个表空间由同一个磁盘上的一个或多个文件组成, 这些文件叫做数据文件(datafile),数据文件只能属于一个表空间.
数据文件创建后可以改变大小. 创建新的表空间需要创建新的数据文件. 数据文件一旦加入到表空间中, 就不能从表空间中移走,
也不能与其他表空间发生联系。 <br>
<br>
<br>
数据库必须的三类文件是 data file, control file, redolog file. 其他文件 prameter file,password file, archived log files并不是数据库必须的, 他们只是辅助数据库的。<br>
<br>
查看数据库的物理文件组成:<br>
<br>
(1)查看数据文件: SQL&gt; select * from v$datafile;<br>
(2)查看控制文件: SQL&gt; select * from v$controlfile;<br>
(3)查看日志文件: SQL&gt; select * from v$logfile;<br>
<br>
二: 实例<br>
<br>
通俗的讲实例就是操作oracle数据库的一种手段.<br>
<br>
数据库实例也称作服务器, 是用来访问数据库文件集的存储结构及后台进程的集合.<br>
<br>
一个数据库可以被多个实例访问(称为真正的应用群集选项).<br>
<br>
决定实例的大小及组成的各种参数或者存储在名称init.ora的初始化文件中, 或者隐藏<br>
<br>
在数据库内部的服务器参数文件中. 通过spfile引用该文件, spfile存储在spfile.ora文件中.<br>
<br>
实例启动时读取初始化文件, 数据库系统管理员可以修改该文件, 对初始化文件的修改只有在下次启动时才有效。<br>
<br>
Instance分为两部分:<br>
<br>
1: memory structure(内存结构)<br>
<br>
memory structure分为两部分:SGA(System Global
Area)区是用于存储数据库信息的内存区，该信息为数据库进程所共享。它包含Oracle 服务器的数据和控制信息, 它是在Oracle
服务器所驻留的计算机的实际内存中得以分配，如果实际内存不够再往虚拟内存中写。<br>
<br>
包括:<br>
<br>
.share pool<br>
.datafase buffer cache<br>
.redo log buffer<br>
.other structures<br>
<br>
PGA(Program Global Area)区包含单个服务器进程或单个后台进程的数据和控制信息，与几个进程共享的SGA 正相反PGA 是只被一个进程使用的区域，PGA 在创建进程时分配在终止进程时回收。<br>
<br>
2: background process(后台进程)<br>
<br>
包括:<br>
<br>
.PMON 负责在一个Oracle 进程失败时清理资源<br>
<br>
.SMON 检查数据库的一致性如有必要还会在数据库打开时启动数据库的恢复<br>
<br>
.DBWR 负责将更改的数据从数据库缓冲区高速缓存写入数据文件<br>
<br>
.LGWR 将重做日志缓冲区中的更改写入在线重做日志文件<br>
<br>
.CKPT 负责在每当缓冲区高速缓存中的更改永久地记录在数据库中时,更新控制文件和数据文件中的数据库状态信息。</font></p>
<br><img src ="http://www.cnitblog.com/201/aggbug/33308.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cnitblog.com/201/" target="_blank">David</a> 2007-09-13 15:19 <a href="http://www.cnitblog.com/201/archive/2007/09/13/33308.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Linux下Oracle9i RMAN备份及恢复步骤介</title><link>http://www.cnitblog.com/201/archive/2007/08/09/31557.html</link><dc:creator>David</dc:creator><author>David</author><pubDate>Thu, 09 Aug 2007 10:09:00 GMT</pubDate><guid>http://www.cnitblog.com/201/archive/2007/08/09/31557.html</guid><wfw:comment>http://www.cnitblog.com/201/comments/31557.html</wfw:comment><comments>http://www.cnitblog.com/201/archive/2007/08/09/31557.html#Feedback</comments><slash:comments>2</slash:comments><wfw:commentRss>http://www.cnitblog.com/201/comments/commentRss/31557.html</wfw:commentRss><trackback:ping>http://www.cnitblog.com/201/services/trackbacks/31557.html</trackback:ping><description><![CDATA[<p>1、切换服务器设置归档模式，如果已经是归档模式可跳过此步：</p>
<p>　　%sqlplus /nolog (启动sqlplus)</p>
<p>　　SQL&gt; conn / as sysdba (以DBA身份连接数据库)</p>
<p>　　SQL&gt; shutdown immediate; (立即关闭数据库)</p>
<p>　　SQL&gt; startup mount (启动实例并加载数据库，但不打开)</p>
<p>　　SQL&gt; alter database archivelog; (更改数据库为归档模式)</p>
<p>　　SQL&gt; alter database open; (打开数据库)</p>
<p>　　SQL&gt; alter system archive log start; (启用自动归档)</p>
<p>　　SQL&gt; exit (退出)</p>
<p>2、连接：</p>
<p>　　%rman target=sys/password@mydb
(启动恢复管理器)</p>
<p>3、基本设置：</p>
<p>　　RMAN&gt; configure default
device type to disk; (设置默认的备份设备为磁盘)</p>
<p>　　RMAN&gt; configure device
type disk parallelism 2; (设置备份的并行级别，通道数)</p>
<p style="margin-left: 45pt; text-indent: -45pt;">　　RMAN&gt; configure channel 1 device
type disk fromat '/backup1/backup_%U'; <br>
(设置备份的文件格式，只适用于磁盘设备)</p>
<p style="margin-left: 45.05pt; text-indent: -27pt;">RMAN&gt;
configure channel 2 device type disk fromat '/backup2/backup_%U';<br>
(设置备份的文件格式，只适用于磁盘设备)</p>
<p style="margin-left: 45pt; text-indent: -45pt;">　　RMAN&gt; configure controlfile
autobackup on; <br>
(打开控制文件与服务器参数文件的自动备份)</p>
<p style="margin-left: 45pt; text-indent: -45pt;">　　RMAN&gt; configure controlfile
autobackup format for device type disk to '/backup1/ctl_%F'; <br>
(设置控制文件与服务器参数文件自动备份的文件格式)</p>
<p>4、查看所有设置：</p>
<p>　　RMAN&gt; show all</p>
<p>5、查看数据库方案报表：</p>
<p>　　RMAN&gt; report schema;</p>
<p>6、备份全库：</p>
<p style="margin-left: 40.5pt; text-indent: -40.5pt;">　　RMAN&gt; backup database plus
archivelog delete input; <br>
(备份全库及控制文件、服务器参数文件与所有归档的重做日志，并删除旧的归档日志)</p>
<p>7、备份表空间：</p>
<p style="margin-left: 40.5pt; text-indent: -40.5pt;">RMAN&gt; backup tablespace system plus
archivelog delete input; <br>
(备份指定表空间及归档的重做日志，并删除旧的归档日志)</p>
<p>8、备份归档日志：</p>
<p>　　RMAN&gt; backup archivelog
all delete input;</p>
<p>9、复制数据文件：</p>
<p>　　RMAN&gt; copy datafile 1 to
'/oracle/dbs/system.copy';</p>
<p>10、查看备份和文件复本：</p>
<p>　　RMAN&gt; list backup;</p>
<p>11、验证备份：</p>
<p>　　RMAN&gt; validate backupset
3;</p>
<p>12、从自动备份中恢复服务器参数文件：</p>
<p>　　RMAN&gt; shutdown
immediate; (立即关闭数据库)</p>
<p>　　RMAN&gt; startup nomount; (启动实例)</p>
<p style="margin-left: 40.5pt; text-indent: -40.5pt;">　　RMAN&gt; restore spfile to pfile
'/backup1/mydb.ora' from autobackup; <br>
(从自动备份中恢复服务器参数文件)</p>
<p>13、从自动备份中恢复控制文件：</p>
<p>　　RMAN&gt; shutdown
immediate; (立即关闭数据库)</p>
<p>　　RMAN&gt; startup nomount; (启动实例)</p>
<p style="margin-left: 60pt; text-indent: -60pt;">　 RMAN&gt; restore controlfile to '/backup1'
from autobackup; <br>
(从自动备份中恢复控制文件)</p>
<p style="margin-left: 60pt; text-indent: -60pt;">14、恢复和复原全数据库：</p>
<p>&nbsp;&nbsp;&nbsp;RMAN&gt; shutdown immediate； （立即关闭数据库）</p>
<p>&nbsp;&nbsp;&nbsp; RMAN&gt; exit （退出）</p>
<p>&nbsp;&nbsp;&nbsp; %mv /oracle/dbs/tbs_12.f
/oracle/dbs/tbs_12.bak （将数据文件重命名）</p>
<p>&nbsp;&nbsp;&nbsp; %mv
/oracle/dbs/tbs_13.f /oracle/dbs/tbs_13.bak （将数据文件重命名）</p>
<p>&nbsp;&nbsp;&nbsp; %mv
/oracle/dbs/tbs_14.f /oracle/dbs/tbs_14.bak （将数据文件重命名）</p>
<p>&nbsp;&nbsp;&nbsp; %mv
/oracle/dbs/tbs_15.f /oracle/dbs/tbs_15.bak （将数据文件重命名）</p>
<p>&nbsp;&nbsp;&nbsp; %rman target=rman/rman@mydb
（启动恢复管理器）</p>
<p style="margin-left: 36pt; text-indent: -36pt;">&nbsp;&nbsp;&nbsp; RMAN&gt; startup
pfile=/oracle/admin/mydb/pfile/initmydb.ora <br>
（指定初始化参数文件启动数据库）</p>
<p>&nbsp;&nbsp;&nbsp; RMAN&gt; restore
database； （还原数据库）</p>
<p>&nbsp;&nbsp;&nbsp; RMAN&gt; recover
database； （恢复数据库）</p>
<p>&nbsp;&nbsp;&nbsp; RMAN&gt; alter
database open； （打开数据库）</p>
<p>15、恢复和复原表空间：</p>
<p>&nbsp;&nbsp;&nbsp; RMAN&gt; sql
'alter tablespace users offline immediate'；
（将表空间脱机）</p>
<p>&nbsp;&nbsp;&nbsp; RMAN&gt; exit （退出恢复管理器）</p>
<p>&nbsp;&nbsp;&nbsp; %mv
/oracle/dbs/users01.dbf /oracle/dbs/users01.bak （将表空间重命名）</p>
<p>&nbsp;&nbsp;&nbsp; %rman
target=rman/rman@mydb （启动恢复管理器）</p>
<p>&nbsp;&nbsp;&nbsp; RMAN&gt; restore
tablespace users； （还原表空间）</p>
<p>&nbsp;&nbsp;&nbsp; RMAN&gt; recover
tablespace users； （恢复表空间）</p>
<p>&nbsp;&nbsp;&nbsp; RMAN&gt; sql
'alter tablespace users online'； （将表空间联机）</p>
<p>16、增量备份与恢复：</p>
<p>&nbsp;&nbsp;&nbsp; 第一天的增量基本备份：</p>
<p>&nbsp;&nbsp;&nbsp; RMAN&gt; backup
incremental level=0 database plus archivelog delete input；</p>
<p>&nbsp;&nbsp;&nbsp; 第二天的增量差异备份：</p>
<p>&nbsp;&nbsp;&nbsp; RMAN&gt; backup
incremental level=2 database plus archivelog delete input；</p>
<p>&nbsp;&nbsp;&nbsp; 第三天的增量差异备份：</p>
<p>&nbsp;&nbsp;&nbsp; RMAN&gt; backup
incremental level=2 database plus archivelog delete input；</p>
<p>&nbsp;&nbsp;&nbsp; 第四天的增量差异备份：</p>
<p>&nbsp;&nbsp;&nbsp; RMAN&gt; backup
incremental level=1 database plus archivelog delete input；</p>
<p>&nbsp;&nbsp;&nbsp; 第五天的增量差异备份：</p>
<p>&nbsp;&nbsp;&nbsp; RMAN&gt; backup
incremental level=2 database plus archivelog delete input；</p>
<p>&nbsp;&nbsp;&nbsp; 第六天的增量差异备份：</p>
<p>&nbsp;&nbsp;&nbsp; RMAN&gt; backup
incremental level=2 database plus archivelog delete input；</p>
<p>&nbsp;&nbsp;&nbsp; 第七天的增量差异备份：</p>
<p>&nbsp;&nbsp;&nbsp; RMAN&gt; backup
incremental level=0 database plus archivelog delete input；</p>
<p>&nbsp;&nbsp;&nbsp; 增量恢复：</p>
<p>&nbsp;&nbsp;&nbsp; RMAN&gt;
shutdown immediate；</p>
<p>&nbsp;&nbsp;&nbsp; RMAN&gt; exit</p>
<p>&nbsp;&nbsp;&nbsp; %mv
/oracle/dbs/tbs_12.f /oracle/dbs/tbs_12.bak</p>
<p>&nbsp;&nbsp;&nbsp; %mv
/oracle/dbs/tbs_13.f /oracle/dbs/tbs_13.bak</p>
<p>&nbsp;&nbsp;&nbsp; %mv
/oracle/dbs/tbs_14.f /oracle/dbs/tbs_14.bak</p>
<p>&nbsp;&nbsp;&nbsp; %mv
/oracle/dbs/tbs_15.f /oracle/dbs/tbs_15.bak</p>
<p>&nbsp;&nbsp;&nbsp; %rman
target=rman/rman@mydb</p>
<p>&nbsp;&nbsp;&nbsp; RMAN&gt; startup
pfile=/oracle/admin/mydb/pfile/initmydb.ora</p>
<p>&nbsp;&nbsp;&nbsp; RMAN&gt; restore
database；</p>
<p>&nbsp;&nbsp;&nbsp; RMAN&gt; recover
database；</p>
<p>&nbsp;&nbsp;&nbsp; RMAN&gt; alter
database open.（e129）on.htm</p>
<p>&nbsp;&nbsp;&nbsp;
simulator/doc/license_keys.htm</p>
<p>&nbsp;&nbsp;&nbsp;
simulator/doc/sdk.style.css</p>
<p>&nbsp;&nbsp;&nbsp;
simulator/doc/davehitzforeword.htm</p>
<p>&nbsp;&nbsp;&nbsp;
simulator/doc/faq.htm</p>
<p>&nbsp;&nbsp;&nbsp;
simulator/doc/troubleshooting.htm</p>
<p>&nbsp;&nbsp;&nbsp;
simulator/license.htm</p>
<p>&nbsp;&nbsp;&nbsp;
simulator/readme.htm</p>
<p>&nbsp;&nbsp;&nbsp;
simulator/runsim.sh</p>
<p>&nbsp;&nbsp;&nbsp;
simulator/setup.sh</p>
<p>&nbsp;&nbsp;&nbsp;
simulator/sim.tgz</p><img src ="http://www.cnitblog.com/201/aggbug/31557.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cnitblog.com/201/" target="_blank">David</a> 2007-08-09 18:09 <a href="http://www.cnitblog.com/201/archive/2007/08/09/31557.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>linux oracle9i 安装完成使用DBCA建库 最后点击完成后没有任何反应现象解决  </title><link>http://www.cnitblog.com/201/archive/2007/07/30/30903.html</link><dc:creator>David</dc:creator><author>David</author><pubDate>Mon, 30 Jul 2007 04:22:00 GMT</pubDate><guid>http://www.cnitblog.com/201/archive/2007/07/30/30903.html</guid><wfw:comment>http://www.cnitblog.com/201/comments/30903.html</wfw:comment><comments>http://www.cnitblog.com/201/archive/2007/07/30/30903.html#Feedback</comments><slash:comments>2</slash:comments><wfw:commentRss>http://www.cnitblog.com/201/comments/commentRss/30903.html</wfw:commentRss><trackback:ping>http://www.cnitblog.com/201/services/trackbacks/30903.html</trackback:ping><description><![CDATA[应该会出现正在建库的进度条的时候没有出现。<br>------------------------------------------------------------------<br>原因可能是或者java 版本问题<br>刚才安装前没有设定好gcc的关系，这时很可能进度没反应了。没有弹出面板，没有进度条。等再久也没用。。。<br>这时可以选择取消，然后我们来做一些补救措施。<br>1. 打开一个shell，转到root帐号并执行这些指令：<br>#cd /usr/bin<br>#mv gcc gcc.script<br>#mv g++ g++.script<br>#ln -s gcc32 gcc<br>#ln -s g++32 g++<br>2. 回到oracle帐号下，执行这个指令：<br>$cd $ORACLE_HOME/bin<br>$relink all<br>一片哗哗哗的滚动提示过后，再重新执行6.1)的步骤，使用dbca指令建库。<br><br><br>如果你使用iptables做防火墙，这时要为oracle开放一些端口，以便管理：<br>#vi /etc/sysconfig/iptables<br>插入这些：<br>#------- For Oracle port<br>-A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 1158 -j ACCEPT<br>-A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 1521 -j ACCEPT<br>-A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 5560 -j ACCEPT<br>#-------------------------<br>退出后执行这个指令：<br>#service iptables restart<br><br>另外一点，如果你不能运行./runInstaller ，提示x11 错误，请使用root&nbsp; 输入如下命令#xhost +<br><br><br>
<img src ="http://www.cnitblog.com/201/aggbug/30903.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cnitblog.com/201/" target="_blank">David</a> 2007-07-30 12:22 <a href="http://www.cnitblog.com/201/archive/2007/07/30/30903.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>备份与恢复</title><link>http://www.cnitblog.com/201/archive/2007/07/18/30168.html</link><dc:creator>David</dc:creator><author>David</author><pubDate>Wed, 18 Jul 2007 03:50:00 GMT</pubDate><guid>http://www.cnitblog.com/201/archive/2007/07/18/30168.html</guid><wfw:comment>http://www.cnitblog.com/201/comments/30168.html</wfw:comment><comments>http://www.cnitblog.com/201/archive/2007/07/18/30168.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cnitblog.com/201/comments/commentRss/30168.html</wfw:commentRss><trackback:ping>http://www.cnitblog.com/201/services/trackbacks/30168.html</trackback:ping><description><![CDATA[<br><br>
<div style="FONT-SIZE: 12px">备份（BACKUP）实际上就是数据库文件的有效副本，把数据库复制到转储设备的过程，备份的目的是为了防止不可预料的数据丢失或应用错误。如果丢失了原始数据，则可以用有效的备份还原数据，从而避免数据的丢失;转储（RESTORE）是指当数据文件和控制文件出现损坏时，将已备份数据文件还原到数据库的过程. 其中，转储设备是指用于放置数据库拷贝的磁带或磁盘。通常也将存放于转储设备中的数据库的拷贝称为原数据库的备份或转储;<br>恢复（RECOVER）是指应用归档日志和重做日志事务更新副本文件到数据文件失败前的状态。<br><br><br><br><br>备份方式 ：<br><br>&#8226;&nbsp; &nbsp; &nbsp; &nbsp; 物理备份<br>&nbsp; &nbsp; &nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp;用户管理的备份式（使用SQL命令结合OS命令备份数据库的方法。因为这种备份需要结合OS命令，所以也被称为OS备份。用户管理的备份是指执行OS命令备份数据库物理文件的方法，当使用OS备份时，不仅需要执行SQL命令，也要招行OS命令。并且备份的文件个数与尺寸与源文件的个数与尺寸完全一致。这种方法不仅会占用更多的存储空间，而且管理起来也比较麻烦。）<br>可以将用户管理的备份分为一致性备份（consistent backup）和不一致性备份（inconsistent backup）两种。一致性备份通常也称为冷备，不一致性备份称为热备. <br><br>o&nbsp; &nbsp; &nbsp; &nbsp; 一致性备份(冷备份)：一致性备份是当数据库的所有可读写的数据库文件和控制文件具有相同的系统改变号（SCN），并且数据文件不包含当前 SCN 之外的任何改变。在做数据库检查点时，Oracle 使所有的控制文件和数据文件一致。对于只读表空间和脱机的表空间，Oracle 也认为它们是一致的。使数据库处于一致状态的唯一方法是数据库正常关闭（用shutdown normal 或 shutdown immediate 命令关闭）。因此，只有在以下条件下的备份是一致性备份： <br>据库正常关闭（用shutdown normal 或 shutdown immediate 命令关闭<br><br>这种备份方式既适用于ARCHVIELOG模式，也适用于NOARCHIVELOG模式<br><br><br>o&nbsp; &nbsp; &nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp; 不一致性备份(热备份)：不一致备份是当数据库的可读写的数据库文件和控制文件的系统改变号&nbsp; &nbsp;（SCN）在不一致条件下的备份。对于一个 7*24 工作的数据库来说，由于不可能关机，而数据库数据是不断改变的，因此只能进行不一致备份。在 SCN 号不一致的条件下，数据库必须通过应用重做日志使 SCN 一致的情况下才能启动。因此，如果进行不一致备份，数据库必须设为归档状态，并对重做日志归档才有意义。在以下条件下的备份是不一致性备份： <br>o&nbsp; &nbsp; &nbsp; &nbsp; 数据库处于打开状态（OPEN）。 <br>这种备份方式只适用于ARCHIVELOG方式<br><br><br>RMAN管理的备份：<br>RMAN(Recovery Manager,恢复管理器)是ORACLE 10g提供的实用程序，它可以协助DBA管理备份，转储，恢复操作.当招行RMAN命令时，ORACLE会将这些命令解析为PL/SQL命令块，并由服务器招行这些PL/SQL块，最终完成备份，转储，恢复等其它操作。所以RMAN管理的备份与恢复操作也被称为服务器管理的备份与恢复。<br>使用RMAN执行备份与恢复操作时，数据库，表空间，数据文件，控制文件，服务器参数文件和归档日志文件。但不能备份重做日志，PFILE和口令文件，因为RMAN是由目标数据库的服务器进程来完成的，把以目标数据库必须处于MOUNT或OPEN状态。使用RMAN与用户管理的备份方式不同的是，如果使用RMAN生成备份集，那么只备份使用过的数据块，而跳过未使用的数据块，从而会更加节省空间。而使用用户管理的备份方式时，备份文件尺寸与源文件尺寸完全一致。在使用RMAN招行备份时，服务器进程会自动将数据块损坏信息写入动态性能视图。通过查找动态性能视图V$BACKUP_CORRUPTION,可以检测到BACKUP备份时检测到的损坏数据块.在RMAN中也可分为冷备和热备，冷备是在数据库的MOUNT状态下招行，热备是在OPEN状态下执行。&nbsp;&nbsp;<br><br>&#8226;&nbsp; &nbsp; &nbsp; &nbsp; 逻辑备份<br>数据库逻辑备份是物理备份的补充.ORACLE 10g数据库引入了最新的数据泵（data dump）技术，它使得DBA或应用开发人员可以将元数据和数据志移动到另一个数据库中。数据泵导出包括导出表，导出方案，导出表空间，导出数据库四种方式。<br><br><br><br>恢复方式： <br><br>ORACLE的恢复方式与备份方式相对应。用户管理的恢复只能使用用户管理的备份数据来做还原恢复，RMAN恢复只能使用RMAN所在的备份数据来进行还原恢复，两者不能交叉还原。<br>实例恢复：这种恢复是Oracle实例出现失败后，Oracle自动进行的恢复。 <br><br>用户管理的恢复<br>&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;完全恢复：是指数据文件出现介质失败时，使用OS命令复制数据文件备份 ，并使用SQL恢复命令应用归档日志和重做日志最终将数据文件恢复到时失败的状态点。<br>&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;不完全恢复：是指数据文件出现介质失败或用户误操作时，使用已经备份 <br>&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;数据文件，归档日志和重做日志恢复到备份点和恢复点之间的某个时刻状态。不完全恢复还分为三种方式：基于时间点恢复，基于取消恢复和基于SCN恢复<br>RMAN恢复<br>&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp; 完全恢复：是指数据文件出现介质失败时，使用RMAN命令还原数据文件备 份，并使用RMAN恢复命令应用归档日志和重做日志最终将数据文件恢复到时失败的状态点。<br>&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp; 不完全恢复： 是指数据文件出现介质失败或用户误操作时，使用已经备份 <br>&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;数据文件，归档日志和重做日志恢复到备份点和恢复点之间的某个时刻状态。不完全恢复还分为三种方式：基于时间点恢复，基于取消恢复和基于SCN恢复<br><br><br><br><br>测试备份与恢复策略的重要性 <br>　　备份与恢复策略必须经测试无误后才可使用。如果进行了备份，但不知道该备份是否支持希望的恢复目标则与根本没有备份没有两样。 <br>　　恢复策略也要考虑虑对环境的依赖性。例如，假如机器的硬盘失效了，供货商能在多长时间内提供一个新的硬盘；在机器需要重新启动时，能找到操作系统管理员吗？ <br>　　另外一个需要考虑的问题是数据库是否能经受自然的破坏。应在与计算机不同的地方再存储一份备份介质，以免出现自然灾害时主机与备份一起遭到破坏。</div>
<img src ="http://www.cnitblog.com/201/aggbug/30168.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cnitblog.com/201/" target="_blank">David</a> 2007-07-18 11:50 <a href="http://www.cnitblog.com/201/archive/2007/07/18/30168.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>闪回恢复区(Flash recovery area)</title><link>http://www.cnitblog.com/201/archive/2007/07/18/30167.html</link><dc:creator>David</dc:creator><author>David</author><pubDate>Wed, 18 Jul 2007 03:49:00 GMT</pubDate><guid>http://www.cnitblog.com/201/archive/2007/07/18/30167.html</guid><wfw:comment>http://www.cnitblog.com/201/comments/30167.html</wfw:comment><comments>http://www.cnitblog.com/201/archive/2007/07/18/30167.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cnitblog.com/201/comments/commentRss/30167.html</wfw:commentRss><trackback:ping>http://www.cnitblog.com/201/services/trackbacks/30167.html</trackback:ping><description><![CDATA[<br>
<div style="FONT-SIZE: 12px">闪回恢复区<br>oracle10g新特性：闪回恢复区(Flash recovery area) <br>Oracle9i开始提供闪回查询，以便能在需要的时候查到过去某个时刻的一致性数据，这是通过Undo实现的。这个功能有很大的限制，就是相关事务的undo不能被覆盖，否则就无力回天了。oracle10g大大的增强了闪回查询的功能，并且提供了将整个数据库回退到过去某个时刻的能力，这是通过引入一种新的flashback log实现的。flashback log有点类似redo log，只不过redo log将数据库往前滚，flashback log则将数据库往后滚。为了保存管理和备份恢复相关的文件，oracle10g提供了一个叫做闪回恢复区(Flashback recovery area)的新特性，可以将所有恢复相关的文件，比如flashback log,archive log,backup set等，放到这个区域集中管理。<br>1.设置闪回恢复区<br>闪回恢复区主要通过3个初始化参数来设置和管理<br>db_recovery_file_dest：指定闪回恢复区的位置<br>db_recovery_file_dest_size：指定闪回恢复区的可用空间大小<br>db_flashback_retention_target：指定数据库可以回退的时间，单位为分钟，默认1440分钟，也就是一天。当然，实际上可回退的时间还决定于闪回恢复区的大小，因为里面保存了回退所需要的flash log。所以这个参数要和db_recovery_file_dest_size配合修改。<br>2.启动flashback database<br>设置了闪回恢复区后，可以启动闪回数据库功能。<br>首先，数据库必须已经处于归档模式<br>SQL&gt; archive log list<br>数据库日志模式 存档模式<br>自动存档 启用<br>存档终点 USE_DB_RECOVERY_FILE_DEST<br>最早的联机日志序列 245<br>下一个存档日志序列 247<br>当前日志序列 247<br>然后，启动数据库到mount状态<br>SQL&gt; shutdown immediate;<br>数据库已经关闭。<br>已经卸载数据库。<br>ORACLE 例程已经关闭。<br>SQL&gt; startup mount;<br>ORACLE 例程已经启动。<br>Total System Global Area 142606336 bytes<br>Fixed Size 1247732 bytes<br>Variable Size 83887628 bytes<br>Database Buffers 50331648 bytes<br>Redo Buffers 7139328 bytes<br>数据库装载完毕。<br>SQL&gt; alter database flashback on;<br>数据库已更改。<br>SQL&gt; alter database open;<br>数据库已更改。<br>SQL&gt; select FLASHBACK_ON from v$database;<br>FLASHBACK_ON<br>------------------------------------<br>YES<br>关于flashback database的功能，这里就不继续深入了。<br>3.取消闪回恢复区<br>将db_recovery_file_dest参数设置为空，可以停用闪回恢复区。<br>如果已经启用flashback database，则不能取消闪回恢复区。<br>SQL&gt; alter system set db_recovery_file_dest='';<br>alter system set db_recovery_file_dest=''<br>*<br>第 1 行出现错误:<br>ORA-02097: 无法修改参数, 因为指定的值无效<br>ORA-38775: 无法禁用快速恢复区 - 闪回数据库已启用<br>所以，必须先禁用flashback database，才能取消闪回恢复区<br>SQL&gt; shutdown immediate;<br>数据库已经关闭。<br>已经卸载数据库。<br>ORACLE 例程已经关闭。<br>SQL&gt; startup mount;<br>ORACLE 例程已经启动。<br>Total System Global Area 142606336 bytes<br>Fixed Size 1247732 bytes<br>Variable Size 83887628 bytes<br>Database Buffers 50331648 bytes<br>Redo Buffers 7139328 bytes<br>数据库装载完毕。<br>SQL&gt; alter database flashback off;<br>数据库已更改。<br>SQL&gt; alter database open;<br>数据库已更改。<br>SQL&gt; alter system set db_recovery_file_dest='';<br>系统已更改。<br>4.闪回恢复区的内容<br>所有和恢复相关的文件都可以存放到闪回恢复区<br>SQL&gt; select file_type from v$flash_recovery_area_usage;<br>FILE_TYPE<br>------------------------<br>CONTROLFILE<br>ONLINELOG<br>ARCHIVELOG<br>BACKUPPIECE<br>IMAGECOPY<br>FLASHBACKLOG<br>已选择6行。<br>上面的视图中可以看出，包括controfile,online redo logfile,archive logfile,rman backup <br>piece,rman image copy, flashback log等，都可以利用闪回恢复区来存放、管理。<br>5.闪回恢复区的一些限制<br>如果设置了闪回恢复区，则log_archive_dest和log_archive_duplex_dest将不可用<br>alter system set log_archive_dest='e:/'<br>*<br>第 1 行出现错误:<br>ORA-02097: 无法修改参数, 因为指定的值无效<br>ORA-16018: 无法将 LOG_ARCHIVE_DEST 与 LOG_ARCHIVE_DEST_n 或<br>DB_RECOVERY_FILE_DEST 一起使用<br>SQL&gt; alter system set log_archive_duplex_dest='e:/';<br>alter system set log_archive_duplex_dest='e:/'<br>*<br>第 1 行出现错误:<br>ORA-02097: 无法修改参数, 因为指定的值无效<br>ORA-16018: 无法将 LOG_ARCHIVE_DUPLEX_DEST 与 LOG_ARCHIVE_DEST_n 或<br>DB_RECOVERY_FILE_DEST 一起使用<br>设置闪回恢复区后，如果没有设置过log_archive_dest_n参数，则归档日志默认是保存到该区域的<br>SQL&gt; archive log list<br>数据库日志模式 存档模式<br>自动存档 启用<br>存档终点 USE_DB_RECOVERY_FILE_DEST<br>最早的联机日志序列 245<br>下一个存档日志序列 247<br>当前日志序列 247<br>实际上，oracle是通过隐式的设置log_archive_dest_10='location=USE_DB_RECOVERY_FILE_DEST'来实现的。所以，如果之后你修改过log_archive_dest_n将归档日志保存到其他位置，也可以修改该参数继续使用闪回恢复区。<br>多个数据库的闪回恢复区可以指定到同一个位置，但是db_name不能一样，或者db_unique_name不一样。<br>RAC的闪回恢复区必须位于共享磁盘上，能被所有实例访问。<br>6.闪回恢复区的空间管理<br>当闪回恢复区空间不足(使用超过85%)时，alert中会有警告记录<br>Tue Dec 19 10:45:41 2006<br>Errors in file e:/oracle/ora10/admin/ning/bdump/ning_rvwr_31968.trc:<br>ORA-19815: 警告: db_recovery_file_dest_size 字节 (共 52428800 字节) 已使用 87.29%, 尚有6665216 字节可用。<br>同时，oracle在alert中还会给出解决该问题的建议<br>Tue Dec 19 10:45:41 2006<br>************************************************************************<br>You have following choices to free up space from flash recovery area:<br>1. Consider changing RMAN RETENTION POLICY. If you are using Data Guard,<br>then consider changing RMAN ARCHIVELOG DELETION POLICY.<br>2. Back up files to tertiary device such as tape using RMAN<br>BACKUP RECOVERY AREA command.<br>3. Add disk space and increase db_recovery_file_dest_size parameter to<br>reflect the new space.<br>4. Delete unnecessary files using RMAN DELETE command. If an operating<br>system command was used to delete files, then use RMAN CROSSCHECK and<br>DELETE EXPIRED commands.<br>************************************************************************<br>如果闪回恢复区空间耗尽，且归档路径设置到了闪回恢复区中，则由于日志无法归档，数据库会hang住。<br>Tue Dec 19 10:45:57 2006<br>Errors in file e:/oracle/ora10/admin/ning/bdump/ning_arc0_32372.trc:<br>ORA-19815: 警告: db_recovery_file_dest_size 字节 (共 52428800 字节) 已使用 100.00%, 尚有 0 字节可用。<br>Tue Dec 19 10:45:57 2006<br>Errors in file e:/oracle/ora10/admin/ning/bdump/ning_arc0_32372.trc:<br>ORA-19809: 超出了恢复文件数的限制<br>ORA-19804: 无法回收 6836224 字节磁盘空间 (从 52428800 限制中)<br>ARC0: Error 19809 Creating archive log file to <br>'E:/ORACLE/ORA10/FLASH_RECOVERY_AREA/NING/ARCHIVELOG/2006_12_19/O1_MF_1_250_U_.ARC'<br>ARC0: Failed to archive thread 1 sequence 250 (19809)<br>ARCH: Archival stopped, error occurred. Will continue retrying<br>Tue Dec 19 10:45:58 2006<br>Errors in file e:/oracle/ora10/admin/ning/bdump/ning_arc0_32372.trc:<br>ORA-16038: 日志 1 序列号 250 无法归档<br>ORA-19809: 超出了恢复文件数的限制<br>ORA-00312: 联机日志 1 线程 1: 'E:/ORACLE/ORA10/ORADATA/NING/REDO01.LOG'<br>所以，对于生产库，如果将归档放到闪回恢复区中，需要密切关注闪回恢复区的空间使用情况，否则一旦闪回恢复区的空间用尽，将导致数据库无法提供服务。<br>通过查询视图v$flash_recovery_area_usage，可以获得当前闪回恢复区的空间使用情况，并且可以知道<br>是哪些文件占中了空间，据此可以做出相应的处理，或者加大闪回恢复区，或者移走相应的文件。<br><br>代码:--------------------------------------------------------------------------------<br>SQL&gt; select * from v$flash_recovery_area_usage;<br>FILE_TYPE PERCENT_SPACE_USED PERCENT_SPACE_RECLAIMABLE NUMBER_OF_FILES<br>------------------------ ------------------ ------------------------- ---------------<br>CONTROLFILE&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp; 0&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;0&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp;0<br>ONLINELOG&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp;0&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;0&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;0<br>ARCHIVELOG&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp; 91&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;0&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp; 16<br>BACKUPPIECE&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;0&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp; 0&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp;0<br>IMAGECOPY&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp; 0&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp; 0&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;0<br>FLASHBACKLOG&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp; 8&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;4&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp;2<br>已选择6行。<br>----------------------------------------------------------------------------------<br>另外，v$recovery_file_dest视图也提供了闪回恢复区的概要信息。<br>SQL&gt; select * from v$recovery_file_dest;<br>NAME SPACE_LIMIT SPACE_USED SPACE_RECLAIMABLE NUMBER_OF_FILES<br>----------------------------------- ----------- ---------- ----------------- ---------------<br>Eracleora10flash_recovery_area 104857600 101835264 0 17</div>
<img src ="http://www.cnitblog.com/201/aggbug/30167.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cnitblog.com/201/" target="_blank">David</a> 2007-07-18 11:49 <a href="http://www.cnitblog.com/201/archive/2007/07/18/30167.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Oracle架构的基础知识</title><link>http://www.cnitblog.com/201/archive/2007/07/18/30166.html</link><dc:creator>David</dc:creator><author>David</author><pubDate>Wed, 18 Jul 2007 03:45:00 GMT</pubDate><guid>http://www.cnitblog.com/201/archive/2007/07/18/30166.html</guid><wfw:comment>http://www.cnitblog.com/201/comments/30166.html</wfw:comment><comments>http://www.cnitblog.com/201/archive/2007/07/18/30166.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cnitblog.com/201/comments/commentRss/30166.html</wfw:commentRss><trackback:ping>http://www.cnitblog.com/201/services/trackbacks/30166.html</trackback:ping><description><![CDATA[<span class=bold>Oracle架构的基础知识</span><br><br>
<div style="FONT-SIZE: 12px">学习oracle,最好首先了解Oracle的框架。这样对Oracle有一个整体的认识<br><br>1、物理结构（由控制文件、数据文件、重做日志文件、参数文件、归档文件、口令文件组成） <br><br>　　一个数据库中的数据存储在磁盘上物理文件，被使用时，调入内存。<br><br>　　其中控制文件、数据文件、重做日志文件、跟踪文件及警告日志（trace files,alert files）属于数据库文件；<br>　　参数文件（parameter file）口令文件（password file）是非数据库文件<br><br>　　1.1数据文件：存储数据的文件.数据文件典型地代表了根据他们使用的磁盘空间和数量所决定的一个Oracle数据库的容积<br><br>1.2控制文件：包含维护和验证数据库完整性的必要信息、例如，控制文件用于识别数据文件和重做日志文件，一个数据库至少需要一个控制文件.<br><br>控制文件内容<br><br>　　。数据库名<br><br>　　。表空间信息<br><br>　　。所有数据文件的名字和位置<br><br>　　。所有redo日志文件的名字和位置<br><br>　　。当前的日志序列号<br><br>　　。检查点信息控制文件的使用过程<br><br>　　控制文件把Oracle引导到数据库文件的其它部分。启动一个实例时，Oracle 从参数文件中读取控制文件的名字和位置。安装数据库时，Oracle 打开控制文件。最终打开数据库时，Oracle 从控制文件中读取数据文件的列表并打开其中的每个文件。<br><br>　　。关于redo日志和归档的当前状态信息 <br><br>1.3重做日志文件：<br><br>　　含对数据库所做的更改记录，这样万一出现故障可以启用数据恢复。一个数据库至少需要两个重做日志文件.<br><br>　　1.4 跟踪文件及警告日志(Trace Files and Alert Files)<br><br>　　在instance 中运行的每一个后台进程都有一个跟踪文件（trace file）与之相连。Trace file 记载后台进程所遇到的重大事件的信息。<br><br>　　警告日志（ Alert Log）是一种特殊的跟踪文件，每个数据库都有一个跟踪文件,同步记载数据库的消息和错误.<br><br>　　1.5参数文件：包括大量影响Oracle数据库实例功能的设定，如以下设定：<br><br>　　。数据库控制文件的定位<br><br>　　。Oracle用来缓存从磁盘上读取的数据的内存数量<br><br>　　。默认的优化程序的选择.<br>数据库文件相关，执行两个重要的功能<br><br>　　1〉为数据库指出控制文件<br><br>　　2〉为数据库指出归档日志的目标<br><br>　　1.6归档文件：是重做日志文件的脱机副本，这些副本可能对于从介质失败中进行恢复很必要。 <br>　　1.7口令文件：认证哪些用户有权限启动和关闭Oracle例程.<br>2、逻辑结构（表空间、段、区、块）&nbsp; &nbsp; <br><br>&nbsp; &nbsp; 表空间：是数据库中的基本逻辑结构，一系列数据文件的集合。&nbsp; &nbsp; <br><br>&nbsp; &nbsp; 段：是对象在数据库中占用的空间.&nbsp; &nbsp; <br><br>&nbsp; &nbsp; 区：是为数据一次性预留的一个较大的存储空间.&nbsp; &nbsp; <br><br>&nbsp; &nbsp; 块：ORACLE最基本的存储单位，在建立数据库的时候指定.&nbsp; &nbsp; <br><br>&nbsp; &nbsp; 3、内存分配（SGA和PGA）&nbsp; &nbsp; <br><br>&nbsp; &nbsp; SGA：是用于存储数据库信息的内存区，该信息为数据库进程所共享。它包含Oracle 服务器的数据和控制信息,它是在Oracle服务器所驻留的计算机的实际内存中得以分配，如果实际内存不够再往虚拟内存中写。&nbsp; &nbsp; <br><br>&nbsp; &nbsp; PGA：包含单个服务器进程或单个后台进程的数据和控制信息，与几个进程共享的SGA 正相反,PGA 是只被一个进程使用的区域，PGA 在创建进程时分配,在终止进程时回收.&nbsp; &nbsp; <br><br>&nbsp; &nbsp; 4、后台进程&nbsp; &nbsp; <br><br>&nbsp; &nbsp; 包括数据写进程(Database Writer,DBWR)、日志写进程(Log Writer,LGWR)、系统监控(System Monitor,SMON)、进程监控(Process Monitor,PMON)、检查点进程(Checkpoint Process,CKPT)、归档进程、服务进程、用户进程）&nbsp; &nbsp; <br><br>&nbsp; &nbsp; 数据写进程：负责将更改的数据从数据库缓冲区高速缓存写入数据文件&nbsp; &nbsp; <br><br>&nbsp; &nbsp; 日志写进程：将重做日志缓冲区中的更改写入在线重做日志文件&nbsp; &nbsp; <br><br>&nbsp; &nbsp; 系统监控：检查数据库的一致性如有必要还会在数据库打开时启动数据库的恢复&nbsp; &nbsp; <br><br>&nbsp; &nbsp; 进程监控：负责在一个Oracle 进程失败时清理资源&nbsp; &nbsp; <br><br>&nbsp; &nbsp; 检查点进程：负责在每当缓冲区高速缓存中的更改永久地记录在数据库中时,更新控制文件和数据文件中的数据库状态信息。该进程在检查点出现时，对全部数据文件的标题进行修改，指示该检查点。在通常的情况下，该任务由LGWR执行。然而，如果检查点明显地降低系统性能时，可使CKPT进程运行，将原来由LGWR进程执行的检查点的工作分离出来，&nbsp; &nbsp; <br><br>&nbsp; &nbsp; 由CKPT进程实现。对于许多应用情况，CKPT进程是不必要的。只有当数据库有许多数据文件，LGWR在检查点时明显地降低性能才使CKPT运行。CKPT进程不将块写入磁盘，该工作是由DBWR完成的。 init.ora文件中 CHECKPOINT_PROCESS 参数控制CKPT进程的使能或使不能。缺省时为FALSE，即为使不能。&nbsp; &nbsp; <br><br>&nbsp; &nbsp; 归档进程：在每次日志切换时把已满的日志组进行备份或归档&nbsp; &nbsp; <br><br>&nbsp; &nbsp; 服务进程：用户进程服务。&nbsp; &nbsp; <br><br>&nbsp; &nbsp; 用户进程：在客户端，负责将用户的SQL语句传递给服务进程，并从服务器段拿回查询数据。&nbsp; &nbsp; <br><br>&nbsp; &nbsp; 5、SCN(System ChangeNumber)：&nbsp; &nbsp; <br><br>&nbsp; &nbsp; 系统改变号，一个由系统内部维护的序列号。当系统需要更新的时候自动增加，他是系统中维持数据的一致性和顺序恢复的重要标志。</div>
<img src ="http://www.cnitblog.com/201/aggbug/30166.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cnitblog.com/201/" target="_blank">David</a> 2007-07-18 11:45 <a href="http://www.cnitblog.com/201/archive/2007/07/18/30166.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Oracle 10g各版本之间的区别！</title><link>http://www.cnitblog.com/201/archive/2007/07/18/30165.html</link><dc:creator>David</dc:creator><author>David</author><pubDate>Wed, 18 Jul 2007 03:38:00 GMT</pubDate><guid>http://www.cnitblog.com/201/archive/2007/07/18/30165.html</guid><wfw:comment>http://www.cnitblog.com/201/comments/30165.html</wfw:comment><comments>http://www.cnitblog.com/201/archive/2007/07/18/30165.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://www.cnitblog.com/201/comments/commentRss/30165.html</wfw:commentRss><trackback:ping>http://www.cnitblog.com/201/services/trackbacks/30165.html</trackback:ping><description><![CDATA[<br><br>
<div style="FONT-SIZE: 12px">Oracle 10g标准版＆企业版<br><br>Oracle10g分为4个版本，分别是：<br>1。Oracle Database Standard Edition One，最基本的商业版本，包括基本的数据库功能。<br>2。Oracle Database Standard Edition ，标准版，包括上面那个版本的功能和RAC，只有在10g的标准版中才开始包含RAC。<br>3。Oracle Database Enterprise Edition，企业版，虽说是最强劲的版本，但是并不是所有我们常用的功能都在这个版本中，很多东西仍然是要额外付费的，后面会说到。<br>4。Oracle Database Personal Edition，个人版，除了不支持RAC之外包含企业版的所有功能，但是注意的是，只有Windows平台上才提供个人版。<br><br>下面来看一下，在Standard Edition One和Standard Edition中不支持的功能（只是选了一些大家比较常见或者常用的功能），注意，这些功能除了RAC之外仍然包含在个人版中。<br>1。Oracle Data Guard，不支持。（想要高可用性的客户，就不能选择标准版）<br>2。一些Online操作，比如Online index maintenance，Online table redefinition等不支持<br>3。备份和恢复的某些操作受限，比如不支持Block级别的恢复（Block-level media recovery），不支持并行备份和恢复（Parallel backup and recovery），多重备份（Duplexed backup sets）等等<br>4。Flashback功能，在标准版中Flashback Table，Flashback Database， Flashback Transaction Query都是不支持的<br>5。VPD（Virtual Private Database）不支持<br>6。FGA（Fine-grained auditing）不支持<br>7。Partitioning，分区也不支持 <br>8。Data compression，比如表压缩，分区压缩都不支持<br>9。Bitmapped index and bitmapped join index，不支持，（如果是数据仓库系统就不能选择标准版了）<br>10。Export transportable tablespace，（注意，这里只是导入不支持），但是Import transportable tablespace，包括跨平台的import都是支持的，也就是说你如果选择了标准版，那么想把数据库简单地转移到其它平台上是比较费劲的事情了<br>11。一些并行操作都不支持，包括Parallel query，Parallel DML，Parallel index build，Parallel Data Pump export and import。<br>12。不支持Streams，又少了一个高可用性的可行性方案<br>13。不支持Advanced Replication的multimaster方式，再少一个高可用性方案，当然实体化视图的复制方案仍然是支持的<br>14。Connection Manager不支持。<br><br>标准版在10g中虽然支持RAC，但是oracle是有限制的，如果要在标准版中用RAC，那么只能使用Oracle Clusterware（不支持其它任何第三方群集软件），同时必须使用ASM来做数据文件的存储管理（其它任何第三方的卷管理和文件系统都不支持）。<br><br>如果要安装另外一个数据库作为RMAN repository 或者OEM Grid Control repository那么不需要另外付费了。<br><br>另外如果你购买了最低级的那个Standard One的版本，那么下面这些功能都是不支持的。<br><br>1。RAC <br>2。Partitioning<br>3。Data Mining<br>4。Advanced Security <br>5。Label Security <br>6。OLAP<br>7。Spatial <br>8。Oracle Management Packs<br><br><br><br><br><br>Orace 9i的标准版＆企业版<br><br>Oracle9i数据库的企业版和标准版最主要的区别在于企业版有更强大的并行和分布式处理能力，标准版是专为开发、部署和管理部门级 Internet 应用程序而设计的数据库管理系统，是用于传统的部门级应用程序的一流数据库。而应用超出部门级标准或访问数据库的人较多时，则应当选用企业版。<br><br>标准版<br>&#8226;Jserver Enterprise Edition <br>&#8226;InterMedia <br>&#8226;Enterprise Manager <br>&#8226;Workflow Standard Edition <br>&#8226;Standard Management Pack <br>&#8226;Object Option <br>&#8226;Networking kit&nbsp;&nbsp;&#8226;Object for OLE <br>&#8226;Distributed Option <br>&#8226;64 bit Option <br>&#8226;ODBC Driver <br>&#8226;Sql*Plus <br>&#8226;OCI&nbsp;&nbsp;<br><br>企业版<br>&#8226;Jserver Enterprise Edition <br>&#8226;InterMedia <br>&#8226;Object Option <br>&#8226;Networking kit <br>&#8226;Object for OLE <br>&#8226;Advance Replication Option <br>&#8226;Distributed Option <br>&#8226;arallel Query Option <br>&#8226;SQL*Plus <br>&#8226;VIR <br>&#8226;Workflow Enterprise Edition <br>&#8226;Advanced backup &amp; recovery <br>&#8226;Connection Pool <br>&#8226;64 bit Option <br>&#8226;ODBC Driver <br>&#8226;OCI <br>&#8226;Enterprise Manager <br>&#8226;Enterprise Backup Utility <br><br><br><br>最后还有一些关于oracle产品的FAQ：<br><br>1. Oracle数据库软件目前在售的版本号？<br>A：目前在售的是Oracle 9i 和Oracle 10g <br><br>2. 10g是不是比9i更好？<br>A：一个新版本的软件推出以后，总要经过一段时间的考验，其间会有相当多的补丁。但新版本的软件往往有更多的新特性和更友好的界面。9i和10g作为目前在售的两个版本，各有所长。相比较而言，9i更为稳定成熟，10g则提供了更多新特性。建议用户根据自己业务需求来选择，最合适的就是最好的。 （因为这个FAQ是前年的，现在建议选择oracle 10G R2的版本）<br><br>3. Oracle数据库软件有几类版本？<br>A：Oracle数据库软件分个人版、标准版1、标准版、企业版。 <br><br>4. 能否说说个人版、标准版1、标准版、企业版各自的特点和区别？<br>A：标准版1（Standard Edition One）适用于1-2CPU的服务器，价格有相当的优势，但仅限单机环境，适用于中小型用户入门级应用；<br>标准版（Standard Edition）适用于1-4CPU的服务器，包括4CPU单服务器或2台双CPU服务器等配置，可以做双机热备或RAC，价格适中，适用于对数据库性能及安全性有进一步要求的大中型用户工作组级及部门级应用；<br>企业版（Enterprise Edition）适用于单机、双机、多CPU多节点集群等各种环境，功能齐全，但费用也比较高，适用于对数据库性能及可靠性有相当高要求的大型、超大型用户企业级、高端企业级应用。<br>功能模块上的比较请参考《Oracle数据库白皮书》。 <br><br>5. 是不是企业版一定要比标准版好？<br>A：企业版功能齐全，提供更高可靠性和性能，但也意味着更多的软件费用和硬件开销。建议用户根据实际需求确定版本，最合适的就是最好的。 <br><br>6. Oracle的订购方式？<br>A：有按用户数订购和按CPU订购两种方式，其中按CPU订购也即所谓无限用户版。 <br><br>7. Oracle用户数的官方定义？<br>A：每一个访问Oracle数据库的用户，无论是自然人还是设备，都算作一个用户(Named User)。<br>英文官方定义：Named User Plus: is defined as an individual authorized by you to use the programs which are installed on a single server or multiple servers, regardless of whether the individual is actively using the programs at any given time. A non human operated device will be counted. <br><br>8. Oracle的用户数是怎么算的呢？<br>A：Oracle官方要求的各类版本的最低用户数为：<br>个人版本：1user*PC数<br>标准版1=服务器的CPU数*5<br>标准版=服务器的CPU数*10user<br>企业版=服务器的CPU数*25user；<br>用户应该根据自己的实际用户数订购，且不少于相应版本所要求的最低用户数。 <br><br>9. 什么情况下须按照CPU订购？<br>A：访问Oracle的用户数很多，或者无法预估用户数的情况下，应该按照CPU（Processor）订购。 <br><br>10. Processor的官方定义？<br>A：等于安装Oracle数据库软件的服务器的CPU总数。<br>英文官方定义：Processor: shall be defined as all processors where the Oracle programs are installed and/or running. Programs licensed on a Processor basis may be accessed by your internal users (including agents and contractors) and by your third party users. <br><br>11. 请举例说明？<br>A：例如，若用户的应用是基于Internet，Oracle作为网站后台数据库，根据Oracle对用户数的官方定义，每一个通过Internet访问网站（数据库）的都算作1个用户，这样用户数很多，而且无法预估，所以应按照CPU数订购。 <br><br>12. 按CPU订购的费用是否很高？<br>A：一般情况下，1CPU的费用约等于50user的费用，所以如果用户数&gt;CPU数*50，则按CPU订购反而更为经济 <br><br>13. 是否Internet或B/S架构的应用就必须要按照CPU订购？<br>A：不一定，如果访问Oracle数据库的用户数可以预估，且用户数不多（小于服务器CPU数*50），也可以按照用户数订购。 <br><br>14. Oracle数据库软件的公开报价（List Price）是多少？<br>A：请参考公开报价（List Price）表。 <br><br>15. Oracle数据库软件的价格是如何计算的？<br>A：计算公式：Q=(P*N*(1-D)*(1+22%)+415)*(1+17%)<br>其中：<br>Q：折扣后含税价格<br>P：未税单价（每用户或每CPU）<br>N：用户数或CPU（Processor）数；<br>D：折扣（%off），起步折扣为30%off。<br>22%：一年的标准服务费，其中产品支持7%，升级保障15%；<br>C：介质费，目前为人民币600/套。<br>17%：增值税 <br><br>16. 折扣是多少？<br>A：Oracle官方规定Oracle数据库软件到最终用户的起步折扣是25%off，申请特别折扣必须提供最终用户信息，请参考《Oracle软件订购确认函》。 <br><br>17. 是否可以提供试用版？试用期限是多长？<br>A：达成订购意向后，可以提供试用版供免费试用、评估，试用期为一个月。试用期到后若不订购，用户必须从系统中卸载、删除所安装的Oracle试用版软件。</div>
<img src ="http://www.cnitblog.com/201/aggbug/30165.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cnitblog.com/201/" target="_blank">David</a> 2007-07-18 11:38 <a href="http://www.cnitblog.com/201/archive/2007/07/18/30165.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>ORACLE 9I&amp;10G置归档方法</title><link>http://www.cnitblog.com/201/archive/2007/07/18/30163.html</link><dc:creator>David</dc:creator><author>David</author><pubDate>Wed, 18 Jul 2007 03:27:00 GMT</pubDate><guid>http://www.cnitblog.com/201/archive/2007/07/18/30163.html</guid><wfw:comment>http://www.cnitblog.com/201/comments/30163.html</wfw:comment><comments>http://www.cnitblog.com/201/archive/2007/07/18/30163.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cnitblog.com/201/comments/commentRss/30163.html</wfw:commentRss><trackback:ping>http://www.cnitblog.com/201/services/trackbacks/30163.html</trackback:ping><description><![CDATA[<span class=bold>ORACLE 9I&amp;10G置归档方法</span><br><br>
<div style="FONT-SIZE: 12px">在ORACLE9i和10G置归方式略有差别，不过差别不是很大。如果不小心可能会导致数据库不能打开，所以在此做了一些总结。<br><br><br><br>在数据库打开后，用SHOW parameter spfile命令查看当前是否是由SPFILE打开数据库。如果数据库是使用SPFILE则会显示具体的路径和SPFILE名，否则显示结果为空，表示使用了INIT参数文件。推荐最好使用SPFILE，因为我们在置归档的时候会动态修改参数，这样会更方便一些。<br><br>9I:<br><br>1.备份初始化参数文件<br>sql&gt; create pfile from spfile;<br>我们备份参数文件的目的是为了避免在置归档过程中的误操作对数据库造成故障，以便能够使用我们备份的参数文件来恢复数据库。如果不加参数文件的目标路径，在WINDOWS中，默认会放在ORACLE_HOME\DATABASE中,如果是LINUX则会在ORACLE_HOME\dbs中。<br>2.配置归档日志的名称格式<br>sql&gt;alter system set log_archvie_format='%S_%T.log'&nbsp;&nbsp;scope=spfile <br>3.配置归档位置<br>sql&gt;alter system set log_archive_dest_1='location=e:\oracle\oradata\archive' scope=spfile <br>在ORACLE 9I企业版里还可以配置多个归档路径，log_archvile_dest_n(其中n可以为1-10)。而在9I标准版里只能设置两个归档路径，另一个的参参数为log_archive_dest_duplex="PATH"<br>4.设置归档进程自动启动<br>sql&gt;alter system set log_archive_start=true scope=spfile<br>如果没有将归档设置为自动启动，则在归档里程会出错<br>5. 置归档模式<br>将数据库正常关闭<br>sql&gt;shutdown immediate<br>启动到MOUNT模式<br>SQL&gt;startup mount<br>置为归档模式<br>SQL&gt;alter database archivelog<br>打开数据库<br>SQL&gt;alter database open<br>查看数据库是否归档<br>SQL&gt; archive log list;<br>如果显示为ENABLE则表示已成功归档<br>或 SQL&gt;select log_mode&nbsp;&nbsp;from v$database;<br>如果为ARCHIVELOG则表示已成功归档<br><br>10G:<br><br>从ORACLE10G开始，改变日志模式已经变得很简单，很容易管理。在10G中，默认情况下，归档日志会存放到快速恢复区所对应的目录（<br>对应初始化参数db_recovery_file_dest),并且会按照特定的格式生成归档日志文件名。当想要将归档日志放在默认的路径下是，只需要参MOUNT状态执行Alter database archivelog即可。在10G中不需要对归档设置自动启动，因为这个参数已经10G摒弃掉，只要执行Alter database archivelog 就会自动置为自动归档。如果不想将归档日志放到默认路径，请执行下列步骤<br><br>1.备份初始化参数文件<br>sql&gt; create pfile from spfile;<br>2.配置归档日志的名称格式<br>sql&gt;alter system set log_archvie_format='%S_%T_%R.log'&nbsp;&nbsp;scope=spfile <br>在10G中设置日志格式时，一定要加%R参数，否则一定会出错<br><br><br>3.配置归档位置<br>sql&gt;alter system set log_archive_dest_1='location=e:\oracle\oradata\archive' scope=spfile <br>在ORACLE 10G企业版里还可以配置多个归档路径，log_archvile_dest_n(其中n可以为1-10)<br><br>4. 置归档模式<br>将数据库正常关闭<br>sql&gt;shutdown immediate<br>启动到MOUNT模式<br>SQL&gt;startup mount<br>置为归档模式<br>SQL&gt;alter database archivelog<br>打开数据库<br>SQL&gt;alter database open<br>查看数据库是否归档<br>SQL&gt; archive log list;<br>如果显示为ENABLE则表示已成功归档<br>或 SQL&gt;select log_mode&nbsp;&nbsp;from v$database;<br>如果为ARCHIVELOG则表示已成功归档</div>
<img src ="http://www.cnitblog.com/201/aggbug/30163.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cnitblog.com/201/" target="_blank">David</a> 2007-07-18 11:27 <a href="http://www.cnitblog.com/201/archive/2007/07/18/30163.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>oracle起动与关闭详解</title><link>http://www.cnitblog.com/201/archive/2007/07/16/29923.html</link><dc:creator>David</dc:creator><author>David</author><pubDate>Mon, 16 Jul 2007 09:43:00 GMT</pubDate><guid>http://www.cnitblog.com/201/archive/2007/07/16/29923.html</guid><wfw:comment>http://www.cnitblog.com/201/comments/29923.html</wfw:comment><comments>http://www.cnitblog.com/201/archive/2007/07/16/29923.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cnitblog.com/201/comments/commentRss/29923.html</wfw:commentRss><trackback:ping>http://www.cnitblog.com/201/services/trackbacks/29923.html</trackback:ping><description><![CDATA[<p style="TEXT-JUSTIFY: inter-ideograph; MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 18pt; TEXT-ALIGN: justify"><font face=宋体><span style="FONT-SIZE: 9pt">实例</span><span style="FONT-SIZE: 9pt"></span></font></p>
<p style="TEXT-JUSTIFY: inter-ideograph; MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: justify"><span style="FONT-SIZE: 9pt"><font face=宋体>　　</font></span><span style="FONT-SIZE: 9pt">1.</span><span style="FONT-SIZE: 9pt"><font face=宋体>启动</font></span><span style="FONT-SIZE: 9pt">oracle server.</span></p>
<p style="TEXT-JUSTIFY: inter-ideograph; MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: justify"><span style="FONT-SIZE: 9pt"><font face=宋体>　　</font></span><span style="FONT-SIZE: 9pt">startup[nomount|mount|open][force][pfile=filename]</span></p>
<p style="TEXT-JUSTIFY: inter-ideograph; MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: justify"><font face=宋体><span style="FONT-SIZE: 9pt">　　参数说明：</span><span style="FONT-SIZE: 9pt"></span></font></p>
<p style="TEXT-JUSTIFY: inter-ideograph; MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: justify"><span style="FONT-SIZE: 9pt"><font face=宋体>　　</font></span><span style="FONT-SIZE: 9pt">nomount</span><font face=宋体><span style="FONT-SIZE: 9pt">：只启动实例</span><span style="FONT-SIZE: 9pt"></span></font></p>
<p style="TEXT-JUSTIFY: inter-ideograph; MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: justify"><span style="FONT-SIZE: 9pt"><font face=宋体>　　</font></span><span style="FONT-SIZE: 9pt">mount</span><font face=宋体><span style="FONT-SIZE: 9pt">：启动实例，并装载数据库</span><span style="FONT-SIZE: 9pt"></span></font></p>
<p style="TEXT-JUSTIFY: inter-ideograph; MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: justify"><span style="FONT-SIZE: 9pt"><font face=宋体>　　</font></span><span style="FONT-SIZE: 9pt">open</span><font face=宋体><span style="FONT-SIZE: 9pt">：启动实例，装载并打开数据库。</span><span style="FONT-SIZE: 9pt"></span></font></p>
<p style="TEXT-JUSTIFY: inter-ideograph; MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: justify"><span style="FONT-SIZE: 9pt"><font face=宋体>　　</font></span><span style="FONT-SIZE: 9pt">force</span><span style="FONT-SIZE: 9pt"><font face=宋体>：终止实例，并重新启动数据库。</font></span><span style="FONT-SIZE: 9pt">(</span><span style="FONT-SIZE: 9pt"><font face=宋体>默认选项</font></span><span style="FONT-SIZE: 9pt">)</span></p>
<p style="TEXT-JUSTIFY: inter-ideograph; MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: justify"><span style="FONT-SIZE: 9pt"><font face=宋体>　　</font></span><span style="FONT-SIZE: 9pt">pfile</span><font face=宋体><span style="FONT-SIZE: 9pt">：指定非默认参数文件名。</span><span style="FONT-SIZE: 9pt"></span></font></p>
<p style="TEXT-JUSTIFY: inter-ideograph; MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: justify"><span style="FONT-SIZE: 9pt"><font face=宋体>　　</font></span><span style="FONT-SIZE: 9pt">2.</span><span style="FONT-SIZE: 9pt"><font face=宋体>停止</font></span><span style="FONT-SIZE: 9pt">oracle server</span></p>
<p style="TEXT-JUSTIFY: inter-ideograph; MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: justify"><span style="FONT-SIZE: 9pt"><font face=宋体>　　</font></span><span style="FONT-SIZE: 9pt">shutdown [normal|transactional|immediate|abort]</span></p>
<p style="TEXT-JUSTIFY: inter-ideograph; MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: justify"><font face=宋体><span style="FONT-SIZE: 9pt">　　参数说明：</span><span style="FONT-SIZE: 9pt"></span></font></p>
<p style="TEXT-JUSTIFY: inter-ideograph; MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: justify"><span style="FONT-SIZE: 9pt"><font face=宋体>　　</font></span><span style="FONT-SIZE: 9pt">normal</span><font face=宋体><span style="FONT-SIZE: 9pt">：等待用户断开已存在连接，系统发出检查点，然后在同步数据文件、控制文</span><span style="FONT-SIZE: 9pt"></span></font></p>
<p style="TEXT-JUSTIFY: inter-ideograph; MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: justify"><span style="FONT-SIZE: 9pt"><font face=宋体>　　和重做日志文件之后关闭</font></span><span style="FONT-SIZE: 9pt">(</span><span style="FONT-SIZE: 9pt"><font face=宋体>默认选项</font></span><span style="FONT-SIZE: 9pt">)</span></p>
<p style="TEXT-JUSTIFY: inter-ideograph; MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: justify"><span style="FONT-SIZE: 9pt"><font face=宋体>　　</font></span><span style="FONT-SIZE: 9pt">transactional</span><span style="FONT-SIZE: 9pt"><font face=宋体>：等待客户端结束事务之后，自动断开用户连接，然后再执行</font></span><span style="FONT-SIZE: 9pt">normal</span><font face=宋体><span style="FONT-SIZE: 9pt">。</span><span style="FONT-SIZE: 9pt"></span></font></p>
<p style="TEXT-JUSTIFY: inter-ideograph; MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: justify"><span style="FONT-SIZE: 9pt"><font face=宋体>　　</font></span><span style="FONT-SIZE: 9pt">immediate</span><span style="FONT-SIZE: 9pt"><font face=宋体>：取消当前所有</font></span><span style="FONT-SIZE: 9pt">sql</span><span style="FONT-SIZE: 9pt"><font face=宋体>语句，回退所有未完成事务，然后自动断开，再执行</font></span><span style="FONT-SIZE: 9pt">normal</span><font face=宋体><span style="FONT-SIZE: 9pt">。</span><span style="FONT-SIZE: 9pt"></span></font></p>
<p style="TEXT-JUSTIFY: inter-ideograph; MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: justify"><span style="FONT-SIZE: 9pt"><font face=宋体>　　</font></span><span style="FONT-SIZE: 9pt">abort</span><span style="FONT-SIZE: 9pt"><font face=宋体>：终止所有</font></span><span style="FONT-SIZE: 9pt">sql</span><font face=宋体><span style="FONT-SIZE: 9pt">语句，立即终止实例。不会发出检查点，所以也就不会去同步数据文件、控制文件和重做日志文件。</span><span style="FONT-SIZE: 9pt"></span></font></p>
<p style="TEXT-JUSTIFY: inter-ideograph; MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: justify"><span style="FONT-SIZE: 9pt"><font face=宋体>　　</font></span><span style="FONT-SIZE: 9pt">3. </span><font face=宋体><span style="FONT-SIZE: 9pt">总结和相关的一些脚本</span><span style="FONT-SIZE: 9pt"></span></font></p>
<p style="TEXT-JUSTIFY: inter-ideograph; MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: justify"><span style="FONT-SIZE: 9pt"><font face=宋体>　　</font></span><span style="FONT-SIZE: 9pt">a. </span><span style="FONT-SIZE: 9pt"><font face=宋体>修改数据文件名、执行完全恢复、执行不完全恢复、改变日志操作模式时系统必须在启动实例并安装数据库的情况下</font></span><span style="FONT-SIZE: 9pt">startup mount;)</span></p>
<p style="TEXT-JUSTIFY: inter-ideograph; MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: justify"><span style="FONT-SIZE: 9pt"><font face=宋体>　　</font></span><span style="FONT-SIZE: 9pt">b. </span><span style="FONT-SIZE: 9pt"><font face=宋体>创建数据库或创建控制文件时系统只处于启动实例状态</font></span><span style="FONT-SIZE: 9pt">(startup nomount;)</span></p>
<p style="TEXT-JUSTIFY: inter-ideograph; MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: justify"><span style="FONT-SIZE: 9pt"><font face=宋体>　　</font></span><span style="FONT-SIZE: 9pt">c. </span><span style="FONT-SIZE: 9pt"><font face=宋体>显示</font></span><span style="FONT-SIZE: 9pt">sga</span><span style="FONT-SIZE: 9pt"><font face=宋体>尺寸</font></span><span style="FONT-SIZE: 9pt">(show sga</span><span style="FONT-SIZE: 9pt"><font face=宋体>或</font></span><span style="FONT-SIZE: 9pt">select * from v$sga)</span></p>
<p style="TEXT-JUSTIFY: inter-ideograph; MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: justify"><span style="FONT-SIZE: 9pt"><font face=宋体>　　</font></span><span style="FONT-SIZE: 9pt">d.</span><span style="FONT-SIZE: 9pt"><font face=宋体>显示当前正在运行的后台进程</font></span><span style="FONT-SIZE: 9pt">(select name from v$bgprocess where paddr != </span><span style="FONT-SIZE: 9pt"><font face=宋体>&#8216;</font></span><span style="FONT-SIZE: 9pt">00</span><span style="FONT-SIZE: 9pt"><font face=宋体>&#8217;</font></span><span style="FONT-SIZE: 9pt">)</span></p>
<p style="TEXT-JUSTIFY: inter-ideograph; MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: justify"><span style="FONT-SIZE: 9pt"><font face=宋体>　　</font></span><span style="FONT-SIZE: 9pt">e. </span><span style="FONT-SIZE: 9pt"><font face=宋体>显示</font></span><span style="FONT-SIZE: 9pt">oracle server</span><span style="FONT-SIZE: 9pt"><font face=宋体>状态</font></span><span style="FONT-SIZE: 9pt">(select status from v$instance)</span></p>
<p style="TEXT-JUSTIFY: inter-ideograph; MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: justify"><span style="FONT-SIZE: 9pt"><font face=宋体>　　</font></span><span style="FONT-SIZE: 9pt">f. </span><span style="FONT-SIZE: 9pt"><font face=宋体>显示初始化参数信息</font></span><span style="FONT-SIZE: 9pt">(select * from v$parameter);</span></p>
<p style="TEXT-JUSTIFY: inter-ideograph; MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: justify"><span style="FONT-SIZE: 9pt"><font face=宋体>　　</font></span><span style="FONT-SIZE: 9pt">g.</span><span style="FONT-SIZE: 9pt"><font face=宋体>显示物理文件</font></span><span style="FONT-SIZE: 9pt">(select * from v$controfile; select * from v$datafile; select * from v$logfile);</span></p>
<p style="TEXT-JUSTIFY: inter-ideograph; MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: justify"><span style="FONT-SIZE: 9pt"><font face=宋体>　　</font></span><span style="FONT-SIZE: 9pt">h. </span><font face=宋体><span style="FONT-SIZE: 9pt">部分数据字典试图：</span><span style="FONT-SIZE: 9pt"></span></font></p>
<p style="TEXT-JUSTIFY: inter-ideograph; MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: justify"><span style="FONT-SIZE: 9pt"><font face=宋体>　　</font></span><span style="FONT-SIZE: 9pt">all_objects, user_objects, dba_objects, user_source, user_segments,</span></p>
<p style="TEXT-JUSTIFY: inter-ideograph; MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: justify"><span style="FONT-SIZE: 9pt"><font face=宋体>　　</font></span><span style="FONT-SIZE: 9pt">user_tab_columns, user_constraints, all_users</span></p>
<p style="TEXT-JUSTIFY: inter-ideograph; MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: justify"><span style="FONT-SIZE: 9pt"><font face=宋体>　　</font></span><span style="FONT-SIZE: 9pt">i.</span><span style="FONT-SIZE: 9pt"><font face=宋体>为了客户应用可以访问</font></span><span style="FONT-SIZE: 9pt">oracle server</span><span style="FONT-SIZE: 9pt"><font face=宋体>，在服务器端需要配置</font></span><span style="FONT-SIZE: 9pt">listener.ora</span><span style="FONT-SIZE: 9pt"><font face=宋体>文件，在客户端需配置</font></span><span style="FONT-SIZE: 9pt">tnsnames.ora</span><font face=宋体><span style="FONT-SIZE: 9pt">文件</span><span style="FONT-SIZE: 9pt"></span></font></p>
<p style="TEXT-JUSTIFY: inter-ideograph; MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: justify"><span style="FONT-SIZE: 9pt"><font face=宋体>　　第三章</font></span><span style="FONT-SIZE: 9pt"> </span><font face=宋体><span style="FONT-SIZE: 9pt">控制文件</span><span style="FONT-SIZE: 9pt"></span></font></p>
<p style="TEXT-JUSTIFY: inter-ideograph; MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: justify"><span style="FONT-SIZE: 9pt"><font face=宋体>　　</font></span><span style="FONT-SIZE: 9pt">1.</span><span style="FONT-SIZE: 9pt"><font face=宋体>控制文件主要记载的信息</font></span><span style="FONT-SIZE: 9pt">:</span></p>
<p style="TEXT-JUSTIFY: inter-ideograph; MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: justify"><span style="FONT-SIZE: 9pt"><font face=宋体>　　数据库名称</font></span><span style="FONT-SIZE: 9pt">;</span><span style="FONT-SIZE: 9pt"><font face=宋体>数据库文件名称和位置</font></span><span style="FONT-SIZE: 9pt">;</span><span style="FONT-SIZE: 9pt"><font face=宋体>重做日志文件名称和位置</font></span><span style="FONT-SIZE: 9pt">;</span><span style="FONT-SIZE: 9pt"><font face=宋体>表空间名称</font></span><span style="FONT-SIZE: 9pt">;</span></p>
<p style="TEXT-JUSTIFY: inter-ideograph; MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: justify"><span style="FONT-SIZE: 9pt"><font face=宋体>　　当前日志序列号</font></span><span style="FONT-SIZE: 9pt">; </span><span style="FONT-SIZE: 9pt"><font face=宋体>检查点信息</font></span><span style="FONT-SIZE: 9pt">; </span><font face=宋体><span style="FONT-SIZE: 9pt">日志历史信息。</span><span style="FONT-SIZE: 9pt"></span></font></p>
<p style="TEXT-JUSTIFY: inter-ideograph; MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: justify"><span style="FONT-SIZE: 9pt"><font face=宋体>　　</font></span><span style="FONT-SIZE: 9pt">2. </span><font face=宋体><span style="FONT-SIZE: 9pt">多元化控制文件</span><span style="FONT-SIZE: 9pt"></span></font></p>
<p style="TEXT-JUSTIFY: inter-ideograph; MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: justify"><span style="FONT-SIZE: 9pt"><font face=宋体>　　</font></span><span style="FONT-SIZE: 9pt">1. </span><font face=宋体><span style="FONT-SIZE: 9pt">关闭数据库</span><span style="FONT-SIZE: 9pt"></span></font></p>
<p style="TEXT-JUSTIFY: inter-ideograph; MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: justify"><span style="FONT-SIZE: 9pt"><font face=宋体>　　</font></span><span style="FONT-SIZE: 9pt">sqlplus/nolog;</span></p>
<p style="TEXT-JUSTIFY: inter-ideograph; MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: justify"><span style="FONT-SIZE: 9pt"><font face=宋体>　　</font></span><span style="FONT-SIZE: 9pt">connect system/admin@lgtest as sysdba;</span></p>
<p style="TEXT-JUSTIFY: inter-ideograph; MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: justify"><span style="FONT-SIZE: 9pt"><font face=宋体>　　</font></span><span style="FONT-SIZE: 9pt">shutdown immediate;</span></p>
<p style="TEXT-JUSTIFY: inter-ideograph; MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: justify"><span style="FONT-SIZE: 9pt"><font face=宋体>　　</font></span><span style="FONT-SIZE: 9pt">2. </span><font face=宋体><span style="FONT-SIZE: 9pt">复制控制文件</span><span style="FONT-SIZE: 9pt"></span></font></p>
<p style="TEXT-JUSTIFY: inter-ideograph; MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: justify"><span style="FONT-SIZE: 9pt"><font face=宋体>　　</font></span><span style="FONT-SIZE: 9pt">copy source controlfile to dest controlfile</span></p>
<p style="TEXT-JUSTIFY: inter-ideograph; MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: justify"><span style="FONT-SIZE: 9pt"><font face=宋体>　　例如：</font></span><span style="FONT-SIZE: 9pt">copy e:\oracle\oradata\lgtest\control01.ctl f:\controltest.ctl</span></p>
<p style="TEXT-JUSTIFY: inter-ideograph; MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: justify"><span style="FONT-SIZE: 9pt"><font face=宋体>　　</font></span><span style="FONT-SIZE: 9pt">3. </span><span style="FONT-SIZE: 9pt"><font face=宋体>修改初始化参数</font></span><span style="FONT-SIZE: 9pt">control_files</span></p>
<p style="TEXT-JUSTIFY: inter-ideograph; MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: justify"><span style="FONT-SIZE: 9pt"><font face=宋体>　　</font></span><span style="FONT-SIZE: 9pt">control_files= e:\oracle\oradata\lgtest\control01.ctl, f:\controltest.ctl</span></p>
<p style="TEXT-JUSTIFY: inter-ideograph; MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: justify"><span style="FONT-SIZE: 9pt"><font face=宋体>　　</font></span><span style="FONT-SIZE: 9pt">4. </span><font face=宋体><span style="FONT-SIZE: 9pt">启动数据库</span><span style="FONT-SIZE: 9pt"></span></font></p>
<p style="TEXT-JUSTIFY: inter-ideograph; MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: justify"><span style="FONT-SIZE: 9pt"><font face=宋体>　　</font></span><span style="FONT-SIZE: 9pt">startup pfile= e:\oracle\admin\lgtest\pfile\ init.ora.108200317263</span></p>
<p style="TEXT-JUSTIFY: inter-ideograph; MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: justify"><font face=宋体><span style="FONT-SIZE: 9pt">　　其作用：多元化控制文件后，只要有一个控制文件没有被损坏，把其它损坏的控制文件从初始化参数文件中去掉重启之后系统可以继续运行。</span><span style="FONT-SIZE: 9pt"></span></font></p>
<p style="TEXT-JUSTIFY: inter-ideograph; MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: justify"><span style="FONT-SIZE: 9pt"><font face=宋体>　　</font></span><span style="FONT-SIZE: 9pt">3. </span><font face=宋体><span style="FONT-SIZE: 9pt">重建控制文件的方法</span><span style="FONT-SIZE: 9pt"></span></font></p>
<p style="TEXT-JUSTIFY: inter-ideograph; MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: justify"><span style="FONT-SIZE: 9pt"><font face=宋体>　　</font></span><span style="FONT-SIZE: 9pt">1. </span><span style="FONT-SIZE: 9pt"><font face=宋体>以</font></span><span style="FONT-SIZE: 9pt">nomount</span><font face=宋体><span style="FONT-SIZE: 9pt">方式启动实例</span><span style="FONT-SIZE: 9pt"></span></font></p>
<p style="TEXT-JUSTIFY: inter-ideograph; MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: justify"><span style="FONT-SIZE: 9pt"><font face=宋体>　　</font></span><span style="FONT-SIZE: 9pt">sqlplus/nolog;</span></p>
<p style="TEXT-JUSTIFY: inter-ideograph; MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: justify"><span style="FONT-SIZE: 9pt"><font face=宋体>　　</font></span><span style="FONT-SIZE: 9pt">connect system/admin@lgtest as sysdba;</span></p>
<p style="TEXT-JUSTIFY: inter-ideograph; MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: justify"><span style="FONT-SIZE: 9pt"><font face=宋体>　　</font></span><span style="FONT-SIZE: 9pt">shutdown normal;</span></p>
<p style="TEXT-JUSTIFY: inter-ideograph; MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: justify"><span style="FONT-SIZE: 9pt"><font face=宋体>　　</font></span><span style="FONT-SIZE: 9pt">startup nomount pfile=%racle_home%\database\init.ora;</span></p>
<p style="TEXT-JUSTIFY: inter-ideograph; MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: justify"><span style="FONT-SIZE: 9pt"><font face=宋体>　　</font></span><span style="FONT-SIZE: 9pt">2. </span><font face=宋体><span style="FONT-SIZE: 9pt">建立控制文件</span><span style="FONT-SIZE: 9pt"></span></font></p>
<p style="TEXT-JUSTIFY: inter-ideograph; MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: justify"><span style="FONT-SIZE: 9pt"><font face=宋体>　　</font></span><span style="FONT-SIZE: 9pt">create controlfile reuse database lgtest resetlogs</span></p>
<p style="TEXT-JUSTIFY: inter-ideograph; MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: justify"><span style="FONT-SIZE: 9pt"><font face=宋体>　　</font></span><span style="FONT-SIZE: 9pt">logfile</span></p>
<p style="TEXT-JUSTIFY: inter-ideograph; MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: justify"><span style="FONT-SIZE: 9pt"><font face=宋体>　　</font></span><span style="FONT-SIZE: 9pt">group 1 </span><span style="FONT-SIZE: 9pt"><font face=宋体>&#8216;</font></span><span style="FONT-SIZE: 9pt">e:\oracle\oradata\lgtest\ redo01.log</span><span style="FONT-SIZE: 9pt"><font face=宋体>&#8217;</font></span><span style="FONT-SIZE: 9pt"> size 20m,</span></p>
<p style="TEXT-JUSTIFY: inter-ideograph; MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: justify"><span style="FONT-SIZE: 9pt"><font face=宋体>　　</font></span><span style="FONT-SIZE: 9pt">group 2 </span><span style="FONT-SIZE: 9pt"><font face=宋体>&#8216;</font></span><span style="FONT-SIZE: 9pt">e:\oracle\oradata\lgtest\ redo02.log</span><span style="FONT-SIZE: 9pt"><font face=宋体>&#8217;</font></span><span style="FONT-SIZE: 9pt"> size 20m</span></p>
<p style="TEXT-JUSTIFY: inter-ideograph; MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: justify"><span style="FONT-SIZE: 9pt"><font face=宋体>　　</font></span><span style="FONT-SIZE: 9pt">datafile</span></p>
<p style="TEXT-JUSTIFY: inter-ideograph; MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: justify"><span style="FONT-SIZE: 9pt"><font face=宋体>　　&#8216;</font></span><span style="FONT-SIZE: 9pt">e:\oracle\oradata\lgtest\ system01.dbf</span><span style="FONT-SIZE: 9pt"><font face=宋体>&#8217;</font></span><span style="FONT-SIZE: 9pt">,</span></p>
<p style="TEXT-JUSTIFY: inter-ideograph; MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: justify"><span style="FONT-SIZE: 9pt"><font face=宋体>　　&#8216;</font></span><span style="FONT-SIZE: 9pt">e:\oracle\oradata\lgtest\ undotbs01.dbf</span><font face=宋体><span style="FONT-SIZE: 9pt">&#8217;</span><span style="FONT-SIZE: 9pt"></span></font></p>
<p style="TEXT-JUSTIFY: inter-ideograph; MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: justify"><span style="FONT-SIZE: 9pt"><font face=宋体>　　</font></span><span style="FONT-SIZE: 9pt">character set zhs16gbk;</span></p>
<p style="TEXT-JUSTIFY: inter-ideograph; MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: justify"><span style="FONT-SIZE: 9pt"><font face=宋体>　　</font></span><span style="FONT-SIZE: 9pt">3. </span><font face=宋体><span style="FONT-SIZE: 9pt">打开数据库</span><span style="FONT-SIZE: 9pt"></span></font></p>
<p style="TEXT-JUSTIFY: inter-ideograph; MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: justify"><span style="FONT-SIZE: 9pt"><font face=宋体>　　</font></span><span style="FONT-SIZE: 9pt">alter database open resetlogs;</span></p>
<p style="TEXT-JUSTIFY: inter-ideograph; MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: justify"><span style="FONT-SIZE: 9pt"><font face=宋体>　　</font></span><span style="FONT-SIZE: 9pt">4. </span><font face=宋体><span style="FONT-SIZE: 9pt">增加临时文件</span><span style="FONT-SIZE: 9pt"></span></font></p>
<p style="TEXT-JUSTIFY: inter-ideograph; MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: justify"><span style="FONT-SIZE: 9pt"><font face=宋体>　　</font></span><span style="FONT-SIZE: 9pt">a lter tablespace temp add tempfile </span><span style="FONT-SIZE: 9pt"><font face=宋体>&#8216;</font></span><span style="FONT-SIZE: 9pt">e:\oracle\oradata\lgtest\temp01.dbf</span><span style="FONT-SIZE: 9pt"><font face=宋体>&#8217;</font></span><span style="FONT-SIZE: 9pt"> reuse;</span></p>
<p style="TEXT-JUSTIFY: inter-ideograph; MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: justify"><span style="FONT-SIZE: 9pt"><font face=宋体>　　起作用：当控制文件都被损坏后，只要有全部的数据文件和重做日志文件，那么通过重建控制文件可以使系统继续运行。</font></span><span style="FONT-SIZE: 9pt"></span></p>
<img src ="http://www.cnitblog.com/201/aggbug/29923.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cnitblog.com/201/" target="_blank">David</a> 2007-07-16 17:43 <a href="http://www.cnitblog.com/201/archive/2007/07/16/29923.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>SQL Server数据库完整迁移</title><link>http://www.cnitblog.com/201/archive/2007/07/16/29921.html</link><dc:creator>David</dc:creator><author>David</author><pubDate>Mon, 16 Jul 2007 09:42:00 GMT</pubDate><guid>http://www.cnitblog.com/201/archive/2007/07/16/29921.html</guid><wfw:comment>http://www.cnitblog.com/201/comments/29921.html</wfw:comment><comments>http://www.cnitblog.com/201/archive/2007/07/16/29921.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cnitblog.com/201/comments/commentRss/29921.html</wfw:commentRss><trackback:ping>http://www.cnitblog.com/201/services/trackbacks/29921.html</trackback:ping><description><![CDATA[<p>方法一：<br>1、停掉源数据库，将要复制的数据库两个物理文件（mdf、log）拷贝到目的地。<br>2、打开目的sql server数据库的企业管理器，将该数据库文件附加为本地数据库。但是库名要修改为不同的名字，例如xxbak等。<br>3、新建一个与源数据库同名的空库，使用默认值建立。<br>4、在安全性登录里新建该数据库的实际登录名，输入访问密码，数据库访问里选择对应的数据库，并勾上选项。<br>因为仅仅附加数据库后不能再修改该库的登录名，其名称对应的登录名往往为空，使数据库内的表不能被访问。<br>5、从附加的备份数据库导出数据到新建的空数据库：<br>选择源数据源和目的数据源以后，下一步选择在sql server数据库之间复制对象和数据，这点非常重要，不要选择默认的从源数据库复制表和视图，那样不会把数据复制过来。</p>
<p>&#160;</p>
<p>___________________________________________________________________<br>方法二：<br>1、在sql server企业管理器里选中要转移的数据库，按鼠标右键，选所有任务-&gt;备份数据库。<br>备份 选数据库完全，<br>目的备份到按添加按钮 <br>文件名在sql server服务器硬盘下输入一个自定义的备份数据库文件名(后缀一般是bak)<br>重写选重写现有媒体<br>最后按确定按钮。<br>如果生成的备份数据库文件大于1m，要用压缩工具压缩后再到internet上传输。</p>
<p>&#160;</p>
<p>2、目的sql server数据库如果还没有此数据库，先创建一个新的数据库；<br>然后选中这个新创建的数据库，按鼠标右键，选所有任务-&gt;还原数据库<br>还原-&gt;从设备-&gt;选择设备-&gt;磁盘-&gt;添加（找到要导入的备份数据库文件名）-&gt;确定<br>还原备份集-&gt;数据库-完全<br>最后按确定按钮。完全的数据库导入成功了。<br>(如果在已经存在的sql server数据库上还原数据库可能遇到有还有其它人正在使用它而恢复操做失败，可以去看 -&gt;管理-&gt;当前活动-&gt;锁/对象-&gt;找到数据库下锁的进程号-&gt;到查询分析器里用kill 进程号杀掉这些锁，然后再做还原)</p>
<p>&#160;</p>
<p>3、这样恢复的数据库数据应该是完整的，但是用户名访问可能不正常<br>SQL Server数据库六种数据移动方法<br>本人从事的工作是数据库管理员，要维护多台服务器中的数据库，经常把某台服务器中的某个数据库移动到另外一台服务器，对数据的移动有些心得体会，希望和大家共同交流。 </p>
<p>　　1. 通过工具DTS的设计器进行导入或导出DTS的设计器功能强大，支持多任务，也是可视化界面，容易操作，但知道的人一般不多，如果只是进行SQL Server数据库中部分表的移动，用这种方法最好，当然，也可以进行全部表的移动。在SQL Server Enterprise Manager中，展开服务器左边的+，选择数据库，右击，选择All tasks/Import Data...(或All tasks/Export Data...)，进入向导模式，按提示一步一步走就行了，里面分得很细，可以灵活的在不同数据源之间复制数据，很方便的。而且可以另存成DTS包，如果以后还有相同的复制任务，直接运行DTS包就行，省时省力。也可以直接打开DTS设计器，方法是展开服务器名称下面的Data Transformation Services，选Local Packages，在右边的窗口中右击，选New Package，就打开了DTS设计器。值得注意的是：如果源数据库要拷贝的表有外键，注意移动的顺序，有时要分批移动，否则外键主键，索引可能丢失，移动的时候选项旁边的提示说的很明白，或者一次性的复制到目标数据库中，再重新建立外键，主键，索引。 </p>
<p>　　其实建立数据库时，建立外键，主键，索引的文件应该和建表文件分开，而且用的数据文件也分开，并分别放在不同的驱动器上，有利于数据库的优化。 </p>
<p>　　2. 利用Bcp工具 </p>
<p>　　这种工具虽然在SQL Server7的版本中不推荐使用，但许多数据库管理员仍很喜欢用它，尤其是用过SQL Server早期版本的人。Bcp有局限性，首先它的界面不是图形化的，其次它只是在SQL Server的表（视图）与文本文件之间进行复制，但它的优点是性能好，开销小，占用内存少，速度快。有兴趣的朋友可以查参考手册。 </p>
<p>　　3. 利用备份和恢复 </p>
<p>　　先对源数据库进行完全备份，备份到一个设备（device）上，然后把备份文件复制到目的服务器上（恢复的速度快），进行数据库的恢复操作，在恢复的数据库名中填上源数据库的名字（名字必须相同），选择强制型恢复（可以覆盖以前数据库的选项），在选择从设备中进行恢复，浏览时选中备份的文件就行了。这种方法可以完全恢复数据库，包括外键，主键，索引。 </p>
<p>　　4. 直接拷贝数据文件 </p>
<p>　　把数据库的数据文件（*.mdf）和日志文件（*.ldf）都拷贝到目的服务器，在SQL Server Query Analyzer中用语句进行恢复: </p>
<p>EXEC sp_attach_db @dbname = 'test', </p>
<p>@filename1 = 'd:\mssql7\data\test_data.mdf', </p>
<p>@filename2 = 'd:\mssql7\data\test_log.ldf' </p>
<p>　　这样就把test数据库附加到SQL Server中，可以照常使用。如果不想用原来的日志文件，可以用如下的命令： </p>
<p>EXEC sp_detach_db @dbname = 'test' </p>
<p>EXEC sp_attach_single_file_db @dbname = 'test', </p>
<p>@physname = 'd:\mssql7\data\test_data.mdf' </p>
<p>　　这个语句的作用是仅仅加载数据文件，日志文件可以由SQL Server数据库自动添加，但是原来的日志文件中记录的数据就丢失了。 </p>
<p>　　5. 在应用程序中定制 </p>
<p>　　可以在应用程序（PB、VB）中执行自己编写的程序，也可以在Query Analyzer中执行，这种方法比较灵活，其实是利用一个平台连接到数据库，在平台中用的主要时SQL语句，这种方法对数据库的影响小，但是如果用到远程链接服务器，要求网络之间的传输性能好，一般有两种语句： </p>
<p>1&gt; select ... into new_tablename where ... </p>
<p>2&gt; insert (into) old_tablename select ... from ... where ... </p>
<p>　　区别是前者把数据插入一个新表（先建立表，再插入数据），后者是把数据插入已经存在的一个表中，我个人喜欢后者，因为在编程的结构上，应用的范围上，第二条语句强于前者。 </p>
<p>　　6. SQL Server的复制功能 </p>
<p>　　SQL Server提供了强大的数据复制功能，也是最不易掌握的，具体应用请参考相关资料，值得注意的是要想成功进行数据的复制工作，有些条件是必不可少的： </p>
<p>1&gt;SQL Server Agent必须启动，MSDTC必须启动。 </p>
<p>2&gt;所有要复制的表必须有主键。 </p>
<p>3&gt;如果表中有text或image数据类型，必须使用with log选项，不能使用with no_log选项。 </p>
<p>另外max text repl size选项控制可以复制的文本和图像数据的最大规模，超过这个限制的操作将失败。 </p>
<p>4&gt;在要进行复制的计算机上，应该至少是隐含共享，即共享名是C$或D$&#8230;。 </p>
<p>5&gt;为SQL Server代理使用的Windows NT帐号不能是一个本地的系统帐号，因为本地的系统帐号不允许网络存取。 </p>
<p>6&gt;如果参与复制的服务器在另外的计算机域中，必须在这些域之间建立信任关系。</p>
<img src ="http://www.cnitblog.com/201/aggbug/29921.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cnitblog.com/201/" target="_blank">David</a> 2007-07-16 17:42 <a href="http://www.cnitblog.com/201/archive/2007/07/16/29921.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>ORACLE FailSafe与rac(ops)的区别</title><link>http://www.cnitblog.com/201/archive/2007/07/16/29922.html</link><dc:creator>David</dc:creator><author>David</author><pubDate>Mon, 16 Jul 2007 09:42:00 GMT</pubDate><guid>http://www.cnitblog.com/201/archive/2007/07/16/29922.html</guid><wfw:comment>http://www.cnitblog.com/201/comments/29922.html</wfw:comment><comments>http://www.cnitblog.com/201/archive/2007/07/16/29922.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cnitblog.com/201/comments/commentRss/29922.html</wfw:commentRss><trackback:ping>http://www.cnitblog.com/201/services/trackbacks/29922.html</trackback:ping><description><![CDATA[<p>oracle failsafe和RAC均为ORACLE公司提供的高可靠性（HA）解决方案。然而之两者之间却存在着很大区别： </p>
<p>1.操作系统： failsafe系统局限于WINDOWS平台，必须配合MSCS（microsoft cluster server），而RAC最早是在UNIX平台推出的，目前已扩展至LINUX和WINDOWS平台，通过OSD（operating system dependent）与系统交互。对于高端的RAC应用，UNIX依然是首选的平台。 </p>
<p>2.系统结构：FAILSAFE采用的是SHARE NOTHING结构，即采用若干台服务器组成集群，共同连接到一个共享磁盘系统，在同一时刻，只有一台服务器能够访问共享磁盘，能够对外提供服务。只要当此服务器失效时，才有另一台接管共享磁盘。RAC则是采用SHARE EVERYTHING，组成集群的每一台服务器都可以访问共享磁盘，都能对外提供服务。也就是说FAILSAFE只能利用一台服务器资源，RAC可以并行利用多台服务器资源。 </p>
<p>3.运行机理：组成FAILSAFE集群的每台SERVER有独立的IP，整个集群又有一个IP，另外还为FAILSAFE GROUP分配一个单独的IP（后两个IP为虚拟IP，对于客户来说，只需知道集群IP，就可以透明访问数据库）。工作期间，只有一台服务器（preferred or owner or manager）对外提供服务，其余服务器(operator)成待命状，当前者失效时，另一服务器就会接管前者，包括FAILSAFE GROUP IP与CLUSTER IP，同时FAILSAFE会启动上面的DATABASE SERVICE，LISTENER和其他服务。客户只要重新连接即可，不需要做任何改动。对于RAC组成的集群，每台服务器都分别有自已的IP，INSTANCE等，可以单独对外提供服务，只不过它们都是操作位于共享磁盘上的同一个数据库。当某台服务器失效后，用户只要修改网络配置，如（TNSNAMES。ORA），即可重新连接到仍在正常运行的服务器上。但和TAF结合使用时，甚至网络也可配置成透明的。 </p>
<p>4.集群容量：前者通常为两台，后者在一些平台上能扩展至8台。 </p>
<p>5.分区：FAILSAFE数据库所在的磁盘必须是NTFS格式的，RAC则相对灵活，通常要求是RAW，然而若干OS已操作出了CLUSTER文件系统可以供RAC直接使用。 </p>
<p>　　从以上分析可以看出，FAILSAFE较适合一个可靠性要求很高，应用相对较小，对高性能要求相对不高的系统，而RAC则更适合可靠性、扩展性、性能要求都相对较高的较大型的应用。另外要指出的是，用户不用象为获得RAC一样为FAILESAFE单独付费，它是FREE的。。。。。。 <br></p>
<img src ="http://www.cnitblog.com/201/aggbug/29922.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cnitblog.com/201/" target="_blank">David</a> 2007-07-16 17:42 <a href="http://www.cnitblog.com/201/archive/2007/07/16/29922.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>ORACLE的常用命令</title><link>http://www.cnitblog.com/201/archive/2007/07/16/29920.html</link><dc:creator>David</dc:creator><author>David</author><pubDate>Mon, 16 Jul 2007 09:40:00 GMT</pubDate><guid>http://www.cnitblog.com/201/archive/2007/07/16/29920.html</guid><wfw:comment>http://www.cnitblog.com/201/comments/29920.html</wfw:comment><comments>http://www.cnitblog.com/201/archive/2007/07/16/29920.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cnitblog.com/201/comments/commentRss/29920.html</wfw:commentRss><trackback:ping>http://www.cnitblog.com/201/services/trackbacks/29920.html</trackback:ping><description><![CDATA[<p>一、ORACLE的启动和关闭<br>1、在单机环境下<br>要想启动或关闭ORACLE系统必须首先切换到ORACLE用户，如下<br>su - oracle</p>
<p>a、启动ORACLE系统<br>oracle&gt;svrmgrl<br>SVRMGR&gt;connect internal<br>SVRMGR&gt;startup<br>SVRMGR&gt;quit</p>
<p>b、关闭ORACLE系统<br>oracle&gt;svrmgrl<br>SVRMGR&gt;connect internal<br>SVRMGR&gt;shutdown<br>SVRMGR&gt;quit</p>
<p>启动oracle9i数据库命令：<br>$ sqlplus /nolog</p>
<p>SQL*Plus: Release 9.2.0.1.0 - Production on Fri Oct 31 13:53:53 2003</p>
<p>Copyright (c) 1982, 2002, Oracle Corporation.&nbsp;&nbsp; All rights reserved.</p>
<p>SQL&gt; connect / as sysdba&nbsp;&nbsp;<br>Connected to an idle instance.<br>SQL&gt; startup^C</p>
<p>SQL&gt; startup<br>ORACLE instance started.</p>
<p><br>2、在双机环境下<br>要想启动或关闭ORACLE系统必须首先切换到root用户，如下<br>su － root</p>
<p>a、启动ORACLE系统<br>hareg －y oracle</p>
<p>b、关闭ORACLE系统<br>hareg －n oracle</p>
<p>Oracle数据库有哪几种启动方式</p>
<p><br>说明：</p>
<p>有以下几种启动方式：<br>1、startup nomount<br>非安装启动，这种方式启动下可执行：重建控制文件、重建数据库</p>
<p>读取init.ora文件，启动instance，即启动SGA和后台进程，这种启动只需要init.ora文件。</p>
<p><br>2、startup mount dbname<br>安装启动，这种方式启动下可执行：<br>数据库日志归档、<br>数据库介质恢复、<br>使数据文件联机或脱机，<br>重新定位数据文件、重做日志文件。</p>
<p>执行&#8220;nomount&#8221;，然后打开控制文件，确认数据文件和联机日志文件的位置，<br>但此时不对数据文件和日志文件进行校验检查。</p>
<p><br>3、startup open dbname<br>先执行&#8220;nomount&#8221;，然后执行&#8220;mount&#8221;，再打开包括Redo log文件在内的所有数据库文件，<br>这种方式下可访问数据库中的数据。</p>
<p><br>4、startup，等于以下三个命令<br>startup nomount<br>alter dataｂａｓｅ mount<br>alter dataｂａｓｅ open</p>
<p><br>5、startup restrict<br>约束方式启动<br>这种方式能够启动数据库，但只允许具有一定特权的用户访问<br>非特权用户访问时，会出现以下提示：<br>ERROR：<br>ORA-01035: ORACLE 只允许具有 RESTRICTED SESSION 权限的用户使用</p>
<p><br>6、startup force<br>强制启动方式<br>当不能关闭数据库时，可以用startup force来完成数据库的关闭<br>先关闭数据库，再执行正常启动数据库命令</p>
<p><br>7、startup pfile=参数文件名<br>带初始化参数文件的启动方式<br>先读取参数文件，再按参数文件中的设置启动数据库<br>例：startup pfile=E:Oracleadminoradbpfileinit.ora</p>
<p><br>8、startup EXCLUSIVE<br>二、用户如何有效地利用数据字典<br>&nbsp;&nbsp; 　ORACLE的数据字典是数据库的重要组成部分之一，它随着数据库的产生而产生, 随着数据库的变化而变化,<br>体现为sys用户下的一些表和视图。数据字典名称是大写的英文字符。</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp; 数据字典里存有用户信息、用户的权限信息、所有数据对象信息、表的约束条件、统计分析数据库的视图等。<br>我们不能手工修改数据字典里的信息。</p>
<p>　　很多时候，一般的ORACLE用户不知道如何有效地利用它。</p>
<p>　　dictionary　　　全部数据字典表的名称和解释，它有一个同义词dict<br>&nbsp;&nbsp;&nbsp;&nbsp; dict_column　　 全部数据字典表里字段名称和解释</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp; 如果我们想查询跟索引有关的数据字典时，可以用下面这条SQL语句:</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp; SQL&gt;select * from dictionary where instr(comments,'index')&gt;0;</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp; 如果我们想知道user_indexes表各字段名称的详细含义，可以用下面这条SQL语句:</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp; SQL&gt;select column_name,comments from dict_columns where table_name='USER_INDEXES';</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp; 依此类推，就可以轻松知道数据字典的详细名称和解释，不用查看ORACLE的其它文档资料了。</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp; 下面按类别列出一些ORACLE用户常用数据字典的查询使用方法。</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp; 1、用户</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 查看当前用户的缺省表空间<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; SQL&gt;select username,default_tablespace from user_users;</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 查看当前用户的角色<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; SQL&gt;select * from user_role_privs;</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 查看当前用户的系统权限和表级权限<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; SQL&gt;select * from user_sys_privs;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; SQL&gt;select * from user_tab_privs;</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp; 2、表</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 查看用户下所有的表<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; SQL&gt;select * from user_tables;</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 查看名称包含log字符的表<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; SQL&gt;select object_name,object_id from user_objects<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; where instr(object_name,'LOG')&gt;0;</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 查看某表的创建时间<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; SQL&gt;select object_name,created from user_objects where object_name=upper('&amp;table_name');</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 查看某表的大小<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; SQL&gt;select sum(bytes)/(1024*1024) as "size(M)" from user_segments<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; where segment_name=upper('&amp;table_name');</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 查看放在ORACLE的内存区里的表<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; SQL&gt;select table_name,cache from user_tables where instr(cache,'Y')&gt;0;</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp; 3、索引</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 查看索引个数和类别<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; SQL&gt;select index_name,index_type,table_name from user_indexes order by table_name;</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 查看索引被索引的字段<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; SQL&gt;select * from user_ind_columns where index_name=upper('&amp;index_name');</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 查看索引的大小<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; SQL&gt;select sum(bytes)/(1024*1024) as "size(M)" from user_segments<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; where segment_name=upper('&amp;index_name');</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp; 4、序列号</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 查看序列号，last_number是当前值<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; SQL&gt;select * from user_sequences;</p>
<img src ="http://www.cnitblog.com/201/aggbug/29920.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cnitblog.com/201/" target="_blank">David</a> 2007-07-16 17:40 <a href="http://www.cnitblog.com/201/archive/2007/07/16/29920.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Oracle控制文件如何重建</title><link>http://www.cnitblog.com/201/archive/2007/07/16/29919.html</link><dc:creator>David</dc:creator><author>David</author><pubDate>Mon, 16 Jul 2007 09:39:00 GMT</pubDate><guid>http://www.cnitblog.com/201/archive/2007/07/16/29919.html</guid><wfw:comment>http://www.cnitblog.com/201/comments/29919.html</wfw:comment><comments>http://www.cnitblog.com/201/archive/2007/07/16/29919.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cnitblog.com/201/comments/commentRss/29919.html</wfw:commentRss><trackback:ping>http://www.cnitblog.com/201/services/trackbacks/29919.html</trackback:ping><description><![CDATA[<p>数据库系统运行一段时间后有很多参数需要调整，有些参数可$ORACLE_HOME/dbs/initXXX.ora文件中调整，而有些参数必须要在ORACLE的控制</p>
<p>文件中调整。<br>　　数据库系统运行一段时间后有很多参数需要调整，有些参数可$ORACLE_HOME/dbs/initXXX.ora文件中调整，而有些参数必须要在ORACLE的</p>
<p>控制文件中调整。如ORACLE的缺省数据文件个数为30个，在系统需要扩表空间而数据文件个数不够时就需要进行调整。</p>
<p>　　一种方法是将所有数据全倒出来，重建库，再将数据倒进出。这种方法较麻烦。</p>
<p>　　二种方法是只重建控制文件，因为数据文件个数的限制参数存放在控制文件中。</p>
<p>　　以下是一种较好的重建控制文件的方法:</p>
<p>　　1. 备份数据库中的数据，以防不测。</p>
<p>　　2. svrmgrl</p>
<p>　　3. svrmgrl&gt;connect internal</p>
<p>　　4. svrmgrl&gt;alter database backup controlfile to trace; 备份控制文件</p>
<p>　　5. 在/home/oracle//admin/ora7/udump下可找到最新生成的TRACE文件，假设为ora_15269.trc，此文件就包含了当前控制文件的参数及生</p>
<p>成语法。</p>
<p>　　6. 提取ora_15269.trc中有关控制文件生成的语句另存为creatctl.sql。</p>
<p>　　7. creatctl.sql的内容为:</p>
<p>　　STARTUP NOMOUNT</p>
<p>　　CREATE CONTROLFILE REUSE DATABASE "ORA7" NORESETLOGS NOARCHIVELOG</p>
<p>　　MAXLOGFILES 32</p>
<p>　　MAXLOGMEMBERS 2</p>
<p>　　MAXDATAFILES 50</p>
<p>　　MAXINSTANCES 8</p>
<p>　　MAXLOGHISTORY 800</p>
<p>　　LOGFILE</p>
<p>　　GROUP 1 '/dev/vg00/roraredoa1' SIZE 500K,</p>
<p>　　GROUP 2 '/dev/vg00/roraredoa2' SIZE 500K,</p>
<p>　　GROUP 3 '/dev/vg00/roraredoa3' SIZE 500K</p>
<p>　　DATAFILE</p>
<p>　　'/dev/vg00/rorasys',</p>
<p>　　'/dev/vg00/rorarbs',</p>
<p>　　'/dev/vg00/roratemp',</p>
<p>　　'/dev/vg00/roratools',</p>
<p>　　'/dev/vg00/rorauser'</p>
<p>　　;</p>
<p>　　8. 可按自己的需要编辑creatctl.sql中的参数，如maxdatafiles、maxinstances等。</p>
<p>　　9. svrmgrl</p>
<p>　　10. svrmgrl&gt;connect internal</p>
<p>　　11. svrmgrl&gt;shutdown immediate</p>
<p>　　12. svrmgrl&gt;@creatctl.sql</p>
<p>　　13. svrmgrl&gt;alter database open;</p>
<p>　　此时数据库已按新的参数运行。<br></p>
<img src ="http://www.cnitblog.com/201/aggbug/29919.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cnitblog.com/201/" target="_blank">David</a> 2007-07-16 17:39 <a href="http://www.cnitblog.com/201/archive/2007/07/16/29919.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>