1.docker第一次安装失败,下一次会提示同名的容器已经存在,解决办法:html
docker container ls -alinux
根据上面执行的接口,选择一个containerid,而后带入到下面的命令sql
docker container rm -f containeriddocker
2.安装的时候报文件找不到数据库
我是在WINDOWS上经过CHROME浏览器下载并在WINDOWS上解压的(经验告诉我解压第一个PART会自动解压第二个,可是并无),只解压了第一个oracle安装文件(linux.x64_11gR2_database_1of2.zip),第二个(linux.x64_11gR2_database_2of2.zip)没有解压。。。因此报错。centos
3.修改sys/system用户密码浏览器
使用sqlplus / as sysdba登录进去以后执行以下命令:bash
alter user sys identified by abc123;
alter user system identified by abc123;服务器
4.建立新用户session
使用sqlplus / as sysdba登录进去以后执行以下命令或者使用IDE工具以SYS/SYSTEM登陆以后执行:
create user acct identified by abc123;
grant resource,connect to acct;
grant select any table to acct;
grant debug any procedure,debug connect session to acct;
5.查看ORACLE SID或者SERVICENAME
通常来讲SID和SERVICENAME是一致的
使用sqlplus / as sysdba登录进去以后执行以下命令:
select instance_name from V$instance;
6.重启服务器以后重启docker(要求root权限)
执行命令:
docker start 043afeb3a74d
检查oracle是否启动成功
netstat -anp|grep 1521
7.设置开机启动
7.1首先docker本身得先开机启动
systemctl enable docker.service
7.2将oracle容器设置为开机启动
要求容器没有运行
docker run --restart=always 043afeb3a74d
要求containerid=043afeb3a74d的容器是运行着的(我本身测试这种方式)
docker update --restart=always 043afeb3a74d
测试:先reboot机器
而后执行netstat -anp|grep 1521
使用Docker安装oracle 11g
Oracle Database,又名Oracle RDBMS,或简称Oracle。是甲骨文公司的一款关系数据库管理系统。
借助docker,安装oracle再也不困难,只须要几步便可。
若是没有root用户或者你的用户没有加入sudoers列表,你是无法玩的
yum update
yum install -y yum-utils device-mapper-persistent-data lvm2
yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
yum list docker-ce --showduplicates | sort -r
yum install docker-ce-18.06.3.ce-3.el7
docker search oracle NAME DESCRIPTION STARS OFFICIAL AUTOMATED oraclelinux Official Docker builds of Oracle Linux. 573 [OK] jaspeen/oracle-11g Docker image for Oracle 11g database 99 [OK] oracle/openjdk Docker images containing OpenJDK Oracle Linux 55 [OK] ……
docker pull jaspeen/oracle-11g
docker images REPOSITORY TAG IMAGE ID CREATED SIZE jaspeen/oracle-11g latest 0c8711fe4f0f 3 years ago 281MB
注意,这个镜像没有直接安装好oracle,他帮咱们配置好了环境,提供了安装脚本,咱们只须要按照要求把oracle的安装目录配置好,启动镜像,便可
从oracle 官网 下载所须要的安装包,这里咱们以oracle 11g 为例子,分别下载 linux.x64_11gR2_database_1of2.zip
和 linux.x64_11gR2_database_2of2.zip
两个压缩包,下载完成后解压到home目录(以下目录结构)
home └─database ├─doc ├─install ├─response ├─rpm ├─sshsetup ├─stage ├─runInstaller └─welcome.html
为何要解压成上面的目录结构,咱们先来看看jaspeen/oracle-11g
镜像提供的安装脚本
#!/usr/bin/env bash set -e source /assets/colorecho trap "echo_red '******* ERROR: Something went wrong.'; exit 1" SIGTERM trap "echo_red '******* Caught SIGINT signal. Stopping...'; exit 2" SIGINT if [ ! -d "/install/database" ]; then echo_red "Installation files not found. Unzip installation files into mounted(/install) folder" exit 1 fi echo_yellow "Installing Oracle Database 11g" su oracle -c "/install/database/runInstaller -silent -ignorePrereq -waitforcompletion -responseFile /assets/db_install.rsp" /opt/oracle/oraInventory/orainstRoot.sh /opt/oracle/app/product/11.2.0/dbhome_1/root.sh
从脚本里能够看到它会读取/install/database
目录,若是不存在会给出提示Installation files not found. Unzip installation files into mounted(/install) folder
命令的解释:
/home
对应容器 /install/database
)docker run --privileged --name oracle11g -p 1521:1521 -v /home:/install jaspeen/oracle-11g Database is not installed. Installing... Installing Oracle Database 11g Starting Oracle Universal Installer... Checking Temp space: must be greater than 120 MB. Actual 47303 MB Passed Checking swap space: must be greater than 150 MB. Actual 1023 MB Passed Preparing to launch Oracle Universal Installer from /tmp/OraInstall2019-04-17_08-14-23AM. Please wait ... You can find the log of this install session at: /opt/oracle/oraInventory/logs/installActions2019-04-17_08-14-23AM.log ……
这个安装过程会很漫长,日志也不少,这里只提供部分。注意到日志里有 100% complete
打印,表明oracle安装成功
再次查看运行状态,oracle已经启动完成
docker ps -a CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 7f53f07c93e5 jaspeen/oracle-11g "/assets/entrypoint.…" About an hour ago Up About an hour 0.0.0.0:1521->1521/tcp, 8080/tcp oracle11g
查看docker的状态
docker ps -a
Error response from daemon: An invalid argument was supplied.
若是出现如上提示,表示docker已经死掉,咱们只须要从新执行安装步骤,让oracle安装完成
ps:根据个人猜想,我给docker分配的资源不够致使的,我从新把docker的内存和cpu调高一点后oracle顺利安装完成。
docker rm oracle11g docker run --privileged --name oracle11g -p 1521:1521 -v oracleinstall:/install jaspeen/oracle-11g
默认scott用户是被锁定的,咱们须要解锁,经过数据库工具便可成功链接到oracle
docker exec -it oracle11g /bin/bash
[root@7f53f07c93e5 /]# su - oracle Last login: Wed Apr 17 08:29:31 UTC 2019 [oracle@7f53f07c93e5 ~]$ sqlplus / as sysdba SQL*Plus: Release 11.2.0.1.0 Production on Wed Apr 17 09:29:49 2019 Copyright (c) 1982, 2009, Oracle. All rights reserved. Connected to: Oracle Database 11g Enterprise Edition Release 11.2.0.1.0 - 64bit Production With the Partitioning, OLAP, Data Mining and Real Application Testing options SQL>
SQL> alter user scott account unlock; User altered. SQL> commit; Commit complete. SQL> conn scott/tiger ERROR: ORA-28001: the password has expired Changing password for scott New password: Retype new password: Password changed Connected. SQL>
编辑本机oracle客户端或者服务端tnsnames.ora文件,增长以下配置
ACCT_LOCAL_DCOKER =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.10.11)(PORT = 1521))
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = orcl)
)
)
打开PL/SQL Developer选择ACCT_LOCAL_DCOKER,输入帐号、密码便可
3.5使用DBeaver链接Oracle