README #
镜像官网与文档 #
网页地址: https://container-registry.oracle.com/ords/ocr/ba/database
进入 Oracle Database Free 项目。
docker-compose.yml:
yml
version: "3.7"
services:
oracle:
image: container-registry.oracle.com/database/free:23.3.0.0
container_name: oracle-free
restart: on-failure
volumes:
- oracle_data:/opt/oracle/oradata
ports:
- 1234:1521
volumes:
oracle_data:
external: true
docker run:
bash
docker volume create oracle_data
docker compose up -d
sqlplus命令 #
1) 执行sqlplus交互式命令:
bash
docker compose exec oracle sqlplus
2)输入账号密码:
text
Enter user-name: sys as sysdba
Enter password:
3)登录后可执行sql语句和维护指令。
sqlplus运维 #
限制内存使用(需要重启):
sql
-- 查看当前配置的 sga_target 和 sga_max_size 大小
SELECT NAME, VALUE, DISPLAY_VALUE, DESCRIPTION FROM V$PARAMETER WHERE NAME IN ('sga_target', 'sga_max_size');
-- 设置 sga_target 和 sga_max_size,保存到spfile配置文件,重启后才会生效。
-- 若设置太小则可能会导致服务无法启动(目前已知 256m 不行),若遇到服务无法启动,参考后面解决办法。
alter system set sga_target=512m scope=spfile;
alter system set sga_max_size=512m scope=spfile;
创建用户:
sql
alter session set "_ORACLE_SCRIPT" = true;
create user yourname identified by "yourpassword";
删除用户:
sql
drop user yourname cascade;
授权:
sql
grant connect, resource, create any view, dba to yourname;
alter user yourname default role connect, resource, dba;
登录用户:
sql
connect yourname;
sga内存设置太小导致无法启动 #
1)停止oracle容器(防止无限重启):
bash
docker compose stop oracle
2)进入新的oracle容器:
bash
# 使用 --volumes-from 参数将指定oracle服务容器中的数据卷挂载过来
# 使用 --env-file 参数将环境变量文件引入进来)
docker run --rm -it --volumes-from oracle-free --env-file .env container-registry.oracle.com/database/free:23.3.0.0 bash
3)运行sqlplus,登录后执行以下sql指令:
sql
-- 通过spfile二进制配置创建pfile文本配置文件
create pfile='/opt/oracle/oradata/dbconfig/tmp.ora' from spfile;
3)退出sqlplus,然后将pfile配置文件中的 sga_target
和 sga_max_size
改成合适的大小,比如 536870912(即 512MB):
bash
# 使用 vi 编辑pfile配置文件
vi /opt/oracle/oradata/dbconfig/tmp.ora
4)再次运行sqlplus,登录后执行以下sql指令:
sql
-- 手动指定pfile配置文件来启动oracle服务(启动需要花费数秒钟时间)
startup pfile='/opt/oracle/oradata/dbconfig/tmp.ora';
-- 通过pfile文本配置创建spfile二进制配置文件,覆盖掉原来配置有误的spfile(若上面的启动指令执行失败,则无法创建spfile)
create spfile='/opt/oracle/oradata/dbconfig/FREE/spfileFREE.ora' from pfile='/opt/oracle/oradata/dbconfig/tmp.ora';
-- 关闭oracle服务
shutdown;
-- 直接启动服务来验证spfile配置是否有误,若可以正常启动,则关闭服务然后退出sqlplus
startup;
shutdown;
5)删除pfile文件,然后退出容器:
bash
rm /opt/oracle/oradata/dbconfig/tmp.ora
6)启动oracle服务:
bash
docker compose start oracle
imp导入数据 #
导入 dmp 格式的文件:
1)dmp 文件放到 /opt/oracle/export/
目录下。
2)执行导入命令(交互式):docker compose exec oracle imp
3)输入用户名,例如:camp5s
4)输入密码。
5)开始配置各种选项:
5.1)Import file 这一项填写文件路径,例如:/export/camp_202412.dmp
(其中 /export
是容器内目录,映射到容器外部目录 /opt/oracle/export
)
5.2)Username 这一项填写来源用户,例如:usr_camp
5.3)其他选项全部回车默认。