Lab1: Running Oracle in Docker

1.安装准备

1.1. Docker

Download and Install Docker Desktop

https://www.docker.com/products/docker-desktop

 

1.2. SQL Developer

Download SQL Developer and extract to a folder (e.g. d:\SQLDevelooper)

https://www.oracle.com/tools/downloads/sqldev-downloads.html

There may be an issue about small font size when running SQL Developer under windows 10. Refer to thefollowing page for the solution.

https://stackoverflow.com/questions/50138830/how-to-increase-size-of-gui-font-everything-of-oracle-sqldeveloper-18-1.

 

1.3.SQL Plus

Download and Install SQL Plus

https://www.oracle.com/hk/database/technologies/instant-client/downloads.html

Download the basic package and SQL*Plus Package and unzip and put the content of the two zipped folder in same folder (e.g. d:\sqlplus).

Alternatively, you can also install the Oracle Database Express 18C.

https://www.oracle.com/database/technologies/xe-downloads.html

In this case, both Oracle Database Server and SQL Plus will be installed and it will consume around 10GB of storage in your hard drive.

 

1.4.Docker基本操作

1.4.1 把docker镜像上传到Docker Hub中

docker pull kamiljedrzejuk/oracle18c-xe-initialized:latest

 可能会遇到网络问题,无法上传,这个时候找到.docker文件夹中的daemon.json文件中加入一行镜像设置

"registry-mirrors": ["https://alzgoonw.mirror.aliyuncs.com"]

 

1.4.2. 测试一下运行

docker run hello-world

 显示所有的docker镜像

docker image ls

 

1.4.3.下载ubuntu镜像,并尝试进入看看

docker pull ubuntu

docker run ubuntu
docker run -it ubuntu

 退出

 

1.4.4.查看所有docker的容器,测试基本命令

docker ps -a

docker container ls -a

 查看

 让容器运行

docker run -it ubuntu

 让容器停止运行,用这个容器名字的前几位就行(prefix)

docker container stop 0e0d 15a9

 移除容器

docker container rm 0e0d 15a9

 

 

1.4.5.测试安装nginx

docker run -p 2008:80 nginx

 

 

docker run -d -p 20080:80 --name ws1 nginx
docker run -d -p 20081:80 --name ws2 nginx
docker run -d -p 20082:80 --name ws3 nginx
docker exec ws1 /bin/bash -c "echo 'This is server 1' > /usr/share/nginx/html/index.html"
docker exec ws2 /bin/bash -c "echo 'This is server 2' > /usr/share/nginx/html/index.html"
docker exec ws3 /bin/bash -c "echo 'This is server 3' > /usr/share/nginx/html/index.html"

 

 

 

 

docker volume prune

 

1.4.6查看所有volume

docker volume ls

 删除所有

docker volume prune

 

2.在Docker上运行Oracle

打开Oracle SQL Developer

 运行docker,设定名称,版本,端口,路径

docker run --name oracle-xe -d -p 51521:1521 -v D:\Projects\Course\docker_share:/share kamiljedrzejuk/oracle18c- xe-initialized

 

 在Linux Shell中,首先在oracle用户的.bashrc文件中添加SQL Plus可执行文件的路径

echo "export PATH=$PATH:$ORACLE_HOME/bin/">/home/oracle/.bashrc

将用户更改为“ oracle”

su oracle

运行以下命令以验证Oracle侦听器正在侦听连接

lsnrctl status

 使用sqlplus连接到数据库。 将“系统”用户的密码更改为“ 12345”

sqlplus / as sysdba

alter user system identified by "12345";

 

exit;

 

3. 使用SQL Plus和SQL Developer连接到Oracle

在主机上,使用sqlplus连接到oracle

sqlplus system/12345@localhost:51521/XE

 连接

select * from all_users;

  

4.开启HR账户

查看账户名称

show con_name

alter session set container = xepdb1;

 

 

select username, account_status from dba_users where username='HR';

 

 解锁HR账户

alter user hr identified by hr account unlock;

 

在SQL Plus内,如下所述按HR连接

或退出,改为

sqlplus hr/hr@localhost:51521/xepdb1

 尝试运行

select table_name from user_tables ; 
describe jobs;

 

要在Docker容器外壳内部使用sqlplus命令行连接到HR帐户,可以使用以下命令

sqlplus hr/hr@XEPDB1

要使用主机中的sqlplus命令行连接到HR帐户,可以使用以下命令

sqlplus hr/hr@localhost:51521/XEPDB1

要在SQL Developer中连接到XEPDB PDB,请指定XEPDB1作为服务名称(而不是SID)

select * from employees;

 

5.移除Docker容器

使用docker container ls命令检查容器ID

使用容器ID(或容器ID的前缀)停止并删除容器

docker rm -f [container_id]

 

6.将数据保留在Oracle DB中

停止并删除容器后,Docker容器文件系统中的任何更改(例如,对数据库表所做的更改)都将消失

docker volume create --driver local --opt type=none --opt device=d:/oracle_mount --opt o=bind oracle_vol

 

posted @ 2020-10-18 20:34  Heinrich♣  阅读(407)  评论(0编辑  收藏  举报