<?xml version="1.0" encoding="UTF-8" standalone="no"?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><rss xmlns:itunes="http://www.itunes.com/dtds/podcast-1.0.dtd" version="2.0"><channel><title>奇跡戦士風の子ブログ</title><description></description><managingEditor>noreply@blogger.com (奇蹟戰士風之子)</managingEditor><pubDate>Fri, 27 Sep 2024 04:58:01 +0800</pubDate><generator>Blogger http://www.blogger.com</generator><openSearch:totalResults xmlns:openSearch="http://a9.com/-/spec/opensearchrss/1.0/">69</openSearch:totalResults><openSearch:startIndex xmlns:openSearch="http://a9.com/-/spec/opensearchrss/1.0/">1</openSearch:startIndex><openSearch:itemsPerPage xmlns:openSearch="http://a9.com/-/spec/opensearchrss/1.0/">25</openSearch:itemsPerPage><link>http://miracle-neatly.blogspot.com/</link><language>en-us</language><item><title>ORA12514 TNS監聽器目前不知道連線描述區中要求的服務</title><link>http://miracle-neatly.blogspot.com/2009/12/ora12514-tns.html</link><category>ORACLE</category><author>noreply@blogger.com (奇蹟戰士風之子)</author><pubDate>Fri, 11 Dec 2009 15:59:00 +0800</pubDate><guid isPermaLink="false">tag:blogger.com,1999:blog-7414721583570985383.post-1252329072630737234</guid><description>&lt;p&gt;先描述一下筆者所在的情況:&lt;/p&gt; &lt;p&gt;Client: windows 7&lt;/p&gt; &lt;p&gt;Server : 任一Linux主機, 上面有裝Oracle任一軟體.&lt;/p&gt; &lt;p&gt;由於通常是在Linux上建立Oracle, 所以在Client常要連線Server.&lt;/p&gt; &lt;p&gt;目前筆者較常使用的是PL/SQL DEVELOPER 這套軟體.&lt;/p&gt; &lt;p&gt;至於要怎樣連線Server, 請參閱筆者其他文章.&lt;/p&gt; &lt;p&gt;—————————————————————————————–&lt;/p&gt; &lt;p&gt;問題描述:&lt;/p&gt; &lt;p&gt;由於Linux常會改寫主機名字, 所以會導致PL/SQL DEVELOPER無法連線.&lt;/p&gt; &lt;p&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;ORA-12514: TNS: 監聽器目前不知道連線描述區中要求的服務.&lt;/span&gt;&lt;/p&gt; &lt;p&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;主要是因為Client下的&lt;/span&gt;&lt;/span&gt;&lt;strong&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;tnsnames.ora&lt;/span&gt;&lt;/strong&gt;設定的問題.&lt;/p&gt; &lt;p&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;先查詢一下Linux主機名稱&lt;/span&gt;&lt;/span&gt;&lt;/p&gt; &lt;p&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;[root  ~ ]#vi /etc/hosts&lt;/span&gt;&lt;/span&gt;&lt;/p&gt; &lt;p&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;…..&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt; &lt;p&gt;127.0.0.1               localhost.&lt;span style="color: rgb(255, 0, 0);"&gt;localdomain&lt;/span&gt; localhost&lt;/p&gt; &lt;p&gt;……&lt;/p&gt; &lt;p&gt;之後在&lt;strong&gt;tnsnames.ora&lt;/strong&gt;&lt;/p&gt; &lt;p&gt;將service更改為完整的&lt;span style="color: rgb(128, 0, 0);"&gt;sid+domainname&lt;/span&gt;&lt;/p&gt; &lt;p&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;舉例如下:&lt;/span&gt;&lt;/p&gt; &lt;p&gt;&lt;strong&gt;&lt;span style="color: rgb(0, 128, 0);"&gt;orcl&lt;/span&gt;&lt;/strong&gt; =&lt;br /&gt;(DESCRIPTION =&lt;br /&gt;(ADDRESS_LIST =&lt;br /&gt;(ADDRESS = (PROTOCOL = TCP)(HOST = &lt;span style="color: rgb(128, 0, 0);"&gt;xxx.xxx.xxx.xxx&lt;/span&gt;)(PORT = 1521))&lt;br /&gt;)&lt;br /&gt;(CONNECT_DATA =&lt;br /&gt;(SERVER = DEDICATED)&lt;br /&gt;(SERVICE_NAME = &lt;strong&gt;&lt;span style="color: rgb(0, 128, 0);"&gt;orcl&lt;/span&gt;&lt;/strong&gt;.&lt;strong&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;localdomain&lt;/span&gt;&lt;/strong&gt;)&lt;br /&gt;)&lt;br /&gt;)&lt;/p&gt; &lt;p&gt;這樣就可以了.&lt;/p&gt; &lt;p&gt;這個問題的原因是因為client連線時server&lt;strong&gt;&lt;span style="color: rgb(255, 0, 255);"&gt;無法分辨真正要連線的SID Name&lt;/span&gt;&lt;/strong&gt;(Service Name)所造成的。&lt;/p&gt; &lt;p&gt;原文出處:&lt;/p&gt; &lt;p&gt;http://tw.myblog.yahoo.com/database995/article?mid=812&amp;amp;prev=813&amp;amp;next=-1&lt;/p&gt;</description><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total></item><item><title>開機時自動執行ORACLE11GR2</title><link>http://miracle-neatly.blogspot.com/2009/12/oracle11gr2.html</link><category>ORACLE</category><author>noreply@blogger.com (奇蹟戰士風之子)</author><pubDate>Fri, 11 Dec 2009 15:58:00 +0800</pubDate><guid isPermaLink="false">tag:blogger.com,1999:blog-7414721583570985383.post-6320025854027008028</guid><description>&lt;div class="postentry"&gt;    &lt;div class="snap_preview"&gt;&lt;p&gt;1. 建立一個稱為oracledb的Shell Script，讓開機的時候自動執行它&lt;/p&gt; &lt;p&gt;[root@localhost bin]# pwd&lt;br /&gt;/u01/app/oracle/product/11.2.0/dbhome_1/bin&lt;br /&gt;[root@localhost bin]$ vi oracledb&lt;/p&gt; &lt;p&gt;2.檔案內容如下:&lt;/p&gt; &lt;p&gt;#!/bin/bash&lt;br /&gt;export JAVA_HOME=/opt/jdk1.6.0_17&lt;br /&gt;export ORACLE_BASE=/u01/app/oracle&lt;br /&gt;export ORACLE_HOME=$ORACLE_BASE/product/11.2.0/dbhome_1&lt;/p&gt; &lt;p&gt;(筆者: ORACLE_HOME 應改用&lt;span style="color: rgb(255, 0, 0);"&gt;絕對路徑&lt;/span&gt;, 用變數表是似乎不會正確執行SCRIPT)&lt;/p&gt; &lt;p&gt;export ORACLE_SID=orcl&lt;br /&gt;export ORACLE_TERM=xterm&lt;br /&gt;export TNS_ADMIN=$ORACLE_HOME/network/admin&lt;br /&gt;export ORACLE_OWNR=oracle&lt;/p&gt; &lt;p&gt;#NLS_LANG=”TRADITIONAL CHINESE_TAIWAN”.ZHT16BIG5;export NLS_LANG&lt;br /&gt;export NLS_LANG&lt;br /&gt;#LC_CTYPE=zh_TW.Big5; export LC_CTYPE&lt;br /&gt;export LC_CTYPE&lt;br /&gt;#LC_ALL=zh_TW.UTF8; export LC_ALL&lt;br /&gt;export LC_ALL&lt;br /&gt;#LANG=zh_TW.Big5; export LANG&lt;br /&gt;export LANG&lt;/p&gt; &lt;p&gt;export LD_LIBRARY_PATH=$ORACLE_HOME/lib:/lib:/usr/lib&lt;br /&gt;export PATH=$JAVA_HOME/bin:$ORACLE_HOME/bin:$PATH:$HOME/bin&lt;/p&gt; &lt;p&gt;if [ ! -f $ORACLE_HOME/bin/dbstart -o ! -d $ORACLE_HOME ]&lt;br /&gt;then&lt;/p&gt; &lt;p&gt;echo “Oracle startup: cannot start”&lt;br /&gt;exit 1&lt;br /&gt;fi&lt;/p&gt; &lt;p&gt;case “$1″ in&lt;br /&gt;start)&lt;br /&gt;# Oracle listener and instance startup&lt;br /&gt;echo -n “Starting Oracle: “&lt;br /&gt;su $ORACLE_OWNR -c “$ORACLE_HOME/bin/lsnrctl start”&lt;br /&gt;su $ORACLE_OWNR -c “$ORACLE_HOME/bin/dbstart $ORACLE_HOME”&lt;br /&gt;su $ORACLE_OWNR -c “$ORACLE_HOME/bin/emctl start dbconsole”&lt;/p&gt; &lt;p&gt;su oracle -c “/u01/app/oracle/product/11.2.0/dbhome_1/bin/emctl start dbconsole”&lt;/p&gt; &lt;p&gt;touch /var/lock/oracle&lt;br /&gt;echo “OK”&lt;br /&gt;;;&lt;br /&gt;stop)&lt;br /&gt;# Oracle listener and instance shutdown&lt;/p&gt; &lt;p&gt;echo -n “Shutdown Oracle: “&lt;br /&gt;su $ORACLE_OWNR -c “$ORACLE_HOME/bin/lsnrctl stop”&lt;br /&gt;su $ORACLE_OWNR -c “$ORACLE_HOME/bin/dbshut $ORACLE_HOME”&lt;br /&gt;su $ORACLE_OWNR -c “$ORACLE_HOME/bin/emctl stop dbconsole”&lt;br /&gt;rm -f /var/lock/oracle&lt;br /&gt;echo “OK”&lt;br /&gt;;;&lt;br /&gt;reload|restart)&lt;br /&gt;$0 stop&lt;br /&gt;$0 start&lt;br /&gt;;;&lt;br /&gt;*)&lt;br /&gt;echo “Usage: `basename $0` start|stop|restart|reload”&lt;br /&gt;exit 1&lt;br /&gt;esac&lt;/p&gt; &lt;p&gt;exit 0&lt;/p&gt; &lt;p&gt;3.執行這程式&lt;/p&gt; &lt;p&gt;[root@localhost bin]# ./oracledb start&lt;br /&gt;(如果執行不成功, 請檢查設置路徑地方是否正確)&lt;/p&gt; &lt;p&gt;4.看一下記憶體中oracle相關程序&lt;/p&gt; &lt;p&gt;[root@oracle db_1]# ps aux | grep oracle&lt;/p&gt; &lt;p&gt;5.編輯開機自動執行設定檔/etc/rc.local&lt;/p&gt; &lt;p&gt;root@lu-desktop:~# vi   /etc/rc.local&lt;/p&gt; &lt;p&gt;加入一行&lt;/p&gt; &lt;p&gt;/u01/app/oracle/product/11.2.0/dbhome_1/bin/oracledb  start&lt;/p&gt; &lt;p&gt;然後重新啟動 (在全藍色畫面會花些時間)&lt;/p&gt; &lt;div&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;編輯 /etc/oratab,&lt;/span&gt;&lt;/div&gt; &lt;div&gt;將     orcl:/u01/app/oracle/product/11.2.0/dbhome_1:N&lt;br /&gt;改成 orcl:/u01/app/oracle/product/11.2.0/dbhome_1:&lt;span style="color: rgb(255, 0, 0);"&gt;Y&lt;/span&gt;&lt;/div&gt; &lt;div&gt;(改成&lt;span style="color: rgb(255, 0, 0);"&gt;Y&lt;/span&gt;)&lt;/div&gt; &lt;div&gt;&lt;strong&gt;代碼:&lt;/strong&gt;&lt;/div&gt; &lt;div&gt;root@lu-desktop:~# reboot&lt;/div&gt; &lt;p&gt;再用ps aux | grep oracle檢查&lt;/p&gt; &lt;div&gt;&lt;strong&gt;代碼:&lt;/strong&gt;&lt;/div&gt; &lt;div&gt;[root@oracle db_1]# ps aux  |  grep oracle&lt;/div&gt; &lt;p&gt;如果有出現類似下面的訊息，表示emctl仍在啟動中 ，請再等等&lt;/p&gt; &lt;div&gt;&lt;strong&gt;代碼:&lt;/strong&gt;&lt;/div&gt; &lt;div&gt;root      5688  0.3  0.1   4888  1232 ?        S    09:49   0:00 su oracle -c /u01/app/oracle/product/11.1.0/db_1/bin/emctl start dbconsole&lt;br /&gt;oracle    5689 11.3  0.1   4484  1224 ?        Ss   09:49   0:00 /bin/sh -f /u01/app/oracle/product/11.1.0/db_1/bin/emctl start dbconsole&lt;br /&gt;oracle    6101  0.0  0.2   6072  2396 ?        R    09:49   0:00 /u01/app/oracle/product/11.1.0/db_1/perl/bin/perl /u01/app/oracle/product/11.1.0/db_1/bin/emctl.pl start dbconsole&lt;/div&gt; &lt;p&gt;確認啟動完成後，再用瀏覽器連到 Oracle 的管理介面看看&lt;/p&gt; &lt;div&gt;&lt;strong&gt;代碼:&lt;/strong&gt;&lt;/div&gt; &lt;p&gt;[root@oracle db_1]# firefox  https://localhost:1158/em  &amp;amp;&lt;/p&gt; &lt;/div&gt;      &lt;/div&gt;</description><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total></item><item><title>停止oracle服務-簡易流程</title><link>http://miracle-neatly.blogspot.com/2009/12/oracle_11.html</link><category>ORACLE</category><author>noreply@blogger.com (奇蹟戰士風之子)</author><pubDate>Fri, 11 Dec 2009 15:56:00 +0800</pubDate><guid isPermaLink="false">tag:blogger.com,1999:blog-7414721583570985383.post-1986463568872207483</guid><description>&lt;div class="postentry"&gt;          &lt;div class="snap_preview"&gt;&lt;p&gt;Stopping Oracle Services&lt;/p&gt; &lt;p&gt;● Stop isqlplusctl&lt;/p&gt; &lt;p&gt;oracle&gt;&lt;span style="color: rgb(0, 128, 0);"&gt; isqlplusctl stop&lt;/span&gt;&lt;/p&gt; &lt;p&gt;在11gR2&lt;/p&gt; &lt;p&gt;it is deprecated……囧&gt;&lt;/p&gt; &lt;p&gt;● Stop EM&lt;/p&gt; &lt;p&gt;oracle&gt; &lt;span style="color: rgb(255, 0, 0);"&gt;emctl stop dbconsole&lt;/span&gt;&lt;/p&gt; &lt;p&gt;● Stop Database&lt;/p&gt; &lt;p&gt;oracle&gt; &lt;span style="color: rgb(255, 0, 0);"&gt;sqlplus -S /nolog &lt;&lt; ENDSQL&lt;br /&gt;connect / as sysdba&lt;br /&gt;shutdown immediate&lt;br /&gt;exit&lt;br /&gt;ENDSQL&lt;/span&gt;&lt;/p&gt; &lt;p&gt;● Stop Listener&lt;br /&gt;oracle&gt;&lt;span style="color: rgb(255, 0, 0);"&gt; lsnrctl stop&lt;/span&gt;&lt;/p&gt; &lt;/div&gt;        &lt;/div&gt;</description><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total></item><item><title>開啟oracle服務-簡易流程</title><link>http://miracle-neatly.blogspot.com/2009/12/oracle.html</link><category>ORACLE</category><author>noreply@blogger.com (奇蹟戰士風之子)</author><pubDate>Fri, 11 Dec 2009 15:55:00 +0800</pubDate><guid isPermaLink="false">tag:blogger.com,1999:blog-7414721583570985383.post-2078219948059440955</guid><description>&lt;div class="postentry"&gt;    &lt;div class="snap_preview"&gt;&lt;p&gt;Starting Oracle Services&lt;/p&gt; &lt;p&gt;● Start Listener&lt;/p&gt; &lt;p&gt;oracle&gt; &lt;span style="color: rgb(255, 0, 0);"&gt;lsnrctl start&lt;/span&gt;&lt;/p&gt; &lt;p&gt;● Start Database&lt;/p&gt; &lt;p&gt;oracle&gt; &lt; span style="color: rgb(255, 0, 0);" &gt;sqlplus -S /nolog &lt;&lt; ENDSQL&lt;br /&gt;connect / as sysdba&lt;br /&gt;startup&lt;br /&gt;exit&lt;br /&gt;ENDSQL &lt; /span&gt;&lt;/p&gt; &lt;p&gt;● Start EM(Enterprise Manager)&lt;/p&gt; &lt;p&gt;oracle&gt; &lt;span style="color: rgb(255, 0, 0);"&gt;emctl start dbconsole&lt;/span&gt;&lt;/p&gt; &lt;p&gt;● Start isqlplusctl&lt;/p&gt; &lt;p&gt;oracle&gt; &lt;span style="color: rgb(128, 128, 0);"&gt;isqlplusctl start&lt;/span&gt;&lt;/p&gt; &lt;p&gt;在11gR2&lt;/p&gt; &lt;p&gt;it is &lt;span style="color: rgb(255, 0, 0);"&gt;deprecated&lt;/span&gt;……囧&gt;&lt;/p&gt; &lt;p&gt;出處: http://forums.oracle.com/forums/thread.jspa?messageID=3877207&amp;amp;tstart=0&lt;/p&gt; &lt;/div&gt;      &lt;/div&gt;</description><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total></item><item><title>oc4j-configuration-issue</title><link>http://miracle-neatly.blogspot.com/2009/12/oc4j-configuration-issue.html</link><category>ORACLE</category><author>noreply@blogger.com (奇蹟戰士風之子)</author><pubDate>Fri, 11 Dec 2009 15:54:00 +0800</pubDate><guid isPermaLink="false">tag:blogger.com,1999:blog-7414721583570985383.post-8471630579777942036</guid><description>&lt;div class="postentry"&gt;    &lt;div class="snap_preview"&gt;&lt;p&gt;先決條件: 注意我的主機名稱是localhost.localdomain&lt;/p&gt; &lt;p&gt;當測試 emctl (Enterprise Manager Control是Oracle的Web管理介面)&lt;/p&gt; &lt;div&gt;出現以下的訊息時….&lt;/div&gt; &lt;div&gt;&lt;strong&gt;代碼:&lt;/strong&gt;&lt;/div&gt; &lt;p&gt;[oracle@oracle ~]$ emctl  start  dbconsole&lt;br /&gt;OC4J Configuration issue. /u01/app/oracle/product/11.1.0/db_1/oc4j/j2ee/OC4J_DBConsole_oracle_ORCL not found.&lt;/p&gt; &lt;p&gt;發現無法啟動….Q__Q , 解決方法如下&lt;/p&gt; &lt;p&gt;[oracle@localhost j2ee]$ pwd&lt;br /&gt;/u01/app/oracle/product/11.2.0/dbhome_1/oc4j/j2ee&lt;/p&gt; &lt;p&gt;[oracle@localhost j2ee]$ cp -rf OC4J_DBConsole_localhost_orcl OC4J_DBConsole_loc                                                        alhost.localdomain_orcl&lt;/p&gt; &lt;p&gt;對!主要就是新增一個檔案…讓oracle使用,再開一次, 發現&lt;/p&gt; &lt;p&gt;EM Configuration issue. /u01/app/oracle/product/11.2.0/dbhome_1/localhost.locald&lt;/p&gt; &lt;p&gt;方法類似, 解法如下:&lt;/p&gt; &lt;p&gt;[oracle@localhost dbhome_1]$ pwd&lt;br /&gt;/u01/app/oracle/product/11.2.0/dbhome_1&lt;br /&gt;[oracle@localhost dbhome_1]$ cp -rf localhost_orcl localhost.localdomain_orcl&lt;/p&gt; &lt;/div&gt;      &lt;/div&gt;</description><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total></item><item><title>在CENTOS5.4安裝ORACLE11GR2</title><link>http://miracle-neatly.blogspot.com/2009/12/centos54oracle11gr2.html</link><category>ORACLE</category><author>noreply@blogger.com (奇蹟戰士風之子)</author><pubDate>Fri, 11 Dec 2009 15:53:00 +0800</pubDate><guid isPermaLink="false">tag:blogger.com,1999:blog-7414721583570985383.post-1627033163487459149</guid><description>&lt;p&gt;本篇主要是參照以下兩篇文章與其他網路文章加以修改而成:&lt;/p&gt; &lt;p&gt;http://forum.icst.org.tw/phpbb/viewtopic.php?f=21&amp;amp;t=16411&amp;amp;start=0&amp;amp;sid=866700eee479d130d126967c3160e7f4&lt;/p&gt; &lt;p&gt;http://www.oracle.com/technology/pub/articles/smiley-11gr1-install.html&lt;/p&gt; &lt;p&gt;1. 先裝好CentOS5.4&lt;/p&gt; &lt;p style="padding-left: 30px;"&gt;注意:&lt;/p&gt; &lt;p style="padding-left: 30px;"&gt;A.記得裝好後要先關閉SELinux&lt;/p&gt; &lt;p style="padding-left: 30px;"&gt;B. oracle 需要有1G以上的實體記憶體(VM中建議1100MB)&lt;/p&gt; &lt;p style="padding-left: 30px;"&gt;C. 建議2GB(或2倍以上的實體記憶體)的SWAP空間&lt;/p&gt; &lt;p style="padding-left: 30px;"&gt;D.安裝必須套件 (這全部是同一行)&lt;/p&gt; &lt;p style="padding-left: 30px;"&gt;[root@oracle ~]# yum  -y  install  binutils  compat-libstdc++-33  elfutils-libelf  elfutils-libelf-devel  gcc  gcc-c++  glibc  glibc-common  glibc-devel  glibc-headers  libaio  libaio-devel  libgcc  libstdc++  libstdc++-devel  make  sysstat  unixODBC  unixODBC-devel&lt;/p&gt; &lt;p style="padding-left: 30px;"&gt;以及&lt;/p&gt; &lt;p style="padding-left: 30px;"&gt;[root@oracle ~]#yum install pdksh-5.2.14&lt;/p&gt; &lt;p style="padding-left: 30px;"&gt;E.由於考量日後還要繼續新增ORACLE的database大小&lt;/p&gt; &lt;p style="padding-left: 30px;"&gt;所以建議主硬碟為10G + 2G的SWAP +1G實體記憶體(建議是1100MB)&lt;/p&gt; &lt;p style="padding-left: 30px;"&gt;用VM時,假設掛載上的硬碟為/dev/sdb , 掛載目錄設為 /u01&lt;/p&gt; &lt;p style="padding-left: 30px;"&gt;掛載方法請參照筆者網誌上的另一篇文章.&lt;/p&gt; &lt;p style="padding-left: 30px;"&gt;F.建立oracle帳戶, 使用第二步驟建立, 此帳戶將用來開啟與管理ORACLE所有設定(不一定要給予ROOT權限)&lt;/p&gt; &lt;p style="padding-left: 30px;"&gt;G.下載下來的oracle安裝檔,必須解壓縮在同一目錄, 如:&lt;/p&gt; &lt;p style="padding-left: 30px;"&gt;unzip linux_11gR2_database_1of2.zip&lt;br /&gt;unzip linux_11gR2_database_2of2.zip&lt;br /&gt;cd database&lt;br /&gt;./runInstall&lt;/p&gt; &lt;p&gt;2.用root執行&lt;/p&gt; &lt;p style="padding-left: 30px;"&gt;# groupadd oinstall (建立oinstall 群組,安裝程序那邊會用到)&lt;br /&gt;# groupadd dba (建立dba群組,安裝程序那邊會用到)&lt;/p&gt; &lt;p style="padding-left: 30px;"&gt;# useradd -g oinstall -G dba oracle&lt;br /&gt;# passwd oracle&lt;/p&gt; &lt;p style="padding-left: 30px;"&gt;# mkdir -p /u01/app/oracle/product/&lt;/p&gt; &lt;p style="padding-left: 30px;"&gt;為了使以上的設定變更到另一磁碟, ex: /dev/sdb, 請先將/dev/sdb掛載成/u01&lt;/p&gt; &lt;p style="padding-left: 30px;"&gt;&lt;span style="text-decoration: line-through;"&gt;# chown oracle:oinstall /u01/app/oracle  (之後軟體安裝的路徑)&lt;/span&gt;&lt;/p&gt; &lt;p style="padding-left: 30px;"&gt;&lt;span style="text-decoration: line-through;"&gt;#&lt;/span&gt;mkdir  -p  /u01/app/oracle/product/&lt;/p&gt; &lt;p style="padding-left: 30px;"&gt;#&lt;span style="color: rgb(255, 0, 0);"&gt;chmod  -R  775  /u01&lt;/span&gt;&lt;/p&gt; &lt;p style="padding-left: 30px;"&gt;把/u01給oracle使用&lt;/p&gt; &lt;p style="padding-left: 30px;"&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;#chown  -R  oracle:oinstall  /u01&lt;/span&gt;&lt;/p&gt; &lt;p style="padding-left: 30px;"&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;(這段要執行, 不然之後安裝程序要回來改權限)&lt;br /&gt;&lt;/span&gt;&lt;/p&gt; &lt;p&gt;3. 改用oracle登入, 這邊是希望之後以oracle就執行與管理這項服務, 不要被其他帳戶混淆.(盡可能由單一用戶執行單一服務, 也盡量不要用root開啟服務)&lt;/p&gt; &lt;p&gt;並改寫oracle 的  .bash_profile 部分如下&lt;/p&gt; &lt;p style="padding-left: 30px;"&gt;export JAVA_HOME=/opt/jdk1.6.0_17&lt;br /&gt;export ORACLE_BASE=/u01/app/oracle&lt;br /&gt;export ORACLE_SID=orcl&lt;br /&gt;export ORACLE_HOME=$ORACLE_BASE/product/11.2.0/dbhome_1&lt;br /&gt;export ORACLE_TERM=xterm&lt;br /&gt;export TNS_ADMIN=$ORACLE_HOME/network/admin&lt;br /&gt;#NLS_LANG=”TRADITIONAL CHINESE_TAIWAN”.ZHT16BIG5;export NLS_LANG&lt;br /&gt;export NLS_LANG&lt;br /&gt;#LC_CTYPE=zh_TW.Big5; export LC_CTYPE&lt;br /&gt;export LC_CTYPE&lt;br /&gt;#LC_ALL=zh_TW.UTF8; export LC_ALL&lt;br /&gt;export LC_ALL&lt;br /&gt;#LANG=zh_TW.Big5; export LANG&lt;br /&gt;export LANG&lt;br /&gt;export LD_LIBRARY_PATH=$ORACLE_HOME/lib:/lib:/usr/lib&lt;br /&gt;export PATH=$JAVA_HOME/bin:$ORACLE_HOME/bin:$PATH:$HOME/bin&lt;/p&gt; &lt;p&gt;4.用root修改下面參數:&lt;/p&gt; &lt;p style="padding-left: 30px;"&gt;&lt;span style="color: rgb(0, 128, 0);"&gt;修改核心參數：&lt;/span&gt;&lt;/p&gt; &lt;p style="padding-left: 30px;"&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;Add the following lines to  /etc/sysctl.conf&lt;/span&gt;&lt;/p&gt; &lt;p style="padding-left: 30px;"&gt;32位元的設定&lt;/p&gt; &lt;p style="padding-left: 30px;"&gt;rnel.shmall=2097152&lt;br /&gt;kernel.shmmax=552599552——half the size of physical memory(一半的記憶體, 以1gRAM來說, 會是552599552 )&lt;br /&gt;kernel.shmmni=4096&lt;br /&gt;kernel.sem=250 32000 100 128&lt;br /&gt;net.core.rmem_default = 262144&lt;br /&gt;net.core.wmem_default = 262144&lt;br /&gt;fs.file-max = 6815744&lt;br /&gt;net.core.rmem_max = 4194304&lt;br /&gt;net.core.wmem_max = 1048576&lt;br /&gt;fs.aio-max-nr = 1048576&lt;br /&gt;net.ipv4.ip_local_port_range = 9000 65500&lt;/p&gt; &lt;p style="padding-left: 30px;"&gt;64位元的&lt;/p&gt; &lt;p style="padding-left: 30px;"&gt;kernel.shmall=2097152&lt;br /&gt;kernel.shmmax=552599552&lt;br /&gt;kernel.shmmni=4096&lt;br /&gt;kernel.sem=250 32000 100 128&lt;br /&gt;net.core.rmem_default = 262144&lt;br /&gt;net.core.wmem_default = 262144&lt;br /&gt;fs.file-max = 6815744&lt;br /&gt;net.core.rmem_max = 4194304&lt;br /&gt;net.core.wmem_max = 1048576&lt;br /&gt;fs.aio-max-nr = 1048576&lt;br /&gt;net.ipv4.ip_local_port_range = 9000 65500&lt;/p&gt; &lt;p style="padding-left: 30px;"&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;讓設定生效, 改完核心參數之後, 一定要執行, 使設定生效!!!!&lt;br /&gt;&lt;/span&gt;&lt;/p&gt; &lt;p style="padding-left: 30px;"&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;[root@oracle ~]# /sbin/sysctl  –p&lt;/span&gt;&lt;/p&gt; &lt;p style="padding-left: 30px;"&gt;&lt;span style="color: rgb(0, 128, 0);"&gt;為oracle用戶設置Shell限制,&lt;/span&gt;&lt;/p&gt; &lt;p style="padding-left: 30px;"&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;Add the following lines to /etc/security/limits.conf&lt;/span&gt;&lt;/p&gt; &lt;p style="padding-left: 30px;"&gt;oracle soft nproc 2047&lt;br /&gt;oracle hard nproc 16384&lt;br /&gt;oracle soft nofile 1024&lt;br /&gt;oracle hard nofile 65536&lt;/p&gt; &lt;p style="padding-left: 30px;"&gt;&lt;span style="color: rgb(0, 128, 0);"&gt;修改/etc/pam.d/login&lt;/span&gt;&lt;/p&gt; &lt;p style="padding-left: 30px;"&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;Add the following lines to /etc/pam.d/login&lt;/span&gt;&lt;/p&gt; &lt;p style="padding-left: 30px;"&gt;session required pam_limits.so&lt;/p&gt; &lt;p style="padding-left: 30px;"&gt;&lt;span style="color: rgb(0, 128, 0);"&gt;如果使用bash Shell，修改/etc/profile&lt;/span&gt;&lt;/p&gt; &lt;p style="padding-left: 30px;"&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;Add the following lines to /etc/profile&lt;/span&gt;&lt;/p&gt; &lt;p style="padding-left: 30px;"&gt;if [ \$USER = "oracle" ]; then&lt;br /&gt;if [ \$SHELL = "/bin/ksh" ]; then&lt;br /&gt;ulimit -p 16384&lt;br /&gt;ulimit -n 65536&lt;br /&gt;else&lt;br /&gt;ulimit -u 16384 -n 65536&lt;br /&gt;fi&lt;br /&gt;umask 022&lt;br /&gt;fi&lt;/p&gt; &lt;p&gt;5. 進入解壓縮後產生的database資料夾, 執行:&lt;/p&gt; &lt;p&gt;[oracle@oracle database]$ ./runInstaller&lt;/p&gt; &lt;p&gt;6.依照以下步驟開始安裝:&lt;/p&gt; &lt;p&gt;Step1:&lt;/p&gt; &lt;p&gt;&lt;a href="http://neatly0607.files.wordpress.com/2009/12/step1.png"&gt;&lt;img class="alignnone size-medium wp-image-226" title="step1" src="http://neatly0607.files.wordpress.com/2009/12/step1.png?w=300&amp;amp;h=225" alt="" height="225" width="300" /&gt;&lt;/a&gt;&lt;/p&gt; &lt;p&gt;Step2:&lt;/p&gt; &lt;p&gt;&lt;a href="http://neatly0607.files.wordpress.com/2009/12/step2.png"&gt;&lt;img class="alignnone size-medium wp-image-226" title="step2" src="http://neatly0607.files.wordpress.com/2009/12/step2.png?w=300&amp;amp;h=225" alt="" height="225" width="300" /&gt;&lt;/a&gt;&lt;/p&gt; &lt;p&gt;Step3:&lt;/p&gt; &lt;p&gt;&lt;a href="http://neatly0607.files.wordpress.com/2009/12/step3.png"&gt;&lt;img class="alignnone size-medium wp-image-227" title="step3" src="http://neatly0607.files.wordpress.com/2009/12/step3.png?w=300&amp;amp;h=227" alt="" height="227" width="300" /&gt;&lt;/a&gt;&lt;/p&gt; &lt;p&gt;Step4a: 這邊會改設定!!!請看下一張圖&lt;/p&gt; &lt;p&gt;&lt;a href="http://neatly0607.files.wordpress.com/2009/12/step4a.png"&gt;&lt;img class="alignnone size-medium wp-image-228" title="step4a" src="http://neatly0607.files.wordpress.com/2009/12/step4a.png?w=300&amp;amp;h=225" alt="" height="225" width="300" /&gt;&lt;/a&gt;&lt;/p&gt; &lt;p&gt;Step4b:&lt;/p&gt; &lt;p&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;注意為了日後編碼問題, 使用ALU32UTF8字元集&lt;/span&gt;&lt;/p&gt; &lt;p&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;同時要注意,OSDBA群組為dba.&lt;/span&gt;&lt;/p&gt; &lt;p&gt;&lt;a href="http://neatly0607.files.wordpress.com/2009/12/step4b.png"&gt;&lt;img class="alignnone size-medium wp-image-229" title="step4b" src="http://neatly0607.files.wordpress.com/2009/12/step4b.png?w=300&amp;amp;h=225" alt="" height="225" width="300" /&gt;&lt;/a&gt;&lt;/p&gt; &lt;p&gt;Step5:&lt;/p&gt; &lt;p&gt;在步驟五中, 要注意&lt;span style="color: rgb(255, 0, 0);"&gt;oraInventory群組名稱為: oinstall&lt;/span&gt;&lt;/p&gt; &lt;p&gt;&lt;a href="http://neatly0607.files.wordpress.com/2009/12/step5.png"&gt;&lt;img class="alignnone size-medium wp-image-230" title="step5" src="http://neatly0607.files.wordpress.com/2009/12/step5.png?w=300&amp;amp;h=225" alt="" height="225" width="300" /&gt;&lt;/a&gt;&lt;/p&gt; &lt;p&gt;Step8a:&lt;/p&gt; &lt;p&gt;&lt;a href="http://neatly0607.files.wordpress.com/2009/12/step8a.png"&gt;&lt;img class="alignnone size-medium wp-image-231" title="step8a" src="http://neatly0607.files.wordpress.com/2009/12/step8a.png?w=300&amp;amp;h=220" alt="" height="220" width="300" /&gt;&lt;/a&gt;&lt;/p&gt; &lt;p&gt;Step8b:&lt;/p&gt; &lt;p&gt;&lt;a href="http://neatly0607.files.wordpress.com/2009/12/step8b.png"&gt;&lt;img class="alignnone size-medium wp-image-232" title="step8b" src="http://neatly0607.files.wordpress.com/2009/12/step8b.png?w=300&amp;amp;h=219" alt="" height="219" width="300" /&gt;&lt;/a&gt;&lt;/p&gt; &lt;p&gt;Step8c:&lt;/p&gt; &lt;p&gt;&lt;a href="http://neatly0607.files.wordpress.com/2009/12/step8c.png"&gt;&lt;img class="alignnone size-medium wp-image-233" title="step8c" src="http://neatly0607.files.wordpress.com/2009/12/step8c.png?w=300&amp;amp;h=204" alt="" height="204" width="300" /&gt;&lt;/a&gt;&lt;/p&gt; &lt;p&gt;Step9:&lt;/p&gt; &lt;p&gt;&lt;a href="http://neatly0607.files.wordpress.com/2009/12/step9.png"&gt;&lt;img class="alignnone size-medium wp-image-234" title="step9" src="http://neatly0607.files.wordpress.com/2009/12/step9.png?w=300&amp;amp;h=221" alt="" height="221" width="300" /&gt;&lt;/a&gt;&lt;/p&gt;</description><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total></item><item><title>在-oracle-中實作自動遞增欄位-oracle-auto_increment</title><link>http://miracle-neatly.blogspot.com/2009/12/oracle-oracle-autoincrement.html</link><category>ORACLE</category><author>noreply@blogger.com (奇蹟戰士風之子)</author><pubDate>Fri, 11 Dec 2009 15:52:00 +0800</pubDate><guid isPermaLink="false">tag:blogger.com,1999:blog-7414721583570985383.post-4690013120127523723</guid><description>&lt;div class="postentry"&gt;    &lt;div class="snap_preview"&gt;&lt;p&gt;在 MySQL 的資料庫中，有一種方便的欄位型態 AUTO_INCREMENT，有自動遞增的功能，多半使用於 ID 欄位，作為 PRIMARY KEY。類似自動遞增的功能，在 MSSQL 有 Identity，甚至連 MS Access 都有個 AutoNumber 都可以很方便的去宣告使用。&lt;/p&gt; &lt;p&gt;人沒有完美的，資料庫同樣也是。功能強大的 Oracle 卻沒有內建這樣方便的功能欄位，從我開始接觸 Oracle 以來，一直覺得遺憾與不解的，幾年下來，看起來原廠是沒去 implement 這樣的功能欄位的打算，是令人有些扼脕。但是，我們還是有機會用拼拼湊湊的方式，搞一個那樣子的欄位出來。&lt;/p&gt; &lt;p&gt;&lt;strong&gt;Step1. 建立 Table：&lt;/strong&gt;&lt;/p&gt; &lt;pre&gt;CREATE TABLE tbl (&lt;br /&gt; id  NUMBER PRIMARY KEY,&lt;br /&gt; val VARCHAR2(30)&lt;br /&gt;);&lt;br /&gt;&lt;strong&gt;&lt;br /&gt;Step2. 建立 Sequence：&lt;/strong&gt;&lt;br /&gt;&lt;div&gt;&lt;br /&gt;&lt;div&gt;&lt;br /&gt;&lt;div&gt;&lt;br /&gt;CREATE SEQUENCE tbl_id_seq;&lt;/div&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;完成這兩步，我們就已經有了 INCREMENT (遞增)的功能了！&lt;br /&gt;&lt;ol&gt;&lt;br /&gt;&lt;li&gt;-- 新增紀錄&lt;/li&gt;&lt;br /&gt;&lt;li&gt;INSERT INTO tbl (id, val) VALUES (tbl_id_seq.nextval, 'row1_value');&lt;/li&gt;&lt;br /&gt;&lt;li&gt;INSERT INTO tbl (id, val) VALUES (tbl_id_seq.nextval, 'row2_value');&lt;/li&gt;&lt;br /&gt;&lt;li&gt;-- 撈出資料&lt;/li&gt;&lt;br /&gt;&lt;li&gt;SELECT * FROM tbl;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;/**&lt;/li&gt;&lt;br /&gt;&lt;li&gt; 輸出結果為:&lt;/li&gt;&lt;br /&gt;&lt;li&gt; ID VAL&lt;/li&gt;&lt;br /&gt;&lt;li&gt;---------- ------------------------------&lt;/li&gt;&lt;br /&gt;&lt;li&gt; 1 row1_value&lt;/li&gt;&lt;br /&gt;&lt;li&gt; 2 row2_value&lt;/li&gt;&lt;br /&gt;&lt;li&gt; */&lt;/li&gt;&lt;br /&gt;&lt;/ol&gt;&lt;br /&gt;&lt;br /&gt;那，怎麼做到 AUTO (自動)呢？是的，就是用 Trigger！&lt;br /&gt;&lt;strong&gt;Step3. 建立 Trigger：&lt;br /&gt;&lt;/strong&gt;&lt;br /&gt;&lt;ol&gt;&lt;br /&gt;&lt;li&gt;CREATE OR REPLACE TRIGGER tbl_trg&lt;/li&gt;&lt;br /&gt;&lt;li&gt; BEFORE INSERT ON tbl&lt;/li&gt;&lt;br /&gt;&lt;li&gt; FOR EACH ROW&lt;/li&gt;&lt;br /&gt;&lt;li&gt; BEGIN&lt;/li&gt;&lt;br /&gt;&lt;li&gt; IF :new.id IS NULL THEN&lt;/li&gt;&lt;br /&gt;&lt;li&gt; SELECT tbl_id_seq.nextval INTO :new.id FROM dual;&lt;/li&gt;&lt;br /&gt;&lt;li&gt; END IF;&lt;/li&gt;&lt;br /&gt;&lt;li&gt; END;&lt;/li&gt;&lt;br /&gt;&lt;/ol&gt;&lt;br /&gt;&lt;br /&gt;這樣，AUTO_INCREMENT 都具備了，大功告成了！&lt;br /&gt;&lt;ol&gt;&lt;br /&gt;&lt;li&gt;-- 新增紀錄&lt;/li&gt;&lt;br /&gt;&lt;li&gt;INSERT INTO tbl (val) VALUES ('row3_value');&lt;/li&gt;&lt;br /&gt;&lt;li&gt;INSERT INTO tbl (id, val) VALUES (null, 'row4_value');&lt;/li&gt;&lt;br /&gt;&lt;li&gt;-- 撈出資料&lt;/li&gt;&lt;br /&gt;&lt;li&gt;SELECT * FROM tbl;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;/**&lt;/li&gt;&lt;br /&gt;&lt;li&gt; 輸出結果為:&lt;/li&gt;&lt;br /&gt;&lt;li&gt; ID VAL&lt;/li&gt;&lt;br /&gt;&lt;li&gt;---------- ------------------------------&lt;/li&gt;&lt;br /&gt;&lt;li&gt; 1 row1_value&lt;/li&gt;&lt;br /&gt;&lt;li&gt; 2 row2_value&lt;/li&gt;&lt;br /&gt;&lt;li&gt; 3 row3_value&lt;/li&gt;&lt;br /&gt;&lt;li&gt; 4 row4_value&lt;/li&gt;&lt;br /&gt;&lt;li&gt; */&lt;/li&gt;&lt;br /&gt;&lt;/ol&gt;&lt;br /&gt;&lt;br /&gt;但是，如果就這樣結束，那本篇介紹的，不過是台兩光的三輪拼裝車。&lt;br /&gt;&lt;br /&gt;這種欄位，有極大機率 在實作情況下，需要即時取回剛剛新增那筆紀錄的 id 資料。在 MySQL 中有個 LAST_INSERT_ID() 來取得同一個連線 Session 中 AUTO_INCREMENT 所得到的 ID。那 Oracle 怎麼實作這功能？直接跟 Sequence 要它當時的值？如果在多人存取的環境下，這樣的做法能保證跟 Sequence 要到的那個數字，是你的還是後面又有人塞資料時候拿到的！？&lt;br /&gt;&lt;br /&gt;INSERT ... RETURNING ... 是我們要的解答：&lt;br /&gt;&lt;ol&gt;&lt;br /&gt;&lt;li&gt;DECLARE&lt;/li&gt;&lt;br /&gt;&lt;li&gt; i NUMBER;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;BEGIN&lt;/li&gt;&lt;br /&gt;&lt;li&gt; INSERT INTO tbl (val) VALUES ('row5_value') RETURNING id INTO i;&lt;/li&gt;&lt;br /&gt;&lt;li&gt; DBMS_OUTPUT.put_line('id : ' || i);&lt;/li&gt;&lt;br /&gt;&lt;li&gt; FOR rec IN (SELECT id, val FROM tbl)&lt;/li&gt;&lt;br /&gt;&lt;li&gt; LOOP&lt;/li&gt;&lt;br /&gt;&lt;li&gt; DBMS_OUTPUT.put_line('rec.id = '  || rec.id ||&lt;/li&gt;&lt;br /&gt;&lt;li&gt; '; rec.val = ' || rec.val);&lt;/li&gt;&lt;br /&gt;&lt;li&gt; END LOOP;&lt;/li&gt;&lt;br /&gt;&lt;li&gt; /**&lt;/li&gt;&lt;br /&gt;&lt;li&gt; 輸出結果為:&lt;/li&gt;&lt;br /&gt;&lt;li&gt; id : 5&lt;/li&gt;&lt;br /&gt;&lt;li&gt; rec.id = 1; rec.val = row1_value&lt;/li&gt;&lt;br /&gt;&lt;li&gt; rec.id = 2; rec.val = row2_value&lt;/li&gt;&lt;br /&gt;&lt;li&gt; rec.id = 3; rec.val = row3_value&lt;/li&gt;&lt;br /&gt;&lt;li&gt; rec.id = 4; rec.val = row4_value&lt;/li&gt;&lt;br /&gt;&lt;li&gt; rec.id = 5; rec.val = row5_value&lt;/li&gt;&lt;br /&gt;&lt;li&gt; */&lt;/li&gt;&lt;br /&gt;&lt;li&gt; INSERT INTO tbl (id, val) VALUES (NULL, 'row6_value') RETURNING id INTO i;&lt;/li&gt;&lt;br /&gt;&lt;li&gt; DBMS_OUTPUT.put_line('id : ' || i);&lt;/li&gt;&lt;br /&gt;&lt;li&gt; FOR rec IN (SELECT id, val FROM tbl)&lt;/li&gt;&lt;br /&gt;&lt;li&gt; LOOP&lt;/li&gt;&lt;br /&gt;&lt;li&gt; DBMS_OUTPUT.put_line('rec.id = '  || rec.id ||&lt;/li&gt;&lt;br /&gt;&lt;li&gt; '; rec.val = ' || rec.val);&lt;/li&gt;&lt;br /&gt;&lt;li&gt; END LOOP;&lt;/li&gt;&lt;br /&gt;&lt;li&gt; /**&lt;/li&gt;&lt;br /&gt;&lt;li&gt; 輸出結果為:&lt;/li&gt;&lt;br /&gt;&lt;li&gt; id : 6&lt;/li&gt;&lt;br /&gt;&lt;li&gt; rec.id = 1; rec.val = row1_value&lt;/li&gt;&lt;br /&gt;&lt;li&gt; rec.id = 2; rec.val = row2_value&lt;/li&gt;&lt;br /&gt;&lt;li&gt; rec.id = 3; rec.val = row3_value&lt;/li&gt;&lt;br /&gt;&lt;li&gt; rec.id = 4; rec.val = row4_value&lt;/li&gt;&lt;br /&gt;&lt;li&gt; rec.id = 5; rec.val = row5_value&lt;/li&gt;&lt;br /&gt;&lt;li&gt; rec.id = 6; rec.val = row6_value&lt;/li&gt;&lt;br /&gt;&lt;li&gt; */&lt;/li&gt;&lt;br /&gt;&lt;li&gt;END;&lt;/li&gt;&lt;br /&gt;&lt;/ol&gt;&lt;br /&gt;&lt;br /&gt;這做法雖然是輛拼裝車的，但是還不是太難使，倒也堪用。&lt;br /&gt;不過，如果有機會能官方內建，總比建這建那拼拼湊湊的好！&lt;br /&gt;難道，像人生一樣，就是要有那麼點遺憾，才是人生嗎？XD&lt;br /&gt;&lt;br /&gt;原文出處:&lt;br /&gt;&lt;br /&gt;http://abu.tw/2008/06/oracle-autoincrement.html&lt;/pre&gt; &lt;/div&gt;      &lt;/div&gt;</description><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total></item><item><title>oracle-xe物理備份</title><link>http://miracle-neatly.blogspot.com/2009/12/oracle-xe_11.html</link><category>ORACLE</category><author>noreply@blogger.com (奇蹟戰士風之子)</author><pubDate>Fri, 11 Dec 2009 15:51:00 +0800</pubDate><guid isPermaLink="false">tag:blogger.com,1999:blog-7414721583570985383.post-3027581984948733702</guid><description>&lt;div class="postentry"&gt;    &lt;div class="snap_preview"&gt;&lt;p&gt;昨晚因為字元集不相符的關係, 無法從舊資料庫轉移到新的資料庫,&lt;/p&gt; &lt;p&gt;簡單的說呢, 就是有執行 imp指令, 但卻無法真正匯入.&lt;/p&gt; &lt;p&gt;推測應該是oracle內部轉換字元集那邊出了問題, &lt;span style="color: rgb(255, 0, 255);"&gt;以後有時間再回來研究&lt;/span&gt;.&lt;/p&gt; &lt;p&gt;靈機一動, 上網查了oracle 的物理備份.&lt;/p&gt; &lt;p&gt;雖然這不是很好的解法(畢竟我還是沒弄懂字元集那邊的問題),&lt;/p&gt; &lt;p&gt;但至少可以把oracle的備份, 弄得像mysql 的備份機制吧!&lt;/p&gt; &lt;p&gt;假設要備份的主機為A,  目標主機為B, 我們就是要&lt;span style="color: rgb(255, 0, 255);"&gt;把A機器上的資料, 轉移到B機器上.&lt;/span&gt;&lt;/p&gt; &lt;p&gt;&lt;span style="color: rgb(128, 0, 0);"&gt;在A機器上:&lt;/span&gt;&lt;/p&gt; &lt;p&gt;1. 先尋找datafile位置&lt;/p&gt; &lt;p style="padding-left: 30px;"&gt;SQL&gt; &lt;span style="color: rgb(255, 0, 255);"&gt;select name from v$datafile;&lt;/span&gt;&lt;br /&gt;(那句select語法，把你的資料庫檔案放那裡給指出來了。)&lt;br /&gt;NAME&lt;br /&gt;——————————————————————————–&lt;br /&gt;/u02/db/NICE/system01.dbf&lt;br /&gt;/u02/db/NICE/UNDOTBS1.dbf&lt;br /&gt;/u02/db/NICE/sysaux01.dbf&lt;br /&gt;/u02/db/NICE/users01.dbf&lt;br /&gt;/u02/db/NICE/ZGT.dbf&lt;br /&gt;/u02/db/NICE/ZGTIDX.dbf&lt;br /&gt;/u02/db/NICE/EIP.dbf&lt;/p&gt; &lt;p style="padding-left: 30px;"&gt;7 rows selected.&lt;/p&gt; &lt;p&gt;2. 尋找 controlfile 位置&lt;/p&gt; &lt;p style="padding-left: 30px;"&gt;&lt;span style="color: rgb(255, 0, 255);"&gt;SQL&gt; select name from v$controlfile;&lt;/span&gt;&lt;/p&gt; &lt;p style="padding-left: 30px;"&gt;NAME&lt;br /&gt;——————————————————————————–&lt;br /&gt;/u02/db/NICE/control01.ctl&lt;br /&gt;/u02/db/NICE/control02.ctl&lt;br /&gt;/u02/db/NICE/control03.ctl&lt;/p&gt; &lt;p&gt;3. 尋找logfile 位置&lt;/p&gt; &lt;p style="padding-left: 30px;"&gt;SQL&gt; &lt;span style="color: rgb(255, 0, 255);"&gt;select member from v$logfile;&lt;/span&gt;&lt;/p&gt; &lt;p style="padding-left: 30px;"&gt;MEMBER&lt;br /&gt;——————————————————————————–&lt;br /&gt;/u02/db/NICE/redo03.log&lt;br /&gt;/u02/db/NICE/redo02.log&lt;br /&gt;/u02/db/NICE/redo01.log&lt;/p&gt; &lt;p style="padding-left: 30px;"&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;總上所述，你要想盡辦法，把那些.dbf，.ctl，.log的檔案備份下來就是了。&lt;br /&gt;再加上$ORACLE_HOME裡頭所有的檔案好，那就是完整的資料庫物理備份了.&lt;/span&gt;&lt;/p&gt; &lt;p&gt;4. 開始進行物理備份&lt;/p&gt; &lt;p style="padding-left: 30px;"&gt;a. 建議&lt;span style="color: rgb(255, 0, 255);"&gt;先關閉整個資料庫, 以免因為時間差, 有些資料沒有備份到.&lt;/span&gt;&lt;/p&gt; &lt;p style="padding-left: 30px;"&gt;[oracle@macrodbbk oracle]$ sqlplus / as sysdba&lt;/p&gt; &lt;p style="padding-left: 30px;"&gt;SQL&gt; shutdown immediate&lt;/p&gt; &lt;p style="padding-left: 30px;"&gt;Database closed.&lt;br /&gt;Database dismounted.&lt;br /&gt;ORACLE instance shut down.  (看到此三種訊息, 表示關閉沒有問題!)&lt;/p&gt; &lt;p style="padding-left: 30px;"&gt;b. 將剛剛所查詢的檔案, 通通備份出來.&lt;/p&gt; &lt;p style="padding-left: 30px;"&gt;c. 再把資料庫打開, 已確定沒有異常!&lt;/p&gt; &lt;p style="padding-left: 30px;"&gt;SQL&gt; startup&lt;br /&gt;ORACLE instance started.&lt;/p&gt; &lt;p&gt;Total System Global Area 1828716544 bytes&lt;br /&gt;Fixed Size                  1219976 bytes&lt;br /&gt;Variable Size             201327224 bytes&lt;br /&gt;Database Buffers         1610612736 bytes&lt;br /&gt;Redo Buffers               15556608 bytes&lt;br /&gt;Database mounted.&lt;br /&gt;Database opened.  (看到此兩種訊息, 表示打開沒有問題!)&lt;br /&gt;SQL&gt;&lt;/p&gt; &lt;p&gt;好滴~ 請別太興奮! 我知道那種字元集轉換失敗的感覺很痛苦XDDDD  (我奮戰了一晚呀~~~~)&lt;/p&gt; &lt;p&gt;&lt;span style="color: rgb(128, 0, 0);"&gt;在B機器上&lt;/span&gt;&lt;/p&gt; &lt;p&gt;1. 如上, 先關閉資料庫&lt;/p&gt; &lt;p&gt;2.將從A機器物理備份出來的檔案, 看是要&lt;span style="color: rgb(255, 0, 255);"&gt;覆寫&lt;/span&gt;還是如何的, 把資料蓋過去&lt;/p&gt; &lt;p&gt;(建議還是要物理備份一下B機器上面的資料)&lt;/p&gt; &lt;h1&gt;如果是在linux主機上面, 要特別注意&lt;strong&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;權限&lt;/span&gt;&lt;/strong&gt;&lt;/h1&gt; &lt;p&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;兩邊的檔案&lt;span style="color: rgb(255, 0, 255);"&gt;權限與擁有者&lt;/span&gt;等的必須要一樣才行.&lt;/span&gt;&lt;/span&gt;&lt;/p&gt; &lt;p&gt;-bash-3.2$ pwd&lt;br /&gt;&lt;span style="color: rgb(255, 0, 255);"&gt;/usr/lib/oracle/xe/oradata/XE&lt;/span&gt;&lt;br /&gt;-rw-r—– 1 oracle dba    7061504 Nov 16 21:07 control.dbf&lt;br /&gt;-rw-r—– 1 oracle dba  536879104 Nov 16 20:14  xxx.ora&lt;br /&gt;-rw-r—– 1 oracle dba  471867392 Nov 16 20:58 sysaux.dbf&lt;br /&gt;-rw-r—– 1 oracle dba  356524032 Nov 16 21:05 system.dbf&lt;br /&gt;-rw-r—– 1 oracle dba   20979712 Nov 16 12:04 temp.dbf&lt;br /&gt;-rw-r—– 1 oracle dba  183508992 Nov 16 20:58 undo.dbf&lt;br /&gt;-rw-r—– 1 oracle dba  104865792 Nov 16 20:14 users.dbf&lt;/p&gt; &lt;p&gt;-bash-3.2$ pwd&lt;/p&gt; &lt;p&gt;&lt;span style="color: rgb(255, 0, 255);"&gt;/usr/lib/oracle/xe/app/oracle/flash_recovery_area/XE/onlinelog&lt;/span&gt;&lt;/p&gt; &lt;p&gt;-rw-r—– 1 oracle dba 52429312 Nov 16 20:14 xxxxxxxxxxxxxxxx.log&lt;br /&gt;-rw-r—– 1 oracle dba 52429312 Nov 16 21:05 yyyyyyyyyyyyyyyy.log&lt;/p&gt; &lt;p&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;3.把B資料庫重新打開. 如無異常, 恭喜妳~ 你可以去喝杯咖啡休息一下了!&lt;/span&gt;&lt;/span&gt;&lt;/p&gt; &lt;p&gt; &lt;/p&gt; &lt;p&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;原文出處:&lt;/span&gt;&lt;/span&gt;&lt;/p&gt; &lt;p&gt;http://tw.myblog.yahoo.com/bullock0425/article?mid=306&amp;amp;sc=1&lt;/p&gt; &lt;/div&gt;      &lt;/div&gt;</description><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total></item><item><title>查看數據庫字元狀況</title><link>http://miracle-neatly.blogspot.com/2009/12/blog-post.html</link><category>ORACLE</category><author>noreply@blogger.com (奇蹟戰士風之子)</author><pubDate>Fri, 11 Dec 2009 15:50:00 +0800</pubDate><guid isPermaLink="false">tag:blogger.com,1999:blog-7414721583570985383.post-7071223181398530644</guid><description>&lt;div class="postentry"&gt;    &lt;div class="snap_preview"&gt;&lt;p&gt;SELECT * FROM NLS_DATABASE_PARAMETERS;&lt;/p&gt; &lt;p&gt;SELECT * FROM V$NLS_PARAMETERS;&lt;/p&gt; &lt;/div&gt;      &lt;/div&gt;</description><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total></item><item><title>如要開放web介面讓非本機可登入的話</title><link>http://miracle-neatly.blogspot.com/2009/12/web_11.html</link><category>ORACLE</category><author>noreply@blogger.com (奇蹟戰士風之子)</author><pubDate>Fri, 11 Dec 2009 15:48:00 +0800</pubDate><guid isPermaLink="false">tag:blogger.com,1999:blog-7414721583570985383.post-3120961322353783028</guid><description>&lt;div class="postentry"&gt;    &lt;div class="snap_preview"&gt;&lt;p&gt;如要開放web介面讓非本機可登入的話，需要進sqlplus執行下列指令:&lt;br /&gt;EXEC DBMS_XDB.SETLISTENERLOCALACCESS(FALSE);&lt;/p&gt; &lt;p&gt;測試:&lt;/p&gt; &lt;p&gt;http://192.168.6.167:8081/apex      (這邊的port 是 8081, 預設是8080)&lt;/p&gt; &lt;p&gt;原文出處:&lt;/p&gt; &lt;p&gt;http://blog.roodo.com/mywork/archives/6198547.html&lt;/p&gt; &lt;/div&gt;      &lt;/div&gt;</description><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total></item><item><title>plsql-developer-installed-with-oracle-xe-on-windows-platform</title><link>http://miracle-neatly.blogspot.com/2009/12/plsql-developer-installed-with-oracle.html</link><category>ORACLE</category><author>noreply@blogger.com (奇蹟戰士風之子)</author><pubDate>Fri, 11 Dec 2009 15:47:00 +0800</pubDate><guid isPermaLink="false">tag:blogger.com,1999:blog-7414721583570985383.post-1081355496735801385</guid><description>&lt;div class="postentry"&gt;    &lt;div class="snap_preview"&gt;&lt;p&gt;注意: 如果是裝在ORACLE-XE 是裝在VMWARE WorkStation上,&lt;strong&gt; &lt;span style="color: rgb(255, 0, 255);"&gt;記得把 SELinux 先關掉!&lt;/span&gt;&lt;/strong&gt;&lt;br /&gt;1.先安裝 plsql developer http://www.allroundautomations.com/plsqldev.html&lt;/p&gt; &lt;p&gt;&lt;span style="text-decoration: line-through;"&gt;2.下載並解壓縮放置 Oracle Instant Client: instantclient-basic-win32-11.1.0.7.0 (假設是 C:\instantclient_11_1 )&lt;/span&gt;&lt;/p&gt; &lt;p&gt;3.下載並安裝oracle-xe client :  OracleXEClient.ex&lt;/p&gt; &lt;p&gt;e (如照預設, 應會建立 C:\XEClient  資料夾)&lt;/p&gt; &lt;p&gt;&lt;strong&gt;&lt;span style="color: rgb(255, 0, 255);"&gt;在 C:\XEClient 資 料夾下&lt;/span&gt;&lt;/strong&gt;&lt;span style="text-decoration: line-through;"&gt; (實際操作後, 發現應建立於此, 而非 C:\instantclient_11_1 )&lt;/span&gt;&lt;/p&gt; &lt;p&gt;建立一network目錄，目录下再建admin目錄，結構如下:&lt;/p&gt; &lt;p&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;&lt;客户端目錄&gt;/network/admin&lt;/span&gt;&lt;/p&gt; &lt;p&gt;，在admin目录中建立tnsnames.ora文件，内容大致如下：&lt;/p&gt; &lt;p&gt;XE=&lt;br /&gt;(DESCRIPTION =&lt;br /&gt;(ADDRESS_LIST =&lt;br /&gt;(ADDRESS = (PROTOCOL = TCP)(HOST = xxx.xxx.xxx.xxx)(PORT = 1521))&lt;br /&gt;)&lt;br /&gt;(CONNECT_DATA =&lt;br /&gt;(SERVER = DEDICATED)&lt;br /&gt;(SERVICE_NAME = XE)&lt;br /&gt;)&lt;br /&gt;)&lt;/p&gt; &lt;p&gt;4.&lt;/p&gt; &lt;p&gt;在PL/SQL developer中配置客户端信息。&lt;/p&gt; &lt;p&gt;打开PL/SQL developer，暂不登录，选择菜单tools-&gt;preferences-&gt;connection,设置如下两项：&lt;/p&gt; &lt;p&gt;Oracle Home:  XEClient        #客户端解压目录&lt;/p&gt; &lt;p&gt;OCI library: C:\XEClient\b&lt;/p&gt; &lt;p&gt;in\oci.dll       #oci库文件路径，oci.dll应该在客户端目录下。&lt;/p&gt; &lt;p&gt;保存，重启PL/SQL developer，&lt;/p&gt; &lt;p&gt;些时应可看到登录框中Database下&lt;/p&gt; &lt;p&gt;拉选项里有你刚刚配置的&lt;/p&gt; &lt;p&gt;远程服务器上的服务实例demo1了。&lt;br /&gt;&lt;img src="http://neatly0607.files.wordpress.com/2009/11/plsql-developer-preference.jpg" alt="" /&gt;&lt;/p&gt; &lt;/div&gt;      &lt;/div&gt;</description><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total></item><item><title>ubuntu-8-04手動收到和停止oracle10g-xe-服務</title><link>http://miracle-neatly.blogspot.com/2009/12/ubuntu-8-04oracle10g-xe.html</link><category>ORACLE</category><author>noreply@blogger.com (奇蹟戰士風之子)</author><pubDate>Fri, 11 Dec 2009 15:46:00 +0800</pubDate><guid isPermaLink="false">tag:blogger.com,1999:blog-7414721583570985383.post-3308524025739703794</guid><description>&lt;div class="postentry"&gt;    &lt;div class="snap_preview"&gt;&lt;p&gt;如果在Ubuntu 8.04下安装oracle10g xe 时没有选择自动启动服务，登录系统后可以手工启动，打开字符终端，输入：&lt;/p&gt; &lt;p&gt;sudo /etc/init.d/oracle-xe start&lt;/p&gt; &lt;p&gt;如果需要手工停止服务，&lt;/p&gt; &lt;p&gt;sudo /etc/init.d/oracle-xe stop&lt;/p&gt; &lt;/div&gt;      &lt;/div&gt;</description><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total></item><item><title>ora-00600-internal-error-code-arguments-keltnfy-ldminit</title><link>http://miracle-neatly.blogspot.com/2009/12/ora-00600-internal-error-code-arguments.html</link><category>ORACLE</category><author>noreply@blogger.com (奇蹟戰士風之子)</author><pubDate>Fri, 11 Dec 2009 15:45:00 +0800</pubDate><guid isPermaLink="false">tag:blogger.com,1999:blog-7414721583570985383.post-7097500914276061715</guid><description>&lt;div class="postentry"&gt;    &lt;div class="snap_preview"&gt;&lt;p&gt;oracle启动时报错 &lt;a href="http://hi.baidu.com/bkeep/blog/item/204628254d4098084d088d3f.html" target="_blank"&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;ORA-00600: internal error code, arguments: [keltnfy-ldmInit&lt;/span&gt;&lt;/a&gt;&lt;/p&gt; &lt;p&gt;主要是改 /etc/hosts 和 /etc/sysconfig/network&lt;/p&gt; &lt;p&gt;&lt;span style="background-color: rgb(192, 192, 192);"&gt;SQL&gt; startup pfile='/mc/oracle/admin/mc/pfile/init.ora';&lt;br /&gt;ORA-00600: internal error code, arguments: [keltnfy-ldmInit], [46], [1], [], [], [], [], []&lt;br /&gt;SQL&gt; startup pfile=’/mc/oracle/admin/mc/pfile/init.ora’;&lt;br /&gt;ORA-24324: service handle not initialized&lt;br /&gt;ORA-01041: internal error. hostdef extension doesn’t exist&lt;/span&gt;&lt;/p&gt; &lt;p&gt;查看日志：&lt;/p&gt; &lt;p&gt;&lt;span style="background-color: rgb(192, 192, 192);"&gt;star_transformation_enabled= FALSE&lt;br /&gt;pga_aggregate_target      = 201326592&lt;br /&gt;Wed Jul 1 23:47:27 2009&lt;br /&gt;Errors in file /mc/oracle//admin/mc/udump/mc_ora_4912.trc:&lt;br /&gt;ORA-00600: internal error code, arguments: [keltnfy-ldmInit], [46], [1], [], [], [], [], []&lt;br /&gt;USER: terminating instance due to error 600&lt;br /&gt;Instance terminated by USER, pid = 4912&lt;br /&gt;Wed Jul 1 23:51:12 2009&lt;br /&gt;&lt;/span&gt;&lt;/p&gt; &lt;p&gt;在google里面搜索了一下，&lt;/p&gt; &lt;p&gt;&lt;span style="background-color: rgb(192, 192, 192);"&gt;[root@erpserver ~]# cat /etc/sysconfig/network&lt;br /&gt;NETWORKING=yes&lt;br /&gt;NETWORKING_IPV6=no&lt;br /&gt;HOSTNAME=&lt;strong&gt;erpserver&lt;br /&gt;&lt;/strong&gt;&lt;/span&gt;&lt;span style="color: rgb(128, 0, 128);"&gt;&lt;span style="background-color: rgb(192, 192, 192); color: rgb(0, 0, 0);"&gt;[root@erpserver ~]# ping erpserver&lt;br /&gt;&lt;strong&gt;ping: unknown host erpserver&lt;/strong&gt;&lt;br /&gt;[root@erpserver ~]# vi /etc/hosts&lt;br /&gt;# Do not remove the following line, or various programs&lt;br /&gt;# that require network functionality will fail.&lt;br /&gt;127.0.0.1        localhost.localdomain    localhost&lt;br /&gt;::1      localhost6.localdomain6 localhost6&lt;br /&gt;192.168.8.45 erpserver.uutuu.com &lt;strong&gt;erpserver&lt;/strong&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt; &lt;p&gt;&lt;span style="color: rgb(128, 0, 128);"&gt;&lt;span style="background-color: rgb(192, 192, 192); color: rgb(0, 0, 0);"&gt;[root@erpserver ~]# ping erpserver&lt;br /&gt;PING erpserver.uutuu.com (192.168.8.45) 56(84) bytes of data.&lt;br /&gt;64 bytes from erpserver.uutuu.com (192.168.8.45): icmp_seq=1 ttl=64 time=0.043 ms&lt;br /&gt;64 bytes from erpserver.uutuu.com (192.168.8.45): icmp_seq=2 ttl=64 time=0.040 ms&lt;/span&gt;&lt;/span&gt;&lt;/p&gt; &lt;p&gt;&lt;span style="color: rgb(128, 0, 128);"&gt;&lt;span style="background-color: rgb(192, 192, 192); color: rgb(0, 0, 0);"&gt;文章出處:&lt;/span&gt;&lt;/span&gt;&lt;/p&gt; &lt;p&gt;http://hi.baidu.com/bkeep/blog/item/204628254d4098084d088d3f.html&lt;/p&gt; &lt;/div&gt;      &lt;/div&gt;</description><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total></item><item><title>oracle-xe簡易備份資料庫</title><link>http://miracle-neatly.blogspot.com/2009/12/oracle-xe.html</link><category>ORACLE</category><author>noreply@blogger.com (奇蹟戰士風之子)</author><pubDate>Fri, 11 Dec 2009 15:45:00 +0800</pubDate><guid isPermaLink="false">tag:blogger.com,1999:blog-7414721583570985383.post-5599284794095980495</guid><description>&lt;div class="postentry"&gt;    &lt;div class="snap_preview"&gt;&lt;p&gt;查了網路上許多的文件, 有的還滿複雜的.&lt;/p&gt; &lt;p&gt;對於我現在工作與初學者的角度來看, 其實我只是要&lt;strong&gt;備份整個XE資料庫&lt;/strong&gt;&lt;/p&gt; &lt;p&gt;偏偏ORACLE又不像MySql一樣, 簡單複製一整個.MVI檔就好.&lt;/p&gt; &lt;p&gt;找到一個好指令, 不過必須要記得DATABASE中, 使用者的帳號密碼就是了.&lt;/p&gt; &lt;p&gt;以下是文章內容…&lt;/p&gt; &lt;p&gt;oraclebox is a solaris box with oracle 10g installed&lt;/p&gt; &lt;pre&gt;oraclebox#  export ORACLE_HOME=/u01/app/oracle/oracle/product/10.2.0/db_1&lt;br /&gt;&lt;span style="color: rgb(51, 102, 255);"&gt;(set this to ur own oracle home dir)&lt;/span&gt;&lt;br /&gt;oraclebox#  cd $ORACLE_HOME/bin&lt;br /&gt;oraclebox#  ./exp 'username/password@orcl&lt;br /&gt;&lt;span style="color: rgb(51, 102, 255);"&gt;(follow the prompts - this will create a file called &lt;strong&gt;expdat.dmp&lt;/strong&gt; - copy this&lt;br /&gt;to the Oracle XE server)&lt;/span&gt;&lt;/pre&gt; &lt;p&gt;xebox is a debian box with oracle xe edition installed&lt;/p&gt; &lt;pre&gt;xebox# export ORACLE_HOME=/usr/lib/oracle/xe/app/oracle/product/10.2.0/server/&lt;br /&gt;xebox# cd $ORACLE_HOME/bin&lt;br /&gt;xebox# ./imp 'username/password@xe'&lt;/pre&gt; &lt;p&gt;不過在匯入前, 記得要先有原本資料庫的帳號密碼要先建立.&lt;/p&gt; &lt;p&gt;同時在匯入時, 要&lt;strong&gt;輸入相對應的帳號名稱&lt;/strong&gt;.&lt;/p&gt; &lt;p&gt;&lt;strong&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;記得先匯入 system 帳號對應的.dmp檔案, 之後再匯入其他的, 才不會出錯!&lt;/span&gt;&lt;/strong&gt;&lt;/p&gt; &lt;p&gt;&lt;span style="font-family: Verdana; font-size: x-small;"&gt;資料備份 – 使用  Export、Import：&lt;br /&gt;● 有關 Oracle  資料備份的方式有很多種，還可分為：離線式、線上式、熱備份、冷備份，本文僅挑重點敘述。欲知詳細步驟及各種備份方式的特點請自行參考相關書籍。&lt;br /&gt;● 此項 EXP 備份工具，較適合備份「部份 Table 或全部 Table」、「部份 Object 或所有 Object」，亦可備份「整個資料庫」。此工具將資料 Dump 出來是以 Binary 的方式，因此無法用記事本開啟檔案。此外，須具備足夠權限才能 Export 別人 Schema 的 Object，且有少數系統內建的 Schema 亦無法以此方式 Export。&lt;br /&gt;&lt;span style="color: rgb(0, 128, 128);"&gt;Export (備份)：&lt;br /&gt;開啟命令提示字元，輸入 “exp system/用戶密碼@資料庫名稱” → 詢問陣列緩衝區的大小(值的大小僅會影響備份速度) → 匯出檔案名稱(如：backup1.dmp，預設最後會將檔案匯出在 C 槽底下) → 詢問匯出類型(分為：1.整個資料庫　2.使用者　3.表格) → 接下來選項大部份都可選 “yes”(例如是否要壓縮) → 自動開始備份&lt;/span&gt;&lt;/span&gt;&lt;/p&gt; &lt;p&gt;Import (回復)：&lt;br /&gt;&lt;span style="font-family: Verdana; font-size: x-small;"&gt;開啟命令提示字元，輸入 “imp system/用戶密碼@資料庫名稱” →&lt;span style="font-family: Verdana; font-size: x-small;"&gt;&lt;span style="font-family: Verdana; font-size: x-small;"&gt; 詢問從哪個檔案回復&lt;span style="font-family: Verdana; font-size: x-small;"&gt;&lt;span style="font-family: Verdana; font-size: x-small;"&gt;&lt;span style="font-family: Verdana; font-size: x-small;"&gt;&lt;span style="font-family: Verdana; font-size: x-small;"&gt; →&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt; 詢問陣列緩衝區的大小 → 詢問「是否僅列出匯入檔案的內容」(若選擇 “no”，會逐步詢問以下的相關資料，否則會跳過一些步驟) → 告知「物件已存在，建立物件的錯誤被略過不予以處理」(預設值為 “no”，則系統碰到錯誤就會顯示錯誤訊息) → 詢問「是否匯入整個匯出檔」(若選 “yes” 則會將原先所有 Export 的資料全部匯入；若選 “no” 則會詢問是要匯入哪位 User 的 Schema、哪一個 Table) → 自動開始回復&lt;/span&gt;&lt;/p&gt; &lt;p&gt;● 此項 Export、Import 的備份及回復功能，必須在資料庫啟動時才能操作。版工試過可在有使用者連線時備份和回復，且結束時亦顯示未發生任何錯誤。但建議實務上還是儘量選在使用者 離線時做備份，以避免影響運作績效或對用戶作業造成干擾，甚至造成資料的不一致或毀損。&lt;/p&gt; &lt;p&gt;文章出處:&lt;/p&gt; &lt;p&gt;http://linux.dtbaker.com.au/post/exporting_data_from_oracle_10g_to_oracle_xe.html&lt;/p&gt; &lt;p&gt;http://j2se.myweb.hinet.net/article/jdbc/002.htm&lt;/p&gt; &lt;/div&gt;      &lt;/div&gt;</description><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total></item><item><title>開放web介面讓非本機可登入</title><link>http://miracle-neatly.blogspot.com/2009/12/web.html</link><category>ORACLE</category><author>noreply@blogger.com (奇蹟戰士風之子)</author><pubDate>Fri, 11 Dec 2009 15:44:00 +0800</pubDate><guid isPermaLink="false">tag:blogger.com,1999:blog-7414721583570985383.post-1756832385346467843</guid><description>如要開放web介面讓非本機可登入的話，需要進sqlplus執行下列指令:&lt;br /&gt;&lt;strong&gt;EXEC DBMS_XDB.SETLISTENERLOCALACCESS(FALSE);&lt;/strong&gt;</description><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total></item><item><title>表格的別名-table-alias</title><link>http://miracle-neatly.blogspot.com/2009/12/table-alias.html</link><category>ORACLE</category><author>noreply@blogger.com (奇蹟戰士風之子)</author><pubDate>Fri, 11 Dec 2009 15:43:00 +0800</pubDate><guid isPermaLink="false">tag:blogger.com,1999:blog-7414721583570985383.post-5597037741197984050</guid><description>&lt;div class="postentry"&gt;    &lt;div class="snap_preview"&gt;&lt;p&gt;在 一 些 大 型 的 資 料 庫 ， 會 使 用 到 數 百 個 表 格 ， 而 一 些 表 格 當 中 又 可 能 包 含 數 十 個 欄 ， 所 以 表 格 名 稱 和 欄 名 稱 常 常 會 用 英 文 全 寫 如 EMPLOYEES 、 EMPLOYEE_NAME 等 ， 而 不 會 使 用 簡 寫 如 EMP 、 ENAME 等 。 因 此 ， 我 們 通 常 會 使 用 到 表 格 別 名 ， 以 節 省 打 字 數 目 。&lt;/p&gt; &lt;p&gt;表 格 別 名 的 語 法 與 欄 別 名 差 不 多 ， 只 要 在 表 格 名 稱 後 寫 上 別 名 便 可 ， 例 如 ：&lt;/p&gt; &lt;p&gt;&lt;strong&gt;&lt;span style="color: rgb(255, 0, 255);"&gt;SELECT E.ENAME FROM EMP E;&lt;/span&gt;&lt;/strong&gt;&lt;/p&gt; &lt;p&gt;用 別 名 E 來 代 替 EMP ， 這樣比較簡潔：&lt;/p&gt; &lt;p&gt;SELECT EMP.NAME FROM EMP;&lt;/p&gt; &lt;/div&gt;      &lt;/div&gt;</description><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total></item><item><title>html:errors</title><link>http://miracle-neatly.blogspot.com/2009/12/htmlerrors.html</link><category>STRUTS</category><author>noreply@blogger.com (奇蹟戰士風之子)</author><pubDate>Fri, 11 Dec 2009 15:42:00 +0800</pubDate><guid isPermaLink="false">tag:blogger.com,1999:blog-7414721583570985383.post-6478180958131187600</guid><description>在Action或Form里生成errors:&lt;br /&gt;&lt;br /&gt;在Action中使用：&lt;br /&gt;&lt;br /&gt;…&lt;br /&gt;&lt;br /&gt;若用&lt;html:erros /&gt;则显示出所有的错误&lt;br /&gt;&lt;br /&gt;文章出處:&lt;br /&gt;&lt;br /&gt;http://www.cjsdn.net/post/view?bid=20&amp;id=138667&amp;sty=1&amp;tpg=11&amp;age=0</description><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total></item><item><title>struts標籤範例-logicnotempty/</title><link>http://miracle-neatly.blogspot.com/2009/12/struts-logicnotempty.html</link><category>STRUTS</category><author>noreply@blogger.com (奇蹟戰士風之子)</author><pubDate>Fri, 11 Dec 2009 15:40:00 +0800</pubDate><guid isPermaLink="false">tag:blogger.com,1999:blog-7414721583570985383.post-5091776651477935943</guid><description>Html代码&lt;br /&gt;&lt;br /&gt;   1. &lt;logic:notEmpty name=“element” property=“idbmqx”&gt;&lt;br /&gt;   2. 内容&lt;br /&gt;   3. &lt;/logic:notEmpty&gt;&lt;br /&gt;&lt;br /&gt;Java代码&lt;br /&gt;&lt;br /&gt;   1. if(idbmqx!=null)&lt;br /&gt;   2. {&lt;br /&gt;   3. 内容&lt;br /&gt;   4. }&lt;br /&gt;&lt;br /&gt;文章出處:&lt;br /&gt;&lt;br /&gt;http://heisetoufa.javaeye.com/blog/227347</description><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total></item><item><title>struts標籤使用舉例-logic</title><link>http://miracle-neatly.blogspot.com/2009/12/struts-logic.html</link><category>STRUTS</category><author>noreply@blogger.com (奇蹟戰士風之子)</author><pubDate>Fri, 11 Dec 2009 15:40:00 +0800</pubDate><guid isPermaLink="false">tag:blogger.com,1999:blog-7414721583570985383.post-6280156121634986891</guid><description>&lt;div class="postentry"&gt;    &lt;div class="snap_preview"&gt;&lt;p&gt;1.  logic:empty&lt;br /&gt;该标签是用来判断是否为空的。如果为空，该标签体中嵌入的内容就会被处理。该标签用于以下情况：&lt;/p&gt; &lt;p&gt;1）当Java对象为null时；&lt;br /&gt;2）当String对象为”"时；&lt;br /&gt;3）当java.util.Collection对象中的isEmpty()返回true时；&lt;br /&gt;4）当java.util.Map对象中的isEmpty()返回true时。&lt;br /&gt;eg.&lt;br /&gt;&lt;strong&gt; &lt;logic:empty name="”userList”"&gt;&lt;br /&gt;…&lt;br /&gt;&lt;/logic:empty&gt;&lt;br /&gt;该句等同于：&lt;br /&gt;if   (userList.isEmpty())   {&lt;br /&gt;…&lt;br /&gt;} &lt;/strong&gt;&lt;/p&gt; &lt;p&gt;文章出處:&lt;/p&gt; &lt;p&gt;http://qsrock.javaeye.com/blog/145529&lt;/p&gt; &lt;/div&gt;      &lt;/div&gt;</description><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total></item><item><title>structs-config-xml-version</title><link>http://miracle-neatly.blogspot.com/2009/12/structs-config-xml-version.html</link><category>STRUTS</category><author>noreply@blogger.com (奇蹟戰士風之子)</author><pubDate>Fri, 11 Dec 2009 15:39:00 +0800</pubDate><guid isPermaLink="false">tag:blogger.com,1999:blog-7414721583570985383.post-6644380550877753439</guid><description>&lt;div class="postentry"&gt;    &lt;div class="snap_preview"&gt;&lt;p&gt;配置structs-config.xml 時, 一旦加上了 &lt;plug-in&gt;元素, 便會出錯&lt;/p&gt; &lt;p&gt;訊息類似:&lt;/p&gt; &lt;p&gt;…&lt;/p&gt; &lt;p&gt;&lt;span style="font-family: arial,sans-serif; color: rgb(0, 0, 0);"&gt;Parse Error at line 15 column 68: Element type ”plug-in” must be declared.&lt;/span&gt;&lt;/p&gt; &lt;p&gt;&lt;span style="font-family: arial,sans-serif; color: rgb(0, 0, 0);"&gt;….&lt;br /&gt;&lt;/span&gt;&lt;/p&gt; &lt;p&gt;&lt;span style="font-family: arial,sans-serif; color: rgb(0, 0, 0);"&gt;org.xml.sax.SAXParseException: The content of element type ”struts-config” must match ”(data-soures?,form-beans?,global-forwards?,action-mappings?)”.&lt;/span&gt;&lt;/p&gt; &lt;p&gt;&lt;span style="font-family: arial,sans-serif; color: rgb(0, 0, 0);"&gt;….&lt;/span&gt;&lt;/p&gt; &lt;p&gt;&lt;span style="font-family: arial,sans-serif; color: rgb(0, 0, 0);"&gt;其實這主要是版本的問題.&lt;/span&gt;&lt;/p&gt; &lt;p&gt;&lt;span style="font-family: arial,sans-serif; color: rgb(0, 0, 0);"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/p&gt; &lt;p&gt;&lt;span style="font-family: arial,sans-serif; color: rgb(0, 0, 0);"&gt;正是你声明了才会报错，首先说这个错误的问题，因为你的配置文件头用的&lt;br /&gt;&lt;!DOCTYPE struts-config PUBLIC ”-//Apache Software Foundation//DTD Struts Configuration 1.0//EN” ”http://jakarta.apache.org/struts/dtds/struts-config_1_0.dtd”&gt;&lt;br /&gt;所 以使用的是struts1.0的配置文件格式，你可以从http://jakarta.apache.org/struts/dtds/struts- config_1_0.dtd下载这个DTD看看里面不包含messeage-resources和plug-in的元素定义，另外从错误提示中也可以看 出来&lt;br /&gt;org.xml.sax.SAXParseException: The content of element type ”struts-config” must match ”(data-soures?,form-beans?,global-forwards?,action-mappings?)”.&lt;/span&gt;&lt;/p&gt; &lt;p&gt;解决办法一是去掉那两个元素，二是文档定义用比struts1.0更高版本的，例如&lt;br /&gt;&lt;!DOCTYPE struts-config PUBLIC ”-//Apache Software Foundation//DTD Struts Configuration 1.2//EN” ”http://struts.apache.org/dtds/struts-config_1_2.dtd”&gt;&lt;br /&gt;这个是struts1.2的，但也要保证你用的struts包也是1.2的 &lt;/p&gt; &lt;p&gt;&lt;span style="font-family: arial,sans-serif; color: rgb(0, 0, 0);"&gt;資料來源: &lt;/span&gt;http://www.javaresearch.org/forum/thread.jsp?column=20&amp;amp;thread=36528&lt;/p&gt; &lt;/div&gt;      &lt;/div&gt;</description><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total></item><item><title>what-do-“branch”-“tag”-and-“trunk”-really-mean</title><link>http://miracle-neatly.blogspot.com/2009/12/what-do-branch-tag-and-trunk-really.html</link><category>SVN</category><author>noreply@blogger.com (奇蹟戰士風之子)</author><pubDate>Fri, 11 Dec 2009 15:38:00 +0800</pubDate><guid isPermaLink="false">tag:blogger.com,1999:blog-7414721583570985383.post-459072903654939713</guid><description>&lt;div class="postentry"&gt;    &lt;div class="snap_preview"&gt;&lt;p&gt;Hmm, not sure I agree with Nick re tag being similar to a branch. A tag is just a marker&lt;/p&gt; &lt;ul&gt;&lt;li&gt;&lt;strong&gt;Trunk&lt;/strong&gt; would be the main body of development, originating from the the start of the project until the present.&lt;/li&gt;&lt;li&gt;&lt;strong&gt;Branch&lt;/strong&gt; will be a copy of code derived from a certain point in the trunk that is used for applying major changes to the code while preserving the integrity of the code in the trunk. If the major changes work according to plan, they are usually merged back into the trunk.&lt;/li&gt;&lt;li&gt;&lt;strong&gt;Tag&lt;/strong&gt; will be a point in time on the trunk or a branch that you wish to preserve. The two main reasons for preservation would be that either this is a major release of the software, whether alpha, beta, RC or RTM, or this is the most stable point of the software before major revisions on the trunk were applied.&lt;/li&gt;&lt;/ul&gt; &lt;p&gt;In open source projects, major branches that are not accepted into the trunk by the project stakeholders can become the bases for &lt;em&gt;forks&lt;/em&gt; — e.g., totally separate projects that share a common origin with other source code.&lt;/p&gt; &lt;/div&gt;      &lt;/div&gt;</description><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total></item><item><title>trunk-branches-tags-在-cvs-上的應用</title><link>http://miracle-neatly.blogspot.com/2009/12/trunk-branches-tags-cvs.html</link><category>SVN</category><author>noreply@blogger.com (奇蹟戰士風之子)</author><pubDate>Fri, 11 Dec 2009 15:38:00 +0800</pubDate><guid isPermaLink="false">tag:blogger.com,1999:blog-7414721583570985383.post-4261794431643973658</guid><description>&lt;div class="postentry"&gt;    &lt;div class="snap_preview"&gt;&lt;p&gt;辦公室導入 Subversion 也一段時間了，也越來越多人將 code 加入辦公室集中建置的 Subversion 了，但對於 Trunk / Branches / Tags 總是沒有人出來做一個說明。&lt;/p&gt; &lt;p&gt;其實，從好幾年前開始碰 CVS 這種東西就是用 Subversion 了，所以我對 Trunk / Branches / Tags 也沒這麼多了解，畢竟 Subversion 的精神是版本號阿，那些啥 branch / tag 表示的只是某個版本號的東西，讓我們易懂罷了，所以我也是使用 Subversion 一段時間後，慢慢累積了一些 CVS 相關的經驗後才對這三個名詞的定義有了更深一層的了解，所以只敢說是經驗分享囉！  ^^&lt;/p&gt; &lt;p&gt;Trunk：其實就是最新，一直在走的東西，永遠都是最新的，所以只有一份。&lt;/p&gt; &lt;p&gt;Branches：就是版本，例如 V1 , V2 , V3。也可能是某個特定需求，例如 V1-1，所以 Branch 用的就是複數啦！&lt;/p&gt; &lt;p&gt;Tags：就是可以進行標籤註明了，例如 V1-Release , V1-Release-p1 , V2-Release , V2-Beta1 之類的。一般來說，轉到 tags 裡面的 code 大部分都是 read-only 了，不會再對這個 Tag 內的 Code 進行 commit。也因為會有很多 Tag，所以這邊也是複數。&lt;/p&gt; &lt;p&gt;我底下就用實例做個解釋吧！假設我們現在有一個開發案叫做「foo」。&lt;/p&gt; &lt;ol&gt;&lt;li&gt;首先我們建立一台 Subversion，並且開始將寫好的 code 都一直丟到 trunk 中&lt;/li&gt;&lt;li&gt;經過了幾次開會，已經確定第一版所需要的功能 ( 在這稱為 foo-v1 )，我們就將 trunk 中的東西丟一份到 branches，並取名為 foo-v1，之後跟 foo-v1 相關的開發就都更新到 foo-v1 這個 branch ( 記得也要不斷的 merge 回 trunk 阿 )&lt;/li&gt;&lt;li&gt;當 foo-v1 開發到一定程度，已經可以發佈 BETA 版，我們則可以丟到 Tags，並給個版本一個 Tag 叫做「foo-v1-beta1」，相同的，如果要 Release 的時候一樣是給一個 Tag 叫做「foo-v1-release」，這樣就可以了。&lt;/li&gt;&lt;li&gt;如果 foo-v1-release 發現 Bug，則修改完畢後的 code 就再新增一個「foo-v1-release-p1」的 Tag 放置 Bug Fixed 的程式碼。&lt;/li&gt;&lt;li&gt;又過了一段時間，決定開發 foo-v2，這時候一樣在 Branches 底下開一個「foo-v2」，跟 foo-v2 相關的修改就改在這邊啦，但也不要忘記有更新要 merge 回 trunk&lt;/li&gt;&lt;/ol&gt; &lt;p&gt;上述大概就是我對整個 Trunk / Branches / Tags 的想法。一定會有很多人說，如果我只是要新增加一個功能不一定是一個版本怎辦？其實就在 Branches 底下自己建立一個就好啦，例如「foo-v1-special-edition」之類的。&lt;/p&gt; &lt;p&gt;不過，我覺得 svn ( cvs ) 只是一個工具，要怎麼用這群人談好就好，反正不要亂掉就好，你高興在 trunk 內建立很多不同的 tag 也是可以阿！或大家都只更新 trunk，branches 給每個人放自己開發的 code 也是可以，反正最重要的就是大家講好都可以接受就好。講的很亂，有人看的懂嗎？  XD&lt;/p&gt; &lt;p&gt;文章出處:&lt;/p&gt; &lt;p&gt;http://blog.xuite.net/hookah/blog/21968245&lt;/p&gt; &lt;/div&gt;      &lt;/div&gt;</description><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total></item><item><title>在eclipse專案中-啟動servlet</title><link>http://miracle-neatly.blogspot.com/2009/12/eclipse-servlet.html</link><category>Servlet</category><author>noreply@blogger.com (奇蹟戰士風之子)</author><pubDate>Fri, 11 Dec 2009 15:36:00 +0800</pubDate><guid isPermaLink="false">tag:blogger.com,1999:blog-7414721583570985383.post-2717487652772724613</guid><description>&lt;p&gt;其實最主要是要參考這篇&lt;/p&gt; &lt;p&gt;http://sun.cis.scu.edu.tw/~nms9115/articles/java/WebAppTutor/ServletPrimer/ServletPrimer.htm&lt;/p&gt; &lt;p&gt;裡面有一段話…&lt;/p&gt; &lt;p&gt;以上的步驟主要是先建立子目錄，複製檔案，然後再編輯 web.xml 讓 tomcat 可以根據網址找到對應的 servlet 檔案。許多書籍和文件都是教你修改 “c:\tomcat\conf\server.xml”，在其中加入一個 &lt;context&gt; 標籤並設定相關路徑，這種方法我目前還沒試成功過，如果你有興趣的話也可以嘗試看看，但並不建議你去改 server.xml，因為這是 Tomcat 專屬的設定方式，若程式有一天要佈署到別的 Web 伺服器，還要費工夫重新設定，而 &lt;strong&gt;web.xml&lt;/strong&gt; 則是通用的方式。&lt;/p&gt; &lt;p&gt;所以主要是在web.xml中加入類似像這樣的&lt;/p&gt; &lt;pre&gt;    &lt;servlet&gt;&lt;br /&gt;     &lt;servlet-name&gt;&lt;br /&gt;         Hello&lt;br /&gt;     &lt;/servlet-name&gt;&lt;br /&gt;     &lt;servlet-class&gt;&lt;br /&gt;         Hello&lt;br /&gt;     &lt;/servlet-class&gt;&lt;br /&gt;   &lt;/servlet&gt;&lt;/pre&gt; &lt;pre&gt;    &lt;servlet-mapping&gt;&lt;br /&gt;       &lt;servlet-name&gt;Hello&lt;/servlet-name&gt;&lt;br /&gt;       &lt;url-pattern&gt;/Hello&lt;/url-pattern&gt;&lt;br /&gt;   &lt;/servlet-mapping&gt;&lt;br /&gt;之後所啟動的servrlet程式會有 init()方法 再啟動就好!&lt;br /&gt;但在Eclispe中, 則可以直接在 &lt;strong&gt;專案目錄/WebContent/WEB-INF/web.xml&lt;/strong&gt; 裡面加入類似上述的&lt;/pre&gt;</description><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total></item><item><title>jax-ws幾個常用註解的參數</title><link>http://miracle-neatly.blogspot.com/2009/12/jax-ws.html</link><category>Restful</category><author>noreply@blogger.com (奇蹟戰士風之子)</author><pubDate>Fri, 11 Dec 2009 15:36:00 +0800</pubDate><guid isPermaLink="false">tag:blogger.com,1999:blog-7414721583570985383.post-918072049221692188</guid><description>&lt;div class="postentry"&gt;    &lt;div class="snap_preview"&gt;&lt;p&gt;QueryParam–url ? 后面表示的参数  .  get post 通用.&lt;br /&gt;PathParam—url中的一部分，例如用{}表示的url中的一部分。get post 通用。&lt;br /&gt;FormParam—post提交的form表单参数。     用于 post&lt;/p&gt; &lt;p&gt;原文節錄自:&lt;/p&gt; &lt;p&gt;http://blog.csdn.net/heihei0923/archive/2009/11/09/4791910.aspx&lt;/p&gt; &lt;/div&gt;      &lt;/div&gt;</description><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total></item><item><title>使用-jersey-tomcat-輕鬆開發-restful-web-service</title><link>http://miracle-neatly.blogspot.com/2009/12/jersey-tomcat-restful-web-service.html</link><category>Restful</category><author>noreply@blogger.com (奇蹟戰士風之子)</author><pubDate>Fri, 11 Dec 2009 15:35:00 +0800</pubDate><guid isPermaLink="false">tag:blogger.com,1999:blog-7414721583570985383.post-7669535810042896830</guid><description>&lt;div class="postentry"&gt;    &lt;div class="snap_preview"&gt;&lt;p&gt;這是一篇簡易教學文章, 可以簡單帶出 Restful WebService使用概念.&lt;/p&gt; &lt;p&gt; &lt;/p&gt; &lt;p&gt;&lt;strong&gt;附帶一提，必須run&lt;/strong&gt;&lt;strong&gt;在Tomcat 6.0&lt;/strong&gt;&lt;strong&gt;才行，5.5&lt;/strong&gt;&lt;strong&gt;版本會有Exception&lt;/strong&gt;&lt;strong&gt;出現：&lt;/strong&gt;&lt;/p&gt; &lt;p&gt;Caused by: &lt;span style="text-decoration: underline;"&gt;java.lang.ClassNotFoundException&lt;/span&gt;: javax.persistence.PersistenceUnit&lt;/p&gt; &lt;p&gt;至於原因，若有哪位高手願意指教，十分感謝。  ^^&lt;/p&gt; &lt;p&gt; &lt;/p&gt; &lt;p&gt;底下簡單列一下目前所使用的版本：&lt;/p&gt; &lt;ul&gt;&lt;li&gt; Eclipse 3.5&lt;/li&gt;&lt;li&gt; Tomcat 6.0.22&lt;/li&gt;&lt;li&gt; Jersey 1.1.2&lt;/li&gt;&lt;/ul&gt; &lt;p&gt;這裡提供Jersey套件官網下載連結： &lt;a href="http://download.java.net/maven/2/com/sun/jersey/jersey-archive/1.1.2-ea/jersey-archive-1.1.2-ea.zip"&gt;點此下載&lt;/a&gt;&lt;/p&gt; &lt;p&gt; &lt;/p&gt; &lt;p&gt; &lt;/p&gt; &lt;p&gt;首先建立一個Dynamic Web Project，假設我這邊命名RestfulDemo&lt;/p&gt; &lt;p&gt; &lt;/p&gt; &lt;p&gt;將底下四個Jersey的jar檔放到classpath下，也就是WEB-INF/lib/下，在下試過，缺一不可，會有Exception&lt;/p&gt; &lt;p&gt;asm-3.1.jar&lt;/p&gt; &lt;p&gt;jersey-core-1.1.2-ea.jar&lt;/p&gt; &lt;p&gt;jersey-server-1.1.2-ea.jar&lt;/p&gt; &lt;p&gt;jsr311-api-1.1.jar&lt;/p&gt; &lt;p&gt; &lt;/p&gt; &lt;p&gt;設定web.xml，加上下面設定&lt;/p&gt; &lt;p&gt; &lt;/p&gt; &lt;p&gt;&lt;servlet&gt;&lt;/p&gt; &lt;p&gt;&lt;servlet-name&gt;ServletAdaptor&lt;/servlet-name&gt;&lt;/p&gt; &lt;p&gt;&lt;servlet-class&gt;com.sun.jersey.server.impl.container.servlet.ServletAdaptor&lt;/servlet-class&gt;&lt;/p&gt; &lt;p&gt;&lt;load-on-startup&gt;1&lt;/load-on-startup&gt;&lt;/p&gt; &lt;p&gt;&lt;/servlet&gt;&lt;/p&gt; &lt;p&gt;&lt;servlet-mapping&gt;&lt;/p&gt; &lt;p&gt;&lt;servlet-name&gt;ServletAdaptor&lt;/servlet-name&gt;&lt;/p&gt; &lt;p&gt;&lt;url-pattern&gt;/&lt;span style="color: rgb(255, 0, 0);"&gt;resource&lt;/span&gt;/*&lt;/url-pattern&gt;&lt;/p&gt; &lt;p&gt;&lt;/servlet-mapping&gt;&lt;/p&gt; &lt;p&gt; &lt;/p&gt; &lt;p&gt; &lt;/p&gt; &lt;p&gt; &lt;/p&gt; &lt;p&gt;建立下面Rest程式&lt;/p&gt; &lt;p&gt; &lt;/p&gt; &lt;p&gt; &lt;/p&gt; &lt;p&gt;&lt;strong&gt;package&lt;/strong&gt; demo.rest;&lt;/p&gt; &lt;p&gt; &lt;/p&gt; &lt;p&gt;&lt;strong&gt;import&lt;/strong&gt; javax.ws.rs.GET;&lt;/p&gt; &lt;p&gt;&lt;strong&gt;import&lt;/strong&gt; javax.ws.rs.Path;&lt;/p&gt; &lt;p&gt;&lt;strong&gt;import&lt;/strong&gt; javax.ws.rs.Produces;&lt;/p&gt; &lt;p&gt; &lt;/p&gt; &lt;p&gt;@Path(“/helloworld”) // sets the path for this service&lt;/p&gt; &lt;p&gt;&lt;strong&gt;public&lt;/strong&gt; &lt;strong&gt;class&lt;/strong&gt; HelloRS {&lt;/p&gt; &lt;p&gt; &lt;/p&gt; &lt;p&gt;@GET&lt;/p&gt; &lt;p&gt;@Produces(“text/html”) // content type to output&lt;/p&gt; &lt;p&gt;&lt;strong&gt;public&lt;/strong&gt; String getClichedMessage() {&lt;/p&gt; &lt;p&gt;&lt;strong&gt;return&lt;/strong&gt; “Hello World”;&lt;/p&gt; &lt;p&gt;}&lt;/p&gt; &lt;p&gt;}&lt;/p&gt; &lt;p&gt; &lt;/p&gt; &lt;p&gt; &lt;/p&gt; &lt;p&gt;Delpoy到Tomcat，並用Browser到下列網址，Enjoy : )&lt;/p&gt; &lt;p&gt;&lt;a href="http://127.0.0.1:8080/RestfulDemo/resource/helloworld"&gt;http://127.0.0.1:8080/RestfulDemo/resource/helloworld&lt;/a&gt;&lt;/p&gt; &lt;p&gt; &lt;/p&gt; &lt;p&gt; &lt;/p&gt; &lt;p&gt;至於Restful程式撰寫教學，個人覺得，Sun寫的RESTful Web Services Developer’s Guide寫的蠻不錯的，簡單易懂，還蠻容易入門的。&lt;/p&gt; &lt;p&gt; &lt;/p&gt; &lt;p&gt;原文章出處:&lt;/p&gt; &lt;p&gt;http://www.dotblogs.com.tw/rockywang/archive/2009/10/22/11224.aspx&lt;/p&gt; &lt;/div&gt;      &lt;/div&gt;</description><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total></item></channel></rss>