Oracle on Ubuntu Linux

http://blogs.oracle.com/toxophily/entry/installing_oracle_11g_db_on

http://www.linuxidc.com/Linux/2011-03/32807.htm

http://www.pythian.com/news/13291/installing-oracle-11gr2-enterprise-edition-on-ubuntu-10-04-lucid-lynx/

https://forums.oracle.com/forums/thread.jspa?threadID=954055

1.

Update Packages

apt-get update
apt-get update

apt-get install elfutils libaio1 libaio-dev libstdc++6-4.4-dev numactl pdksh sysstat unixODBC-dev unixODBC build-essential libaio1 gawk ksh libmotif3 alien libtool lsb-rpm

2.

Create Groups

groupadd oinstall
groupadd dba
groupadd nobody

usermod -g nobody nobody

3.

Create / Update oracle User

useradd -s /bin/bash -m -g oinstall -G dba oracle

passwd oracle

4.

The following command is required to successfully run the installer.

xhost local:oracle

5.

Configure Limits for oracle

sudo gedit /etc/security/limits.conf

Add :

oracle soft nproc 2047
oracle hard nproc 16384
oracle soft nofile 1024
oracle hard nofile 65536

6.

Configure System

sudo gedit /etc/sysctl.conf

Add :

fs.aio-max-nr = 1048576
fs.file-max = 6815744
kernel.shmall = 2097152
kernel.shmmax = 536870912
kernel.shmmni = 4096
kernel.sem = 250 32000 100 128
net.ipv4.ip_local_port_range = 9000 65500
net.core.rmem_default = 262144
net.core.rmem_max = 4194304
net.core.wmem_default = 262144
net.core.wmem_max = 1048586
net.ipv4.tcp_wmem = 262144 262144 262144
net.ipv4.tcp_rmem = 4194304 4194304 4194304

7.

Make Directories

mkdir -p /u01/app/oracle
chown -R oracle:oinstall /u01/app/oracle
chmod -R 775 /u01/app/oracle
mkdir -p /u01/app/oraInventory
chown -R oracle:oinstall /u01/app/oraInventory
chmod -R 775 /u01/app/oraInventory

8.

Link command to location expected by oracle installer

ln -s /usr/bin/awk /bin/awk
ln -s /usr/bin/rpm /bin/rpm
ln -s /usr/bin/basename /bin/basename

9

Run Installer

I assume here that the user has previously installed the oracle database. If not simply follow the default options when the database installer executes.

./runInstaller

https://localhost:1158/em

Invalid source path ‘../stage/Components/oracle.jdk/1.5.0.17.0/1/DataFiles’ specified for unzip.

问题,第二张盘没有解压

http://www.oracle.com/technetwork/developer-tools/sql-developer/downloads/index.html

http://www.oracle.com/technetwork/developer-tools/jdev/overview/index.html

mysql 123456

自启动

Post Install

Add the following to /etc/profile

export ORACLE_BASE=/u01/app/oracle
export ORACLE_HOME=$ORACLE_BASE/product/11.2.0/dbhome_1
export ORACLE_OWNR=oracle
export
PATH=$PATH:$ORACLE_HOME/bin

Start Script

Create /etc/init.d/oracledb with the following contents:

#!/bin/bash
#
# Run-level Startup script for the Oracle Listener and Instances
# It relies on the information on /etc/oratab
#
export ORACLE_OWNR=oracle
export ORACLE_OWNER=oracle
export ORACLE_BASE=/u01/app/oracle
export ORACLE_HOME=$ORACLE_BASE/product/11.2.0/dbhome_1
export PATH=$PATH:$ORACLE_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”
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”
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

Execute :

cd /etc/init.d
update-rc.d oracledb defaults 99

The above will create links within the rc\*.d directories.

TNS:net service name is incorrectly specified

http://space.itpub.net/519536/viewspace-672034

SID_LIST_LISTENER =
(SID_LIST =
(SID_DESC=(
(SID_NAME=orcl)
(GLOBAL_DBNAME=orcl)
(ORACLE_HOME=/u01/app/oracle/product/11.2.0/dbhome_1/)
)
)
)

NL-00303: syntax error in NV string

alert.log文件位置
unix下在:$ORACLE_BASE/admin/sid/bdump下
windows:%ORACLE_BASE%/admin/sid/bdump下

在使用emctl的时候碰到了ulimit: 25: bad number.的错误
这是因为Ubuntu默认把/bin/sh指向了dash,通过修改emctl脚本的头部,将/bin/sh改成/bin/bash即解决问题。

emctl stop dbconsole

Linux: User limit of inotify watches reached.

I get inotify watches limit reached when I debug with my application in Play framework 2.5:
java.io.IOException: User limit of inotify watches reached
at sun.nio.fs.LinuxWatchService$Poller.implRegister(LinuxWatchService.java:264)
at sun.nio.fs.AbstractPoller.processRequests(AbstractPoller.java:260)
at sun.nio.fs.LinuxWatchService$Poller.run(LinuxWatchService.java:329)
at java.lang.Thread.run(Thread.java:745)
[trace] Stack trace suppressed: run last compile:run for the full output.
[error] (compile:run) java.io.IOException: User limit of inotify watches reached
[error] Total time: 4 s, completed 2016-3-29 14:32:25

Step1. cat /proc/sys/fs/inotify/max_user_watches
Step2.
sudo sysctl fs.inotify.max_user_watches=524288
Step3.
vi /etc/sysctl.conf add line below
fs.inotify.max_user_watches=524288

1. Kernel inotify watch limit reached
http://unix.stackexchange.com/questions/13751/kernel-inotify-watch-limit-reached
2. Activator Active Stocks starter application fails to run with java.io.IOException?http://stackoverflow.com/questions/27204152/activator-active-stocks-starter-application-fails-to-run-with-java-io-ioexceptio
3.

Linux 下 zip 文件解压乱码如何解决?

记指令就需要重复使用,以前处理过,又搜了一遍。先用unzip -O cp936吧。:)

知乎上的答案:
由于zip格式中并没有指定编码格式,Windows下生成的zip文件中的编码是GBK/GB2312等,因此,导致这些zip文件在Linux下解压时出现乱码问题,因为Linux下的默认编码是UTF8。
目前网上流传一种unzip -O cp936的方法,但一些unzip是没有-O这个选项的。
我使用的版本 unzip 6.0 debian modified 版本有这个选项
我发现另外两种解决方案可用。
python方案
此方案目前来看非常完美。

#!/usr/bin/env python
# -*- coding: utf-8 -*-

import os
import sys
import zipfile

#print “Processing File ” + sys.argv[1]

file=zipfile.ZipFile(sys.argv[1],”r”);
for name in file.namelist():
utf8name=name.decode(‘gbk’)
# print “Extracting ” + utf8name
pathname = os.path.dirname(utf8name)
if not os.path.exists(pathname) and pathname!= “”:
os.makedirs(pathname)
data = file.read(name)
if not os.path.exists(utf8name):
fo = open(utf8name, “w”)
fo.write(data)
fo.close
file.close()
Windows 用户屏蔽两条 print 语句,Linux 用户不用屏蔽

7z方案
需要安装p7zip和convmv,在Fedora下的命令是

su -c ‘yum install p7zip convmv’
在ubuntu下的安装命令是

sudo apt-get install p7zip convmv
安装完之后,就可以用7za和convmv两个命令完成解压缩任务。

LANG=C 7za x your-zip-file.zip
convmv -f GBK -t utf8 –notest -r .
第一条命令用于解压缩,而LANG=C表示以US-ASCII这样的编码输出文件名,如果没有这个语言设置,它同样会输出乱码,只不过是UTF8格式的乱码(convmv会忽略这样的乱码)。
第二条命令是将GBK编码的文件名转化为UTF8编码,-r表示递归访问目录,即对当前目录中所有文件进行转换。

作者:Latm Ake
链接:Linux 下 zip 文件解压乱码如何解决?
来源:知乎
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

Linux命令行proxy设置方式

最近访问amazonws有点问题,需要在命令行下解决proxy的设置问题。
http_proxy=http://:/
ftp_proxy=ftp://:/
all_proxy=socks://:/
ALL_PROXY=socks://:/
socks_proxy=socks://:/
https_proxy=https://:/
no_proxy=localhost,127.0.0.0/8,::1

如果你要在jvm里指定的话,可以指定命令行:
-Dhttp.proxyHost=proxyname
-Dhttp.proxyPort=80
-Dhttps.proxyHost=proxyname
-Dhttps.proxyPort=80

来源:
1. can not ping google using proxy
3. TypeSafe Activator 1.3.2 – Corporate proxy
4.

update-alternatives bug?

这两天学习SCRUM之后,感觉还真是不错,有的时候自己看书啊,自己想策略啊什么的是不如这个方式快。
好久没碰代码,今天心血来潮,试试Play 2.0,自从用了Play 1.x,2.0出来很久了都没有碰过。2.0改成了Scala是比较感兴趣的。

但是create hello后run的时候发生了一个很奇怪的错误。
参见:java.lang.ExceptionInInitializerError when trying to run Play Application

第一感觉是path不对?不能啊,以前没改过java的设置。
想起以前用过update-alternatives配置过java,因为另一个用java的SweetHome3D在Linux 64bit上经常闪退,切换过OpenJDK和Oracle JDK,还有1.6/1.7的切换。

验证之下
java 1.7
javac 1.6

用update-alternatives切换成7,javac还是1.6
ls /usr/bin/javac发现它是链接在/etc/alternatives/javac上的,手工改成7的就好了。

当然,问题继续存在,参考了stackover的答案。
见:JNotify Linux support</>
到Linux的root用户下修改

echo 32000 > /proc/sys/fs/inotify/max_user_watches

一切OK。

ORACLE XE UBUNTU

当初在安装Oracle时整理的一些资料。

http://space.itpub.net/519536/viewspace-672034

【故障处理】ORA-12162: TNS:net service name is incorrectly specified

本文将给大家阐述一个因未设置系统环境变量ORACLE_SID导致ORA-12162错误的案例。希望大家有所思考。

1.获得有关ORA-12162报错信息的通用表述信息
[oracle@asdlabdb01 ~]$ oerr ora 12162
12162, 00000, “TNS:net service name is incorrectly specified”
// *Cause: The connect descriptor corresponding to the net service name in
// TNSNAMES.ORA or in the directory server (Oracle Internet Directory) is
// incorrectly specified.
// *Action: If using local naming make sure there are no syntax errors in
// the corresponding connect descriptor in the TNSNAMES.ORA file. If using
// directory naming check the information provided through the administration
// used for directory naming.

2.故障现象
本文所要描述的故障与这个通用的问题描述不同,在数据库服务器端使用TNSNAMES.ORA中记录的连接串连接没有问题,但如若未指定连接串,将会报出ORA-12162错误。

1)使用system用户尝试登录系统,此时便会收到报错如下信息
[oracle@asdlabdb01 ~]$ sqlplus system/sys

SQL*Plus: Release 10.2.0.3.0 – Production on Sat Aug 27 22:54:02 2010

Copyright (c) 1982, 2006, Oracle. All Rights Reserved.

ERROR:
ORA-12162: TNS:net service name is incorrectly specified

Enter user-name:

2)使用sysdba身份登陆会得到同样的错误信息
[oracle@asdlabdb01 ~]$ sqlplus / as sysdba

SQL*Plus: Release 10.2.0.3.0 – Production on Sat Aug 27 22:54:48 2010

Copyright (c) 1982, 2006, Oracle. All Rights Reserved.

ERROR:
ORA-12162: TNS:net service name is incorrectly specified

Enter user-name:

3)但此时,如果使用服务名方式连接数据库,是可以成功的,这也是该问题现象的诡异之处。
[oracle@asdlabdb01 ~]$ sqlplus system/sys@ora10g

SQL*Plus: Release 10.2.0.3.0 – Production on Sat Aug 27 22:53:41 2010

Copyright (c) 1982, 2006, Oracle. All Rights Reserved.

Connected to:
Oracle Database 10g Enterprise Edition Release 10.2.0.3.0 – 64bit Production
With the Partitioning, Oracle Label Security, OLAP and Data Mining Scoring Engine options

system@ora10g>

想象一下,你的目标是快速的进入到数据库中进行维护操作,但此时登录都遭遇障碍,会感到非常的别扭。更让人抓狂的是,如果此时使用连接串登录到数据库进行停起操作,结果将会处于更加惨烈境况:数据库将因为无法正常登录导致无法启动数据库。

3.故障原因
诡异的故障背后的原因竟然是那样的基础:ORACLE_SID没有指定!
确认系统当前的ORACLE_HOME和ORACLE_SID环境变量
[oracle@asdlabdb01 ~]$ echo $ORACLE_HOME
/oracle/app/oracle/product/10.2.0/db_1
[oracle@asdlabdb01 ~]$ echo $ORACLE_SID

[oracle@asdlabdb01 ~]$

可见,此时只设置了ORACLE_HOME环境变量,但ORACLE_SID此时为空,这就是该问题的真实原因。

4.故障处理
给出ORACLE_SID,重新尝试登录。
[oracle@asdlabdb01 ~]$ export ORACLE_SID=ora10g
[oracle@asdlabdb01 ~]$ echo $ORACLE_SID
ora10g
[oracle@asdlabdb01 ~]$ sqlplus / as sysdba

SQL*Plus: Release 10.2.0.3.0 – Production on Sat Aug 27 23:27:34 2010

Copyright (c) 1982, 2006, Oracle. All Rights Reserved.

Connected to:
Oracle Database 10g Enterprise Edition Release 10.2.0.3.0 – 64bit Production
With the Partitioning, Oracle Label Security, OLAP and Data Mining Scoring Engine options

sys@ora10g>

OK,此时问题处理完毕。

5.小结
这个案例给我们的启迪是什么?
1)系统默认的错误提示信息有时不具有参考价值。而且,某些情况下这些错误提示还可能给我们带来误导。原因很简单,系统默认的错误提示信息不可能囊括所有故障现象;
2)任何系统级别的设置问题都有可能导致数据库系统出现异常;
3)在遇到故障的时候,我们需要沉着冷静。有些时候可能需要我们Check最原始的信息,切莫想当然。

建议:为了避免出现文章中提到的问题,第一,可以将ORACLE_SID等环境变量写入到系统profile中,但需要确保系统profile文件内容的有效性;第二,不在profile中进行填写,每次登录数据库服务器时手工完成数据库环境变量的指定,这种方法虽然增加了键盘的敲击,但它更直观、更有保障。

Good luck.

secooler
10.08.27

— The End —

http://www.linuxidc.com/Linux/2011-05/35582.htm

Ubuntu版本:

uname -r

Linux localserver 2.6.32-24-server #43-Ubuntu SMP Thu Sep 16 16:05:42 UTC 2010 x86_64 GNU/Linux

在64位的系统上安装xe先要安装32位的库:

sudo apt-get install libc6-i386
下一步是下载需要的文件:libaio_0.3.104-1_i386.deb 和 oracle-xe-universal_10.2.0.1-1.1_i386.deb

wget -c http://oss.oracle.com/debian/dists/unstable/main/binary-i386/libaio_0.3.104-1_i386.deb http://oss.oracle.com/debian/dists/unstable/non-free/binary-i386/oracle-xe-universal_10.2.0.1-1.1_i386.deb

安装:

sudo apt-get install bc

sudo dpkg -i –force-architecture libaio_0.3.104-1_i386.deb
sudo dpkg -i –force-architecture oracle-xe-universal_10.2.0.1-1.1_i386.deb

到这里,安装步骤已经完成。接下来是设置部分

sudo /etc/init.d/oracle-xe configure

根据提示完成设置。

编辑一些环境变量:sudo vim /etc/profile

在文件最后加上:

ORACLE_HOME=/usr/lib/oracle/xe/app/oracle/product/10.2.0/server
PATH=$PATH:$ORACLE_HOME/bin
export ORACLE_HOME
export ORACLE_SID=XE
export PATH

完成后访问http://127.0.0.1:8080/apex可以管理数据库

常见问题:xe不能远程访问

Answer:

Oracle XE 安装完成后,可以通过 http://127.0.0.1:8080/apex 访问Oracle Application Express 。Oracle XE 默认只监听 127.0.0.1的 8080 端口, 不能在别的机器上通过浏览器访问XE实例,如果需要在别的机器上访问数据库服务器上的XE实例,需要以system 身份登陆XE数据库,运行 EXEC DBMS_XDB.SETLISTENERLOCALACCESS(FALSE);。

SQL> EXEC DBMS_XDB.SETLISTENERLOCALACCESS(FALSE);

PL/SQL 过程已成功完成.

SQL> exit