环境说明
CentOS Linux release 7.9.2009 (Core)
Docker version 24.0.7
其他说明
如果在同一台机器上注意端口映射,需要不同端口。还有就是特别注意磁盘问题,给机器足够的空间。
oracle 10g
1、拉取镜像
docker pull registry.cn-shanghai.aliyuncs.com/techerwang/oracle:ora10g_10205
2、重新tag镜像
docker tag registry.cn-shanghai.aliyuncs.com/techerwang/oracle:ora10g_10205 oracle10g:10205
3、启动容器
docker run -itd --name oracle10g -h jemora10g -p 3380:3389 -p 1527:1521 -p 312:22 --privileged=true --restart=always oracle10g:10205 init
4、进入容器
docker exec -it oracle10g /bin/bash
5、修改oracle相关配置
#启动数据库
lsnrctl start
#连接oracle
sql
startup
#修改system密码
SQL> alter user system identified by 密码;
#或者可以创建新用户并授权
SQL> create user test identified by “123456”;
SQL> grant connect,resource,dba to test;
#退出连接
quit
#设置开机启动数据库
vim /etc/rc.d/rc.local
#新增下面两行并保存:
su - oracle -c "lsnrctl start"
su - oracle -c "dbstart"
vim /etc/oratab
将N修改为Y
#退出容器
exit
#配置完成
oracle11g
1、拉取镜像,拉取之后也可以tag一下,这里省略了
docker pull registry.aliyuncs.com/helowin/oracle_11g
2、创建数据目录并设置权限
mkdir -p /mnt/oracle_data/app
chmod 777 /mnt/oracle_data/app
mkdir -p /mnt/oracle_data/dpdump
chmod 777 /mnt/oracle_data/dpdump
3、运行容器:
docker run -itd -p 1521:1521 --name oracle_11g --restart=always -v /mnt/oracle_data/app:/opt/oracle/app -v /mnt/oracle_data/dpdump:/opt/oracle/dpdump -v /mnt/oracle_data/oraInventory:/opt/oracle/oraInventory registry.aliyuncs.com/helowin/oracle_11g
4、进入容器
docker exec -it oracle_11g /bin/bash
5、切换root,密码helowin
su root
6、切换oracle
su - oracle
7、使用sqlplus连接数据库
sqlplus /nolog
8、使用sysdba连接
SQL> conn /as sysdba;
9、修改system密码
alter user system identified by 123456;
10、修改密码有效期
alter profile default limit PASSWORD_LIFE_TIME UNLIMITED;
11、查看当前用户
show user;
12、退出sqlplus
exit
13、查看数据库服务状态
lsnrctl status
#退出容器
exit
#配置完成
oracle12c
1、拉取镜像,拉取之后也可以tag一下,这里省略了
docker pull docker.io/truevoly/oracle-12c
2、创建数据目录并设置权限
mkdir -p /usr/local/oracle/data_temp
chmod 777 /usr/local/oracle/data_temp
3、运行容器
docker run --restart always -d -p 8080:8080 -p 1521:1521 -v /usr/local/oracle/data_temp:/home/oracle/data_temp -v /etc/localtime:/etc/localtime:ro --name orac truevoly/oracle-12c
4、进入容器
docker exec -it ID /bin/bash
5、连接数据库,用户密码:system/oracle@
sqlplus
6、修改system密码
ALTER USER system IDENTIFIED BY 123456;
7、退出sqlplus
exit
8、退出容器
exit
# 配置完成
oracle18c
1、拉取镜像
docker pull registry.cn-hangzhou.aliyuncs.com/zhengqing/oracle18c
2、运行容器
docker run -d --name oracle18c -p 1523:1521 registry.cn-hangzhou.aliyuncs.com/zhengqing/oracle18c
3、进入容器
docker exec -it oracle18c /bin/bash
4、用户密码和环境变量设置
# 安装目录执行脚本,设置密码(修改的管理员密码)
./setPassword.sh 123456
# 查看SID
grep $ORACLE_HOME /etc/oratab | cut -d: -f1
# 引入临时SID变量
export ORACLE_SID=ORCLCDB
# 登录ORA
sqlplus / as sysdba
# 查看所有的PDB数据库
show pdbs;
# 每次登录都要设置 ORACLE_SID 环境变量,
# 可以将这个写到~/.bashrc文件里去 ,执行如下命令
# 该命令在当前SQL窗口中执行即可
host echo "export ORACLE_SID=ORCLCDB" >> ~/.bashrc
# 退出sql窗口
quit
# 修改 listener.ora 文件
echo USE_SID_AS_SERVICE_LISTENER = ON >> /opt/oracle/oradata/dbconfig/ORCLCDB/listener.ora
# 退出容器
exit
# 配置完成
oracle19c
1、拉取镜像
docker pull registry.cn-hangzhou.aliyuncs.com/zhuyijun/oracle:19c
2、创建文件并设置权限
mkdir -p /mydata/oracle/oradata
chmod 777 /mydata/oracle/oradata
3、运行容器
docker run -d -p 1524:1521 -e ORACLE_SID=ORACLEDB -e ORACLE_PDB=ORACLEPDB -e ORACLE_PWD=oracle -e ORACLE_EDITION=standard -e ORACLE_CHARACTERSET=ZHS16GBK -v /mydata/oracle/oradata:/opt/oracle/oradata --name oracle registry.cn-hangzhou.aliyuncs.com/zhuyijun/oracle:19c
# 查看启动日志
docker logs -ft oracle
4、进入容器
docker exec -it oracle /bin/bash
5、数据库相关设置
[oracle@5c028e4b2a36 ~]$ sqlplus / as sysdba
SQL> show pdbs
CON_ID CON_NAME OPEN MODE RESTRICTED
---------- ------------------------------ ---------- ----------
2 PDB$SEED READ ONLY NO
3 ORACLEPDB READ WRITE NO
# 修改system密码
SQL> alter user system identified by system;
# 修改密码不过期
SQL> alter profile default limit password_life_time unlimited;
# 设置当前实例
SQL> alter session set container=ORACLEPDB;
# 创建表空间
SQL> create tablespace skzbtest datafile '/opt/oracle/oradata/ORACLEDB/ORACLEPDB/skzbtest.dbf' size 500M autoextend on maxsize unlimited;
# 创建用户
SQL> SQL> create user skzb identified by skzb123 default tablespace skzbtest;
# 授权
SQL> grant dba to skzb;
# 配置完成
oracle21c
1、拉取镜像
docker pull container-registry.oracle.com/database/express:21.3.0-xe
2、tag镜像
docker tag container-registry.oracle.com/database/express:21.3.0-xe oracle21c
3、运行容器
docker run -it -d --name oracle21c -p 1525:1521 -p 5500:5500 -e ORACLE_PWD=123456 -e ORACLE_CHARACTERSET=UTF8 container-registry.oracle.com/database/express:21.3.0-xe
4、进入容器
docker exec -it oracle21c bash
5、连接数据库
sqlplus / as sysdba
# 修改system密码
alter user system identified by 123456;
6、退出sqlplus
exit
7、退出容器
exit
# 配置完成
常用sql语句
# 查看实例名称
SELECT NAME FROM V$INSTANCE;
# 查看所有数据库
SELECT NAME FROM V$DATABASE;
# 查看版本信息
SELECT * FROM V$VERSION;
# 查看表空间
SELECT TABLESPACE_NAME,FILE_NAME,BYTES/1024/1024 AS SIZE_MB FROM DBA_DATA_FILES;
# 查看用户信息
SELECT USERNAME,ACCOUNT_STATUS FROM DBA_USERS;
# 查看表信息
SELECT TABLE_NAME,NUM_ROWS,LAST_ANALYZED FROM USER_TABLES;
jdbc连接
//不同版本对应不同驱动jar包,21版本向下兼容
String ip = "ip";
String port = "1521";
String userName = "用户名";
String password = "密码";
String database = "实例";
String urlString = "jdbc:oracle:thin:@//ip:port/database";
String jdbcString = "oracle.jdbc.driver.OracleDriver";
Class.forName(jdbcString);
conn = DriverManager.getConnection(urlString, userName, password);