Ubuntu系统安装Oracle2C

最近公司要在一台Ubuntu服务器上装Oracle2C,很多坑,在这里跟大家分享一下

一、远程桌面

1.图形化界面问题
因为Oracle安装必须使用界面安装形式,此Ubuntu系统是在阿里云上的,目前只能使用Xshell连接,所以必须先解决图形化界面的问题。
我选择的是Xmanager
在这里插入图片描述
具体怎么使用,网上的说法不一,我亲测的一个方法有效:

(1)先安装gnome,执行以下命令:
gnome桌面窗口管理程序
sudo apt-get install gnome-shell
安装gnome面板
sudo apt-get install gnome-panel
安装gnome菜单
sudo apt-get install gnome-menus
安装gnome-session
sudo apt-get install gnome-session
安装gdm会话切换器
sudo apt-get install gdm

(2)然后启动Xmanager 新建 Xstart 会话

注意:
在创建会话之前要确保Xshell连接时保证隧道可以转发到Xmanager:
在这里插入图片描述

接下来就可以创建Xstart会话了:

在这里插入图片描述
输入连接参数,以及命令 /usr/bin/gnome-panel --display $DISPLAY

在这里插入图片描述
这个时候出现了一个错误:xhost: unable to open display
(这里我在网上找了一下,大家出的错误不大一样,但是大体都是xhost错误,但是并没有找到合适的解决方式),
试着执行 xhost +
为所有用户授权,并不可行。
然后试着 xhost + ip
还是不行
然后尝试重新安装 xterm
sudo apt-get install xterm
安装完成以后,使用命令 :
export DISPLAY=:1.0 (注意这里不是 DISPLAY=:0.0)
再执行:
xhost +
查看输出:access control disabled, clients can connect from any host
好了,授权成功。

然后就可以看到图形界面了,我的图形界面不知道因为什么原因无法看到主体,不过不要紧,按如下点击即可进入文件系统:
点击左上角Ubuntu的图标 > Accessories >Files >Computer

在这里插入图片描述
至此,图形化界面可以正常使用

二、系统变量

1.首先要执行两行命令先进行更新,不然会404错误;
sudo apt-get update
sudo apt-get upgrade
2.安装依赖包
sudo apt-get install bzip2
sudo apt-get install elfutils
sudo apt-get install automake
sudo apt-get install autotools-dev
sudo apt-get install binutils
sudo apt-get install expat
sudo apt-get install gawk
sudo apt-get install gcc
sudo apt-get install gcc-multilib
sudo apt-get install g+±multilib
sudo apt-get install ia32-libs
sudo apt-get install ksh
sudo apt-get install less
sudo apt-get install lesstif2
sudo apt-get install lesstif2-dev
sudo apt-get install lib32z1
sudo apt-get install libaio1
sudo apt-get install libaio-dev
sudo apt-get install libc6-dev
sudo apt-get install libc6-dev-i386
sudo apt-get install libc6-i386
sudo apt-get install libelf-dev
sudo apt-get install libltdl-dev
sudo apt-get install libmotif4
sudo apt-get install libodbcinstq4-1 libodbcinstq4-1:i386
sudo apt-get install libpth-dev
sudo apt-get install libpthread-stubs0
sudo apt-get install libpthread-stubs0-dev
sudo apt-get install libstdc++5
sudo apt-get install lsb-cxx
sudo apt-get install make
sudo apt-get install openssh-server
sudo apt-get install pdksh
sudo apt-get install rlwrap
sudo apt-get install rpm
sudo apt-get install sysstat
sudo apt-get install unixodbc
sudo apt-get install unixodbc-dev
sudo apt-get install unzip
sudo apt-get install x11-utils
sudo apt-get install zlibc

3.检查系统变量
sudo /sbin/sysctl -a | grep sem
sudo /sbin/sysctl -a | grep shm
sudo /sbin/sysctl -a | grep file-max
sudo /sbin/sysctl -a | grep aio-max
sudo /sbin/sysctl -a | grep ip_local_port_range
sudo /sbin/sysctl -a | grep rmem_default
sudo /sbin/sysctl -a | grep rmem_max
sudo /sbin/sysctl -a | grep wmem_default
sudo /sbin/sysctl -a | grep wmem_max

上面每一行命令都会查出对应的变量值,修改sysctl.conf 文件,将对应的数值填进去

vi /etc/sysctl.conf
输入如下,将上面每一条查出的数据找到对应的名字写进去就好

fs.aio-max-nr = ?
fs.file-max = ?
kernel.shmall = ?
kernel.shmmax = ?
kernel.shmmni = ?
kernel.sem = ?
net.ipv4.ip_local_port_range = ?
net.core.rmem_default = ?
net.core.rmem_max = ?
net.core.wmem_default = ?
net.core.wmem_max = ?

运行一下命令更新内核参数
sudo sysctl -p

4.添加对当前用户的内核限制在 /etc/security/limits.conf 文件中增加以下数据(XXX为你当前用户名)

XXX soft nproc 2047
XXX hard nproc 16384
XXX soft nofile 1024
XXX hard nofile 65536
XXX soft stack 10240

5.检查/etc/pam.d/login,增加以下行(有了就不用增加了):
session required pam_limits.so

6.检查/etc/pam.d/su,没有以下行就自己加上:
session required pam_limits.so
7.oracle默认不支持ubuntu需要欺骗一下oracle安装程序,执行以下命令:
sudo mkdir /usr/lib64 sudo ln -s /etc /etc/rc.d
sudo ln -s /lib/x86_64-linux-gnu/libgcc_s.so.1 /lib64/
sudo ln -s /usr/bin/awk /bin/awk
sudo ln -s /usr/bin/basename /bin/basename
sudo ln -s /usr/bin/rpm /bin/rpm
sudo ln -s /usr/lib/x86_64-linux-gnu/libc_nonshared.a /usr/lib64/
sudo ln -s /usr/lib/x86_64-linux-gnu/libpthread_nonshared.a /usr/lib64/ sudo ln -s /usr/lib/x86_64-linux-gnu/libstdc++.so.6 /lib64/
sudo ln -s /usr/lib/x86_64-linux-gnu/libstdc++.so.6 /usr/lib64/

8.配置oracle的环境变量
sudo gedit ~/.profile (注意这里不是 .bash_profile,没有安装gedit的话用 vi命令也可以)
export ORACLE_BASE=/home/xxx/app/xxx
export ORACLE_HOME= O R A C L E B A S E / p r o d u c t / 11.2.0 / d b h o m e 1 e x p o r t O R A C L E S I D = o r c l e x p o r t O R A C L E U N Q N A M E = o r c l e x p o r t P A T H = {ORACLE_BASE}/product/11.2.0/dbhome_1 export ORACLE_SID=orcl export ORACLE_UNQNAME=orcl export PATH= ORACLEBASE/product/11.2.0/dbhome1exportORACLESID=orclexportORACLEUNQNAME=orclexportPATH=PATH:${ORACLE_HOME}/bin/;

修改以后使用 source命令使其生效 : source ~/.profile

具体oracle2C的安装过程,这里不再赘述,我分享的资源 《linux+weblogic+jdk+Oracle2C环境搭建》 中写的很详细,当然如果不想用积分下载的话,可以自己百度一下,有很多的例子

三、安装注意事项:

如果安装时报如下错误:

请不要使用root用户跳转到oracle,即使是使用 oracle变量也不行,必须重启一个链接,使用oracle用户直接登录

四、安装以后注意事项

1.乱码问题
安装完成以后,打开客户端连接数据库,发现中文乱码,首先查看ubuntu系统变量NLS_LANG 是否正确,如果正确,sql查看当前的使用编码格式 ,
select userenv(‘language’) from dual;
如果与NLS_LANG不相符,则需要进行修改:
SQL> shutdown immediate
SQL> startup nomount
SQL> alter database mount exclusive; --装载数据为专用的高级模式;
SQL> alter system enable restricted session; --启用受限制的session模式
SQL> alter system set job_queue_processes=0; --‘maximum number of job queue slave processes’ 设置工作队列的最大进程数为0
SQL> alter system set aq_tm_processes=0;
SQL> alter database open;
SQL> alter database character set INTERNAL_USE AL32UTF8; --新的字符集必须支持旧的字符集(旧字符集的超集),
SQL> shutdown immediate
SQL> startup

再次打开客户端,进行表重新导入即可。

2.“WM_CONCAT”: 标识符无效问题
因为12C已经舍弃了 WM_CONCAT 函数,这时候项目中的一些代码就会报错,用以下方式解决:

(1)解锁sys用户
alter user sys account unlock;
(2)创建包,包体,函数
以sys用户登录数据库,执行下面的命令
CREATE OR REPLACE TYPE WM_CONCAT_IMPL AS OBJECT
(
CURR_STR VARCHAR2(32767), STATIC FUNCTION ODCIAGGREGATEINITIALIZE(SCTX IN OUT WM_CONCAT_IMPL) RETURN NUMBER,MEMBER FUNCTION ODCIAGGREGATEITERATE(SELF IN OUT WM_CONCAT_IMPL,
P1 IN VARCHAR2) RETURN NUMBER,MEMBER FUNCTION ODCIAGGREGATETERMINATE(SELF IN WM_CONCAT_IMPL,
RETURNVALUE OUT VARCHAR2,
FLAGS IN NUMBER)RETURN NUMBER,MEMBER FUNCTION ODCIAGGREGATEMERGE(SELF IN OUT WM_CONCAT_IMPL,
SCTX2 IN WM_CONCAT_IMPL) RETURN NUMBER
);
定义类型body:
CREATE OR REPLACE TYPE BODY WM_CONCAT_IMPLISSTATIC FUNCTION ODCIAGGREGATEINITIALIZE(SCTX IN OUT WM_CONCAT_IMPL)RETURN NUMBERISBEGIN
SCTX := WM_CONCAT_IMPL(NULL) ;
RETURN ODCICONST.SUCCESS;END;
MEMBER FUNCTION ODCIAGGREGATEITERATE(SELF IN OUT WM_CONCAT_IMPL,
P1 IN VARCHAR2)
RETURN NUMBER
ISBEGINIF(CURR_STR IS NOT NULL) THEN
CURR_STR := CURR_STR || ‘,’ || P1;
ELSE
CURR_STR := P1;END IF;
RETURN ODCICONST.SUCCESS;END;
MEMBER FUNCTION ODCIAGGREGATETERMINATE(SELF IN WM_CONCAT_IMPL,
RETURNVALUE OUT VARCHAR2,
FLAGS IN NUMBER)
RETURN NUMBER
ISBEGIN
RETURNVALUE := CURR_STR ;
RETURN ODCICONST.SUCCESS;END;
MEMBER FUNCTION ODCIAGGREGATEMERGE(SELF IN OUT WM_CONCAT_IMPL,
SCTX2 IN WM_CONCAT_IMPL)
RETURN NUMBER
ISBEGINIF(SCTX2.CURR_STR IS NOT NULL) THEN
SELF.CURR_STR := SELF.CURR_STR || ‘,’ || SCTX2.CURR_STR ;END IF;
RETURN ODCICONST.SUCCESS;END;END;
自定义函数:自定义行变列函数:
CREATE OR REPLACE FUNCTION wm_concat(P1 VARCHAR2)
RETURN VARCHAR2 AGGREGATE USING WM_CONCAT_IMPL ;
(3)创建同义词并授权
create public synonym WM_CONCAT_IMPL for sys.WM_CONCAT_IMPLcreate public synonym wm_concat for sys.wm_concatgrant execute on WM_CONCAT_IMPL to publicgrant execute on wm_concat to public

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值