直接 yum 命令安装
yum install -y docker
安装之后查看 docker 是否安装成功
yum list installed |grep docker
查看 docker 版本
docker -v
docker version
查看 docker 服务状态
systemctl status docker
启动 docker 服务
sudo systemctl start docker
停止 docker 服务
systemctl stop docker
重启 docker 服务
systemctl restart docker
编辑 daemon.json
:vim /etc/docker/daemon.json
添加下面的内容:
{
"registry-mirrors": [
"https://mirror.ccs.tencentyun.com"
]
}
重载所有修改过的配置文件
systemctl daemon-reload
重启服务
systemctl restart docker
docker pull <镜像名称>:<版本号>
查看 redis 版本
https://hub.docker.com/_/redis
拉取命令:
docker pull redis:6.2.7
查看本地镜像
docker images
docker pull registry.cn-hangzhou.aliyuncs.com/zhuyijun/oracle:19c
[root@hello_TQ1 ~]# mkdir -p /opt/myData/oracle/oracleData
[root@hello_TQ1 ~]#
[root@hello_TQ1 ~]#
[root@hello_TQ1 ~]# chmod -R 777 /opt/myData/
docker run
命令docker run -d -it --name orcl19c_03 -p 1521:1521 -p 5500:5500 -e ORACLE_SID=orcl -e ORACLE_PDB=orclPDB1 -e ORACLE_PWD=123456 -e ORACLE_EDITION=standard -e ORACLE_CHARACTERSET=AL32UTF8 -v /opt/myData/oracle/oracleData:/opt/myData/oracle/oracleData registry.cn-hangzhou.aliyuncs.com/zhuyijun/oracle:19c
ORACLE_SID=orcl
是服务名,安装后连接Oracle 时用的服务名,CDB数据库的ORACLE_PWD=123456
是安装后 dba 用户的密码,即:123456ORACLE_PDB=orclPDB1
是安装后的PDB数据库,想更明白一点,可以往下看6.3.1创建用户的两种方式,一个是在CDB库下,一个是下PDB库下查看oracle容器id:docker ps
容器id 可以用上面生成的那串字符串,也可用命令 docker ps
查看
进入容器(将oracle容器id换成你自己的id)
docker exec -it oracle容器id bash
本地实例名 =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = 远程数据库IP地址)(PORT = 远程服务器端口号))
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = 远程数据库服务名)
)
)
lsnrctl start
The listener supports no services
sqlplus / as sysdba
sqlplus /nolo
g 然后 conn /as sysdba
命令如下:
alter user system identified by system;
问题如下:报错,出现问题,如下(待解决):
ERROR at line 1:
ORA-01034: ORACLE not available
Process ID: 0
Session ID: 0 Serial number: 0
发现执行任何语句都报这个错,不知道什么情况,待解决!。。
as sysdba
sqlplus system/123456 as sysdba
,如下:sqlplus 用户名/密码@ip地址:端口号/数据库服务名
sqlplus 用户名/密码@//ip:1521/orcl
create user c##susu identified by susu;
c##
c##susu
的用户,这不是我们想要的用户,看着难受,所以我么可以把这个给修改了,试试再说,修改的时候,如果提示没有权限,就用 sys
用户 以 sysdba
进行登录即可修改 用户修改时,只需执行下面一条 update 语句即可,执行完之后 all_users 与 dba_users 的数据都会更新成 susu.
update all_users t set t.USERNAME='susu' where t.USER_ID='106';
但是修改完之后该用户就不能用了,不能进行授权等,上网搜了一下说刷新,刷新也不好用,
alter system checkpoint;
alter system flush shared_pool;
真的有点接收不了那个c##,继续查了一下,大概结论是:==在CDB容器中创建用户时,前面必须添加C## ,而PDB数据库不需要加前缀。==尝试试试
查看一下我的PDB数据库,试试切换,下面的 ORCLPDB1
就是上面我们在用 docker run 安装oracle数据库时定义的那个名字,我们接下来就切换到这个数据库试试
select t.CON_ID,t.name,t.OPEN_MODE from v$containers t;
1 1 CDB$ROOT 1646200604 READ WRITE
2 2 PDB$SEED 313548930 READ ONLY
3 3 ORCLPDB1 2020570011 READ WRITE
接下来进入 PDB 容器,ORCLPDB1
是上面查出来的
alter session set container=ORCLPDB1;
切换容器之后,再创建用户试试,可以不用加c##来创建用户了
创建、授权、修改密码都没有问题,但是登录出了问题
解决上面登录不上的问题,换一下数据库即可,数据库连错了,要换成对应的pdb数据库orclpdb1
重点是上边的,这个我们就简单写个语句就好了,看下面的即可
给用户并授权,如下:
--给新创建的用户赋予权限:
grant create session to susu;--登录权限】
grant connect ,resource,dba to susu;
grant create any table to hi;
授予可执行存储过程的权限
问题:在Oracle存储过程使用 execute immediate 语句建表时可能会存在权限不足的问题。
解决问题:grant create any table to hi;
,执行此语句授权之后即可解决
修改密码
alter user susu identified by susu123;