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
posted @ 2025-10-27 08:18  dirgo  阅读(97)  评论(0)    收藏  举报