使用docker 安装oracle 11g 挂载数据目录并修改SID centos-7

建议:建议使用其它系统去装ubuntu或Rocky(因为centos已经停止维护)
1、安装docker
这里就不细写了,可以查看清华镜像源或者阿里镜像源
清华:https://mirrors.tuna.tsinghua.edu.cn/help/docker-ce/
阿里:https://developer.aliyun.com/mirror/docker-ce?spm=a2c6h.13651102.0.0.57e31b11xiluIS

2、在本机创建持久化数据目录

mkdir -p /opt/oracle/flash_recovery_area
mkdir -p /opt/oracle/oradata

3、docker部署oracle _11g
(1)准备工作

#将镜像pull下来
docker pull registry.cn-hangzhou.aliyuncs.com/helowin/oracle_11g
#查看一下
docker images
#然后先启动一下生成一下数据文件和控制文件
docker run -d --name oracle -p 1521:1521 registry.cn-hangzhou.aliyuncs.com/helowin/oracle_11g
#将数据目录拷出来
docker cp oracle:/home/oracle/app/oracle/oradata /opt/oracle/oradata

docker cp oracle:/home/oracle/app/oracle/flash_recovery_area/helowin /opt/oracle/flash_recovery_area/helowin
#停止镜像
docker stop oracle
#删除停止镜像
docker rm oracle
#修改用户组
chown -R 500:500 /opt/oracle/
#进行查看权限
 cd /opt/oracle/
 #列出
 ll

(2)开始启动新的镜像并指定创建的数据目录

-d: 以守护(detached)模式运行容器。这意味着容器会在后台运行,而非与当前终端关联,允许您在不附加到容器标准输入和输出的情况下继续使用命令行。

–restart=always: 设置容器的重启策略。当 Docker 主机重启或容器意外退出时,Docker 将始终尝试重新启动此容器。这对于确保关键服务如数据库始终保持运行状态非常有用。

–name oracle_llg: 为新创建的容器指定一个易于识别的名称 oracle_llg,以便后续管理和操作容器时使用。

-p 1521:1521: 映射宿主机(host)端口 1521 到容器内部的端口 1521。这样,外部应用程序可以通过宿主机的 1521 端口访问容器中运行的 Oracle 数据库服务。

–privileged=true: 为容器赋予特权模式。在特权模式下,容器内的进程拥有主机上的所有权限,包括访问硬件设备、执行某些受限操作等。这对于运行需要高度系统权限(如直接访问特定设备)的服务如
Oracle 数据库可能是必要的。

-v /opt/oracle/oradata:/home/oracle/app/oracle/oradata: 创建一个卷挂载,将宿主机目录 /opt/oracle/oradata 挂载到容器内部的 /home/oracle/app/oracle/oradata。这样,容器中的
Oracle 数据库可以使用宿主机上的存储空间来持久化其数据文件,即使容器被删除或重启,这些数据仍会被保留。

-v /opt/oracle/flash_recovery_area/helowin:/home/oracle/app/oracle/flash_recovery_area/helowin:
另一个卷挂载,将宿主机目录 /opt/oracle/flash_recovery_area/helowin
挂载到容器内部的相同路径。这通常是用于存放 Oracle 数据库的闪回恢复区域(Flash Recovery
Area),包含备份、归档日志等重要恢复数据,确保这些数据同样能在容器生命周期之外得到持久化。

registry.cn-hangzhou.aliyuncs.com/helowin/oracle_11g:
指定要使用的镜像。这是一个从阿里云(Hangzhou region)上的 Docker 注册表拉取的镜像,由 helowin 用户提供的
oracle_11g 镜像。这个镜像包含了运行 Oracle 11g 数据库所需的所有软件环境和配置。

#启动挂载数据目录的镜像(建议再挂载一个备份目录)
docker run \
    -d \
    --restart=always \
    --name oracle_llg \
    -p 1521:1521 \
    --privileged=true \
    -v /opt/oracle/oradata:/home/oracle/app/oracle/oradata \
    -v /opt/oracle/flash_recovery_area/helowin:/home/oracle/app/oracle/flash_recovery_area/helowin \
    registry.cn-hangzhou.aliyuncs.com/helowin/oracle_11g
#启动后查看
docker ps

(3)创建用户和修改sys的密码

#进入镜像
docker exec -it oracle_llg /bin/bash
#source一下文件
source ~/.bash_profile
#登录qdl修改sys密码并创建用户
sqlplus /nolog
#下面修改其用户的密码并创建用户的操作
SQL> conn / as sysdba
Connected.
#修改sys用户密码
SQL> alter user sys identified by ucaqaz;

User altered.
#创建tianmen用户并设置密码
SQL> create user tianmen identified by ucaqaz;

User created.
#授予权限tianmen
SQL> grant connect,resource,dba to tianmen;

Grant succeeded.
#提交修改
SQL> commit;

Commit complete.

#执行命令更新的Oracle数据库中的默认配置文件,此配置文件关联的所有用户的密码有效期限制被移除。
SQL> ALTER PROFILE DEFAULT LIMIT PASSWORD_LIFE_TIME UNLIMITED;

Profile altered.

SQL> exit

(4)尝试登录

#使用sys进行登录
sqlplus sys/ucaqaz@helowin as sysdba

Connected to:

#使用tianmen登录
sqlplus tianmen/ucaqaz@helowin

#查看所有库
SQL> SELECT DISTINCT owner FROM dba_objects;

4、备份还原数据
(1)指定用户创建directory目录

1、配置备份目录授权
SQL>CREATE OR REPLACE DIRECTORY dumptam AS '/home/oracle/tianmen/';
2、将其授权给用户
SQL>GRANT READ,WRITE ON DIRECTORY dumptam TO tianmen;
3、授予用户导入导出的完全权限
SQL>GRANT EXP_FULL_DATABASE,IMP_FULL_DATABASE TO tianmen;
4、授予用户的使用权
SQL>GRANT RESOURCE TO tianmen;
5、查看生成的directory目录
SQL>SELECT * FROM DBA_DIRECTORIES;
#6、删除directory目录(此命令不用执行)
#drop directory DIRENAME;

(2)备份导入导出

#全量备份(full=y)
expdp tianmen/ucaqaz@helowin full=y directory=dumptam dumpfile=tianmen.dmp
#全量还原
impdp tianmen/ucaqaz@helowin full=y directory=dumptam dumpfile=tianmen.dmp

#备份指定库(schemas=tianmen)
expdp tiananmen/ucaqaz@helowin schemas=tianmen dumpfile=tianmen.dmp directory=dumptam

#还原指定库
impdp tianmen/ucaqaz@helowin schemas=tianmen directory=dumptam dumpfile=tianmen.dmp

5、修改oracle的SID
(1)关闭数据库

#进入容器
docker exec -it oracle_llg /bin/bash
#先关闭数据库使用sys登录
sqlplus sys/ucaqaz@helowin as sysdba
#将其停止
SQL> shutdown immediate;
Database closed.
Database dismounted.
ORACLE instance shut down.
SQL> exit

(2)修改文件目录将SID修改为orcl

#找到先面的变量将其修改为你要使用的SID=orcl
vi /home/oracle/.bash_profile
ORACLE_SID=orcl;export ORACLE_SID
#然后source一下
source /home/oracle/.bash_profile
#修改下面的文件,将其开头修改为你的SID
vi /etc/oratab
orcl:/home/oracle/app/oracle/product/11.2.0/dbhome_2:Y
#将下面的文件名修改为你要使用的SID
mv hc_helowin.dat hc_orcl.dat
mv orapwhelowin orapworcl
mv spfilehelowin.ora spfileorcl.ora
mv lkHELOWIN lkORCL
#将其关闭的数据库打开
sqlplus / as sysdba
#打开
SQL> startup
ORACLE instance started.

Total System Global Area 1603411968 bytes
Fixed Size                  2213776 bytes
Variable Size             402655344 bytes
Database Buffers         1191182336 bytes
Redo Buffers                7360512 bytes
Database mounted.
Database opened.
#退出
SQL> exit
#然后登录查看其是否已经修改
sqlplus sys/ucaqaz@helowin as sysdba
#查看SID的名称,可以看到是我要改的,可以改之前先查看
SQL> select instance from v$thread;

INSTANCE
--------------------------
orcl
#退出
SQL> exit

  • 5
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值