docker 安装postgresql数据库 docker安装oracle数据库
  Eh9MoOLq5vAK 2023年11月25日 17 0


一、安装oracle12c具体步骤:

1、docker拉取oracle数据库镜像

docker search oracle

查看可以使用docker拉取的oracle镜像;

docker 安装postgresql数据库 docker安装oracle数据库_docker

2、docker下载oracle镜像

docker pull truevoly/oracle-12c
docker images

docker 安装postgresql数据库 docker安装oracle数据库_oracle_02

 3、创建数据库挂载文件

将docker中的数据库文件同步到你的主机目录下,防止容器删除后数据库丢失。

[root@localhost ~]# mkdir -p /var/local/ora_data
[root@localhost ~]# chmod -R 777 /var/local/ora_data/

4、创建Oracle容器

[root@localhost ~]# docker run -d -p 2122:22 -p 9090:8080 -p 1521:1521 --name oracle12c truevoly/oracle-12c

#如果需要指定目录位置就使用  -v参数

[root@localhost ~]# docker run -d -p 2122:22 -p 9090:8080 -p 1521:1521 -v /var/local/ora_data:/u01/app/oracle/ --name oracle12c truevoly/oracle-12c
参数 -d 后台运行容器,并返回容器ID ; -p 指定端口 , -v 指定数据卷位置
数据卷的特点:
1、可以供多个容器访问,直接共享或者重用
2、独立于容器周期,不会在删除容器时删除其挂载的数据卷
3、数据卷在容器启动时初始化,如果容器使用的镜像在挂载点包含的数据这些数据会复制到新的容器中
4、可以直接对数据卷里的内容进行修改

创建成功后会返回一大串字符串:

ee92e88fea086c05af307d0274e1555ab04bfe747bb7b5b5e2198074bc40cdde

5、查看启动日志

[root@centos7-64-16g docker]# docker logs -f 289228b8ae215ac690b955e309b49f9826fb0f49fcd9e415299f64d4ea632f5b
Database not initialized. Initializing database.
Starting tnslsnr
Copying database files
1% complete
3% complete
11% complete
18% complete
26% complete
37% complete
Creating and starting Oracle instance
40% complete
45% complete
50% complete
55% complete
56% complete
60% complete
62% complete
Completing Database Creation
66% complete
70% complete
73% complete
85% complete
96% complete
100% complete
Look at the log file "/u01/app/oracle/cfgtoollogs/dbca/xe/xe.log" for further details.
Configuring Apex console
Database initialized. Please visit http://#containeer:8080/em http://#containeer:8080/apex for extra configuration if needed
Starting web management console

PL/SQL procedure successfully completed.

Starting import from '/docker-entrypoint-initdb.d':
Import finished

Database ready to use. Enjoy! ;)
ls: cannot access /docker-entrypoint-initdb.d/*: No such file or directory

看到这里,就说明已经启动成功了,ctrl+c退出即可

6、进入容器修改账号密码设置

[root@localhost ~]# docker ps -a
CONTAINER ID   IMAGE                 COMMAND             CREATED         STATUS         PORTS                                                                                                                         NAMES
ee92e88fea08   truevoly/oracle-12c   "/entrypoint.sh "   6 minutes ago   Up 6 minutes   0.0.0.0:1521->1521/tcp, :::1521->1521/tcp, 0.0.0.0:2122->22/tcp, :::2122->22/tcp, 0.0.0.0:9090->8080/tcp, :::9090->8080/tcp   oracle12c
//进入容器内部
[root@localhost ~]# docker exec -it ee92e88fea08 /bin/bash
//切换成oracle用户
root@ee92e88fea08:/# su oracle
//进入sqlplus
oracle@ee92e88fea08:/$ $ORACLE_HOME/bin/sqlplus / as sysdba

SQL*Plus: Release 12.1.0.2.0 Production on Sun Aug 1 03:15:37 2021

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


Connected to:
Oracle Database 12c Standard Edition Release 12.1.0.2.0 - 64bit Production
//设置密码有效期为无限制
SQL> ALTER PROFILE DEFAULT LIMIT PASSWORD_LIFE_TIME UNLIMITED;

Profile altered.
//解锁system用户
SQL> alter user SYSTEM account unlock;

User altered.
//创建一个账号为test_lx的用户密码设置为test_lx
SQL> create user test_lx identified by test_lx;     

User created.
//为这个用户赋予管理员的权限
SQL> grant dba to test_lx;

Grant succeeded.

SQL> read escape sequence

//ctrl + p + q 退出容器(注意,不要exit退出,防止容器直接关闭了)

OK,现在Oracle数据库已经启动完毕!

hostname:docker所在宿主机的ip
port:1521
username1:system
password:oracle
username2:test_lx
password:test_lx
sid:xe

7、验证数据库可用性

查看容器的ID

[root@k8s-client1 ~]# docker ps 
CONTAINER ID        IMAGE                           COMMAND             CREATED             STATUS              PORTS                                            NAMES
fafcbedc8b85        docker.io/truevoly/oracle-12c   "/entrypoint.sh "   20 minutes ago      Up 20 minutes       0.0.0.0:1521->1521/tcp, 0.0.0.0:8080->8080/tcp   gracious_newton

进入容器

[root@k8s-client1 ~]# docker exec -it fafcbedc8b85 /bin/bash
root@fafcbedc8b85:/#

切换数据库用户

root@fafcbedc8b85:/# su oracle
oracle@fafcbedc8b85:/$

进入数据库

oracle@fafcbedc8b85:/$ $ORACLE_HOME/bin/sqlplus / as sysdba
 
SQL*Plus: Release 12.1.0.2.0 Production on Mon Apr 13 12:38:44 2020
 
Copyright (c) 1982, 2014, Oracle.  All rights reserved.
 
 
Connected to:
Oracle Database 12c Standard Edition Release 12.1.0.2.0 - 64bit Production
 
SQL>

查看数据库状态

SQL> select status from v$instance;
 
STATUS
------------
OPEN

查看oracle状态,修改system用户密码。

## 使用sqlplus 工具,进去命令行,用户名system,密码oracle
sqlplus

## 查看oracle现在的状态 ,状态为 OPEN 则正常,表示已开启状态。
SQL>select status from v$instance;

## 修改用户 system 的密码为 oracle12c ,可以自定义
SQL>alter user system identified by oracle12c;

## 用connect as sysdba登录
SQL>alter user sys identified by oracle12c;

给system用户赋予sysdba权限.sys用户用connect as sysdba登录,输入: grant sysdba to system;

连接Oracle数据库:

hostname:docker所在宿主机的ip
port:1521
username1:system
password:oracle
username2:autotest
password:autotest
sid:xe


##########################################################################

遇到的问题:

docker 安装postgresql数据库 docker安装oracle数据库_docker_03

SQL> startup
ORA-01078: failure in processing system parameters
LRM-00109: could not open parameter file '/opt/oracle/product/19c/dbhome_1/dbs/initorcl.ora'

解决方法:

[oracle@02f410cfa426 dbs]# cd /opt/oracle/admin/ORCL/
adump/      dpdump/     pfile/      xdb_wallet/ 
[oracle@02f410cfa426 dbs]# cd /opt/oracle/admin/ORCL/pfile/
[oracle@02f410cfa426 pfile]# pwd
/opt/oracle/admin/ORCL/pfile
[oracle@02f410cfa426 pfile]# ls
init.ora.0122022181530

[root@oracle19c dbs]# cp /opt/oracle/admin/ORCL/pfile/init.ora.8262022174232 /opt/oracle/product/19c/dbhome_1/dbs/initorcl.ora

[root@oracle19c pfile]# chown -R oracle:oinstall /opt/oracle/product/19c/dbhome_1/dbs/initorcl.ora
[oracle@02f410cfa426 bin]$ sqlplus / as sysdba

SQL> startup   
ORACLE instance started.

Total System Global Area 2466250400 bytes
Fixed Size            9137824 bytes
Variable Size          536870912 bytes
Database Buffers     1912602624 bytes
Redo Buffers            7639040 bytes
Database mounted.
Database opened.

问题描述

ORA-01507: database not mounted ORA-01102: cannot mount database in EXCLUSIVE mode

问题分析: 由于重启了Oracle,导致有资源没有被释放 发现Oracle的后台进程SMON未关闭 问题解决:kill掉相应进程

docker 安装postgresql数据库 docker安装oracle数据库_linux_04

SQL> startup 
ORACLE instance started.
Total System Global Area 276824064 bytes
Fixed Size                   778736 bytes
Variable Size             137371152 bytes
Database Buffers          138412032 bytes
Redo Buffers                 262144 bytes
Database mounted.
Database opened.
SQL>


数据库成功OPEN.



【版权声明】本文内容来自摩杜云社区用户原创、第三方投稿、转载,内容版权归原作者所有。本网站的目的在于传递更多信息,不拥有版权,亦不承担相应法律责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@moduyun.com

  1. 分享:
最后一次编辑于 2023年11月25日 0

暂无评论

推荐阅读
  EjBjm8WvfVM8   2023年12月23日   20   0   0 ImagedockerDockerImage