docker部署oracle 19c

步骤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> 
 
  

docker部署oracle 19c_第1张图片

 

你可能感兴趣的:(数据库,oracle,docker,数据库)