<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>永汇博客</title>
	<atom:link href="http://blog.tianbaoyong.com/feed" rel="self" type="application/rss+xml" />
	<link>http://blog.tianbaoyong.com</link>
	<description>永汇人气，永汇资源！永汇博客。</description>
	<lastBuildDate>Fri, 27 Apr 2012 06:32:55 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0.1</generator>
		<item>
		<title>Ubuntu系统创建SVN多仓库脚本</title>
		<link>http://blog.tianbaoyong.com/defaultcat/ubuntu-system-to-create-a-svn-warehouse-script.html</link>
		<comments>http://blog.tianbaoyong.com/defaultcat/ubuntu-system-to-create-a-svn-warehouse-script.html#comments</comments>
		<pubDate>Fri, 27 Apr 2012 06:32:55 +0000</pubDate>
		<dc:creator>tian5258</dc:creator>
				<category><![CDATA[默认日志]]></category>

		<guid isPermaLink="false">http://blog.tianbaoyong.com/?p=655</guid>
		<description><![CDATA[1、创建仓库脚本 #!/bin/bash username=$1 proname=$2 basepath=${3:-&#8217;/home/svn&#8217;} if [ $# -eq 0 ] &#124;&#124; [ $# -gt 3 ] then { echo &#8220;usage: sudo $0 username projectname [basepath]&#8221; echo &#8220;username:执行此操作的linux用户名，一般是当前登录用户&#8221; echo &#8220;projectname: SVN项目库名称&#8221; echo &#8220;basepath:SVN项目库存放的位置，一般默认/home/svn&#8221; echo &#8220;example: sudo $0 admins myproject /home/svn&#8221; exit 1800 } else { echo &#8220;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8221; echo &#8220;Current User is &#8220;${username} echo &#8220;Project Name [...]]]></description>
			<content:encoded><![CDATA[<p>1、创建仓库脚本</p>
<p>#!/bin/bash</p>
<p>username=$1</p>
<p>proname=$2</p>
<p>basepath=${3:-&#8217;/home/svn&#8217;}</p>
<p>if [ $# -eq 0 ] || [ $# -gt 3 ]</p>
<p>then</p>
<p>{</p>
<p>echo &#8220;usage: sudo $0 username projectname [basepath]&#8221;</p>
<p>echo &#8220;username:执行此操作的linux用户名，一般是当前登录用户&#8221;</p>
<p>echo &#8220;projectname: SVN项目库名称&#8221;</p>
<p>echo &#8220;basepath:SVN项目库存放的位置，一般默认/home/svn&#8221;</p>
<p>echo &#8220;example: sudo $0 admins myproject /home/svn&#8221;</p>
<p>exit 1800</p>
<p>}</p>
<p>else</p>
<p>{</p>
<p>echo &#8220;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8221;</p>
<p>echo &#8220;Current User is &#8220;${username}</p>
<p>echo &#8220;Project Name is &#8220;${proname}</p>
<p>echo &#8220;Create on the Path :&#8221;${basepath}</p>
<p>echo &#8220;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8221;</p>
<p>echo &#8220;检查并配置环境&#8230;&#8230;&#8221;</p>
<p>if [ ! -e /usr/bin/svnadmin ]</p>
<p>then</p>
<p>apt-get install subversion -y &gt;/dev/null &amp;&amp; echo &#8220;Subversion安装成功!&#8221;</p>
<p>else</p>
<p>echo &#8220;Subversion已经安装!&#8221;</p>
<p>fi</p>
<p>if [ ! -e /etc/apache2/apache2.conf ]</p>
<p>then</p>
<p>{</p>
<p>apt-get install apache2 -y &gt; /dev/null &amp;&amp; echo &#8220;Apache2安装成功！&#8221;</p>
<p>}</p>
<p>else</p>
<p>echo &#8220;Apache2已经安装!&#8221;</p>
<p>fi</p>
<p>modnum=`ls /etc/apache2/mods-enabled/ | cat | grep dav_svn | wc -l`</p>
<p>if [ $modnum -eq 0 ]</p>
<p>then</p>
<p>apt-get install libapache2-svn -y &gt;/dev/null &amp;&amp; echo &#8220;Apache Dav_svn Mod安装完成!&#8221;</p>
<p>else</p>
<p>echo &#8220;DAV_SVN Module已经安装完成!&#8221;</p>
<p>fi</p>
<p>modnumphp=`ls /etc/apache2/mods-enabled/ | cat | grep php5 | wc -l`</p>
<p>if [ $modnumphp -eq 0 ]</p>
<p>then</p>
<p>apt-get install libapache2-mod-php5 -y &gt;/dev/null &amp;&amp; echo &#8220;Apache php5 Module安装完成&#8221;</p>
<p>else</p>
<p>echo &#8220;PHP5 Module已经安装完成!&#8221;</p>
<p>fi</p>
<p>G=`grep subversion /etc/group | wc -l`</p>
<p>if [ "$G" -eq "0" ]</p>
<p>then</p>
<p>{</p>
<p>addgroup subversion &gt;/dev/null</p>
<p>usermod -G subversion -a www-data &gt;/dev/null</p>
<p>usermod -G subversion -a ${username}&gt; /dev/null</p>
<p>}</p>
<p>fi</p>
<p>if [ ! -d ${basepath}/repository ]</p>
<p>then</p>
<p>mkdir -p ${basepath}/repository &gt;/dev/null &amp;&amp; echo &#8220;主目录建立完成&#8221;</p>
<p>else</p>
<p>echo &#8220;目录已经存在!&#8221;</p>
<p>fi</p>
<p>if [ ! -d ${basepath}/repository/${proname} ]</p>
<p>then</p>
<p>svnadmin create ${basepath}/repository/${proname} &gt; /dev/null &amp;&amp; echo &#8220;项目库建立成功!&#8221;</p>
<p>else</p>
<p>{</p>
<p>cp -Rf ${basepath}/repository/${proname} ${basepath}/repository/${proname}.bak &gt;/dev/null</p>
<p>rm -Rf ${basepath}/repository/${proname} &gt;/dev/null</p>
<p>svnadmin create ${basepath}/repository/${proname} &gt;/dev/null &amp;&amp; echo &#8220;项目库已经存在，重新创建，项目备份为.bak目录!&#8221;</p>
<p>}</p>
<p>fi</p>
<p>numloc=`cat /etc/apache2/apache2.conf | grep &#8220;Location /${proname}&#8221; | wc -l`</p>
<p>if [ $numloc -eq 0 ]</p>
<p>then</p>
<p>{</p>
<p>echo &#8216;&lt;Location /&#8217;${proname}&#8217;&gt;</p>
<p>DAV svn</p>
<p>SVNPath &#8216;${basepath}&#8217;/repository/&#8217;${proname}&#8217;</p>
<p>AuthType Basic</p>
<p>AuthName &#8220;&#8216;${proname}&#8217; Subversion Repository&#8221;</p>
<p>AuthUserFile &#8216;${basepath}&#8217;/conf/passwd</p>
<p>AuthzSVNAccessFile &#8216;${basepath}&#8217;/conf/authz/&#8217;${proname}&#8217;.authz</p>
<p>Require valid-user</p>
<p>&lt;/Location&gt;&#8217; | tee -a /etc/apache2/apache2.conf  &gt;/dev/null &amp;&amp; echo &#8220;项目建立成功，访问地址：http://ip/${proname}&#8221;</p>
<p>}</p>
<p>fi</p>
<p>chown -R ${username}:subversion ${basepath} &gt;/dev/null</p>
<p>chmod -R g+rws ${basepath} &gt;/dev/null</p>
<p>if [ ! -e "${basepath}/conf/passwd" ]</p>
<p>then</p>
<p>{</p>
<p>mkdir -p ${basepath}/conf/authz &gt; /dev/null</p>
<p>touch ${basepath}/conf/authz/${proname}.authz &gt; /dev/null</p>
<p>htpasswd -cb ${basepath}/conf/passwd super super &gt;/dev/null &amp;&amp; echo &#8220;用户添加成功，默认用户名:super,密码:super&#8221;</p>
<p>}</p>
<p>fi</p>
<p>echo &#8216;[/]</p>
<p>super = rw &#8216; | tee -a ${basepath}/conf/authz/${proname}.authz  &gt;/dev/null &amp;&amp; echo &#8220;授予权限成功&#8221;</p>
<p>if [ ! -d ${basepath}/www ]</p>
<p>then</p>
<p>mkdir -p ${basepath}/www &gt;/dev/null</p>
<p>fi</p>
<p>if [ ! -e '${basepath}/www/index.php' ]</p>
<p>then</p>
<p>{</p>
<p>touch ${basepath}/www/index.php   &gt;/dev/null</p>
<p>chmod 755 ${basepath}/www/index.php  &gt;/dev/null</p>
<p>}</p>
<p>fi</p>
<p>num=`cat ${basepath}/www/index.php | wc -l`</p>
<p>if [ $num -eq 0 ]</p>
<p>then</p>
<p>{</p>
<p>echo &#8216;Alias /security/ &#8220;&#8216;${basepath}&#8217;/www/&#8221;</p>
<p>&lt;Directory &#8220;&#8216;${basepath}&#8217;/www/&#8221;&gt;</p>
<p>AuthType Basic</p>
<p>AuthName &#8220;svntools repository&#8221;</p>
<p>AuthUserFile &#8216;${basepath}&#8217;/conf/passwd</p>
<p>Require valid-user</p>
<p>&lt;/Directory&gt;&#8217; | tee -a /etc/apache2/apache2.conf  &gt;/dev/null &amp;&amp; echo &#8220;add change password location&#8221;</p>
<p>echo &#8216;</p>
<p>&lt;?</p>
<p>$auth_user = $_SERVER["PHP_AUTH_USER"];</p>
<p>$auth_pass = $_SERVER["PHP_AUTH_PW"];</p>
<p>?&gt;</p>
<p>&lt;html&gt;</p>
<p>&lt;head&gt;</p>
<p>&lt;title&gt;Change SVN Password&lt;/title&gt;</p>
<p>&lt;meta http-equiv=&#8221;Content-Type&#8221; content=&#8221;text/html; charset=gb2312&#8243; /&gt;</p>
<p>&lt;/head&gt;</p>
<p>&lt;body&gt;</p>
<p>&lt;div align=&#8221;center&#8221;&gt;</p>
<p>&lt;h1&gt;SVN用户密码修改页面&lt;/h1&gt;</p>
<p>&lt;?</p>
<p>if ($_REQUEST["action"] != &#8220;modify&#8221;) {</p>
<p>?&gt;</p>
<p>&lt;script language = &#8220;javaScript&#8221;&gt;&lt;!&#8211;</p>
<p>function check_and_submit(myform) {</p>
<p>var oldpass = myform.oldpass.value;</p>
<p>var newpass = myform.newpass.value;</p>
<p>var repeatpass = myform.repeatpass.value;</p>
<p>if (oldpass == &#8220;&#8221;) {</p>
<p>alert(&#8220;原密码不能为空!&#8221;);</p>
<p>myform.oldpass.focus();</p>
<p>}</p>
<p>else if (newpass == &#8220;&#8221;) {</p>
<p>alert(&#8220;新密码不能为空!&#8221;);</p>
<p>myform.newpass.focus();</p>
<p>}</p>
<p>else if (repeatpass == &#8220;&#8221; || repeatpass != newpass) {</p>
<p>alert(&#8220;请确认密码，是否为空或者两次密码匹配！&#8221;);</p>
<p>myform.repeatpass.focus();</p>
<p>}</p>
<p>else</p>
<p>myform.submit();</p>
<p>}</p>
<p>// &#8211;&gt;&lt;/script&gt;</p>
<p>&lt;form method=&#8221;post&#8221;&gt;</p>
<p>&lt;input type=&#8221;hidden&#8221; name=&#8221;action&#8221; value=&#8221;modify&#8221;/&gt;</p>
<p>&lt;table&gt;</p>
<p>&lt;tr&gt;</p>
<p>&lt;td&gt;用户登录名：&lt;/td&gt;</p>
<p>&lt;td align=&#8221;left&#8221;&gt;&lt;?=$auth_user?&gt;&lt;/td&gt;</p>
<p>&lt;/tr&gt;</p>
<p>&lt;tr&gt;</p>
<p>&lt;td&gt;先前密码：&lt;/td&gt;</p>
<p>&lt;td&gt;&lt;input type=&#8221;password&#8221; size=20 name=oldpass&gt;&lt;/td&gt;</p>
<p>&lt;/tr&gt;</p>
<p>&lt;tr&gt;</p>
<p>&lt;td&gt;更新密码：&lt;/td&gt;</p>
<p>&lt;td&gt;&lt;input type=&#8221;password&#8221; size=20 name=newpass&gt;&lt;/td&gt;</p>
<p>&lt;/tr&gt;</p>
<p>&lt;tr&gt;</p>
<p>&lt;td&gt;确认密码：&lt;/td&gt;</p>
<p>&lt;td&gt;&lt;input type=&#8221;password&#8221; size=20 name=repeatpass&gt;&lt;/td&gt;</p>
<p>&lt;/tr&gt;</p>
<p>&lt;tr&gt;</p>
<p>&lt;td colspan=2&gt;</p>
<p>&lt;input type=&#8221;button&#8221; value=&#8221;修改&#8221; onclick=&#8221;check_and_submit(this.form)&#8221;&gt;</p>
<p>&lt;input type=&#8221;reset&#8221; value=&#8221;复位&#8221;&gt;</p>
<p>&lt;/td&gt;</p>
<p>&lt;/tr&gt;</p>
<p>&lt;/table&gt;</p>
<p>&lt;/form&gt;</p>
<p>&lt;?</p>
<p>} else {</p>
<p>$old_pass = $_REQUEST["oldpass"];</p>
<p>$new_pass = $_REQUEST["newpass"];</p>
<p>if ($old_pass != $auth_pass)</p>
<p>$msg = &#8220;原密码错误!&#8221;;</p>
<p>else</p>
<p>{</p>
<p>$cmd = &#8220;htpasswd -b &#8216;${basepath}&#8217;/conf/passwd $auth_user $new_pass&#8221;;</p>
<p>system($cmd, $res);</p>
<p>if ($res == 0)</p>
<p>$msg = &#8220;用户：[$auth_user] 的密码修改成功，请重新登录确认.&#8221;;</p>
<p>else</p>
<p>$msg = &#8220;用户：[$auth_user] 的密码修改失败，请联系管理员.&#8221;;</p>
<p>}</p>
<p>?&gt;</p>
<p>&lt;script language=&#8221;javaScript&#8221;&gt;&lt;!&#8211;</p>
<p>alert(&#8220;&lt;?=$msg?&gt;&#8221;);</p>
<p>window.location.href=&#8221;&lt;?=$_SERVER["PHP_SELF"]?&gt;&#8221;</p>
<p>// &#8211;&gt;&lt;/script&gt;}</p>
<p>&lt;?</p>
<p>}</p>
<p>?&gt;</p>
<p>&lt;/div&gt;</p>
<p>&lt;/body&gt;</p>
<p>&lt;/html&gt;&#8217; | tee ${basepath}/www/index.php  &gt;/dev/null &amp;&amp; echo &#8220;密码修改页面创建成功！&#8221;</p>
<p>}</p>
<p>fi</p>
<p>chown -R ${username}:subversion ${basepath}/repository  &gt;/dev/null</p>
<p>chmod -R g+rws ${basepath}/repository &gt;/dev/null</p>
<p>fwnum=`ufw status | grep 80 | cat | wc -l`</p>
<p>if [ $fwnum -eq 0 ]</p>
<p>then</p>
<p>ufw allow 80/tcp &gt;/dev/null &amp;&amp; echo &#8220;Add Firewall Rule is success !&#8221;</p>
<p>fi</p>
<p>/etc/init.d/apache2 restart &amp;&gt;/dev/null</p>
<p>}</p>
<p>fi</p>
<p>2、添加新用户：htpasswd -b /home/svn/conf/passwd 用户名 密码</p>
<p>3、修改权限：编辑/home/svn/conf/authz/项目授权文件</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.tianbaoyong.com/defaultcat/ubuntu-system-to-create-a-svn-warehouse-script.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>安装和卸载Windows服务</title>
		<link>http://blog.tianbaoyong.com/defaultcat/install-and-uninstall-windows-service.html</link>
		<comments>http://blog.tianbaoyong.com/defaultcat/install-and-uninstall-windows-service.html#comments</comments>
		<pubDate>Fri, 01 Jul 2011 05:56:53 +0000</pubDate>
		<dc:creator>tian5258</dc:creator>
				<category><![CDATA[默认日志]]></category>

		<guid isPermaLink="false">http://blog.tianbaoyong.com/defaultcat/install-and-uninstall-windows-service.html</guid>
		<description><![CDATA[在windows下安装了nginx, 郁闷是发现它没有以服务方式运行, 也就是说当用户注销后,程序 会终止.因此需要将nginx作为服务运行. 假设nginx安装在c:\nginx\下: 1.下载微软服务注册工具srvany.exe, instsrv.exe, 存放到c:\nginx\目录下 http://eastedu.bl-changjiang.com/UploadFiles/2006-5/511179043.rar 2.安装NGINX服务, 将命令行切换到c:\nginx\,执行下列命令 instsrv NGINX c:\nginx\srvany.exe 复制代码 3.在c:\nginx\下,编辑一个nginx.reg文件 Windows Registry Editor Version 5.00 [HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\NGINX\Parameters] &#34;Application&#34;=&#34;C:\\nginx\\nginx.exe&#34; &#34;AppParameters&#34;=&#34;&#34; &#34;AppDirectory&#34;=&#34;C:\\nginx\\&#34; 复制代码 5.让服务与程序关联起来, 命令行执行 regedit /s nginx.reg 复制代码 6.编辑启动nginx脚本start-nginx.bat(关闭脚本不用变), 让程序以服务方式运行 @ECHO OFF net stop nginx net start nginx EXIT 复制代码]]></description>
			<content:encoded><![CDATA[<p>在windows下安装了nginx, 郁闷是发现它没有以服务方式运行, 也就是说当用户注销后,程序   <br />会终止.因此需要将nginx作为服务运行.</p>
<p>  <span id="more-648"></span>
<p>假设nginx安装在c:\nginx\下:</p>
<p>1.下载微软服务注册工具srvany.exe, instsrv.exe, 存放到c:\nginx\目录下   <br /><a href="http://eastedu.bl-changjiang.com/UploadFiles/2006-5/511179043.rar">http://eastedu.bl-changjiang.com/UploadFiles/2006-5/511179043.rar</a></p>
<p>2.安装NGINX服务, 将命令行切换到c:\nginx\,执行下列命令   <br />instsrv NGINX c:\nginx\srvany.exe    <br />复制代码</p>
<p>3.在c:\nginx\下,编辑一个nginx.reg文件   <br />Windows Registry Editor Version 5.00</p>
<p>[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\NGINX\Parameters]</p>
<p>&quot;Application&quot;=&quot;C:\\nginx\\nginx.exe&quot;</p>
<p>&quot;AppParameters&quot;=&quot;&quot;</p>
<p>&quot;AppDirectory&quot;=&quot;C:\\nginx\\&quot;   <br />复制代码</p>
<p>5.让服务与程序关联起来, 命令行执行   <br />regedit /s nginx.reg    <br />复制代码</p>
<p>6.编辑启动nginx脚本start-nginx.bat(关闭脚本不用变), 让程序以服务方式运行   <br />@ECHO OFF</p>
<p>net stop nginx</p>
<p>net start nginx</p>
<p>EXIT   <br />复制代码</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.tianbaoyong.com/defaultcat/install-and-uninstall-windows-service.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Ubuntu+apache+svn配置备忘</title>
		<link>http://blog.tianbaoyong.com/ittechposts/ubuntu-apache-svn-configuration-notes.html</link>
		<comments>http://blog.tianbaoyong.com/ittechposts/ubuntu-apache-svn-configuration-notes.html#comments</comments>
		<pubDate>Fri, 01 Jul 2011 05:33:21 +0000</pubDate>
		<dc:creator>tian5258</dc:creator>
				<category><![CDATA[思考总结]]></category>
		<category><![CDATA[apache]]></category>
		<category><![CDATA[svn]]></category>

		<guid isPermaLink="false">http://blog.tianbaoyong.com/ittechposts/ubuntu-apache-svn-configuration-notes.html</guid>
		<description><![CDATA[此配置按照ubuntu登录用户为administrator，项目名为hwjn配置，如需配置其他项目，修改替换即可。userName = administrator projectName = hwjn sudo apt-get install subversion sudo apt-get install libapache2-svn sudo addgroup subversion sudo usermod -G subversion -a www-data sudo usermod -G subversion -a administrator sudo mkdir /home/svn cd /home/svn sudo svnadmin create hwjn sudo chown -R administrator:subversion hwjn sudo chmod -R g+rws hwjn echo '&#60;Location /svn/hwjn&#62; DAV svn SVNPath /home/svn/hwjn [...]]]></description>
			<content:encoded><![CDATA[<p>此配置按照ubuntu登录用户为administrator，项目名为hwjn配置，如需配置其他项目，修改替换即可。userName = administrator     <br />projectName = hwjn</p>
<p>  <span id="more-647"></span>
<pre class="csharpcode">sudo apt-get install subversion
sudo apt-get install lib<span class='wp_keywordlink_affiliate'><a href="http://blog.tianbaoyong.com/tag/apache" title="查看 apache 的全部文章" target="_blank">apache</a></span>2-<span class='wp_keywordlink_affiliate'><a href="http://blog.tianbaoyong.com/tag/svn" title="查看 svn 的全部文章" target="_blank">svn</a></span>

sudo addgroup subversion
sudo usermod -G subversion -a www-data
sudo usermod -G subversion -a administrator

sudo mkdir /home/<span class='wp_keywordlink_affiliate'><a href="http://blog.tianbaoyong.com/tag/svn" title="查看 svn 的全部文章" target="_blank">svn</a></span>
cd /home/svn
sudo svnadmin create hwjn
sudo chown -R administrator:subversion hwjn
sudo chmod -R g+rws hwjn

echo <span class="str">'&lt;Location /svn/hwjn&gt;
DAV svn
SVNPath /home/svn/hwjn
AuthType Basic
AuthName &quot;pro1 Subversion Repository&quot;
AuthUserFile /home/svn/hwjn/conf/passwd
AuthzSVNAccessFile /home/svn/hwjn/conf/authz
Require valid-user
&lt;/Location&gt;'</span> | sudo tee -a /etc/<span class='wp_keywordlink_affiliate'><a href="http://blog.tianbaoyong.com/tag/apache" title="查看 apache 的全部文章" target="_blank">apache</a></span>2/<span class='wp_keywordlink_affiliate'><a href="http://blog.tianbaoyong.com/tag/apache" title="查看 apache 的全部文章" target="_blank">apache</a></span>2.conf

htpasswd -cb /home/svn/hwjn/conf/passwd super super
htpasswd -b /home/svn/hwjn/conf/passwd admin admin

echo <span class="str">&quot;[/]
super = rw
admin = rw&quot;</span> | tee -a /home/svn/hwjn/conf/authz

操作需要重启apache：
sudo service apache2 restart
sudo chmod -R g+rws hwjn

创建目录结构：sh -c | cat list.txt

svn import -m <span class="str">&quot; &quot;</span> /home/administrator/pro file:///home/svn/hwjn

在线修改密码：
sudo mkdir -p /home/www/hwjn/

echo <span class="str">'
Alias /hwjn/ &quot;/home/www/hwjn/&quot;
&lt;Directory &quot;/home/www/hwjn/&quot;&gt;
    AuthType Basic
    AuthName &quot;svntools repository&quot;
    AuthUserFile /home/svn/hwjn/conf/passwd
    Require valid-user
&lt;/Directory&gt;
'</span> | tee -a /etc/apache2/apache2.conf

sudo chown -R administrator:subversion /home/svn/hwjn
sudo chmod -R g+rws /home/svn/hwjn

操作需要重启apache：
sudo service apache2 restart

echo <span class="str">'
&lt;?
$auth_user = $_SERVER[&quot;PHP_AUTH_USER&quot;];
$auth_pass = $_SERVER[&quot;PHP_AUTH_PW&quot;];
?&gt;
&lt;html&gt;
&lt;head&gt;
&lt;title&gt;Change SVN Password&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;
&lt;?
if ($_REQUEST[&quot;action&quot;] != &quot;modify&quot;) {
?&gt;
&lt;script language = &quot;javaScript&quot;&gt;&lt;!--
function check_and_submit(myform) {
    var oldpass = myform.oldpass.value;
    var newpass = myform.newpass.value;
    var repeatpass = myform.repeatpass.value;
    if (oldpass == &quot;&quot;) {
        alert(&quot;Old password is empty!&quot;);
        myform.oldpass.focus();
    }
    else if (newpass == &quot;&quot;) {
        alert(&quot;New password is empty!&quot;);
        myform.newpass.focus();
    }
    else if (repeatpass == &quot;&quot; || repeatpass != newpass) {
        alert(&quot;Repeat password is empty or not same as new password!&quot;);
        myform.repeatpass.focus();
    }
    else
        myform.submit();
}
// --&gt;&lt;/script&gt;
&lt;form method=&quot;post&quot;&gt;
&lt;input type=&quot;hidden&quot; name=&quot;action&quot; value=&quot;modify&quot;/&gt;
&lt;table&gt;
&lt;tr&gt;
&lt;td&gt;User Name&lt;/td&gt;
&lt;td align=&quot;left&quot;&gt;&lt;?=$auth_user?&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Old Password&lt;/td&gt;
&lt;td&gt;&lt;input type=&quot;password&quot; size=20 name=oldpass&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;New Password&lt;/td&gt;
&lt;td&gt;&lt;input type=&quot;password&quot; size=20 name=newpass&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Repeat Password&lt;/td&gt;
&lt;td&gt;&lt;input type=&quot;password&quot; size=20 name=repeatpass&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td colspan=2&gt;
&lt;input type=&quot;button&quot; value=&quot;Change&quot; onclick=&quot;check_and_submit(this.form)&quot;&gt;
&lt;input type=&quot;reset&quot; value=&quot;Reset&quot;&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;/table&gt;
&lt;/form&gt;
&lt;?
} else {
$old_pass = $_REQUEST[&quot;oldpass&quot;];
$new_pass = $_REQUEST[&quot;newpass&quot;];
if ($old_pass != $auth_pass)
    $msg = &quot;Old password is wrong!&quot;;
else
{
    # change here
    $cmd = &quot;htpasswd -b /home/svn/hwjn/conf/passwd $auth_user $new_pass&quot;;
    system($cmd, $res);
    if ($res == 0)
        $msg = &quot;Change password for [$auth_user] succeed! Please login again.&quot;;
    else
        $msg = &quot;Change password for [$auth_user] failed! Please contact server administrator.&quot;;
}
?&gt;
&lt;script language=&quot;javaScript&quot;&gt;&lt;!--
alert(&quot;&lt;?=$msg?&gt;&quot;);
window.location.href=&quot;&lt;?=$_SERVER[&quot;PHP_SELF&quot;]?&gt;&quot;
// --&gt;&lt;/script&gt;}
&lt;?
}
?&gt;
&lt;/body&gt;
&lt;/html&gt;'</span> | tee -a /home/www/hwjn/index.php</pre>
<style type="text/css">
<p>.csharpcode, .csharpcode pre
{
	font-size: small;
	color: black;
	font-family: consolas, "Courier New", courier, monospace;
	background-color: #ffffff;
	/*white-space: pre;*/
}
.csharpcode pre { margin: 0em; }
.csharpcode .rem { color: #008000; }
.csharpcode .kwrd { color: #0000ff; }
.csharpcode .str { color: #006080; }
.csharpcode .op { color: #0000c0; }
.csharpcode .preproc { color: #cc6633; }
.csharpcode .asp { background-color: #ffff00; }
.csharpcode .html { color: #800000; }
.csharpcode .attr { color: #ff0000; }
.csharpcode .alt 
{
	background-color: #f4f4f4;
	width: 100%;
	margin: 0em;
}
.csharpcode .lnum { color: #606060; }</style>
]]></content:encoded>
			<wfw:commentRss>http://blog.tianbaoyong.com/ittechposts/ubuntu-apache-svn-configuration-notes.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Apache2.2和Tomcat 6.0.18的整合</title>
		<link>http://blog.tianbaoyong.com/systemconfig/apache2-2-and-the-integration-of-tomcat-6-0-18.html</link>
		<comments>http://blog.tianbaoyong.com/systemconfig/apache2-2-and-the-integration-of-tomcat-6-0-18.html#comments</comments>
		<pubDate>Wed, 08 Jun 2011 08:27:07 +0000</pubDate>
		<dc:creator>tian5258</dc:creator>
				<category><![CDATA[系统管理]]></category>
		<category><![CDATA[apache]]></category>
		<category><![CDATA[tomcat]]></category>
		<category><![CDATA[整合]]></category>

		<guid isPermaLink="false">http://blog.tianbaoyong.com/systemconfig/apache2-2-and-the-integration-of-tomcat-6-0-18.html</guid>
		<description><![CDATA[1、下载安装apache2.2和tomcat6 2、http://mirror.bjtu.edu.cn/apache/tomcat/tomcat-connectors/jk/binaries/win32/jk-1.2.31/下载mod_jk-1.2.31-httpd-2.2.3.so 3、将mod_jk-1.2.31-httpd-2.2.3.so文件拷贝到apache的modules目录，改名为mod_jk2.so 4、在apache的config文件中添加如下行： &#160;&#160;&#160; LoadModule jk_module modules/mod_jk2.so &#160;&#160;&#160; JkWorkersFile conf/workers.properties &#160;&#160;&#160; JkLogFile &#34;mod_jk2.log&#34; &#160;&#160;&#160; JkLogLevel info 5、配置虚拟主机：在配置文件的末尾添加 NameVirtualHost *:80 &#160;&#160;&#160; &#60;VirtualHost *:80&#62; &#160;&#160;&#160;&#160;&#160;&#160;&#160; DocumentRoot &#34;C:/Program Files/Apache Software Foundation/Tomcat 6.0/webapps/wapGPS&#34; &#160;&#160;&#160;&#160;&#160;&#160;&#160; DirectoryIndex index.html index.htm login.jsp &#160;&#160;&#160;&#160;&#160;&#160;&#160; ServerName www.unite.com &#160;&#160;&#160;&#160;&#160;&#160;&#160; ErrorLog &#34;logs/a.xingchetong.com-error.log&#34; &#160;&#160;&#160;&#160;&#160;&#160;&#160; CustomLog &#34;logs/a.xingchetong.com-access.log&#34; common &#160;&#160;&#160;&#160;&#160;&#160;&#160; &#60;Directory &#34;C:/Program Files/Apache Software Foundation/Tomcat 6.0/webapps/wapGPS&#34;&#62;&#160; &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; Options Indexes [...]]]></description>
			<content:encoded><![CDATA[<p>1、下载安装<span class='wp_keywordlink_affiliate'><a href="http://blog.tianbaoyong.com/tag/apache" title="查看 apache 的全部文章" target="_blank">apache</a></span>2.2和<span class='wp_keywordlink_affiliate'><a href="http://blog.tianbaoyong.com/tag/tomcat" title="查看 tomcat 的全部文章" target="_blank">tomcat</a></span>6    <br />2、<a href="http://mirror.bjtu.edu.cn/apache/tomcat/tomcat-connectors/jk/binaries/win32/jk-1.2.31/下载mod_jk-1.2.31-httpd-2.2.3.so">http://mirror.bjtu.edu.cn/apache/tomcat/tomcat-connectors/jk/binaries/win32/jk-1.2.31/下载mod_jk-1.2.31-httpd-2.2.3.so</a>    <br />3、将mod_jk-1.2.31-httpd-2.2.3.so文件拷贝到<span class='wp_keywordlink_affiliate'><a href="http://blog.tianbaoyong.com/tag/apache" title="查看 apache 的全部文章" target="_blank">apache</a></span>的modules目录，改名为mod_jk2.so    <br />4、在<span class='wp_keywordlink_affiliate'><a href="http://blog.tianbaoyong.com/tag/apache" title="查看 apache 的全部文章" target="_blank">apache</a></span>的config文件中添加如下行：    <br />&#160;&#160;&#160; LoadModule jk_module modules/mod_jk2.so    <br />&#160;&#160;&#160; JkWorkersFile conf/workers.properties    <br />&#160;&#160;&#160; JkLogFile &quot;mod_jk2.log&quot;    <br />&#160;&#160;&#160; JkLogLevel info</p>
<p>  <span id="more-646"></span>
<p>5、配置虚拟主机：在配置文件的末尾添加</p>
<p>NameVirtualHost *:80   <br />&#160;&#160;&#160; &lt;VirtualHost *:80&gt;    <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160; DocumentRoot &quot;C:/Program Files/Apache Software Foundation/Tomcat 6.0/webapps/wapGPS&quot;    <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160; DirectoryIndex index.html index.htm login.jsp    <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160; ServerName www.unite.com    <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160; ErrorLog &quot;logs/a.xingchetong.com-error.log&quot;    <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160; CustomLog &quot;logs/a.xingchetong.com-access.log&quot; common    <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160; &lt;Directory &quot;C:/Program Files/Apache Software Foundation/Tomcat 6.0/webapps/wapGPS&quot;&gt;&#160; <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; Options Indexes FollowSymLinks    <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; AllowOverride None    <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; Order allow,deny    <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; Allow from all    <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160; &lt;/Directory&gt;    <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160; JkMount&#160;&#160;&#160;&#160; &quot;/*Servlet*&quot;&#160;&#160;&#160;&#160; &quot;ajp13&quot;&#160; <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160; JkMount&#160;&#160;&#160;&#160; &quot;/*.jsp&quot;&#160;&#160;&#160;&#160; &quot;ajp13&quot;    <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160; JkMount&#160;&#160;&#160;&#160; &quot;/*.action&quot;&#160;&#160;&#160;&#160; &quot;ajp13&quot;    <br />&#160;&#160;&#160; &lt;/VirtualHost&gt;</p>
<p>6、配置<span class='wp_keywordlink_affiliate'><a href="http://blog.tianbaoyong.com/tag/tomcat" title="查看 tomcat 的全部文章" target="_blank">tomcat</a></span>的虚拟主机   <br />&lt;Host name=&quot;www.unite.com&quot;&#160; appBase=&quot;webapps&quot;     <br />&#160;&#160;&#160;&#160;&#160;&#160; unpackWARs=&quot;true&quot; autoDeploy=&quot;true&quot;    <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160; xmlValidation=&quot;false&quot; xmlNamespaceAware=&quot;false&quot;&gt;    <br />&lt;Context path=&quot;&quot; reloadable=&quot;true&quot; docBase=&quot;wapGPS&quot;/&gt;    <br />&lt;/Host&gt;&#160;&#160;&#160; <br />&#160;&#160;&#160; &lt;/Host&gt;&#160;&#160;&#160; <br />7、在apache的conf目录下创建文件：workers.properties    <br />内容如下：    <br />workers.tomcat_home=&quot;C:/Program Files/Apache Software Foundation/Tomcat 6.0&quot;     <br />&#160;&#160;&#160; workers.java_home=&quot;C:/Program Files/Java/jdk1.6.0_06/jre&quot;    <br />&#160;&#160;&#160; ps=\    <br />&#160;&#160;&#160; worker.list=ajp13     <br />&#160;&#160;&#160; worker.ajp13.port=8009     <br />&#160;&#160;&#160; worker.ajp13.host=localhost    <br />&#160;&#160;&#160; worker.ajp13.type=ajp13     <br />&#160;&#160;&#160; worker.ajp13.lbfactor=1     </p>
]]></content:encoded>
			<wfw:commentRss>http://blog.tianbaoyong.com/systemconfig/apache2-2-and-the-integration-of-tomcat-6-0-18.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Cacti配置监控Apache服务</title>
		<link>http://blog.tianbaoyong.com/systemconfig/cacti-apache-configuration-monitoring-service.html</link>
		<comments>http://blog.tianbaoyong.com/systemconfig/cacti-apache-configuration-monitoring-service.html#comments</comments>
		<pubDate>Tue, 12 Apr 2011 02:29:05 +0000</pubDate>
		<dc:creator>tian5258</dc:creator>
				<category><![CDATA[系统管理]]></category>
		<category><![CDATA[cacti apache]]></category>

		<guid isPermaLink="false">http://blog.tianbaoyong.com/systemconfig/cacti-apache-configuration-monitoring-service.html</guid>
		<description><![CDATA[我们平时使用apache常常了解他的性能只能使用ps aux&#124;grep httpd&#124;wc -l查看有多少个进程,但处理了多少http的请求我们不清楚,进程是不是在工作,还是在等都不是很明白,要了解apache的性能,我们需要使用Apache Server Status的模块来详细了解apache工作的怎么样. 下载用于监控apache的php脚本和模板：点击下载 在上面的地址下载一个叫 ApacheStats08.zip的,中间有二个文件，一个处理脚本php的，另一个是xml的文件。其中的ss_apache_stats.php是脚本文件，它是一个php的文件，放到你的cacti/scripts/下面。接下来在cacti界面导入cacti_host_template_webserver_-_apache.xml这个文件。 配置apache，添加虚拟主机，如果不希望被外部用户访问，可以监听内部地址或127.0.0.1（这个只是在自己的机器上监控自己）。 Listen 127.0.0.1:80 载入模块： LoadModule status_module modules/mod_status.so 打开配置 ExtendedStatus On 建立虚拟主机（127.0.0.1，其他主机自己设定即可） &#60;VirtualHost 127.0.0.1:80&#62; &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; &#60;location /server-status&#62; &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; SetHandler server-status &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; Order Deny,Allow &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; Deny from all &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; Allow from 127.0.0.1 &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; &#60;/location&#62; &#160;&#160;&#160;&#160;&#160;&#160; &#60;/VirtualHost&#62; 重启apache服务 测试：http://127.0.0.1/server-status/ 如果出现如下类似结果说明配置成功，在cacti中添加主机或图形即可。]]></description>
			<content:encoded><![CDATA[<p>我们平时使用apache常常了解他的性能只能使用ps aux|grep httpd|wc -l查看有多少个进程,但处理了多少http的请求我们不清楚,进程是不是在工作,还是在等都不是很明白,要了解apache的性能,我们需要使用Apache Server Status的模块来详细了解apache工作的怎么样.</p>
<p>  <span id="more-645"></span>
<p>下载用于监控apache的php脚本和模板：<a href="http://forums.cacti.net/about25227.html&amp;highlight=apachestats">点击下载</a></p>
<p>在上面的地址下载一个叫 ApacheStats08.zip的,中间有二个文件，一个处理脚本php的，另一个是xml的文件。其中的ss_apache_stats.php是脚本文件，它是一个php的文件，放到你的cacti/scripts/下面。接下来在cacti界面导入cacti_host_template_webserver_-_apache.xml这个文件。</p>
<p>配置apache，添加虚拟主机，如果不希望被外部用户访问，可以监听内部地址或127.0.0.1（这个只是在自己的机器上监控自己）。</p>
<p>Listen 127.0.0.1:80</p>
<p>载入模块：</p>
<p>LoadModule status_module modules/mod_status.so</p>
<p>打开配置</p>
<p>ExtendedStatus On</p>
<p>建立虚拟主机（127.0.0.1，其他主机自己设定即可）</p>
<p>&lt;VirtualHost 127.0.0.1:80&gt;   <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; &lt;location /server-status&gt;    <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; SetHandler server-status     <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; Order Deny,Allow    <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; Deny from all    <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; Allow from 127.0.0.1    <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; &lt;/location&gt;    <br />&#160;&#160;&#160;&#160;&#160;&#160; &lt;/VirtualHost&gt;</p>
<p>重启apache服务</p>
<p>测试：<a href="http://127.0.0.1/server-status/">http://127.0.0.1/server-status/</a></p>
<p>如果出现如下类似结果说明配置成功，在cacti中添加主机或图形即可。</p>
<p><a href="http://blog.tianbaoyong.com/wp-content/uploads/2011/04/image.png"><img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://blog.tianbaoyong.com/wp-content/uploads/2011/04/image_thumb.png" width="484" height="268" /></a></p>
]]></content:encoded>
			<wfw:commentRss>http://blog.tianbaoyong.com/systemconfig/cacti-apache-configuration-monitoring-service.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Mediawiki和Cacti从Windows迁移到Linux的注意事项</title>
		<link>http://blog.tianbaoyong.com/systemconfig/cacti-mediawiki-and-migrate-to-linux-from-windows-notes.html</link>
		<comments>http://blog.tianbaoyong.com/systemconfig/cacti-mediawiki-and-migrate-to-linux-from-windows-notes.html#comments</comments>
		<pubDate>Fri, 08 Apr 2011 08:43:07 +0000</pubDate>
		<dc:creator>tian5258</dc:creator>
				<category><![CDATA[系统管理]]></category>

		<guid isPermaLink="false">http://blog.tianbaoyong.com/systemconfig/cacti-mediawiki-and-migrate-to-linux-from-windows-notes.html</guid>
		<description><![CDATA[Mediawiki的迁移非常简单，Linux平台和Windows平台没有什么区别，主要注意大小写和数据库配置即可。 Cacti的迁移就需要注意，配置路径要确认好。安装各种支持包时，需要加入新的源，具体步骤参考http://wiki.centos.org/AdditionalResources/Repositories/RPMForge#head-5aabf02717d5b6b12d47edbc5811404998926a1b即可。结合前面的博文http://blog.tianbaoyong.com/defaultcat/cacti-nagios-ntop-detailed-steps-to-install.html就可以了。]]></description>
			<content:encoded><![CDATA[<p>Mediawiki的迁移非常简单，Linux平台和Windows平台没有什么区别，主要注意大小写和数据库配置即可。</p>
<p>Cacti的迁移就需要注意，配置路径要确认好。安装各种支持包时，需要加入新的源，具体步骤参考<a title="http://wiki.centos.org/AdditionalResources/Repositories/RPMForge#head-5aabf02717d5b6b12d47edbc5811404998926a1b" href="http://wiki.centos.org/AdditionalResources/Repositories/RPMForge#head-5aabf02717d5b6b12d47edbc5811404998926a1b">http://wiki.centos.org/AdditionalResources/Repositories/RPMForge#head-5aabf02717d5b6b12d47edbc5811404998926a1b</a>即可。结合前面的博文<a title="http://blog.tianbaoyong.com/defaultcat/cacti-nagios-ntop-detailed-steps-to-install.html" href="http://blog.tianbaoyong.com/defaultcat/cacti-nagios-ntop-detailed-steps-to-install.html">http://blog.tianbaoyong.com/defaultcat/cacti-nagios-ntop-detailed-steps-to-install.html</a>就可以了。</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.tianbaoyong.com/systemconfig/cacti-mediawiki-and-migrate-to-linux-from-windows-notes.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>CentOS配置SNMPV3进行安全的监控</title>
		<link>http://blog.tianbaoyong.com/systemconfig/centos-safety-monitoring-configuration-snmpv3.html</link>
		<comments>http://blog.tianbaoyong.com/systemconfig/centos-safety-monitoring-configuration-snmpv3.html#comments</comments>
		<pubDate>Wed, 23 Mar 2011 14:54:47 +0000</pubDate>
		<dc:creator>tian5258</dc:creator>
				<category><![CDATA[系统管理]]></category>
		<category><![CDATA[snmp v3]]></category>

		<guid isPermaLink="false">http://blog.tianbaoyong.com/systemconfig/centos-safety-monitoring-configuration-snmpv3.html</guid>
		<description><![CDATA[前提条件： 安装net-snmp net-snmp-utils net-snmp-devel 具体步骤： 1. 停止snmpd服务 service snmpd stop 2. 执行如下命令，按照提示输入用户名和密码，并确认密码 net-snmp-config &#8211;create-snmpv3-user 3. 启动snmpd服务 service snmpd start 4. 利用下面的命令测试。 snmpget -v 3 -u username -l authNoPriv -A &#34;password&#34; -X &#34;password&#34; 60.216.52.53 sysUpTime.0]]></description>
			<content:encoded><![CDATA[<p>前提条件：    <br />安装net-snmp net-snmp-utils net-snmp-devel    </p>
<p>具体步骤：    <br />1. 停止snmpd服务    <br />service snmpd stop    <br />2. 执行如下命令，按照提示输入用户名和密码，并确认密码     <br />net-snmp-config &#8211;create-snmpv3-user    <br />3. 启动snmpd服务    <br />service snmpd start    <br />4. 利用下面的命令测试。    <br />snmpget -v 3 -u username -l authNoPriv -A &quot;<span style="color: #8b0000">password</span>&quot; -X &quot;<span style="color: #8b0000">password</span>&quot; 60.216.52.53 sysUpTime.0</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.tianbaoyong.com/systemconfig/centos-safety-monitoring-configuration-snmpv3.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Oracle 11g R2 Linux X64 安装备忘</title>
		<link>http://blog.tianbaoyong.com/databsse/oracle-11g-r2-linux-x64-installation-notes.html</link>
		<comments>http://blog.tianbaoyong.com/databsse/oracle-11g-r2-linux-x64-installation-notes.html#comments</comments>
		<pubDate>Thu, 17 Mar 2011 09:03:03 +0000</pubDate>
		<dc:creator>tian5258</dc:creator>
				<category><![CDATA[数据库]]></category>

		<guid isPermaLink="false">http://blog.tianbaoyong.com/databsse/oracle-11g-r2-linux-x64-installation-notes.html</guid>
		<description><![CDATA[#######################环境设置########################### 1、安装相关包 yum install \ gcc make binutils openmotif setarch libaio gcc&#160; glibc \ glibc-common glibc-headers glibc-devel \ compat-db compat-gcc-34&#160; compat-gcc-34-c++ compat-glibc \ compat-glibc-headers compat-libgcc-296 compat-libstdc++-33 \ compat-libstdc++-296 avahi-compat-libdns_sd \ java-1.4.2-gcj-compat-devel java-1.4.2-gcj-compat \ java-1.4.2-gcj-compat-src java-1.4.2-gcj-compat-javadoc \ java-1.4.2-gcj-compat-devel libaio-devel unixODBC \ unixODBC-devel pdksh perftest sysstat&#160; 2、修改内核参数 vi /etc/sysctl.conf , 在行末添加以下内容，在CentOs5.5上会看到 kernel.shmmax = 4294967295 kernel.shmall = 268435456 [...]]]></description>
			<content:encoded><![CDATA[<p>#######################环境设置###########################   <br />1、安装相关包    <br />yum install \    <br />gcc make binutils openmotif setarch libaio gcc&#160; glibc \    <br />glibc-common glibc-headers glibc-devel \    <br />compat-db compat-gcc-34&#160; compat-gcc-34-c++ compat-glibc \    <br />compat-glibc-headers compat-libgcc-296 compat-libstdc++-33 \    <br />compat-libstdc++-296 avahi-compat-libdns_sd \    <br />java-1.4.2-gcj-compat-devel java-1.4.2-gcj-compat \    <br />java-1.4.2-gcj-compat-src java-1.4.2-gcj-compat-javadoc \    <br />java-1.4.2-gcj-compat-devel libaio-devel unixODBC \    <br />unixODBC-devel pdksh perftest sysstat&#160; </p>
<p>  <span id="more-637"></span>
<p>2、修改内核参数 vi /etc/sysctl.conf , 在行末添加以下内容，在CentOs5.5上会看到   <br />kernel.shmmax = 4294967295    <br />kernel.shmall = 268435456    <br />这些参数已经存在并且默认启用了，    <br />需要将原kernel.shmmax与kernel.shmall参数注释掉。并在文件末尾添加以下内容：    <br />echo &quot;    <br />#use for oracle11g    <br />fs.file-max = 6815744    <br />fs.aio-max-nr = 1048576    <br />kernel.shmall = 2097152    <br />kernel.shmmax = 2147483648    <br />kernel.shmmni = 4096    <br />kernel.sem = 250 32000 100 128    <br />net.ipv4.ip_local_port_range = 9000 65500    <br />net.core.rmem_default = 4194304    <br />net.core.rmem_max = 4194304    <br />net.core.wmem_default = 262144    <br />net.core.wmem_max = 1048576 &quot; &gt;&gt; /etc/sysctl.conf</p>
<p>3.    <br />echo &quot;#use for oracle11g    <br />oracle soft nproc 2047    <br />oracle hard nproc 16384    <br />oracle soft nofile 1024    <br />oracle hard nofile 65536 &quot; &gt;&gt; /etc/security/limits.conf </p>
<p>&#160;</p>
<p>5.vi /etc/selinux/config 确保以下内容   <br />SELINUX=disabled    <br />关闭SELIINUX</p>
<p>6.   <br />echo &quot;     <br />if [ $USER = &quot;oracle&quot; ]; then    <br />if [ $SHELL = &quot;/bin/ksh&quot; ]; then    <br />ulimit -p 16384    <br />ulimit -n 65536    <br />else    <br />ulimit -u 16384 -n 65536    <br />fi    <br />fi&quot; &gt;&gt; /etc/profile</p>
<p>7.因为默认centos5.5不支持11.2,0.1,修改配置文件，使CentOs5.5 支持Oracle10g .    <br />vi /etc/redhat-release</p>
<p>echo &quot;#CentOS release 5.5 (Final)   <br />redhat-4 &quot; &gt; /etc/redhat-release</p>
<p>#############################安装过程################################   <br />1.用户    <br />groupadd oinstall     <br />groupadd dba    <br />groupadd oper    <br />useradd -m -g oinstall -G dba oracle    <br />passwd oracle</p>
<p>2、创建安装目录   <br />mkdir /oracle    <br />chown -R oracle:oinstall /oracle    <br />chmod -R 775 /oracle</p>
<p>3、将Oracle原始安装包文件放在/oracle目录下，再运行解压命令。   <br />[root@oracleserver-x64 oracle]#&#160; unzip&#160; linux.x64_11gr2_database_1of2.zip    <br />[root@oracleserver-x64 oracle]#&#160; unzip&#160; linux.x64_11gr2_database_2of2.zip&#160; </p>
<p>3.修改 Oracle 用户 .bash_profile   <br /># su &#8211; oracle    <br />$ vi ./.bash_profile&#160;&#160; (或 # vi /home/oracle/.bash_profile)    <br />在文件最后添加如下内容</p>
<p>echo &quot;umask 022   <br />export ORACLE_BASE=/oracle    <br />export ORACLE_HOME=$ORACLE_BASE/11g    <br />export ORACLE_SID=ora     <br />export PATH=$PATH:$HOME/bin:$ORACLE_HOME/bin    <br />export LD_LIBRARY_PATH=$ORACLE_HOME/lib:/lib:/usr/lib    <br />export LANG=C&quot; &gt;&gt; .bash_profile</p>
<p>//数据库实例的SID，此处为boson，在图形界面安装过程中要求输入SID与这里保持相同   <br />======================================================================================================================    <br />4.以root身份打开另一个终端窗口，&#8211;这步至关重要，不执行这步在以oracle用户运行 # ./runInstaller时会启动不了图型安装界面。    <br />[root@oracleserver-x64 ~]# xhost +    <br />access control disabled, clients can connect from any host    <br />[root@oracleserver-x64 ~]# xhost + localhost    <br />localhost being added to access control list    <br />[root@oracleserver-x64 ~]# su &#8211; oracle    <br />-bash: ulimit: max user processes: cannot modify limit: Operation not permitted    <br />[oracle@oracleserver-x64 ~]$ cd /oracle/database/    <br />[oracle@oracleserver-x64 database]$ ./runInstaller     <br />[oracle@oracleserver-x64 database]$ ./runInstaller     <br />Starting Oracle Universal Installer&#8230;</p>
<p>Checking Temp space: must be greater than 120 MB.&#160;&#160; Actual 43647 MB&#160;&#160;&#160; Passed   <br />Checking swap space: must be greater than 150 MB.&#160;&#160; Actual 4000 MB&#160;&#160;&#160; Passed    <br />Checking monitor: must be configured to display at least 256 colors.&#160;&#160;&#160; Actual 16777216&#160;&#160;&#160; Passed    <br />Preparing to launch Oracle Universal Installer from /tmp/OraInstall2010-12-03_10-26-58AM. Please wait &#8230;</p>
<p>将Oracle 11g R2加入到开机自启动</p>
<p>1. 修改dbstart与dbshut脚本：(修改后的文件内容在下面)   <br /># vi $ORACLE_HOME/bin/dbstart    <br />#ORACLE_HOME_LISTNER=$1    <br />ORACLE_HOME_LISTNER=$ORACLE_HOME    <br />#&#160; vi $ORACLE_HOME/bin/dbshut    <br />#ORACLE_HOME_LISTNER=$1    <br />ORACLE_HOME_LISTNER=$ORACLE_HOME</p>
<p>2. 修改/etc/oratab为如下格式：   <br /># vi /etc/oratab    <br />boson:/oracle/10g:N    <br />将N都改写成Y即可。</p>
<p>3. 编辑启动脚本，以实现开机自启动（修改后的源文件在下面）   <br /># vi /etc/rc.d/init.d/oracle    <br />下载脚本文件，不要在windows下编辑它，直接放到 /etc/rc.d/init.d/下即可。    <br />下载地址：<a href="http://u.sohu.com/download/2/12913809769017100547076">http://u.sohu.com/download/2/12913809769017100547076</a></p>
<p>4、修改所属组和用户   <br /># chown root.root oracle </p>
<p>5、修改访问权限   <br /># chmod 775 /etc/rc.d/init.d/oracle</p>
<p>6、添加服务到自动启动中   <br /># chkconfig –add oracle    <br /># chkconfig oracle on</p>
<p>7、执行命令，看是否可以启动成功   <br />[root@oracleserver init.d]# service oracle start</p>
<p>8、查看日志文件   <br /># tail -f /var/log/oracle</p>
<p>9、查看本地服务端口，看oracle是否有启动。   <br /># nmap -sT localhost</p>
<p>&#160;</p>
<p>#####################################/etc/rc.d/init.d/oracle的文件内容############################：</p>
<p>#!/bin/bash   <br />#    <br /># Copyright (C) 1998-2008 Oracle, Inc.&#160; All Rights Reserved.    <br />#    <br /># This script manages the services needed to run oracle&#160; software    <br /># Basic support for IRIX style chkconfig    <br /># chkconfig: 2345 99 01    <br /># description: ORACLE 10g Server</p>
<p>ORACLE_HOME=/oracle/11g   <br />ORACLE_BASE=/oracle    <br />ORACLE_SID=ora    <br />ORACLE_UNQNAME=ora    <br />PATH=$PATH:$ORACLE_HOME/bin    <br />LD_LIBRARY_PATH=$ORACLE_HOME/lib:/usr/lib    <br />LANG=C    <br />export ORACLE_BASE ORACLE_HOME ORACLE_SID ORACLE_UNQNAME PATH LD_LIBRARY_PATH LANG</p>
<p>if [ ! -f $ORACLE_HOME/bin/dbstart ]   <br />then    <br />echo &quot;ORACLE cannot start&quot;    <br />exit    <br />fi    <br />case &quot;$1&quot; in    <br />&#8216;start&#8217;)    <br />echo &quot;Starting Oracle Database&#8230;&quot;    <br />echo &quot;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-&quot; &gt;&gt; /var/log/oracle    <br />date +&quot; %T %a %D : Starting Oracle Databasee as part of system up.&quot; &gt;&gt; /var/log/oracle    <br />echo &quot;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-&quot; &gt;&gt; /var/log/oracle    <br />su &#8211; oracle -c &quot;$ORACLE_HOME/bin/dbstart&quot; &gt;&gt; /var/log/oracle    <br />echo &quot;Done.&quot;    <br />echo &quot;Starting Oracle EM Control &#8230; &quot;    <br />echo &quot;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-&quot; &gt;&gt; /var/log/oracle    <br />date +&quot; %T %a %D : Starting Oracle EM Control as part of system up.&quot; &gt;&gt; /var/log/oracle    <br />echo &quot;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-&quot; &gt;&gt; /var/log/oracle    <br />su &#8211; oracle -c &quot;$ORACLE_HOME/bin/emctl start dbconsole&quot; &gt;&gt; /var/log/oracle    <br />echo &quot;Done.&quot;    <br />echo &quot;&quot;    <br />echo &quot;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-&quot; &gt;&gt; /var/log/oracle    <br />date +&quot; %T %a %D : Finished.&quot; &gt;&gt; /var/log/oracle    <br />echo &quot;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-&quot; &gt;&gt; /var/log/oracle    <br />;;    <br />&#8216;stop&#8217;)    <br />echo &quot;Stoping Oracle Database&quot;    <br />su &#8211; oracle -c &quot;$ORACLE_HOME/bin/emctl stop dbconsole&quot; &gt;&gt; /var/log/oracle    <br />echo &quot;Stoping Oracle EM Control &#8230; &quot;    <br />echo &quot;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-&quot; &gt;&gt; /var/log/oracle    <br />date +&quot; %T %a %D : Stoping Oracle EM Control as part of system down.&quot; &gt;&gt; /var/log/oracle    <br />echo &quot;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-&quot; &gt;&gt; /var/log/oracle    <br />su &#8211; oracle -c &quot;$ORACLE_HOME/bin/dbshut&quot; &gt;&gt; /var/log/oracle    <br />echo &quot;Done.&quot;    <br />echo &quot;&quot;    <br />echo &quot;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-&quot; &gt;&gt; /var/log/oracle    <br />date +&quot; %T %a %D : Finished.&quot; &gt;&gt; /var/log/oracle    <br />echo &quot;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-&quot; &gt;&gt; /var/log/oracle    <br />;;    <br />restart)    <br />$0 stop    <br />$0 start    <br />;;    <br />*)    <br />echo &quot;Usage: oracle {start|stop|restart}&quot;    <br />exit 1    <br />esac</p>
<p>&#160;</p>
<p>##########################################dbstart内容##########################################</p>
<p>#!/bin/sh   <br />#    <br /># $Id: dbstart.sh 22-may-2008.05:05:45 arogers Exp $     <br /># Copyright (c) 1991, 2008, Oracle. All rights reserved.&#160; <br />#</p>
<p>###################################   <br />#     <br /># usage: dbstart $ORACLE_HOME    <br />#    <br /># This script is used to start ORACLE from /etc/rc(.local).    <br /># It should ONLY be executed as part of the system boot procedure.    <br />#    <br /># This script will start all databases listed in the oratab file    <br /># whose third field is a &quot;Y&quot;.&#160; If the third field is set to &quot;Y&quot; and    <br /># there is no ORACLE_SID for an entry (the first field is a *),    <br /># then this script will ignore that entry.    <br />#    <br /># This script requires that ASM ORACLE_SID&#8217;s start with a +, and     <br /># that non-ASM instance ORACLE_SID&#8217;s do not start with a +.    <br />#    <br /># If ASM instances are to be started with this script, it cannot    <br /># be used inside an rc*.d directory, and should be invoked from    <br /># rc.local only. Otherwise, the CSS service may not be available    <br /># yet, and this script will block init from completing the boot    <br /># cycle.    <br />#    <br /># If you want dbstart to auto-start a single-instance database that uses    <br /># an ASM server that is auto-started by CRS (this is the default behavior    <br /># for an ASM cluster), you must change the database&#8217;s ORATAB entry to use    <br /># a third field of &quot;W&quot; and the ASM&#8217;s ORATAB entry to use a third field of &quot;N&quot;.    <br /># These values specify that dbstart auto-starts the database only after    <br /># the ASM instance is up and running.    <br />#    <br /># Note:    <br /># Use ORACLE_TRACE=T for tracing this script.    <br />#    <br /># The progress log for each instance bringup plus Error and Warning message[s]    <br /># are logged in file $ORACLE_HOME/startup.log. The error messages related to     <br /># instance bringup are also logged to syslog (system log module).    <br /># The Listener log is located at $ORACLE_HOME_LISTNER/listener.log    <br />#     <br /># On all UNIX platforms except SOLARIS    <br /># ORATAB=/etc/oratab    <br />#    <br /># To configure, update ORATAB with Instances that need to be started up    <br />#&#160;&#160;&#160; Entries are of the form:    <br />#&#160;&#160;&#160; $ORACLE_SID:$ORACLE_HOME:&lt;N|Y|W&gt;:    <br />#&#160;&#160;&#160; An example entry:    <br />#&#160;&#160;&#160; main:/usr/lib/oracle/emagent_10g:Y    <br />#    <br /># Overall algorithm:    <br /># 1) Bring up all ASM instances with &#8216;Y&#8217; entry in status field in oratab entry    <br /># 2) Bring up all Database instances with &#8216;Y&#8217; entry in status field in    <br />#&#160;&#160;&#160; oratab entry    <br /># 3) If there are Database instances with &#8216;W&#8217; entry in status field    <br />#&#160;&#160;&#160; then    <br />#&#160;&#160;&#160;&#160;&#160; iterate over all ASM instances (irrespective of &#8216;Y&#8217; or &#8216;N&#8217;) AND    <br />#&#160;&#160;&#160;&#160;&#160; wait for all of them to be started    <br />#&#160;&#160;&#160; fi    <br /># 4) Bring up all Database instances with &#8216;W&#8217; entry in status field in    <br />#&#160;&#160;&#160; oratab entry    <br />#    <br />#####################################</p>
<p>LOGMSG=&quot;logger -puser.alert -s &quot;</p>
<p>trap &#8216;exit&#8217; 1 2 3</p>
<p># for script tracing   <br />case $ORACLE_TRACE in    <br />&#160; T) set -x ;;    <br />esac    <br />&#160;&#160;&#160; <br /># Set path if path not set (if called from /etc/rc)    <br />SAVE_PATH=/bin:/usr/bin:/etc:${PATH} ; export PATH    <br />SAVE_LLP=$LD_LIBRARY_PATH</p>
<p># First argument is used to bring up Oracle Net Listener   <br />#ORACLE_HOME_LISTNER=$1    <br />ORACLE_HOME_LISTNER=&#8217;/oracle/11g&#8217;    <br />if [ ! $ORACLE_HOME_LISTNER ] ; then    <br />&#160; echo &quot;ORACLE_HOME_LISTNER is not SET, unable to auto-start Oracle Net Listener&quot;    <br />&#160; echo &quot;Usage: $0 ORACLE_HOME&quot;    <br />else    <br />&#160; LOG=$ORACLE_HOME_LISTNER/listener.log</p>
<p>&#160; # Set the ORACLE_HOME for the Oracle Net Listener, it gets reset to   <br />&#160; # a different ORACLE_HOME for each entry in the oratab.    <br />&#160; export ORACLE_HOME=$ORACLE_HOME_LISTNER</p>
<p>&#160; # Start Oracle Net Listener   <br />&#160; if [ -x $ORACLE_HOME_LISTNER/bin/tnslsnr ] ; then    <br />&#160;&#160;&#160; echo &quot;$0: Starting Oracle Net Listener&quot; &gt;&gt; $LOG 2&gt;&amp;1    <br />&#160;&#160;&#160; $ORACLE_HOME_LISTNER/bin/lsnrctl start &gt;&gt; $LOG 2&gt;&amp;1 &amp;    <br />&#160;&#160;&#160; VER10LIST=`$ORACLE_HOME_LISTNER/bin/lsnrctl version | grep &quot;LSNRCTL for &quot; | cut -d&#8217; &#8216; -f5 | cut -d&#8217;.&#8217; -f1`    <br />&#160;&#160;&#160; export VER10LIST    <br />&#160; else    <br />&#160;&#160;&#160; echo &quot;Failed to auto-start Oracle Net Listener using $ORACLE_HOME_LISTNER/bin/tnslsnr&quot;    <br />&#160; fi    <br />fi</p>
<p># Set this in accordance with the platform   <br />ORATAB=/etc/oratab    <br />if [ ! $ORATAB ] ; then    <br />&#160; echo &quot;$ORATAB not found&quot;    <br />&#160; exit 1;    <br />fi</p>
<p># Checks Version Mismatch between Listener and Database Instance.   <br /># A version 10 listener is required for an Oracle Database 10g database.    <br /># Previous versions of the listener are not supported for use with an Oracle    <br /># Database 10g database. However, it is possible to use a version 10 listener    <br /># with previous versions of the Oracle database.    <br />checkversionmismatch() {    <br />&#160; if [ $VER10LIST ] ; then    <br />&#160;&#160;&#160; VER10INST=`sqlplus -V | grep &quot;Release &quot; | cut -d&#8217; &#8216; -f3 | cut -d&#8217;.&#8217; -f1`    <br />&#160;&#160;&#160; if [ $VER10LIST -lt $VER10INST ] ; then    <br />&#160;&#160;&#160;&#160;&#160; $LOGMSG &quot;Listener version $VER10LIST NOT supported with Database version $VER10INST&quot;    <br />&#160;&#160;&#160;&#160;&#160; $LOGMSG &quot;Restart Oracle Net Listener using an alternate ORACLE_HOME_LISTNER:&quot;    <br />&#160;&#160;&#160;&#160;&#160; $LOGMSG &quot;lsnrctl start&quot;    <br />&#160;&#160;&#160; fi    <br />&#160; fi    <br />}</p>
<p># Starts a Database Instance   <br />startinst() {    <br />&#160; # Called programs use same database ID    <br />&#160; export ORACLE_SID</p>
<p>&#160; # Put $ORACLE_HOME/bin into PATH and export.   <br />&#160; PATH=$ORACLE_HOME/bin:${SAVE_PATH} ; export PATH    <br />&#160; # add for bug # 652997    <br />&#160; LD_LIBRARY_PATH=${ORACLE_HOME}/lib:${SAVE_LLP} ; export LD_LIBRARY_PATH    <br />&#160; PFILE=${ORACLE_HOME}/dbs/init${ORACLE_SID}.ora    <br />&#160; SPFILE=${ORACLE_HOME}/dbs/spfile${ORACLE_SID}.ora    <br />&#160; SPFILE1=${ORACLE_HOME}/dbs/spfile.ora</p>
<p>&#160; echo &quot;&quot;   <br />&#160; echo &quot;$0: Starting up database \&quot;$ORACLE_SID\&quot;&quot;    <br />&#160; date    <br />&#160; echo &quot;&quot;</p>
<p>&#160; checkversionmismatch</p>
<p>&#160; # See if it is a V6 or V7 database   <br />&#160; VERSION=undef    <br />&#160; if [ -f $ORACLE_HOME/bin/sqldba ] ; then    <br />&#160;&#160;&#160; SQLDBA=sqldba    <br />&#160;&#160;&#160; VERSION=`$ORACLE_HOME/bin/sqldba command=exit | awk &#8216;    <br />&#160;&#160;&#160;&#160;&#160; /SQL\*DBA: (Release|Version)/ {split($3, V, &quot;.&quot;) ;    <br />&#160;&#160;&#160;&#160;&#160; print V[1]}&#8217;`    <br />&#160;&#160;&#160; case $VERSION in    <br />&#160;&#160;&#160;&#160;&#160; &quot;6&quot;) ;;    <br />&#160;&#160;&#160;&#160;&#160; *) VERSION=&quot;internal&quot; ;;    <br />&#160;&#160;&#160; esac    <br />&#160; else    <br />&#160;&#160;&#160; if [ -f $ORACLE_HOME/bin/svrmgrl ] ; then    <br />&#160;&#160;&#160;&#160;&#160; SQLDBA=svrmgrl    <br />&#160;&#160;&#160;&#160;&#160; VERSION=&quot;internal&quot;    <br />&#160;&#160;&#160; else    <br />&#160;&#160;&#160;&#160;&#160; SQLDBA=&quot;sqlplus /nolog&quot;    <br />&#160;&#160;&#160; fi    <br />&#160; fi</p>
<p>&#160; STATUS=1   <br />&#160; if [ -f $ORACLE_HOME/dbs/sgadef${ORACLE_SID}.dbf ] ; then    <br />&#160;&#160;&#160; STATUS=&quot;-1&quot;    <br />&#160; fi    <br />&#160; if [ -f $ORACLE_HOME/dbs/sgadef${ORACLE_SID}.ora ] ; then    <br />&#160;&#160;&#160; STATUS=&quot;-1&quot;    <br />&#160; fi    <br />&#160; pmon=`ps -ef | grep -w &quot;ora_pmon_$ORACLE_SID&quot;&#160; | grep -v grep`    <br />&#160; if [ &quot;$pmon&quot; != &quot;&quot; ] ; then    <br />&#160;&#160;&#160; STATUS=&quot;-1&quot;    <br />&#160;&#160;&#160; $LOGMSG &quot;Warning: ${INST} \&quot;${ORACLE_SID}\&quot; already started.&quot;    <br />&#160; fi</p>
<p>&#160; if [ $STATUS -eq -1 ] ; then   <br />&#160;&#160;&#160; $LOGMSG &quot;Warning: ${INST} \&quot;${ORACLE_SID}\&quot; possibly left running when system went down (system crash?).&quot;    <br />&#160;&#160;&#160; $LOGMSG &quot;Action: Notify Database Administrator.&quot;    <br />&#160;&#160;&#160; case $VERSION in    <br />&#160;&#160;&#160;&#160;&#160; &quot;6&quot;)&#160; sqldba &quot;command=shutdown abort&quot; ;;    <br />&#160;&#160;&#160;&#160;&#160; &quot;internal&quot;)&#160; $SQLDBA $args &lt;&lt;EOF    <br />connect internal    <br />shutdown abort    <br />EOF    <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160; ;;    <br />&#160;&#160;&#160;&#160;&#160; *)&#160; $SQLDBA $args &lt;&lt;EOF    <br />connect / as sysdba    <br />shutdown abort    <br />quit    <br />EOF    <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160; ;;    <br />&#160;&#160;&#160; esac</p>
<p>&#160;&#160;&#160; if [ $? -eq 0 ] ; then   <br />&#160;&#160;&#160;&#160;&#160; STATUS=1    <br />&#160;&#160;&#160; else    <br />&#160;&#160;&#160;&#160;&#160; $LOGMSG &quot;Error: ${INST} \&quot;${ORACLE_SID}\&quot; NOT started.&quot;    <br />&#160;&#160;&#160; fi    <br />&#160; fi</p>
<p>&#160; if [ $STATUS -eq 1 ] ; then   <br />&#160;&#160;&#160; if [ -e $SPFILE -o -e $SPFILE1 -o -e $PFILE ] ; then    <br />&#160;&#160;&#160;&#160;&#160; case $VERSION in    <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160; &quot;6&quot;)&#160; sqldba command=startup ;;    <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160; &quot;internal&quot;)&#160; $SQLDBA &lt;&lt;EOF     <br />connect internal    <br />startup    <br />EOF    <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; ;;    <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160; *)&#160; $SQLDBA &lt;&lt;EOF     <br />connect / as sysdba    <br />startup    <br />quit    <br />EOF    <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; ;;    <br />&#160;&#160;&#160;&#160;&#160; esac</p>
<p>&#160;&#160;&#160;&#160;&#160; if [ $? -eq 0 ] ; then   <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160; echo &quot;&quot;     <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160; echo &quot;$0: ${INST} \&quot;${ORACLE_SID}\&quot; warm started.&quot;     <br />&#160;&#160;&#160;&#160;&#160; else    <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160; $LOGMSG &quot;&quot;     <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160; $LOGMSG &quot;Error: ${INST} \&quot;${ORACLE_SID}\&quot; NOT started.&quot;     <br />&#160;&#160;&#160;&#160;&#160; fi    <br />&#160;&#160;&#160; else    <br />&#160;&#160;&#160;&#160;&#160; $LOGMSG &quot;&quot;     <br />&#160;&#160;&#160;&#160;&#160; $LOGMSG &quot;No init file found for ${INST} \&quot;${ORACLE_SID}\&quot;.&quot;     <br />&#160;&#160;&#160;&#160;&#160; $LOGMSG &quot;Error: ${INST} \&quot;${ORACLE_SID}\&quot; NOT started.&quot;     <br />&#160;&#160;&#160; fi    <br />&#160; fi    <br />}</p>
<p># Starts an ASM Instance   <br />startasminst() {    <br />&#160; # Called programs use same database ID    <br />&#160; export ORACLE_SID    <br />&#160; ORACLE_HOME=`echo $LINE | awk -F: &#8216;{print $2}&#8217; -`    <br />&#160; # Called scripts use same home directory    <br />&#160; export ORACLE_HOME</p>
<p>&#160; # For ASM instances, we have a dependency on the CSS service.   <br />&#160; # Wait here for it to become available before instance startup.</p>
<p>&#160; # Is the 10g install intact? Are all necessary binaries present?   <br />&#160; if [ ! -x $ORACLE_HOME/bin/crsctl ]; then    <br />&#160;&#160;&#160; $LOGMSG &quot;$ORACLE_HOME/bin/crsctl not found when attempting to start&quot;    <br />&#160;&#160;&#160; $LOGMSG &quot;&#160; ASM instance $ORACLE_SID.&quot;</p>
<p>&#160; else    <br />&#160;&#160;&#160; COUNT=0    <br />&#160;&#160;&#160; $ORACLE_HOME/bin/crsctl check css    <br />&#160;&#160;&#160; RC=$?    <br />&#160;&#160;&#160; while [ &quot;$RC&quot; != &quot;0&quot; ];    <br />&#160;&#160;&#160;&#160;&#160; do    <br />&#160;&#160;&#160;&#160;&#160; COUNT=`expr $COUNT + 1`    <br />&#160;&#160;&#160;&#160;&#160; if [ $COUNT = 15 ] ; then    <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160; # 15 tries with 20 sec interval =&gt; 5 minutes timeout    <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160; $LOGMSG &quot;Timed out waiting to start ASM instance $ORACLE_SID&quot;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160; $LOGMSG &quot;&#160; CSS service is NOT available.&quot;    <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160; exit $COUNT    <br />&#160;&#160;&#160;&#160;&#160; fi    <br />&#160;&#160;&#160;&#160;&#160; $LOGMSG &quot;Waiting for Oracle CSS service to be available before starting &quot;    <br />&#160;&#160;&#160;&#160;&#160; $LOGMSG &quot; ASM instance $ORACLE_SID. Wait $COUNT.&quot;    <br />&#160;&#160;&#160;&#160;&#160; sleep 20    <br />&#160;&#160;&#160;&#160;&#160; $ORACLE_HOME/bin/crsctl check css    <br />&#160;&#160;&#160;&#160;&#160; RC=$?    <br />&#160;&#160;&#160; done    <br />&#160; fi    <br />&#160; startinst    <br />}</p>
<p># Start of dbstartup script   <br />#    <br /># Loop for every entry in oratab file and and try to start    <br /># that ORACLE.    <br />#    <br /># ASM instances need to be started before &#8216;Database instances&#8217;    <br /># ASM instance is identified with &#8216;+&#8217; prefix in ORACLE_SID    <br /># Following loop brings up ASM instance[s]</p>
<p>cat $ORATAB | while read LINE   <br />do    <br />case $LINE in    <br />&#160; \#*)&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; ;;&#160;&#160;&#160;&#160;&#160;&#160;&#160; #comment-line in oratab    <br />&#160; *)    <br />&#160; ORACLE_SID=`echo $LINE | awk -F: &#8216;{print $1}&#8217; -`    <br />&#160; if [ &quot;$ORACLE_SID&quot; = '*' ] ; then    <br />&#160;&#160;&#160; # same as NULL SID &#8211; ignore this entry    <br />&#160;&#160;&#160; ORACLE_SID=&quot;&quot;    <br />&#160;&#160;&#160; continue    <br />&#160; fi    <br />&#160; # Proceed only if last field is &#8216;Y&#8217;.    <br />&#160; if [ &quot;`echo $LINE | awk -F: '{print $NF}' -`&quot; = &quot;Y&quot; ] ; then    <br />&#160;&#160;&#160; # If ASM instances    <br />&#160;&#160;&#160; if [ `echo $ORACLE_SID | cut -b 1` = '+' ]; then    <br />&#160;&#160;&#160;&#160;&#160; INST=&quot;ASM instance&quot;    <br />&#160;&#160;&#160;&#160;&#160; ORACLE_HOME=`echo $LINE | awk -F: &#8216;{print $2}&#8217; -`    <br />&#160;&#160;&#160;&#160;&#160; # Called scripts use same home directory    <br />&#160;&#160;&#160;&#160;&#160; export ORACLE_HOME    <br />&#160;&#160;&#160;&#160;&#160; # file for logging script&#8217;s output    <br />&#160;&#160;&#160;&#160;&#160; LOG=$ORACLE_HOME/startup.log    <br />&#160;&#160;&#160;&#160;&#160; touch $LOG    <br />&#160;&#160;&#160;&#160;&#160; chmod a+r $LOG    <br />&#160;&#160;&#160;&#160;&#160; echo &quot;Processing $INST \&quot;$ORACLE_SID\&quot;: log file $ORACLE_HOME/startup.log&quot;    <br />&#160;&#160;&#160;&#160;&#160; startasminst &gt;&gt; $LOG 2&gt;&amp;1    <br />&#160;&#160;&#160; fi    <br />&#160; fi    <br />&#160; ;;    <br />esac    <br />done</p>
<p># exit if there was any trouble bringing up ASM instance[s]   <br />if [ &quot;$?&quot; != &quot;0&quot; ] ; then    <br />&#160; exit 2    <br />fi</p>
<p>#   <br /># Following loop brings up &#8216;Database instances&#8217;    <br />#    <br />cat $ORATAB | while read LINE    <br />do    <br />case $LINE in    <br />&#160; \#*)&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; ;;&#160;&#160;&#160;&#160;&#160;&#160;&#160; #comment-line in oratab    <br />&#160; *)    <br />&#160; ORACLE_SID=`echo $LINE | awk -F: &#8216;{print $1}&#8217; -`    <br />&#160; if [ &quot;$ORACLE_SID&quot; = '*' ] ; then    <br />&#160;&#160;&#160; # same as NULL SID &#8211; ignore this entry    <br />&#160;&#160;&#160; ORACLE_SID=&quot;&quot;    <br />&#160;&#160;&#160; continue    <br />&#160; fi    <br />&#160; # Proceed only if last field is &#8216;Y&#8217;.    <br />&#160; if [ &quot;`echo $LINE | awk -F: '{print $NF}' -`&quot; = &quot;Y&quot; ] ; then    <br />&#160;&#160;&#160; # If non-ASM instances    <br />&#160;&#160;&#160; if [ `echo $ORACLE_SID | cut -b 1` != '+' ]; then    <br />&#160;&#160;&#160;&#160;&#160; INST=&quot;Database instance&quot;    <br />&#160;&#160;&#160;&#160;&#160; ORACLE_HOME=`echo $LINE | awk -F: &#8216;{print $2}&#8217; -`    <br />&#160;&#160;&#160;&#160;&#160; # Called scripts use same home directory    <br />&#160;&#160;&#160;&#160;&#160; export ORACLE_HOME    <br />&#160;&#160;&#160;&#160;&#160; # file for logging script&#8217;s output    <br />&#160;&#160;&#160;&#160;&#160; LOG=$ORACLE_HOME/startup.log    <br />&#160;&#160;&#160;&#160;&#160; touch $LOG    <br />&#160;&#160;&#160;&#160;&#160; chmod a+r $LOG    <br />&#160;&#160;&#160;&#160;&#160; echo &quot;Processing $INST \&quot;$ORACLE_SID\&quot;: log file $ORACLE_HOME/startup.log&quot;    <br />&#160;&#160;&#160;&#160;&#160; startinst &gt;&gt; $LOG 2&gt;&amp;1    <br />&#160;&#160;&#160; fi    <br />&#160; fi    <br />&#160; ;;    <br />esac    <br />done</p>
<p>#   <br /># Following loop brings up &#8216;Database instances&#8217; that have wait state &#8216;W&#8217;    <br />#    <br />cat $ORATAB | while read LINE    <br />do    <br />case $LINE in    <br />&#160; \#*)&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; ;;&#160;&#160;&#160;&#160;&#160;&#160;&#160; #comment-line in oratab    <br />&#160; *)    <br />&#160; ORACLE_SID=`echo $LINE | awk -F: &#8216;{print $1}&#8217; -`    <br />&#160; if [ &quot;$ORACLE_SID&quot; = '*' ] ; then    <br />&#160;&#160;&#160; # same as NULL SID &#8211; ignore this entry    <br />&#160;&#160;&#160; ORACLE_SID=&quot;&quot;    <br />&#160;&#160;&#160; continue    <br />&#160; fi    <br />&#160; # Proceed only if last field is &#8216;W&#8217;.    <br />&#160; if [ &quot;`echo $LINE | awk -F: '{print $NF}' -`&quot; = &quot;W&quot; ] ; then    <br />&#160;&#160;&#160; W_ORACLE_SID=`echo $LINE | awk -F: &#8216;{print $1}&#8217; -`    <br />&#160;&#160;&#160; # DB instances with &#8216;W&#8217; (wait state) have a dependency on ASM instances via CRS.    <br />&#160;&#160;&#160; # Wait here for &#8216;all&#8217; ASM instances to become available.    <br />&#160;&#160;&#160; cat $ORATAB | while read LINE    <br />&#160;&#160;&#160; do    <br />&#160;&#160;&#160; case $LINE in    <br />&#160;&#160;&#160;&#160;&#160; \#*)&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; ;;&#160;&#160;&#160;&#160;&#160;&#160;&#160; #comment-line in oratab    <br />&#160;&#160;&#160;&#160;&#160; *)    <br />&#160;&#160;&#160;&#160;&#160; ORACLE_SID=`echo $LINE | awk -F: &#8216;{print $1}&#8217; -`    <br />&#160;&#160;&#160;&#160;&#160; if [ &quot;$ORACLE_SID&quot; = '*' ] ; then    <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160; # same as NULL SID &#8211; ignore this entry    <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160; ORACLE_SID=&quot;&quot;    <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160; continue    <br />&#160;&#160;&#160;&#160;&#160; fi    <br />&#160;&#160;&#160;&#160;&#160; if [ `echo $ORACLE_SID | cut -b 1` = '+' ]; then    <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160; INST=&quot;ASM instance&quot;    <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160; ORACLE_HOME=`echo $LINE | awk -F: &#8216;{print $2}&#8217; -`    <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160; if [ -x $ORACLE_HOME/bin/srvctl ] ; then    <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; COUNT=0    <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; NODE=`olsnodes -l`    <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; RNODE=`srvctl status asm -n $NODE | grep &quot;$ORACLE_SID is running&quot;`    <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; RC=$?    <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; while [ &quot;$RC&quot; != &quot;0&quot; ]; # wait until this comes up!    <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; do    <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; COUNT=$((COUNT+1))    <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; if [ $COUNT = 5 ] ; then    <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; # 5 tries with 60 sec interval =&gt; 5 minutes timeout    <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; $LOGMSG &quot;Error: Timed out waiting on CRS to start ASM instance $ORACLE_SID&quot;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; exit $COUNT    <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; fi    <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; $LOGMSG &quot;Waiting for Oracle CRS service to start ASM instance $ORACLE_SID&quot;    <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; $LOGMSG &quot;Wait $COUNT.&quot;    <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; sleep 60    <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; RNODE=`srvctl status asm -n $NODE | grep &quot;$ORACLE_SID is running&quot;`    <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; RC=$?    <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; done    <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160; else    <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; $LOGMSG &quot;Error: \&quot;${W_ORACLE_SID}\&quot; has dependency on ASM instance \&quot;${ORACLE_SID}\&quot;&quot;    <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; $LOGMSG &quot;Error: Need $ORACLE_HOME/bin/srvctl to check this dependency&quot;    <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160; fi    <br />&#160;&#160;&#160;&#160;&#160; fi&#160;&#160;&#160;&#160; # asm instance    <br />&#160;&#160;&#160;&#160;&#160; ;;    <br />&#160;&#160;&#160; esac    <br />&#160;&#160;&#160; done # innner while    <br />&#160; fi    <br />&#160; ;;    <br />esac    <br />done # outer while</p>
<p># by now all the ASM instances have come up and we can proceed to bring up   <br /># DB instance with &#8216;W&#8217; wait status</p>
<p>cat $ORATAB | while read LINE   <br />do    <br />case $LINE in    <br />&#160; \#*)&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; ;;&#160;&#160;&#160;&#160;&#160;&#160;&#160; #comment-line in oratab    <br />&#160; *)    <br />&#160; ORACLE_SID=`echo $LINE | awk -F: &#8216;{print $1}&#8217; -`    <br />&#160; if [ &quot;$ORACLE_SID&quot; = '*' ] ; then    <br />&#160;&#160;&#160; # same as NULL SID &#8211; ignore this entry    <br />&#160;&#160;&#160; ORACLE_SID=&quot;&quot;    <br />&#160;&#160;&#160; continue    <br />&#160; fi    <br />&#160; # Proceed only if last field is &#8216;W&#8217;.    <br />&#160; if [ &quot;`echo $LINE | awk -F: '{print $NF}' -`&quot; = &quot;W&quot; ] ; then    <br />&#160;&#160;&#160; INST=&quot;Database instance&quot;    <br />&#160;&#160;&#160; if [ `echo $ORACLE_SID | cut -b 1` = '+' ]; then    <br />&#160;&#160;&#160;&#160;&#160; $LOGMSG &quot;Error: ${INST} \&quot;${ORACLE_SID}\&quot; NOT started&quot;    <br />&#160;&#160;&#160;&#160;&#160; $LOGMSG &quot;Error: incorrect usage: &#8216;W&#8217; not allowed for ASM instances&quot;    <br />&#160;&#160;&#160;&#160;&#160; continue    <br />&#160;&#160;&#160; fi    <br />&#160;&#160;&#160; ORACLE_HOME=`echo $LINE | awk -F: &#8216;{print $2}&#8217; -`    <br />&#160;&#160;&#160; # Called scripts use same home directory    <br />&#160;&#160;&#160; export ORACLE_HOME    <br />&#160;&#160;&#160; # file for logging script&#8217;s output    <br />&#160;&#160;&#160; LOG=$ORACLE_HOME/startup.log    <br />&#160;&#160;&#160; touch $LOG    <br />&#160;&#160;&#160; chmod a+r $LOG    <br />&#160;&#160;&#160; echo &quot;Processing $INST \&quot;$ORACLE_SID\&quot;: log file $ORACLE_HOME/startup.log&quot;    <br />&#160;&#160;&#160; startinst &gt;&gt; $LOG 2&gt;&amp;1    <br />&#160; fi    <br />&#160; ;;    <br />esac    <br />done</p>
<p>&#160;</p>
<p>##########################################dbshut内容##########################################</p>
<p>#!/bin/sh   <br />#    <br /># $Id: dbshut.sh 22-may-2008.05:19:31 arogers Exp $    <br /># Copyright (c) 1991, 2008, Oracle. All rights reserved.&#160; <br />#</p>
<p>###################################   <br />#     <br /># usage: dbshut $ORACLE_HOME    <br />#    <br /># This script is used to shutdown ORACLE from /etc/rc(.local).    <br /># It should ONLY be executed as part of the system boot procedure.    <br />#    <br /># This script will shutdown all databases listed in the oratab file    <br /># whose third field is a &quot;Y&quot; or &quot;W&quot;.&#160; If the third field is set to &quot;Y&quot; and    <br /># there is no ORACLE_SID for an entry (the first field is a *),    <br /># then this script will ignore that entry.    <br />#    <br /># This script requires that ASM ORACLE_SID&#8217;s start with a +, and     <br /># that non-ASM instance ORACLE_SID&#8217;s do not start with a +.    <br />#    <br /># Note:    <br /># Use ORACLE_TRACE=T for tracing this script.    <br /># Oracle Net Listener is also shutdown using this script.    <br />#    <br /># The progress log for each instance shutdown is logged in file     <br /># $ORACLE_HOME/shutdown.log.    <br />#    <br /># On all UNIX platforms except SOLARIS    <br /># ORATAB=/etc/oratab    <br />#    <br /># To configure, update ORATAB with Instances that need to be shutdown    <br />#&#160;&#160;&#160; Entries are of the form:    <br />#&#160;&#160;&#160; $ORACLE_SID:$ORACLE_HOME:&lt;N|Y&gt;:    <br />#&#160;&#160;&#160; An example entry:    <br />#&#160;&#160;&#160; main:/usr/lib/oracle/emagent_10g:Y    <br />#    <br />#####################################</p>
<p>trap &#8216;exit&#8217; 1 2 3   <br />case $ORACLE_TRACE in    <br />&#160; T) set -x ;;    <br />esac</p>
<p># Set path if path not set (if called from /etc/rc)   <br />SAVE_PATH=/bin:/usr/bin:/etc:${PATH} ; export PATH    <br />SAVE_LLP=$LD_LIBRARY_PATH</p>
<p># The&#160; this to bring down Oracle Net Listener   <br />ORACLE_HOME_LISTNER=&#8217;/oracle/11g&#8217;    <br />if [ ! $ORACLE_HOME_LISTNER ] ; then    <br />&#160; echo &quot;ORACLE_HOME_LISTNER is not SET, unable to auto-stop Oracle Net Listener&quot;    <br />&#160; echo &quot;Usage: $0 ORACLE_HOME&quot;    <br />else    <br />&#160; LOG=$ORACLE_HOME_LISTNER/listener.log</p>
<p>&#160; # Set the ORACLE_HOME for the Oracle Net Listener, it gets reset to   <br />&#160; # a different ORACLE_HOME for each entry in the oratab.    <br />&#160; export ORACLE_HOME=$ORACLE_HOME_LISTNER</p>
<p>&#160; # Stop Oracle Net Listener   <br />&#160; if [ -f $ORACLE_HOME_LISTNER/bin/tnslsnr ] ; then    <br />&#160;&#160;&#160; echo &quot;$0: Stoping Oracle Net Listener&quot; &gt;&gt; $LOG 2&gt;&amp;1    <br />&#160;&#160;&#160; $ORACLE_HOME_LISTNER/bin/lsnrctl stop &gt;&gt; $LOG 2&gt;&amp;1 &amp;    <br />&#160; else    <br />&#160;&#160;&#160; echo &quot;Failed to auto-stop Oracle Net Listener using $ORACLE_HOME_LISTNER/bin/tnslsnr&quot;    <br />&#160; fi    <br />fi</p>
<p># Set this in accordance with the platform   <br />ORATAB=/etc/oratab    <br />if [ ! $ORATAB ] ; then    <br />&#160; echo &quot;$ORATAB not found&quot;    <br />&#160; exit 1;    <br />fi</p>
<p># Stops an instance   <br />stopinst() {    <br />&#160; ORACLE_SID=`echo $LINE | awk -F: &#8216;{print $1}&#8217; -`    <br />&#160; if [ &quot;$ORACLE_SID&quot; = '*' ] ; then    <br />&#160;&#160;&#160; ORACLE_SID=&quot;&quot;    <br />&#160; fi    <br /># Called programs use same database ID    <br />&#160; export ORACLE_SID    <br />&#160; ORACLE_HOME=`echo $LINE | awk -F: &#8216;{print $2}&#8217; -`    <br /># Called scripts use same home directory    <br />&#160; export ORACLE_HOME    <br /># Put $ORACLE_HOME/bin into PATH and export.    <br />&#160; PATH=$ORACLE_HOME/bin:${SAVE_PATH} ; export PATH    <br /># add for bug 652997    <br />&#160; LD_LIBRARY_PATH=${ORACLE_HOME}/lib:${SAVE_LLP} ; export LD_LIBRARY_PATH    <br />&#160; PFILE=${ORACLE_HOME}/dbs/init${ORACLE_SID}.ora</p>
<p># See if it is a V6 or V7 database   <br />&#160; VERSION=undef    <br />&#160; if [ -f $ORACLE_HOME/bin/sqldba ] ; then    <br />&#160;&#160;&#160; SQLDBA=sqldba    <br />&#160;&#160;&#160; VERSION=`$ORACLE_HOME/bin/sqldba command=exit | awk &#8216;    <br />&#160;&#160;&#160;&#160;&#160; /SQL\*DBA: (Release|Version)/ {split($3, V, &quot;.&quot;) ;    <br />&#160;&#160;&#160;&#160;&#160; print V[1]}&#8217;`    <br />&#160;&#160;&#160; case $VERSION in    <br />&#160;&#160;&#160;&#160;&#160; &quot;6&quot;) ;;    <br />&#160;&#160;&#160;&#160;&#160; *) VERSION=&quot;internal&quot; ;;    <br />&#160;&#160;&#160; esac    <br />&#160; else    <br />&#160;&#160;&#160; if [ -f $ORACLE_HOME/bin/svrmgrl ] ; then    <br />&#160;&#160;&#160;&#160;&#160; SQLDBA=svrmgrl    <br />&#160;&#160;&#160;&#160;&#160; VERSION=&quot;internal&quot;    <br />&#160;&#160;&#160; else    <br />&#160;&#160;&#160;&#160;&#160; SQLDBA=&quot;sqlplus /nolog&quot;    <br />&#160;&#160;&#160; fi    <br />&#160; fi</p>
<p>&#160; case $VERSION in   <br />&#160;&#160;&#160; &quot;6&quot;)&#160; sqldba command=shutdown ;;    <br />&#160;&#160;&#160; &quot;internal&quot;)&#160; $SQLDBA &lt;&lt;EOF    <br />connect internal    <br />shutdown immediate    <br />EOF    <br />&#160;&#160;&#160;&#160; ;;    <br />&#160;&#160;&#160;&#160; *)&#160; $SQLDBA &lt;&lt;EOF    <br />connect / as sysdba    <br />shutdown immediate    <br />quit    <br />EOF    <br />&#160;&#160;&#160;&#160; ;;    <br />&#160; esac</p>
<p>&#160; if test $? -eq 0 ; then   <br />&#160;&#160;&#160; echo &quot;${INST} \&quot;${ORACLE_SID}\&quot; shut down.&quot;    <br />&#160; else    <br />&#160;&#160;&#160; echo &quot;${INST} \&quot;${ORACLE_SID}\&quot; not shut down.&quot;    <br />&#160; fi    <br />}</p>
<p>#   <br /># Loop for every entry in oratab file and and try to shut down    <br /># that ORACLE    <br />#    <br /># Following loop shuts down &#8216;Database Instance[s]&#8216; with &#8216;Y&#8217; entry</p>
<p>cat $ORATAB | while read LINE   <br />do    <br />&#160; case $LINE in    <br />&#160; \#*)&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; ;;&#160;&#160;&#160;&#160;&#160;&#160;&#160; #comment-line in oratab    <br />&#160; *)    <br />&#160; ORACLE_SID=`echo $LINE | awk -F: &#8216;{print $1}&#8217; -`    <br />&#160; if [ &quot;$ORACLE_SID&quot; = '*' ] ; then    <br />&#160;&#160;&#160;&#160;&#160; # NULL SID &#8211; ignore    <br />&#160;&#160;&#160;&#160;&#160; ORACLE_SID=&quot;&quot;    <br />&#160;&#160;&#160;&#160;&#160; continue    <br />&#160; fi    <br />&#160; # Proceed only if last field is &#8216;Y&#8217; or &#8216;W&#8217;    <br />&#160; if [ &quot;`echo $LINE | awk -F: '{print $NF}' -`&quot; = &quot;Y&quot; ] ; then    <br />&#160;&#160;&#160; if [ `echo $ORACLE_SID | cut -b 1` != '+' ]; then    <br />&#160;&#160;&#160;&#160;&#160; INST=&quot;Database instance&quot;    <br />&#160;&#160;&#160;&#160;&#160; ORACLE_HOME=`echo $LINE | awk -F: &#8216;{print $2}&#8217; -`    <br />&#160;&#160;&#160;&#160;&#160; LOG=$ORACLE_HOME/shutdown.log    <br />&#160;&#160;&#160;&#160;&#160; echo &quot;Processing $INST \&quot;$ORACLE_SID\&quot;: log file $LOG&quot;    <br />&#160;&#160;&#160;&#160;&#160; stopinst &gt;&gt; $LOG 2&gt;&amp;1    <br />&#160;&#160;&#160; fi    <br />&#160; fi    <br />&#160; ;;    <br />&#160; esac    <br />done</p>
<p>#   <br /># Following loop shuts down &#8216;Database Instance[s]&#8216; with &#8216;W&#8217; entry    <br />#    <br />cat $ORATAB | while read LINE    <br />do    <br />&#160; case $LINE in    <br />&#160; \#*)&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; ;;&#160;&#160;&#160;&#160;&#160;&#160;&#160; #comment-line in oratab    <br />&#160; *)    <br />&#160; ORACLE_SID=`echo $LINE | awk -F: &#8216;{print $1}&#8217; -`    <br />&#160; if [ &quot;$ORACLE_SID&quot; = '*' ] ; then    <br />&#160;&#160;&#160;&#160;&#160; # NULL SID &#8211; ignore    <br />&#160;&#160;&#160;&#160;&#160; ORACLE_SID=&quot;&quot;    <br />&#160;&#160;&#160;&#160;&#160; continue    <br />&#160; fi    <br />&#160; # Proceed only if last field is &#8216;Y&#8217; or &#8216;W&#8217;    <br />&#160; if [ &quot;`echo $LINE | awk -F: '{print $NF}' -`&quot; = &quot;W&quot; ] ; then    <br />&#160;&#160;&#160; if [ `echo $ORACLE_SID | cut -b 1` != '+' ]; then    <br />&#160;&#160;&#160;&#160;&#160; INST=&quot;Database instance&quot;    <br />&#160;&#160;&#160;&#160;&#160; ORACLE_HOME=`echo $LINE | awk -F: &#8216;{print $2}&#8217; -`    <br />&#160;&#160;&#160;&#160;&#160; LOG=$ORACLE_HOME/shutdown.log    <br />&#160;&#160;&#160;&#160;&#160; echo &quot;Processing $INST \&quot;$ORACLE_SID\&quot;: log file $LOG&quot;    <br />&#160;&#160;&#160;&#160;&#160; stopinst &gt;&gt; $LOG 2&gt;&amp;1    <br />&#160;&#160;&#160; fi    <br />&#160; fi    <br />&#160; ;;    <br />&#160; esac    <br />done</p>
<p>#   <br /># Following loop shuts down &#8216;ASM Instance[s]&#8216;    <br />#</p>
<p>cat $ORATAB | while read LINE   <br />do    <br />&#160; case $LINE in    <br />&#160;&#160;&#160; \#*)&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; ;;&#160;&#160;&#160;&#160;&#160;&#160;&#160; #comment-line in oratab    <br />&#160;&#160;&#160; *)    <br />&#160;&#160;&#160; ORACLE_SID=`echo $LINE | awk -F: &#8216;{print $1}&#8217; -`    <br />&#160;&#160;&#160; if [ &quot;$ORACLE_SID&quot; = '*' ] ; then    <br />&#160;&#160;&#160;&#160;&#160; # NULL SID &#8211; ignore    <br />&#160;&#160;&#160;&#160;&#160; ORACLE_SID=&quot;&quot;    <br />&#160;&#160;&#160;&#160;&#160; continue    <br />&#160;&#160;&#160; fi    <br />&#160;&#160;&#160; # Proceed only if last field is &#8216;Y&#8217;.    <br />&#160;&#160;&#160; # Entries whose last field is not Y or N are not DB entry, ignore them.    <br />&#160;&#160;&#160; if [ &quot;`echo $LINE | awk -F: '{print $NF}' -`&quot; = &quot;Y&quot; ] ; then    <br />&#160;&#160;&#160;&#160;&#160; if [ `echo $ORACLE_SID | cut -b 1` = '+' ]; then    <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160; INST=&quot;ASM instance&quot;    <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160; ORACLE_HOME=`echo $LINE | awk -F: &#8216;{print $2}&#8217; -`    <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160; LOG=$ORACLE_HOME/shutdown.log    <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160; echo &quot;Processing $INST \&quot;$ORACLE_SID\&quot;: log file $LOG&quot;    <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160; stopinst &gt;&gt; $LOG 2&gt;&amp;1    <br />&#160;&#160;&#160;&#160;&#160; fi    <br />&#160;&#160;&#160; fi    <br />&#160; ;;    <br />&#160; esac    <br />done</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.tianbaoyong.com/databsse/oracle-11g-r2-linux-x64-installation-notes.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Linux基于iptables的简单防火墙设置模板</title>
		<link>http://blog.tianbaoyong.com/systemconfig/linux-based-iptables-firewall-settings-simple-template.html</link>
		<comments>http://blog.tianbaoyong.com/systemconfig/linux-based-iptables-firewall-settings-simple-template.html#comments</comments>
		<pubDate>Tue, 15 Mar 2011 02:33:33 +0000</pubDate>
		<dc:creator>tian5258</dc:creator>
				<category><![CDATA[系统管理]]></category>
		<category><![CDATA[DNAT]]></category>
		<category><![CDATA[iptables]]></category>
		<category><![CDATA[MAC]]></category>
		<category><![CDATA[SNAT]]></category>

		<guid isPermaLink="false">http://blog.tianbaoyong.com/systemconfig/linux-based-iptables-firewall-settings-simple-template.html</guid>
		<description><![CDATA[#!/bin/bash # 此脚本根据鸟哥私房菜脚本修改而成 # 设置相关参数，认真阅读说明，慎重填写 &#160; #服务器的公网接口设备名，如果是拨号上网，也可能是 ppp0 &#160; EXTIF=&#34;eth0&#34; &#160; #连接内部网络的网卡设备名，如果没有则留空（INIF=&#34;&#34;）则内网资源无法访问&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; &#160; INIF=&#34;eth1&#34;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; &#160; #内部主机或网段，如果留空，则内网主机不能根据IP授权上网。如果有多个主机或网段，用空格隔开， &#160; #多网段：如INNET=&#34;192.168.1.0/24 192.168.100.0/24&#34; &#160; #多主机：如INNET=&#34;172.16.15.126 172.16.15.105&#34;&#160; &#160; &#160; INNET=&#34;172.16.150.101&#34;&#160;&#160;&#160; &#160; export EXTIF INIF INNET &#160; # 第一部份，本机的基本防火墙设置！ # 1. 核心路由： &#160; # 开启预防TCP Flooding 的 DoS 攻击，这设置很浪费资源，慎重！！ &#160; echo &#34;1&#34; &#62; /proc/sys/net/ipv4/tcp_syncookies &#160; # 取消 ping 广播的回应； &#160; echo [...]]]></description>
			<content:encoded><![CDATA[<p>#!/bin/bash   <br /># 此脚本根据鸟哥私房菜脚本修改而成    <br /># 设置相关参数，认真阅读说明，慎重填写</p>
<p>  <span id="more-635"></span>
<p>&#160; #服务器的公网接口设备名，如果是拨号上网，也可能是 ppp0    <br />&#160; EXTIF=&quot;eth0&quot;</p>
<p>&#160; #连接内部网络的网卡设备名，如果没有则留空（INIF=&quot;&quot;）则内网资源无法访问&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; <br />&#160; INIF=&quot;eth1&quot;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; </p>
<p>&#160; #内部主机或网段，如果留空，则内网主机不能根据IP授权上网。如果有多个主机或网段，用空格隔开，   <br />&#160; #多网段：如INNET=&quot;192.168.1.0/24 192.168.100.0/24&quot;    <br />&#160; #多主机：如INNET=&quot;172.16.15.126 172.16.15.105&quot;&#160; <br />&#160; <br />&#160; INNET=&quot;172.16.150.101&quot;&#160;&#160;&#160; </p>
<p>&#160; export EXTIF INIF INNET   <br />&#160; <br /># 第一部份，本机的基本防火墙设置！</p>
<p># 1. 核心路由：   <br />&#160; # 开启预防TCP Flooding 的 DoS 攻击，这设置很浪费资源，慎重！！    <br />&#160; echo &quot;1&quot; &gt; /proc/sys/net/ipv4/tcp_syncookies    <br />&#160; # 取消 ping 广播的回应；    <br />&#160; echo &quot;1&quot; &gt; /proc/sys/net/ipv4/icmp_echo_ignore_broadcasts    <br />&#160; # 开启逆向路径过滤    <br />&#160; for i in /proc/sys/net/ipv4/conf/*/rp_filter; do    <br />&#160;&#160;&#160; echo &quot;1&quot; &gt; $i    <br />&#160; done    <br />&#160; # 对错误的包进行日志记录    <br />&#160; # record some problems packets.    <br />&#160; #for i in /proc/sys/net/ipv4/conf/*/log_martians; do    <br />&#160; #&#160;&#160;&#160; echo &quot;1&quot; &gt; $i    <br />&#160; #done    <br />&#160; # 取消来源路由；    <br />&#160; for i in /proc/sys/net/ipv4/conf/*/accept_source_route; do    <br />&#160;&#160;&#160; echo &quot;0&quot; &gt; $i    <br />&#160; done     <br />&#160; # 取消重新宣告路径的功能。    <br />&#160; for i in /proc/sys/net/ipv4/conf/*/accept_redirects; do    <br />&#160;&#160;&#160; echo &quot;0&quot; &gt; $i    <br />&#160; done     <br />&#160; # 取消传送送重新宣告路径的功能。    <br />&#160; for i in /proc/sys/net/ipv4/conf/*/send_redirects; do    <br />&#160;&#160;&#160; echo &quot;0&quot; &gt; $i    <br />&#160; done    <br /># 2. 清除规则、预定义策略，开放 lo 相关设定    <br />&#160; PATH=/sbin:/usr/sbin:/bin:/usr/bin:/usr/local/sbin:/usr/local/bin; export PATH    <br />&#160; <span class='wp_keywordlink_affiliate'><a href="http://blog.tianbaoyong.com/tag/iptables" title="查看 iptables 的全部文章" target="_blank">iptables</a></span> -F    <br />&#160; <span class='wp_keywordlink_affiliate'><a href="http://blog.tianbaoyong.com/tag/iptables" title="查看 iptables 的全部文章" target="_blank">iptables</a></span> -X    <br />&#160; <span class='wp_keywordlink_affiliate'><a href="http://blog.tianbaoyong.com/tag/iptables" title="查看 iptables 的全部文章" target="_blank">iptables</a></span> -Z    <br />&#160; iptables -P INPUT&#160;&#160; DROP    <br />&#160; iptables -P OUTPUT&#160; ACCEPT    <br />&#160; iptables -P FORWARD ACCEPT    <br />&#160; iptables -A INPUT -i lo -j ACCEPT    <br />&#160; iptables -A INPUT -m state &#8211;state RELATED,ESTABLISHED -j ACCEPT    <br /># 4. 允许某些类型的 ICMP 封包近入    <br />&#160; AICMP=&quot;0 3 3/4 4 11 12 14 16 18&quot;    <br />&#160; for tyicmp in $AICMP     <br />&#160; do     <br />&#160;&#160;&#160; iptables -A INPUT -i $EXTIF -p icmp &#8211;icmp-type $tyicmp -j ACCEPT    <br />&#160; done    <br /># 5. 允许本机的公网地址的某些服务开放(Example)    <br /># iptables -A INPUT -p TCP -i $EXTIF &#8211;dport&#160; 公网端口&#160; &#8211;sport 1024:65534 -j ACCEPT    <br /># 允许主机的<span class='wp_keywordlink_affiliate'><a href="http://blog.tianbaoyong.com/tag/mac" title="查看 MAC 的全部文章" target="_blank">MAC</a></span>检查    <br /># iptables -A FORWARD -s 内网主机地址 -m mac ! &#8211;mac-source 内网主机<span class='wp_keywordlink_affiliate'><a href="http://blog.tianbaoyong.com/tag/mac" title="查看 MAC 的全部文章" target="_blank">MAC</a></span> -j DROP</p>
<p># 第二部份，针对内网主机的防火墙设置！！   <br /># 1. 载入模块    <br />modprobe ip_tables    <br />modprobe iptable_nat    <br />modprobe ip_nat_ftp    <br />modprobe ip_nat_irc    <br />modprobe ip_conntrack    <br />modprobe ip_conntrack_ftp    <br />modprobe ip_conntrack_irc    <br /># 2. 清除NAT规则    <br />iptables -F -t nat    <br />iptables -X -t nat    <br />iptables -Z -t nat    <br />iptables -t nat -P PREROUTING&#160; ACCEPT    <br />iptables -t nat -P POSTROUTING ACCEPT    <br />iptables -t nat -P OUTPUT&#160;&#160;&#160;&#160;&#160; ACCEPT    <br /># 3. 开启路由功能    <br />&#160; #允许对内部网络的资源进行访问    <br />&#160; if [ &quot;$INIF&quot; != &quot;&quot; ]; then    <br />&#160;&#160;&#160;&#160;&#160; iptables -A INPUT -i $INIF -j ACCEPT    <br />&#160;&#160;&#160;&#160;&#160; echo &quot;1&quot; &gt; /proc/sys/net/ipv4/ip_forward    <br />&#160; #允许指定网段或主机通过NAT接入Internet    <br />&#160;&#160;&#160;&#160;&#160; if [ &quot;$INNET&quot; != &quot;&quot; ]; then     <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; for innet in $INNET    <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; do    <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; iptables -t nat -A POSTROUTING -s $innet -o $EXTIF -j MASQUERADE    <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; done    <br />&#160;&#160;&#160;&#160;&#160; fi    <br />&#160; fi    <br /># 4. 发布内网主机服务的设置    <br />#第一种写法    <br /># iptables -t nat -A PREROUTING -d 公网地址 -p tcp -m tcp &#8211;dport 公网端口 -j <span class='wp_keywordlink_affiliate'><a href="http://blog.tianbaoyong.com/tag/dnat" title="查看 DNAT 的全部文章" target="_blank">DNAT</a></span> &#8211;to-destination 内网地址:内网端口     <br /># iptables -t nat -A POSTROUTING -s 内网网段（172.16.150.96/27） -d 内网地址 -p tcp -m tcp &#8211;dport 内网端口 -j <span class='wp_keywordlink_affiliate'><a href="http://blog.tianbaoyong.com/tag/snat" title="查看 SNAT 的全部文章" target="_blank">SNAT</a></span> &#8211;to-source NAT内网地址     <br />#第二种写法     <br />#iptables -t nat -A PREROUTING&#160; -d 公网地址&#160;&#160;&#160;&#160;&#160;&#160; -p tcp &#8211;dport 公网端口&#160;&#160;&#160;&#160; -j <span class='wp_keywordlink_affiliate'><a href="http://blog.tianbaoyong.com/tag/dnat" title="查看 DNAT 的全部文章" target="_blank">DNAT</a></span> &#8211;to 内网地址:内网端口    <br />#iptables -t nat -A POSTROUTING -d 内网地址&#160;&#160;&#160;&#160; -p tcp &#8211;dport 内网端口&#160;&#160;&#160;&#160; -j <span class='wp_keywordlink_affiliate'><a href="http://blog.tianbaoyong.com/tag/snat" title="查看 SNAT 的全部文章" target="_blank">SNAT</a></span> &#8211;to NAT内网地址</p>
<p>/etc/init.d/iptables save   </p>
]]></content:encoded>
			<wfw:commentRss>http://blog.tianbaoyong.com/systemconfig/linux-based-iptables-firewall-settings-simple-template.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>MYSQL集群的备份与恢复</title>
		<link>http://blog.tianbaoyong.com/defaultcat/mysql-backup-and-recovery-cluster-2.html</link>
		<comments>http://blog.tianbaoyong.com/defaultcat/mysql-backup-and-recovery-cluster-2.html#comments</comments>
		<pubDate>Thu, 10 Mar 2011 12:49:12 +0000</pubDate>
		<dc:creator>tian5258</dc:creator>
				<category><![CDATA[默认日志]]></category>

		<guid isPermaLink="false">http://blog.tianbaoyong.com/defaultcat/mysql-backup-and-recovery-cluster-2.html</guid>
		<description><![CDATA[1、在管理节点上进行备份。 ndb_mgm&#62; start backup 5 Waiting for completed, this may take several minutes Node 2: Backup 5 started from node 1 Node 2: Backup 5 started from node 1 completed StartGCP: 90139 StopGCP: 90142 #Records: 2063 #LogRecords: 0 Data: 51468 bytes Log: 0 bytes 2:测试 （1） 关闭ndbd节点 ndb_mgm&#62; shutdown Node 3: Cluster shutdown initiated Node [...]]]></description>
			<content:encoded><![CDATA[<p>1、在管理节点上进行备份。   <br />ndb_mgm&gt; start backup 5    <br />Waiting for completed, this may take several minutes    <br />Node 2: Backup 5 started from node 1    <br />Node 2: Backup 5 started from node 1 completed    <br />StartGCP: 90139 StopGCP: 90142    <br />#Records: 2063 #LogRecords: 0    <br />Data: 51468 bytes Log: 0 bytes</p>
<p>  <span id="more-633"></span>
<p>2:测试    <br />（1）    <br />关闭ndbd节点    <br />ndb_mgm&gt; shutdown    <br />Node 3: Cluster shutdown initiated    <br />Node 2: Cluster shutdown initiated    <br />Node 3: Node shutdown completed.    <br />2 NDB Cluster node(s) have shutdown.    <br />Disconnecting to allow management server to shutdown.    <br />Node 2: Node shutdown completed.    <br />（2)重启节点    <br />ndb_mgmd -f /var/lib/mysql-cluster/config.ini    <br />ndbd &#8211;initial(清除里以前的数据)    <br />mysql&gt; show tables;    <br />Empty set (0.02 sec)    <br />3:恢复    <br />在NDBD节点上进行恢复。（每个节点都得执行一次，因为数据分散在两个节点上）    <br />在MASTER上备份的时候要加 -m 开关。    <br />在SLAVE上要加-d 而且不要-m开关。    <br />（1)第一个节点    <br />ndb_restore -n2 -b5 -r -m &#8211;backup_path=/var/lib/mysql-clusterbak/BACKUP/BACKUP-5/    <br />Nodeid = 2    <br />Backup Id = 5    <br />backup path = /var/lib/mysql-clusterbak/BACKUP/BACKUP-5/    <br />Opening file &#8216;/var/lib/mysql-clusterbak/BACKUP/BACKUP-5/BACKUP-5.2.ctl&#8217;    <br />Backup version in files: ndb-6.3.11 ndb version: mysql-5.1.32 ndb-7.0.5    <br />Stop GCP of Backup: 0    <br />Connected to ndb!!    <br />(2)第二个节点    <br />ndb_restore -n3 -b5 -r -d &#8211;backup_path=/var/lib/mysql-clusterbak/BACKUP/BACKUP-5/    <br />(2)查看    <br />mysql&gt; show tables;    <br />+&#8212;&#8212;&#8212;&#8212;&#8212;-+    <br />| Tables_in_test |    <br />+&#8212;&#8212;&#8212;&#8212;&#8212;-+    <br />| ctest&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; |     <br />| example&#160;&#160;&#160;&#160;&#160;&#160;&#160; |     <br />其中    <br />-n, &#8211;nodeid=#&#160;&#160;&#160;&#160;&#160; Backup files from node with id    <br />-b, &#8211;backupid=#&#160;&#160;&#160; Backup id    <br />-r, &#8211;restore_data Restore table data/logs into NDB Cluster using NDBAPI    <br />-m, &#8211;restore_meta Restore meta data into NDB Cluster using NDBAPI    <br />-d, &#8211;no-restore-disk-objects     <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; Dont restore disk objects (tablespace/logfilegroups etc)    <br />[root@bogon BACKUP-5]# ll    <br />total 44    <br />-rw-r&#8211;r&#8211; 1 root root 26912 May 18 20:23 BACKUP-5-0.2.Data    <br />-rw-r&#8211;r&#8211; 1 root root 10356 May 18 20:23 BACKUP-5.2.ctl (5,是backupid，2是nodeid)    <br />-rw-r&#8211;r&#8211; 1 root root&#160;&#160;&#160; 52 May 18 20:23 BACKUP-5.2.log</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.tianbaoyong.com/defaultcat/mysql-backup-and-recovery-cluster-2.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

