docker oracle 9i 安装,在docker 中 GUI 安装 Oracle 11g LINUX 坑爹指南

本文详细记录了在Docker环境下安装Oracle11g所遇到的问题,包括X11驱动缺失、端口转发、权限设置、数据库启动失败等,并逐一提供了解决方法,强调了Docker并非虚拟机,不适合直接运行依赖GUI的软件。
摘要由CSDN通过智能技术生成

简介

众所周知,docker不是用来当作vm来使用的!docker不是用来当作vm来使用的!docker不是用来当作vm来使用的!

重要的话说三遍, 于是碰到了一个这样的 需求,要在docker中安装Oracle 11g, 由于Oracle 11 g linux 版本是需要x11 来驱动的,碰到的坑还是很多的,操作系统 Windows 10

准备工作

建立docker容器映射需要的端口,并赋予特殊权限,以便于修改容器内部的参数。

需求是centOS 6.8

docker run -it --privileged -p 1521:1521 -p 22:22 centos:6.8 bash

这样得到一个终端界面,安装ssh 并修改 root 密码

echo "root:root" | chpasswd

yum update -y

yum install -y openssh

yum install -y openssh-server

yum install -y openssh-clients

chkconfig sshd on

service sshd start

正常来说,这样就可以通过ssh来链接容器了。把 Oracle 11g 放在tmp文件里面。

踩坑日常

这里是本篇的重点 !

这里是本篇的重点 !

这里是本篇的重点 !

建立安装用户

sudo groupadd dba

sudo groupadd oinstall

sudo useradd -g oinstall -G dba -m oracle

切换到 oracle 用户并执行以下命令,正常情况会报错,无法打开安装界面

su – oracle

mkdir -p /data/sgbd/oracle_soa/oradata

cd /tmp

unzip linux.x64_11gR2_database_1of2.zip

unzip linux.x64_11gR2_database_2of2.zip

cd /tmp/database/

./runInstaller

错误提示如下

[oracle@265ec45c32d6 database]$ ./runInstaller

Starting Oracle Universal Installer...

Checking Temp space: must be greater than 120 MB. Actual 65490 MB Passed

Checking swap space: must be greater than 150 MB. Actual 3200 MB Passed

Checking monitor: must be configured to display at least 256 colors

>>> Could not execute auto check for display colors using command /usr/bin/xdpyinfo. Check if the DISPLAY variable is set. Failed <<<<

Some requirement checks failed. You must fulfill these requirements before

continuing with the installation,

Continue? (y/n) [n]

c4d1e522dc3358b17485e5c7b9ff1456.png

解决方法很讨厌 编辑 /etc/ssh/ssh_config 文件, 添加 以下字符串在配置文件里面

ForwardX11 yes

然后重启 ssh 服务 service sshd restart 显然这样还是不可以的。 为了显示那个弱智gui 界面必须要有X11 来驱动, 还记得之前说的docker 不是vm的话么, 这里要进行端口转发到X11 服务器来显示。

快去下载 https://mobaxterm.mobatek.net/ 这个东西, 这个东西自带 X11服务器, 支持显示转发。

建立ssh 连接,正常 可以用xclock 来显示一下是不是有一个表出来了。。。

显然没有这么简单。。。

[root@265ec45c32d6 /]# xclock

Error:Can't open display:

重新用 mobaxterm 登陆 。。。

f18578bb4b3fe250debbf2aaea98a55d.png

出现如下字样 证明转发 基本欧克了。 重新执行xclock 命令, 不出意外的话 你会看到一个表,到这里你已经成功了 1/3了 。。

f9989d21b9b5ca7d4e553eeadb3241b7.png

切换用户到oracle, 执行安装命令。。。

呵呵呵 错误依旧。。。。。

c4d1e522dc3358b17485e5c7b9ff1456.png

解决方法: 回到root 复制 Xauthority 文件到oracle 用户下 。。。

每一次都要重新复制!!!

[root@265ec45c32d6 ~]# cp ~/.Xauthority /home/oracle/

cp: overwrite `/home/oracle/.Xauthority'? y

重新执行 安装命令,这次不出意外的话 界面会弹出来了!!!

0bd6df2b2a04fcdbc21fe57c1d93d389.png

正常安装完成, 在perform prerequisite checks 这里可以选择 无视, 前提是 都设置过了,下面的packages 那边 好多是因为是32位的库导致的。

你以为这样就可以顺利的安装完成了么 ? 没有的,要不然我也不会写这个啰嗦的东西。

把这一长串添加 在path里面

PATH=$PATH:/home/oracle/app/oracle/product/11.2.0/dbhome_1/bin

这样就可以使用 sqlplus / as sysdba; 来连接数据库了, 来吧测试一下,新的错误又来了,我x。

SQL> select * from cat;

select * from cat

*

ERRORat line 1:

ORA-01034: ORACLE not available

Process ID: 0

Session ID: 0 Serial number: 0

简单的来说就是数据库没有起来,执行命令 startup

SQL> startup

ORA-01078: failure in processing system parameters

LRM-00109: could not open parameter file '/home/oracle/app/oracle/product/11.2.0/dbhome_1/dbs/initQFDKBAM.ora'

SQL>

新的错误来了把; 解决这个问题啊。。。

用命令“find / -name pfile”查询pfile文件位置, 默认位置 /data/sgbd/admin/orcl/pfile

复制文件到$ORACLE_HOME/dbs 里面 cp /data/sgbd/admin/orcl/pfile/init.ora.115201913123 /home/oracle/app/oracle/product/11.2.0/dbhome_1/dbs/initQFDKBAM.ora 就是刚才出错的位置

重新链接 sqlplus / as sysdba 然后startup,现在可以看到以下回显

[oracle@265ec45c32d6 dbs]$ sqlplus / as sysdba

SQL*Plus: Release 11.2.0.1.0 Production on Fri Feb 15 13:15:27 2019

Copyright (c) 1982, 2009, Oracle. All rights reserved.

Connected to an idle instance.

SQL> startup

ORACLE instance started.

Total System Global Area 1185853440 bytes

Fixed Size 2212776 bytes

Variable Size 335547480 bytes

Database Buffers 838860800 bytes

Redo Buffers 9232384 bytes

Database mounted.

Database opened.

SQL> select count(*) from cat;

COUNT(*)

----------

4836

数据库启动起来了 !!!建立用户QFDKBAM 并赋予dba 权限

SQL> CreateuserPECBAM identified by QFDKBAM;

Usercreated.

SQL> grant dba to QFDKBAM;

Grant succeeded.

但是你以为这样就完了 ?! no no et non!!!

远程机器 执行远程链接命令

sqlplus64 QFDKBAM/QFDKBAM@127.0.0.1:1523/QFDKBAM

结果可想而知,肯定还是有错呗

SQL*Plus: Release 12.1.0.1.0 Production on Fri Feb 15 14:21:14 2019

Copyright (c) 1982, 2013, Oracle. All rights reserved.

ERROR:ORA-12541: TNS:no listener

回到之前docker 的机器 sqlplus / as sysdba; 停掉服务 shutdown 命令

SQL> shutdown

Database closed.

Database dismounted.

ORACLEinstanceshut down.

编辑 /home/oracle/app/oracle/product/11.2.0/dbhome_1/network/admin/listener.ora 并加上合理的参数, 参考如下

LISTENER =

(DESCRIPTION_LIST =

(DESCRIPTION =

(ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1521))

(ADDRESS = (PROTOCOL = TCP)(HOST = 265ec45c32d6)(PORT = 1521))

)

)

SID_LIST_LISTENER =

(SID_LIST =

(SID_DESC =

(GLOBAL_DBNAME = PECBAM)

(ORACLE_HOME = /home/oracle/app/oracle/product/11.2.0/dbhome_1)

(SID_NAME = QFDKBAM)

)

)

ADR_BASE_LISTENER = /data/sgbd

注意要把QFDKBAM 修改成自己的SID。执行 lsnrctl start 开始监听。 重新用sysdba 登陆 启动数据库。

这次不出意外的话 远程连接数据库就成功了

结语

千万不要在docker里面安装Oracle 。。。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值