Centos7下利用docker安装oracle12c

实战在windows局域网下可以进行连接,并执行sql语句:

Centos7下利用docker安装oracle12c_第1张图片
执行结果

具体的步骤如下:

1、在centos7下安装docker

    [root@localhost /]# yum install docker

2、启动docker 

    [root@localhost /]# systemctl start docker.service

 3、查找docker镜像

    可以在dockerhub中查找oracle12c的镜像,一般访问dockerhub出现无法连接的时候可以多刷新浏览器试一下。

    也可以使用docker search oracle的命令搜索镜像

Centos7下利用docker安装oracle12c_第2张图片
docker hub镜像


Centos7下利用docker安装oracle12c_第3张图片
docker search命令

4、下载docker镜像

    这次安装使用的是sath89/oracle-12c镜像,获取命令如下:

    [root@localhost data_temp]# docker pull docker.io/sath89/oracle-12c

    等待下载完成之后可以使用docker images查看镜像是否安装成功。

5、运行docker镜像

1)镜像下载完成后,创建容器:

mkdir /usr/local/data_temp

chmod 777 /usr/local/data_temp

创建一个文件目录,用于挂载到容器内,做oracle数据备份时数据存放的位置,保证备份数据不丢失。

docker run -d --name oracle12c -p 1521:1521 -v /usr/local/data_temp:/home/oracle/data_temp sath89/oracle-12c

其中,oracle12c是名称,-p是端口映射,-v是将宿主机的/usr/local/data_temp 目录映射到容器内的 /home/oracle/data_temp内。

2)进入容器,

docker ps            ## 查看容器的id号,复制一下

docker exec -it xxxxxxxx /bin/bash              ## xxxxxxx就是上一部查看的id号

3) 查看oracle状态,修改system用户密码。

source ~/.bash_profile                          ## 加载一下用户环境变量,进入容器后,自动是oracle用户

sqlplus /nolog                                  ## 使用sqlplus 工具,进去命令行

SQL> connect /as system                         ## 使用system 连接oracle,密码oracle

SQL> select status from v$instance;            ## 查看oracle现在的状态 ,状态为 OPEN 则正常,表示已开启状态。

SQL> alter user system identified by oracle;    ## 修改用户 system 的密码为 oracle ,可以自定义

4). 然后就是创建表空间,创建用户,并授权。

创建表空间核用户,这个可以使用工具连接到oracle数据库上进行创建,也可以手动命令行进行创建。注意依然是在sysdba权限下操作,命令如下:

SQL> select name from v$tempfile;    ## 查询临时表空间的路径


查询临时表空间

## 下面这句,创建表空间,名:test ,数据文件路径复制临时表空间数据文件路径然后改一下文件名就行了,大小:1G, 自动增长:50M 。 参数根据自己的需求自行修改

SQL> create tablespace test datafile '/u01/app/oracle/oradata/xe/test.dbf' size 1G reuse autoextend on next 50M maxsize unlimited default storage(initial 128k next 128k minextents 2 maxextents unlimited);

SQL> select tablespace_name from dba_tablespaces    ## 查看所有表空间,看看是否有刚才创建的

SQL> create user test identified by testpasswd default tablespace TEST temporary tablespace TEMP;    ## 创建用户,test01,密码:testpass,设置默认表空间为刚才创建的 test, 临时表空间设为默认的 TEMP。

SQL> select username from dba_users    ## 查看用户名,可以看到是否有刚才我们创建的用户名

SQL> grant connect,dba,exp_full_database,imp_full_database to test01 with admin option;  ## 授权用户 test01,拥有连接,管理员,导入,导出权限,并可以传递权限。(根据需求自己定义权限)

8. 导入数据,导出数据。

还记得之前自定义的directory文件目录吗?第6步中设置的。 只需要将需要导入的数据文件,放入这个目录。就可以使用 impdp命令导入数据了。用expdp命令导出的数据,也可以设置放在此文件目录中,由于这个目录是最初从宿主机上挂载来的,所以,这些导入导出的数据,将不会随容器关闭而丢失,可以持久化保存数据。

导入,导出命令如下:   注意,这里退出sqlplus,回到oracle用户下,操作:

## 导入数据,登陆用户为刚才创建的用户,实例为镜像的实例xe,数据文件为第6步创建的DATA_TEMP,导入文件为BPM.EXPDP,用户为test01到test01,这些需要自行修改,导入的用户和当时导出的用户最好保持一直。

impdp test/test@xe table_exists_action=replace  dumpfile=BPM.EXPDP logfile=BPM_20190302.log REMAP_SCHEMA=test:test schemas=test

## 导出数据,导出文件名为:BPM.EXPDP, 路径为: DATA_TEMP, 用户为test01

expdp test/test@xe dumpfile=BPM.EXPDP  schemas=test reuse_dumpfiles=y  version=12.1.0.2.0

参考:https://blog.csdn.net/weixin_41004350/article/details/79168739

    

你可能感兴趣的:(Centos7下利用docker安装oracle12c)