环境搭建:centos7+docker+Oracle

CentOS7上部署Oracle容器环境

前提:系统 centos7
在系统安装 docker(最好是最新版本)
安装 对应 JAVA 环境
安装 Oracle ,直接从 docker 镜像拉不下来,所以需要换个镜像源

docker pull registry.cn-hangzhou.aliyuncs.com/lhrbest/oracle_12cr2_ee_lhr_12.2.0.1:2.0

启动docker,这里就是基本参数,设置网络、开机启动啥的多余的都删掉了,自己根据需求来

docker run -itd --name oracle12c -p 1521:1521 -p 2222:22 -p 5500:5500 -p 5501:5501 registry.cn-hangzhou.aliyuncs.com/lhrbest/oracle_12cr2_ee_lhr_12.2.0.1:2.0 init
# 进入容器
docker exec -it oracle12c bash

3.2 修改环境变量
# 修改环境变量(i 插入 :w 保存 :q 离开)
vi /etc/profile
# 在文件最下面增加以下三行
export ORACLE_HOME=/u01/app/oracle/product/12.2.0.1/dbhome_1/
export ORACLE_SID=lhrcdb1
export PATH=$ORACLE_HOME/bin:$PATH

source /etc/profile

3.3 切换用户
su oracle
sqlplus /nolog
conn /as sysdba 
conn system/system@lhrcdb1 as sysdba
#启动数据库
startup


3.4 启动监听
在上面步骤完成后,键入 exit 然后输入启动监听命令

lsnrctl start

附上centos 内 sh启动脚本

#!/bin/bash

# ========================================
# Oracle Docker 自动化启动脚本
# 作者:wangjinnan
# 用途:一键启动 Oracle 容器并初始化数据库
# ========================================

CONTAINER_NAME="oracle12c"
IMAGE="registry.cn-hangzhou.aliyuncs.com/lhrbest/oracle_12cr2_ee_lhr_12.2.0.1:2.0"
ORACLE_HOME="/u01/app/oracle/product/12.2.0.1/dbhome_1"
ORACLE_SID="lhrcdb1"

# 颜色输出
GREEN='\033[0;32m'
YELLOW='\033[1;33m'
RED='\033[0;31m'
NC='\033[0m' # No Color

log() {
    echo -e "${GREEN}[INFO] $1${NC}"
}

warn() {
    echo -e "${YELLOW}[WARN] $1${NC}"
}

error() {
    echo -e "${RED}[ERROR] $1${NC}"
}

# 1. 启动 Docker 容器
log "正在启动 Docker 容器..."
docker run -d \
  --name $CONTAINER_NAME \
  -p 1521:1521 \
  -p 2222:22 \
  -p 5500:5500 \
  -p 5501:5501 \
  --restart=unless-stopped \
  $IMAGE init > /dev/null 2>&1

if [ $? -ne 0 ]; then
    warn "容器可能已存在,尝试启动已有容器..."
    docker start $CONTAINER_NAME > /dev/null 2>&1
fi

sleep 5

# 2. 检查容器是否运行
if ! docker ps | grep -q $CONTAINER_NAME; then
    error "容器启动失败,请检查镜像是否正确或端口是否被占用"
    exit 1
fi

log "容器已运行"

# 3. 配置环境变量(仅添加一次)
log "配置环境变量到 /etc/profile"

docker exec $CONTAINER_NAME bash -c "
if ! grep -q 'ORACLE_HOME' /etc/profile; then
    echo '
# Oracle Environment
export ORACLE_HOME=$ORACLE_HOME
export ORACLE_SID=$ORACLE_SID
export PATH=\$ORACLE_HOME/bin:\$PATH
' >> /etc/profile
    echo 'export ORACLE_HOME='$ORACLE_HOME > /etc/profile.d/oracle.sh
    echo 'export ORACLE_SID='$ORACLE_SID >> /etc/profile.d/oracle.sh
    echo 'export PATH=\$ORACLE_HOME/bin:\$PATH' >> /etc/profile.d/oracle.sh
    chmod +x /etc/profile.d/oracle.sh
    log '环境变量已添加'
else
    warn '环境变量已存在,跳过写入'
fi
"

# 4. 重新进入容器,执行数据库启动命令
log "切换到 oracle 用户并启动数据库"

docker exec -u oracle -it $CONTAINER_NAME bash -c "
source /etc/profile
echo '当前环境变量:'
echo 'ORACLE_HOME: '\$ORACLE_HOME
echo 'ORACLE_SID: '\$ORACLE_SID
echo 'PATH: '\$PATH

# 进入 sqlplus
echo '
正在启动数据库...'
sqlplus /nolog << EOF
conn / as sysdba
startup
exit;
EOF
"

# 5. 启动监听器
log "启动 Oracle 监听器"
docker exec -u oracle -it $CONTAINER_NAME bash -c "
source /etc/profile
lsnrctl start
"

log "数据库和监听器已启动完成!"
log "连接信息:"
echo "  主机: localhost"
echo "  端口: 1521"
echo "  SID: $ORACLE_SID"
echo "  示例连接: sqlplus system/system@$ORACLE_SID as sysdba"
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值