原因就不講了…
請大家告訴大家
換到
http://miracle-neatly.blogspot.com/
感恩^^
先描述一下筆者所在的情況:
Client: windows 7
Server : 任一Linux主機, 上面有裝Oracle任一軟體.
由於通常是在Linux上建立Oracle, 所以在Client常要連線Server.
目前筆者較常使用的是PL/SQL DEVELOPER 這套軟體.
至於要怎樣連線Server, 請參閱筆者其他文章.
—————————————————————————————–
問題描述:
由於Linux常會改寫主機名字, 所以會導致PL/SQL DEVELOPER無法連線.
ORA-12514: TNS: 監聽器目前不知道連線描述區中要求的服務.
主要是因為Client下的tnsnames.ora設定的問題.
先查詢一下Linux主機名稱
[root ~ ]#vi /etc/hosts
…..
127.0.0.1 localhost.localdomain localhost
……
之後在tnsnames.ora
將service更改為完整的sid+domainname
舉例如下:
orcl =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = xxx.xxx.xxx.xxx)(PORT = 1521))
)
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = orcl.localdomain)
)
)
這樣就可以了.
這個問題的原因是因為client連線時server無法分辨真正要連線的SID Name(Service Name)所造成的。
原文出處:
http://tw.myblog.yahoo.com/database995/article?mid=812&prev=813&next=-1
本文主要是參照:
http://blog.xuite.net/pippeng/blog/20192494
改寫成我要的設定如下:
1. 我下載下來的tomcat主要是放在/opt下
[oracle@localhost apache-tomcat-6.0.20]$ pwd
/opt/apache-tomcat-6.0.20
2.
到tomcat的目錄(/opt/apache-tomcat-6.0.20)內的子目錄/bin將jsvc.tar.gz解壓縮
#cd /opt/apache-tomcat-6.0.20/bin
#tar zxvf jsvc.tar.gz
#cd jsvc-src
#chmod +x configure
執行configure並指定jdk位置,請依照你安裝jdk路徑
我的是jdk路徑是/opt/jdk1.6.0_17
#./configure –with-java=/opt/jdk1.6.0_17
完成後依照指示執行make
#make
再來新增tomcat的使用者帳戶
名稱可自定,最好設成nologin
#useradd -s /sbin/nologin tomcat
再來將tomcat的檔案權限開放給剛剛新增的一般使用者
#chown -R tomcat.tomcat /opt/apache-tomcat-6.0.20/
接下來讓tomcat變成服務service
新增一檔案到Linux的init.d這目錄,檔案名稱可以任意
我的範例是新增一tomcatStart來當這service的名稱
#cd /etc/init.d/
#!/bin/sh
# chkconfig: 345 88 14
# description: Tomcat Daemon
# processname: jsvc
# pidfile: /var/run/jsvc.pid
# config:
#
# Source function library.
. /etc/rc.d/init.d/functions
#
prog=tomcat
JAVA_HOME=/opt/jdk1.6.0_17
CATALINA_HOME=/opt/apache-tomcat-6.0.20
DAEMON_HOME=/opt/apache-tomcat-6.0.20/bin
TOMCAT_USER=tomcat
# for multi instances adapt those lines.
TMP_DIR=/var/tmp
PID_FILE=/var/run/jsvc.pid
CATALINA_BASE=/opt/apache-tomcat-6.0.20
CATALINA_OPTS=
CLASSPATH=\
$JAVA_HOME/lib/tools.jar:\
$CATALINA_HOME/bin/commons-daemon.jar:\
$CATALINA_HOME/bin/bootstrap.jar
case 『$1″ in
start)
#
# Start Tomcat
#
$DAEMON_HOME/jsvc-src/jsvc \
-user $TOMCAT_USER \
-home $JAVA_HOME \
-Dcatalina.home=$CATALINA_HOME \
-Dcatalina.base=$CATALINA_BASE \
-Djava.io.tmpdir=$TMP_DIR \
-wait 10 \
-pidfile $PID_FILE \
-outfile $CATALINA_HOME/logs/catalina.out \
-errfile ‘&1′ \
$CATALINA_OPTS \
-cp $CLASSPATH \
org.apache.catalina.startup.Bootstrap
#
# To get a verbose JVM
#-verbose \
# To get a debug of jsvc.
#-debug \
exit $?
;;
stop)
#
# Stop Tomcat
#
$DAEMON_HOME/jsvc-src/jsvc \
-stop \
-pidfile $PID_FILE \
org.apache.catalina.startup.Bootstrap
exit $?
;;
*)
echo 『Usage service tomcat55 start/stop』
exit 1;;
esac
儲存後,記得要將這檔案可以被執行
#chmod 755 tomcatStart
將這shell script新增為service並設為開機自動執行
#chkconfig –add tomcatStart
#chkconfig tomcatStart on
啟動tomcatStart service
#service tomcatStart start
檢查是否有啟動
#netstat -tupln |grep jsvc.exec
以上完成!!!
1. 建立一個稱為oracledb的Shell Script,讓開機的時候自動執行它
[root@localhost bin]# pwd
/u01/app/oracle/product/11.2.0/dbhome_1/bin
[root@localhost bin]$ vi oracledb
2.檔案內容如下:
#!/bin/bash
export JAVA_HOME=/opt/jdk1.6.0_17
export ORACLE_BASE=/u01/app/oracle
export ORACLE_HOME=$ORACLE_BASE/product/11.2.0/dbhome_1
(筆者: ORACLE_HOME 應改用絕對路徑, 用變數表是似乎不會正確執行SCRIPT)
export ORACLE_SID=orcl
export ORACLE_TERM=xterm
export TNS_ADMIN=$ORACLE_HOME/network/admin
export ORACLE_OWNR=oracle
#NLS_LANG=』TRADITIONAL CHINESE_TAIWAN』.ZHT16BIG5;export NLS_LANG
export NLS_LANG
#LC_CTYPE=zh_TW.Big5; export LC_CTYPE
export LC_CTYPE
#LC_ALL=zh_TW.UTF8; export LC_ALL
export LC_ALL
#LANG=zh_TW.Big5; export LANG
export LANG
export LD_LIBRARY_PATH=$ORACLE_HOME/lib:/lib:/usr/lib
export PATH=$JAVA_HOME/bin:$ORACLE_HOME/bin:$PATH:$HOME/bin
if [ ! -f $ORACLE_HOME/bin/dbstart -o ! -d $ORACLE_HOME ]
then
echo 『Oracle startup: cannot start』
exit 1
fi
case 『$1″ in
start)
# Oracle listener and instance startup
echo -n 『Starting Oracle: 『
su $ORACLE_OWNR -c 『$ORACLE_HOME/bin/lsnrctl start』
su $ORACLE_OWNR -c 『$ORACLE_HOME/bin/dbstart $ORACLE_HOME』
su $ORACLE_OWNR -c 『$ORACLE_HOME/bin/emctl start dbconsole』
su oracle -c 『/u01/app/oracle/product/11.2.0/dbhome_1/bin/emctl start dbconsole』
touch /var/lock/oracle
echo 『OK』
;;
stop)
# Oracle listener and instance shutdown
echo -n 『Shutdown Oracle: 『
su $ORACLE_OWNR -c 『$ORACLE_HOME/bin/lsnrctl stop』
su $ORACLE_OWNR -c 『$ORACLE_HOME/bin/dbshut $ORACLE_HOME』
su $ORACLE_OWNR -c 『$ORACLE_HOME/bin/emctl stop dbconsole』
rm -f /var/lock/oracle
echo 『OK』
;;
reload|restart)
$0 stop
$0 start
;;
*)
echo 『Usage: `basename $0` start|stop|restart|reload』
exit 1
esac
exit 0
3.執行這程式
[root@localhost bin]# ./oracledb start
(如果執行不成功, 請檢查設置路徑地方是否正確)
4.看一下記憶體中oracle相關程序
[root@oracle db_1]# ps aux | grep oracle
5.編輯開機自動執行設定檔/etc/rc.local
root@lu-desktop:~# vi /etc/rc.local
加入一行
/u01/app/oracle/product/11.2.0/dbhome_1/bin/oracledb start
然後重新啟動 (在全藍色畫面會花些時間)
再用ps aux | grep oracle檢查
如果有出現類似下面的訊息,表示emctl仍在啟動中 ,請再等等
確認啟動完成後,再用瀏覽器連到 Oracle 的管理介面看看
[root@oracle db_1]# firefox https://localhost:1158/em &
Stopping Oracle Services
● Stop isqlplusctl
oracle> isqlplusctl stop
在11gR2
it is deprecated……囧>
● Stop EM
oracle> emctl stop dbconsole
● Stop Database
oracle> sqlplus -S /nolog <<ENDSQL
connect / as sysdba
shutdown immediate
exit
ENDSQL
● Stop Listener
oracle> lsnrctl stop
Starting Oracle Services
● Start Listener
oracle> lsnrctl start
● Start Database
oracle> sqlplus -S /nolog <<ENDSQL
connect / as sysdba
startup
exit
ENDSQL
● Start EM(Enterprise Manager)
oracle> emctl start dbconsole
● Start isqlplusctl
oracle> isqlplusctl start
在11gR2
it is deprecated……囧>
出處: http://forums.oracle.com/forums/thread.jspa?messageID=3877207&tstart=0
先決條件: 注意我的主機名稱是localhost.localdomain
當測試 emctl (Enterprise Manager Control是Oracle的Web管理介面)
[oracle@oracle ~]$ emctl start dbconsole
OC4J Configuration issue. /u01/app/oracle/product/11.1.0/db_1/oc4j/j2ee/OC4J_DBConsole_oracle_ORCL not found.
發現無法啟動….Q__Q , 解決方法如下
[oracle@localhost j2ee]$ pwd
/u01/app/oracle/product/11.2.0/dbhome_1/oc4j/j2ee
[oracle@localhost j2ee]$ cp -rf OC4J_DBConsole_localhost_orcl OC4J_DBConsole_loc alhost.localdomain_orcl
對!主要就是新增一個檔案…讓oracle使用,再開一次, 發現
EM Configuration issue. /u01/app/oracle/product/11.2.0/dbhome_1/localhost.locald
方法類似, 解法如下:
[oracle@localhost dbhome_1]$ pwd
/u01/app/oracle/product/11.2.0/dbhome_1
[oracle@localhost dbhome_1]$ cp -rf localhost_orcl localhost.localdomain_orcl
本篇主要是參照以下兩篇文章與其他網路文章加以修改而成:
http://forum.icst.org.tw/phpbb/viewtopic.php?f=21&t=16411&start=0&sid=866700eee479d130d126967c3160e7f4
http://www.oracle.com/technology/pub/articles/smiley-11gr1-install.html
1. 先裝好CentOS5.4
注意:
A.記得裝好後要先關閉SELinux
B. oracle 需要有1G以上的實體記憶體(VM中建議1100MB)
C. 建議2GB(或2倍以上的實體記憶體)的SWAP空間
D.安裝必須套件 (這全部是同一行)
[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
以及
[root@oracle ~]#yum install pdksh-5.2.14
E.由於考量日後還要繼續新增ORACLE的database大小
所以建議主硬碟為10G + 2G的SWAP +1G實體記憶體(建議是1100MB)
用VM時,假設掛載上的硬碟為/dev/sdb , 掛載目錄設為 /u01
掛載方法請參照筆者網誌上的另一篇文章.
F.建立oracle帳戶, 使用第二步驟建立, 此帳戶將用來開啟與管理ORACLE所有設定(不一定要給予ROOT權限)
G.下載下來的oracle安裝檔,必須解壓縮在同一目錄, 如:
unzip linux_11gR2_database_1of2.zip
unzip linux_11gR2_database_2of2.zip
cd database
./runInstall
2.用root執行
# groupadd oinstall (建立oinstall 群組,安裝程序那邊會用到)
# groupadd dba (建立dba群組,安裝程序那邊會用到)
# useradd -g oinstall -G dba oracle
# passwd oracle
# mkdir -p /u01/app/oracle/product/
為了使以上的設定變更到另一磁碟, ex: /dev/sdb, 請先將/dev/sdb掛載成/u01
# chown oracle:oinstall /u01/app/oracle (之後軟體安裝的路徑)
#mkdir -p /u01/app/oracle/product/
#chmod -R 775 /u01
把/u01給oracle使用
#chown -R oracle:oinstall /u01
(這段要執行, 不然之後安裝程序要回來改權限)
3. 改用oracle登入, 這邊是希望之後以oracle就執行與管理這項服務, 不要被其他帳戶混淆.(盡可能由單一用戶執行單一服務, 也盡量不要用root開啟服務)
並改寫oracle 的 .bash_profile 部分如下
export JAVA_HOME=/opt/jdk1.6.0_17
export ORACLE_BASE=/u01/app/oracle
export ORACLE_SID=orcl
export ORACLE_HOME=$ORACLE_BASE/product/11.2.0/dbhome_1
export ORACLE_TERM=xterm
export TNS_ADMIN=$ORACLE_HOME/network/admin
#NLS_LANG=』TRADITIONAL CHINESE_TAIWAN』.ZHT16BIG5;export NLS_LANG
export NLS_LANG
#LC_CTYPE=zh_TW.Big5; export LC_CTYPE
export LC_CTYPE
#LC_ALL=zh_TW.UTF8; export LC_ALL
export LC_ALL
#LANG=zh_TW.Big5; export LANG
export LANG
export LD_LIBRARY_PATH=$ORACLE_HOME/lib:/lib:/usr/lib
export PATH=$JAVA_HOME/bin:$ORACLE_HOME/bin:$PATH:$HOME/bin
4.用root修改下面參數:
修改核心參數:
Add the following lines to /etc/sysctl.conf
32位元的設定
rnel.shmall=2097152
kernel.shmmax=552599552——half the size of physical memory(一半的記憶體, 以1gRAM來說, 會是552599552 )
kernel.shmmni=4096
kernel.sem=250 32000 100 128
net.core.rmem_default = 262144
net.core.wmem_default = 262144
fs.file-max = 6815744
net.core.rmem_max = 4194304
net.core.wmem_max = 1048576
fs.aio-max-nr = 1048576
net.ipv4.ip_local_port_range = 9000 65500
64位元的
kernel.shmall=2097152
kernel.shmmax=552599552
kernel.shmmni=4096
kernel.sem=250 32000 100 128
net.core.rmem_default = 262144
net.core.wmem_default = 262144
fs.file-max = 6815744
net.core.rmem_max = 4194304
net.core.wmem_max = 1048576
fs.aio-max-nr = 1048576
net.ipv4.ip_local_port_range = 9000 65500
讓設定生效, 改完核心參數之後, 一定要執行, 使設定生效!!!!
[root@oracle ~]# /sbin/sysctl –p
為oracle用戶設置Shell限制,
Add the following lines to /etc/security/limits.conf
oracle soft nproc 2047
oracle hard nproc 16384
oracle soft nofile 1024
oracle hard nofile 65536
修改/etc/pam.d/login
Add the following lines to /etc/pam.d/login
session required pam_limits.so
如果使用bash Shell,修改/etc/profile
Add the following lines to /etc/profile
if [ \$USER = "oracle" ]; then
if [ \$SHELL = "/bin/ksh" ]; then
ulimit -p 16384
ulimit -n 65536
else
ulimit -u 16384 -n 65536
fi
umask 022
fi
5. 進入解壓縮後產生的database資料夾, 執行:
[oracle@oracle database]$ ./runInstaller
6.依照以下步驟開始安裝:
Step1:
Step2:
Step3:
Step4a: 這邊會改設定!!!請看下一張圖
Step4b:
注意為了日後編碼問題, 使用ALU32UTF8字元集
同時要注意,OSDBA群組為dba.
Step5:
在步驟五中, 要注意oraInventory群組名稱為: oinstall
Step8a:
Step8b:
Step8c:
Step9:
出现这个问题后使用“清理”功能,如果还不行,就直接到上一级目录,再执行“清理”,然后再“更新”。
有时候如果看到某个包里面的文件夹没有SVN的标志,直接用“Ctrl+Delete”手工删除,然后“清理”,最后“更新”或“提交”。
配置文件12行开头有空格
错误信息
Attempted to lock an already-locked dir
svn: Working copy ‘E:\integration\com.svn.practise’ locked
原因:
需要用svn cleanup上次关闭时的锁定
Attempted to lock an already-locked dir
svn: Working copy ‘F:\workspace\WebFrame\WebRoot\attach\prodrelation’ locked
执行“清除”操作后,问题解决了。
很多操作,例如中断提交,都会进入这种工作拷贝的锁定状态。
老实讲,因为版本冲突,提交冲突,更新失败等等问题,耽误了好些时间,但我知道主要还是自身操作不熟练不规范的问题。我相信,只要坚持,大家包括我的组员一定都会喜欢上这个小海龟的
原文出處:
http://www.blogjava.net/coderdream/archive/2008/05/27/203115.html
簡單的來說, 就是在用JDBC時, sql的語句要注意有沒有加上適當的 ;
在處理Oracle的JDBC時,
由於和MYSQL語法有所不同, 所以必須要注意.
譬如:
String seqenceSql = 『CREATE SEQUENCE 』 + template +』_OID_SEQ』 + 『』;
int resultSeqence = stat.executeUpdate(seqenceSql.toString());
這邊必須注意 seqenceSql 之後不能加上 ;
不然會出錯
還有
INSERT INTO test(FIELDA,FIELDB)VALUES (’1′,’2′)
注意這邊最後沒有 ;