openEuler安装Oracle踩坑
不得不说Oracle安装在Windows上就够麻烦了,到Linux上直接地狱难度.
众所周知Oracle是收费软件,所以什么从仓库一键安装就不要想了,
现在更是变本加厉,下载必须注册Oracle账号,希望大家以后都别用了吧,用"世界上最先进的开源关系型数据库"PG不好吗.
-------------------------------------------------------------------------------------
言归正传,为了尽量简单,选用了预安装包的方法,过程参考文章:
Huawei Cloud EulerOS通过RPM包安装Oracle19c数据库_openeuler 欧拉 安装oracle19c数据库rpm包安装-CSDN博客
在openEuler-24.03 (LTS-SP2)上RPM方式安装Oracle19c_openeuler安装oracle-CSDN博客
遇到的问题:
1.上面文章也有提到先安装 Oracle 19c 的前置准备包oracle-database-preinstall-19c,会提示缺少依赖,
大多数可以直接 yum -y install 提示的缺少的依赖名 安装,安装不上的,从这里Oracle Linux 7 (x86_64) Latest | Oracle, Software. Hardware. Complete. 下载rpm,手动安装.
最后剩一个/etc/redhat-release缺少,这个只是Oracle检测操作系统版本,不影响安装,直接加 --nodeps参数忽略:
rpm -ivh oracle-database-preinstall-19c-1.0-1.el9.x86_64.rpm --nodeps
2.执行/etc/init.d/oracledb_ORCLCDB-19c configure命令初始化数据库实例(默认实例名为ORCLCDB)
从Oracle12 开始,Oracle 使用了多租户模式,分为CDB和PDB,CDB包含多个PDB但没有数据库实例,PDB下有数据库实例
3.参考文章里配置的开机启动,我试了并没有作用,因为时间有限,测试了一个systemd方案,没有成功,现在是手动切换到linux oracle用户下,进入sqlplus / as sysdba,直接执行startup手工启动
4.监听 可以使用systemd方案实现开机启动,配置文件/etc/systemd/system/oracle-lsnrctl.service
[Unit] Description=Oracle Listener Control After=network.target [Service] Type=forking Environment=ORACLE_HOME=/opt/oracle/product/19c/dbhome_1 Environment=ORACLE_BASE=/opt/oracle Environment=LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/lib:/usr/lib:/usr/local/lib:$ORACLE_HOME/oracm/lib:$ORACLE_HOME/lib Environment=PATH=$PATH:/opt/oracle/product/19c/dbhome_1/bin ExecStart=/opt/oracle/product/19c/dbhome_1/bin/lsnrctl start ExecStop=/opt/oracle/product/19c/dbhome_1/bin/lsnrctl stop User=oracle Group=oinstall Restart=on-failure
然后执行
sudo systemctl daemon-reload sudo systemctl enable oracle-lsnrctl.service sudo systemctl start oracle-lsnrctl.service
监听手动启动方法:
su - oracle
lsnrctl start
5.导入问题
这个是oracle最大的坑,客户那边可能是由于网络限制,或者网络质量问题,使用ssh隧道无法连接数据库,只能把端口直接转发到开启的外网映射端口,
但是连接也及其不稳定,导入数据更是问题百出,开始在自己电脑上用imp导就丢表,后来分批次导,发现 有clob等大字段的表 只建了表,数据没有导入,直接是空的,
后来把本机exp导出的dmp文件传到数据库服务器,用服务器上的imp导入,直接提示文件头错误,deepseek后才知道,oracle imp/exp版本不一样还不行,
后来把本机imp降级到19.23,不要问为什么不将到数据库服务器上的19.0,因为管网根本不提供历史小版本,服气,
然后还是一样的效果,数据导不进去,
不要跟我说用数据泵导出文件然后传到服务器,因为我的测试数据库在公司服务器上,我只有数据库的账号,没有服务器的系统账号,没法获取数据泵生成的文件(oracle那帮人怎么想的,正常客户给linux服务器账号的很多吗?)
最后解决方案是建立一个dblink,然后在服务器上用数据泵导,这样就不必生成文件,也自然没有服务器账号的问题,但明显的,这个方法要求两个库网络必须通
/etc/systemd/system/oracle-lsnrctl.service

浙公网安备 33010602011771号