1. 背景
Oracle
作为全球最强大的关系型数据库,应用在各行各业。但是在 Linux
中安装 Oracle
非常麻烦,为了一次装好,也方便将来直接可以导出镜像在各平台移植使用,所以选择用 Docker
安装,并做详细记录,方便今后参考。
2. 安装
2.1. 环境准备
- CentOs 7.0
- Docker 环境
Client: Docker Engine - Community
Version: 20.10.17
API version: 1.41
Go version: go1.17.11
Git commit: 100c701
Built: Mon Jun 6 23:05:12 2022
OS/Arch: linux/amd64
Context: default
Experimental: true
Server: Docker Engine - Community
Engine:
Version: 20.10.17
API version: 1.41 (minimum version 1.12)
Go version: go1.17.11
Git commit: a89b842
Built: Mon Jun 6 23:03:33 2022
OS/Arch: linux/amd64
Experimental: false
containerd:
Version: 1.6.6
GitCommit: 10c12954828e7c7c9b6e0ea9b0c02b01407d3ae1
runc:
Version: 1.1.2
GitCommit: v1.1.2-0-ga916309
docker-init:
Version: 0.19.0
GitCommit: de40ad0
2.2. 搜索镜像
docker search oracle_11g
Oracle
镜像文件比较大,请检查自己磁盘空间。此处用一个博主上传的镜像,来演示。
2.3. 拉取镜像
docker pull registry.cn-hangzhou.aliyuncs.com/helowin/oracle_11g
2.4. 磁盘挂载
在 CentOs
宿主机构建一个目录用来存储 Oracle
的数据。
mkdir -p /data/oracle10g
3. 容器操作
3.1. 创建容器
docker run -itd -p 1521:1521 --name oracle --restart=always --mount source=oracle_vol,target=/home/oracle/app/oracle/oradata registry.aliyuncs.com/helowin/oracle_11g
备注:此处改为 Shell
脚本,可以重复使用。
docker rm -f oracle10g;
docker run -it -d -p 1521:1521 -v /data/oracle10g:/data/oracle --name oracle10g klwang/oracle10g
3.2. 进入容器
docker exec -it oracle bash
3.3. 环境设置
此时 sqlplus
是不可以用的,需要配置一下环境变量。
切换回到容器中的 root
用户,密码为 helowin
。
3.3.1. 编辑环境变量
vi /etc/profile
添加如下变量。
export ORACLE_HOME=/home/oracle/app/oracle/product/11.2.0/dbhome_2
export ORACLE_SID=helowin
export PATH=$ORACLEHOME/bin:PATH
保存后,将环境变量生效。
source /etc/profile
3.3.2. 添加软连接
ln -s $ORACLE_HOME/bin/sqlplus /usr/bin
3.3.3. 切换到oracle用户
su - oracle
3.4. 登录oracle
sqlplus /nolog --登录
conn /as sysdba
3.5. Oracle操作
3.5.1. 修改sys、system用户密码
alter user system identified by system ;--修改system用户账号密码;
alter user sys identified by sys ;--修改sys用户账号密码;
3.5.2. 添加和授权用户
create user test identified by test; -- 创建内部管理员账号密码;
grant connect,resource,dba to test; --将dba权限授权给内部管理员账号和密码;
ALTER PROFILE DEFAULT LIMIT PASSWORD_LIFE_TIME UNLIMITED; --设置密码永不过期:
alter system set processes=1000 scope=spfile; --修改数据库最大连接数据;
3.5.3. 查询
show parameter password
3.5.4. 检查用户
select * from v$pwfile_users;
3.6. 重启服务
conn /as sysdba;--保存数据库
shutdown immediate; --关闭数据库
startup; --启动数据库
show user;
4. 远程登录
- HOST: $HOST
- POST: 1521
- SID: helowin
- User: test
- PassWord:test