在docker上使用oracle

博客介绍为简化安装步骤,使用docker的oracle进行安装,选择wnameless/oracle-xe-11g-r2镜像,运行时挂载主机硬盘,用sql命令在外置硬盘创建数据库tablespace时出现权限错误,并将给出解决方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

为了简化安装oracle的步骤,使用docker的oracle进行安装
具体选择wnameless/oracle-xe-11g-r2 镜像

运行时挂载主机硬盘

 -v /data/OracleData:/u01/share
docker run -it  -v /data/OracleData:/u01/share  -d -p 8081:1521 -e ORACLE_ALLOW_REMOTE=true wnameless/oracle-xe-11g-r2

使用sql命令在外置硬盘处创建数据库tablespace,但是这步会出现权限错误

create tablespace data_test datafile '/u01/app/oracle/product/11.2.0/xe/dbs/data_test.dbf' size 2000M;

解决方法:

groupadd oinstall
chown -R oracle:oinstall /share
### 在 Docker 上安装和配置 Oracle 数据库 #### 准备工作 在开始之前,确保已经安装了 Docker 并且能够正常运行容器。可以通过执行 `docker version` 命令来验证环境是否准备妥当。 #### 方法一:使用 wnameless/oracle-xe-11g 镜像 一种常见的方法是通过 wnameless 提供的官方镜像快速启动 Oracle XE 11g 实例。以下是具体操作: 1. **拉取镜像** 执行以下命令下载镜像: ```bash docker pull wnameless/oracle-xe-11g ``` 2. **创建并运行容器** 下面的命令会基于该镜像创建一个新的容器,并将其端口映射到主机上的 1521 端口: ```bash docker run -d --name oracle-container -p 1521:1521 -e ORACLE_PASSWORD=your_password wnameless/oracle-xe-11g ``` 这里 `-e ORACLE_PASSWORD=your_password` 参数用于设置数据库管理员密码[^2]。 3. **访问数据库** 启动完成后,可以连接至数据库实例。默认情况下,服务监听地址为 `localhost:1521`,SID 名称为 `XE`。 --- #### 方法二:使用阿里云提供的镜像 另一种方式是从阿里云仓库获取预构建好的 Oracle 11g 镜像。此方法适合需要更稳定支持的企业场景。 1. **拉取镜像** 使用如下命令从阿里云镜像仓库中提取所需资源: ```bash docker pull registry.cn-hangzhou.aliyuncs.com/helowin/oracle_11g ``` 2. **创建数据卷与运行容器** 推荐将持久化存储绑定到宿主机路径以便长期保存数据文件。例如: ```bash docker run -d --privileged -p 1521:1521 --name oracle11g \ --restart=always -v /home/oracle:/data/oracle \ registry.cn-hangzhou.aliyuncs.com/helowin/oracle_11g ``` 此处 `/home/oracle` 是宿主机中的目录位置;而 `/data/oracle` 则作为容器内部的数据挂载点[^3]。 3. **初始化完成后的测试** 登录到新建立的服务当中进行初步校验: ```sql sqlplus system@//<host>:1521/XE as sysdba ``` 替换 `<host>` 成实际 IP 或者域名即可实现远程接入功能[^4]。 --- #### 注意事项 - 如果遇到权限不足或者磁盘空间耗尽等问题,则需调整 SELinux 设置或将相关选项加入启动参数之中。 - 对于生产用途而言,建议采用更高版本 (如 Oracle Database Enterprise Edition),因为它们具备更多高级特性以及更好的性能表现。 ```python import cx_Oracle dsn_tns = cx_Oracle.makedsn('localhost', '1521', service_name='XE') conn = cx_Oracle.connect(user='system', password='your_password', dsn=dsn_tns) cursor = conn.cursor() cursor.execute("SELECT * FROM dual") print(cursor.fetchone()) ``` 以上 Python 示例展示了如何利用 `cx_Oracle` 库连接已部署成功的 Oracle DB 实例[^1]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值