恩..我換網誌了..XD

原因就不講了…

請大家告訴大家

換到

http://miracle-neatly.blogspot.com/

感恩^^

發表迴響

ORA-12514: TNS: 監聽器目前不知道連線描述區中要求的服務

先描述一下筆者所在的情況:

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

發表迴響

使用jsvc開機執行tomcat

本文主要是參照:

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

以上完成!!!

發表迴響

開機時自動執行oracle11gR2

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

然後重新啟動 (在全藍色畫面會花些時間)

編輯 /etc/oratab,
將     orcl:/u01/app/oracle/product/11.2.0/dbhome_1:N
改成 orcl:/u01/app/oracle/product/11.2.0/dbhome_1:Y
(改成Y)
代碼:
root@lu-desktop:~# reboot

再用ps aux | grep oracle檢查

代碼:
[root@oracle db_1]# ps aux  |  grep oracle

如果有出現類似下面的訊息,表示emctl仍在啟動中 ,請再等等

代碼:
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
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
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

確認啟動完成後,再用瀏覽器連到 Oracle 的管理介面看看

代碼:

[root@oracle db_1]# firefox  https://localhost:1158/em  &

發表迴響

停止Oracle服務, 簡易流程

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

發表迴響

開啟oracle服務, 簡易流程

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

發表迴響

OC4J Configuration issue.

先決條件: 注意我的主機名稱是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

發表迴響

在CentOS5.4安裝Oracle 11gR2

本篇主要是參照以下兩篇文章與其他網路文章加以修改而成:

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错误:Attempted to lock an already-locked dir

出现这个问题后使用“清理”功能,如果还不行,就直接到上一级目录,再执行“清理”,然后再“更新”。

有时候如果看到某个包里面的文件夹没有SVN的标志,直接用“Ctrl+Delete”手工删除,然后“清理”,最后“更新”或“提交”。


网络摘抄1:
错误信息
Malformed file
svn: E:\svn\repository\conf\svnserve.conf:12: Option expected
原因:

配置文件12行开头有空格

错误信息
Attempted to lock an already-locked dir
svn: Working copy ‘E:\integration\com.svn.practise’ locked

原因:

需要用svn cleanup上次关闭时的锁定


网络摘抄2:
在eclipse里提交和更新文件是抱错。

Attempted to lock an already-locked dir
svn: Working copy ‘F:\workspace\WebFrame\WebRoot\attach\prodrelation’ locked

执行“清除”操作后,问题解决了。

很多操作,例如中断提交,都会进入这种工作拷贝的锁定状态。


网络摘抄3:
因为这两天频出这个现象,现在基本不怕这个问题了
我是这样解决的:
1 三令五申项目的组员必须先同步,合并,再提交
2 操作后经常地在父目录使用clean up命令
3 解决了locked问题后,还出现不能更新的现象时,就删除目录下的所有文件,包括.svn,再重新check out服务器同目录一次
4 总之,操作要规范,要强调组员每天开工时,先在ECLIPSE里同步,下班时,要提交(提交前,先在文件夹的右菜单中,选择小组>清除),保证每个人的机子里在开工前都是最新版本

老实讲,因为版本冲突,提交冲突,更新失败等等问题,耽误了好些时间,但我知道主要还是自身操作不熟练不规范的问题。我相信,只要坚持,大家包括我的组员一定都会喜欢上这个小海龟的

原文出處:

http://www.blogjava.net/coderdream/archive/2008/05/27/203115.html

發表迴響

Oracle JDBC 須注意地方

簡單的來說, 就是在用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′)

注意這邊最後沒有 ;

發表迴響

Older Posts »
Follow

Get every new post delivered to your Inbox.