参考资料
http://gaiustech.wordpress.com/2013/06/26/howto-install-oracle-on-debian-wheezy/ (重要)
http://gaiustech.wordpress.com/2013/06/27/howto-install-oracle-12c-on-debian-wheezy/
http://www.debian-administration.org/articles/656
http://gemsofprogramming.wordpress.com/2013/09/19/installing-oracle-12c-on-ubuntu-12-04-64-bit-a-hard-journey-but-its-worth-it/ (重要)
http://gumpx.wordpress.com/tag/libnls12-a/ (重要)
https://community.oracle.com/thread/2558597 (重要)
0.0 安装文件下载
http://www.oracle.com/technetwork/database/enterprise-edition/downloads/database12c-linux-download-1959253.html
http://pan.baidu.com/wap/link?uk=1947011545&shareid=3172516112 (百度网盘)
按照物理内存的80%来创建的。调整优化参数。
#共享内存的页数,Linux共享内存页大小为4KB,8G内存设置为:8GB/4KB=8*1024*1024*1024/4KB=2097152
#kernel.shmall = 2097152
#128GB/4KB
kernel.shmall = 33554432
#最大共享内存,官方文档建议是内存的1/2,例如:8G内存则设置为:4*1024*1024*1024
#kernel.shmmax = 4294967296
#128G * 50%
kernel.shmmax = 68719476736
0.1 用Virutualbox安装Debian x64 tesing
安装基本系统,桌面系统和SSH
0.2 调整内核参数
将
kernel.shmmax=1073741824
kernel.shmall=262143
添加到/etc/sysctl.conf的最后,并执行
# sysctl -w kernel.shmmax=1073741824
# sysctl -w kernel.shmall=262143
0.3 准备依赖的库
# apt-get install libaio-dev sysstat unixodbc-dev libelf-dev unzip g++ zlib1g-dev libstdc++5
1.添加oracle用户
# groupadd dba
# useradd -d /home/oracle -m -c "Oracle Database" -g dba -s `which bash` oracle
2.准备数据库的安装目标位置
/opt/oracle
安装oracle软件时,所有的日志都会放在oraInventory这个目录下,默认情况下该目录会在$ORACLE_BASE/oraInventory (在 /etc/oraInst.loc 指定)
/opt/oraInventory
/oradata
# mkdir /opt/oracle
# mkdir /opt/oraInventory
# mkdir /oradata
# chown oracle:dba /opt/oracle /opt/oraInventory /oradata
# xhost +
3. 为兼容Redhat做一些符号链接, 因而oracle把一些二进制程序的路径写死了
# mkdir /usr/lib64
# ln -s /usr/lib/x86_64-linux-gnu/libpthread_nonshared.a /usr/lib64/
# ln -s /usr/lib/x86_64-linux-gnu/libc_nonshared.a /usr/lib64/
# ln -s /lib/x86_64-linux-gnu/libgcc_s.so.1 /lib
# ln -s /usr/lib/x86_64-linux-gnu/libstdc++.so.6 /usr/lib64/
4. 切换到oracle用户,执行安装
# su - oracle
如果你的zip文件没有放到/home/oracle目录的,解压缩过程可以手动执行
$ for f in *.zip ; do unzip $f; done
$ cd database/
$ export DISPLAY=:0.0
$ export ORACLE_BASE=/opt/oracle
$ export ORACLE_HOME=$ORACLE_BASE/product/12.1.0.1.0
$ export PATH=$PATH:$ORACLE_HOME/bin
$ export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/lib/x86_64-linux-gnu:/lib/x86_64-linux-gnu:/usr/lib64
$ ./runInstaller
在安装图形界面 选择
“install the database software only” 只安装数据库软件
“single instance database installation” 只安装单个数据库实例, 不搞什么集群,分布式,那些太高端了;-)
“Enterprise Edition” 企业版
4.1
如果你使用 zh_CN.UTF-8 的local,且 系统语言 选择了 汉语, 那么安装界面会乱码,那是因为 安装程序自带的JDK指定要一种 系统没有的字体, 不过我们可以用Debian的OpenJDK来代替
./runInstaller -jreLoc /usr/lib/jvm/java-1.7.0-openjdk-amd64/jre
4.2
另外一种解决乱码的方法
database/stage/Components/oracle.jdk/1.6.0.37.0/1/DataFile/ 下面有filegroup1.jar 这个文件
用”归档管理器”打开 filegroup1.jar, 在jdk/jre/lib/fonts 目录下创建fallback
然后将中文字体,比如 zysong.ttf(中易宋体) 或者 simsun.ttc(微软的宋体) 拖到jdk/jre/lib/fonts/fallback 这个目录
这样,当 找不到指定字体是,就fallback到zysong了
管理数据库的软件dbca也会乱码, 在安装后后,运行dbca前,也可以把字体 复制到 $ORACLE_HOME/jdk/jre/lib/fonts/fallback/ 这个目录
5. 解决安装过程中的问题
5.0 安装过程进行到80%多(所有文件复制完毕,并开始链接后), 报错
ins_precomp.mk
INFO: /usr/bin/ld: <ORACLE_HOME>/lib//libnls12.a(lxhlang.o): undefined reference to symbol ‘__tls_get_addr@@GLIBC_2.3′
这是因为oracle安装文件自带的 库文件太老了
需要删除 {ORACLE_HOME}/lib/stubs 这个目录 (对于我的设置,就是 /opt/oracle/product/12.1.0.1.0/lib/stubs
cd /opt/oracle/product/12.1.0.1.0/lib
rm -rf stubs
5.1 在图形安装界面 点击Retry继续, 再次报错
ins_rdbms.mk
libclient12.a(kpue.o): undefined reference to symbol 'ons_subscriber_close'
....
libons.so: could not read symbols: Invalid operation
修改 rdbms/lib/ins_rdbms.mk 的 883行 和 901 行
$(PLSHPROF) : $(ALWAYS) $(PLSHPROF_DEPS)
$(SILENT)$(ECHO)
$(SILENT)$(ECHO) " - Linking hierarchical profiler utility (plshprof)"
$(RMF) $@
$(PLSHPROF_LINKLINE) -lons
....
$(RMAN) : $(ALWAYS) $(RMAN_DEPS)
$(SILENT)$(ECHO)
$(SILENT)$(ECHO) " - Linking recovery manager (rman)"
$(RMF) $@
$(RMAN_LINKLINE) -lons
5.2 在图形节目 Retry, 第3次报错
ins_rdbms.mk
houzi.o: undefined reference to symbol 'ztcsh'
libnnz12.so: could not read symbols: Invalid operation
修改 ins_rdbms.mk 的 1067行
$(TG4PWD) : $(ALWAYS) $(TG4PWD_DEPS)
$(SILENT)$(ECHO)
$(SILENT)$(ECHO) " - Linking $(TG4DG4)pwd utility"
$(RMF) $@
$(TG4PWD_LINKLINE) -lnnz12
6. 执行最后的脚本
# ln -s /usr/bin/awk /bin/awk
# /opt/oraInventory/orainstRoot.sh
# /opt/oracle/product/12.1.0.1.0/root.sh
7.启动DBCA
7.1修改一些系统配置
# vi /etc/sysctl.conf
# Oracle 12c entries
fs.aio-max-nr=1048576
fs.file-max=6815744
kernel.shmall=2097152
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
kernel.shmmax=1073741824
# sysctl -p
# vi /etc/security/limits.conf
#Oracle 12c
oracle soft nproc 2048
oracle hard nproc 16384
oracle soft nofile 1024
oracle hard nofile 65536
7.2 配置环境变量, 并以oracle用户启动 数据库管理程序dbca
$ export ORACLE_BASE=/opt/oracle
$ export ORACLE_HOME=$ORACLE_BASE/product/12.1.0.1.0
$ export PATH=$PATH:$ORACLE_HOME/bin
$ dbca
第1次启动有点慢