步骤1:确定需要部署的镜像
docker pull registry.cn-beijing.aliyuncs.com/zhouchaoyi/oracle19c:19.3
docker images|grep oracle19
步骤2:规划镜像数据存储路径
# 创建目录
mkdir -p /opt/oracle19c
# 授权,不授权会导致后面安装失败
chmod -R 777 /opt/oracle19c
步骤3:实例化镜像参数修改
docker run -d --name oracle19c \
-p 15312:1521 -p 15313:5500 \
--privileged=true -it \
-v /opt/oracle19c//var/opt/oracle/data \
-e TZ=Asia/Chongqing \
registry.cn-beijing.aliyuncs.com/zhouchaoyi/oracle19c:19.3
步骤4:检查启动状态&进入容器内部
#容器id
docker ps -a|grep oracle19c|awk '{print $1}'
docker logs -f oracle19c
docker exec -it oracle19c bash
#登录数据库
sqlplus / as sysdba
进入容器后有个 setPassword.sh 脚本
#进入容器
docker exec -it oracle19c bash
#执行
./setPassword.sh 123456 # 123456为设置密码,这里修改为自己的即可
-- 依次执行如下命令进入oracle并设置 PDB
grep $ORACLE_HOME /etc/oratab | cut -d: -f1
export ORACLE_SID=ORCLCDB
sqlplus / as sysdba
- 设置pdb
show pdbs;
alter session set container=ORCLPDB1;
-- 测试登录
sqlplus SYSTEM/123456@ORCLPDB1
步骤5:
检查新生成的容器的时区
docker exec -it oracle19c date +"%Z %z"
CST+0800表示东8时区,正是设置的中国时区
每次登录都要设置 ORACLE_SID 环境变量,可以将这个写到~/.bashrc文件里去 ,执行如下命令
echo "export ORACLE_SID=ORCLCDB" >> ~/.bashrc
jdbc连接:
# ORACLE_SID
grep $ORACLE_HOME /etc/oratab | cut -d: -f1
==》ORCLCDB
#pdb_name
ls -dl $ORACLE_BASE/oradata/ORCLCDB/*/ | grep -v pdbseed | awk '{print $9}' | cut -d/ -f6
===》ORCLPDB1
driver = "oracle.jdbc.driver.OracleDriver"
url = "jdbc:oracle:thin:@//192.168.5.103:15312/ORCLPDB1"
查看oracle是否安装成功
可以通过 docker logs -ft oracle19c
4、修改Oralce数据库密码
docker exec myoracle ./setPassword.sh 123456
5、账号信息:
https://localhost:5500/em
账号: system/sys/等
密码:123456
sid : orcl
pdb : orclpdb1
6、连接Oracle
docker exec -it oracle19c /bin/bash
sqlplus / as sysdba
show pdbs;
查看容器中的数据库名: show pdbs;
切换到PDB : alter session set container=ORCLPDB1
切换到CDB : alter session set container=CDB&ROOT
oracle数据库sid(实例名)的查看方法:
select instance_name from V$instance;
也可以使用下边的命令登录oracle
sqlplus SYSTEM/123456@ORCLPDB1
sqlplus autotest/autotest@ORCLPDB1
报错处理
关于ORA-00257问题的解决(归档程序错误)
ORA-01950: no privileges on tablespace ‘USERS’
原因: 在表空间“USERS”无权限
解决办法:
查看当前用户所属表空间:
select username,default_tablespace from dba_users;
修改表空间:
alter user username quota umlimited on tablespacename;
或者
grant resource to username 【因为 grant resource to username 时 自动获得了有unlimited tablespace的系统权限】
ORA-00054: resource busy and acquire with NOWAIT specified or timeout expired
SQL> truncate table WMP.TXN_PROC_RESULT;
truncate table WMP.TXN_PROC_RESULT
*
ERROR at line 1:
ORA-00054: resource busy and acquire with NOWAIT specified or timeout expired
SQL> select session_id from v$locked_object;
SESSION_ID
----------
2543
SQL> SELECT sid, serial# FROM v$session where sid=2543;
SID SERIAL#
---------- ----------
2543 59853
SQL> alter system kill session '2543,59853';
System altered.
SQL>
版权声明:本文为lixiaomei0623原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。