ORACLE 19c via Docker on Mac安装教程&客户端配置&连接Navicat GUI

目录

PART I:安装ORACLE

1.软件安装

2.构建docker镜像

3.构建该镜像的容器

4.设置密码

5.运行数据库

6.进入SQLPLUS

7.可能出现的错误集合

PART II:客户端配置

PART III:连接Navicat GUI


 

 


PART I:安装ORACLE


1.软件安装

  •     docker

  •     oracle安装介质(https://www.oracle.com/database/technologies/oracle-database-software-downloads.html)

                    - 我选择的是 Linux x86-64   ZIP文件

  •     oracle的docker image

                    - 打开terminal进入你想下载到的目录

                    - 依次输入指令              

    $ mkdir ~/oracle

    $ cd ~/oracle

    $ git clone https://github.com/oracle/docker-images.git

 

                     - 将前一步下载的zip文件移动到相同目录下的对应版本文件夹

     $  cp LINUX.X64_193000_db_home.zip ~/oracle/docker-images/OracleDatabase/SingleInstance/dockerfiles/19.3.0/

 

2.构建docker镜像

        $ cd ~/oracle/docker-images/OracleDatabase/SingleInstance/dockerfiles

        $ ./buildDockerImage.sh -v 19.3.0 -e

        完成上述指令后,可以查看已有镜像(同时还自动构建了Oracle Linux7的镜像)

        $ docker image ls

            

                <附上>docker image的官方完整运行指南

                - https://github.com/oracle/docker-images/blob/master/OracleDatabase/SingleInstance/README.md

                - 或访问本地README文件(注意指令执行的位置)

           $ vi docker-images/OracleDatabase/SingleInstance/README.md

 

3.构建该镜像的容器

            1)首先创建一个本地文件夹存储oracle的数据文件

       $ mkdir -p ~/oracle/oradata/oracle19c

            2)在构建容器的时候,系统会自动创建新的数据库,我们使用-v参数来将刚刚创建的目录映射到容器内的数据文件目录中,使这些数据文件存储在本地

                        - 官方给的运行格式

       docker run --name oracle19c \     //oracle19c是你要给你数据库取的名字,之后可以直接用这个启动,而不用每次查id
       -p 1521:1521 \                    //端口
       -p 5500:5500 \
       -v /Users/Kamus/oracle/oradata/oracle19c:/opt/oracle/oradata \    //映射数据文件到本地
       oracle/database:19.3.0-ee         //image名称,用image ID也可以(我这里是上图中的c7a5abc178af)

                        - 举例

       $ docker run --name oracle19c -p 1521:1521 -p 5500:5500 -v /Users/wyn/oracle/oradata/oracle19c:/opt/oracle/oradata oracle/database:19.3.0-ee

              3)然后会运行很长时间,慢慢等…..30 minutes later…..

              4)完成以后,不会跳回命令行输入界面,而是停留在log文件,看到以下内容就说明创建完成了

        ######################### DATABASE IS READY TO USE! #########################

              5)可以检查容器已经在正常运行

        $ docker ps | grep oracle

 

4.设置密码

            在界面上出现的log内容里,第一行可以看到随机分配的账号初始密码

    ORACLE PASSWORD FOR SYS, SYSTEM AND PDBADMIN: sSNc5GFeSAg=1

            我们也可以直接运行.setPassword.sh修改密码

    $ docker exec oracle19c ./setPassword.sh oracle

           ORACLE 19c via Docker on Mac安装教程&客户端配置&连接Navicat GUI_第1张图片

 

5.运行数据库

           然后就可以开始运行我们的数据库了!!!

           - 进入root用户模式(部分操作只能在root用户下进行)      

        $ docker exec -it --user root oracle19c /bin/bash

            

            —————— 这里附上linux 命令终端提示符显示-bash-4.2#而不是root@主机名 + 路径的解决方法 ———————— 

                        问题出现的原因是root在/root下面的几个配置文件丢失,丢失文件如下: 

                        1、.bash_profile 

                        2、.bashrc 

                        以上这些文件是每个用户都必备的文件。 

                        使用以下命令从主默认文件重新拷贝一份配置信息到/root目录下                           

            $ cp /etc/skel/.bash_profile /root/  

            $ cp /etc/skel/.bashrc /root/

              - 进入普通用户模式

      $ docker exec -it oracle19c /bin/bash

            

 

6.进入SQLPLUS

         接着就可以进入sqplus执行SQL语句啦    

    $ sqlplus system/oracle@localhost:1521/ORCLCDB

         sqlplus: 执行指令 

         system: 登录用户名(初始还有SYS, PDBADMIN共三个账号)

         oracle: 登录密码(刚第四步中设置的)

         localhost: oracle的服务器所在的IP地址

         1521: 端口号

         ORCLCDB: SID/SNAME

         ORACLE 19c via Docker on Mac安装教程&客户端配置&连接Navicat GUI_第2张图片

 

7.可能出现的错误集合

    1)不知道是不是我自己安装的问题,刚进来跑sqlplus会报错        

    ERROR:

    ORA-12162: TNS:net service name is incorrectly specified

      这个错误出现的原因是部分变量没有指定值,可以有两种方式解决

     ⚠️  注意:首先要查清楚自己系统的对应值是什么,不能乱改

      在第一次运行容器的时候,出现初始密码那里,后面接着就会显示你的GLOBAL_DBNAME和ORACLE_HOME,SID等

     把当时的值复制过来就可以,我这里只缺了SID,所以我补上了SID

      - 直接export赋值,这个操作只改变当前session的值,下次进入又会复原        

    ERROR:

    ORA-12162: TNS:net service name is incorrectly specified

    [oracle@oraclehost ~]$ echo $ORACLE_HOME

    /opt/oracle/product/19c/dbhome_1

    [oracle@oraclehost ~]$ echo $ORACLE_SID


    [oracle@oraclehost ~]$ export ORACLE_SID=ORCLCDB 

    [oracle@oraclehost ~]$ echo $ORACLE_SID

    ORCLCDB    

         - 修改配置文件~/.bash_profile      

    ERROR:

    ORA-12162: TNS:net service name is incorrectly specified

    [oracle@d90999e88f74 ~]$ vi ~/.bash_profile

        初始安装时,VM内没有vi指令,此处安装的胃centOS下的Oracle,需要使用yum指令安装

    $ yum install vi

         —————————以下为.bash_profile内容————————————— 

        ORACLE 19c via Docker on Mac安装教程&客户端配置&连接Navicat GUI_第3张图片

        ———————————————————————————————————————————

        

    [oracle@d90999e88f74 ~]$ source ~/.bash_profile

        (但是不知道为什么,我的电脑这样跑了下次再进来还是会被复原。。。TAT)

         UPDATE:写到~/.bashrc文件中再source一下就可以了,之后也不会再复原


     2)

    ORA-01078: failure in processing system parameters

    LRM-00109: could not open parameter file '/opt/oracle/product/19c/dbhome_1/dbs/initorcl.ora'

    $ cp /opt/oracle/admin/ORCLCDB/pfile/init.ora /opt/oracle/product/19c/dbhome_1/dbs/initorcl.ora


    3)

    ORA-01034: ORACLE not available

    ORA-27101: shared memory realm does not exist

    $ sqlplus /nolog

    SQL> connect / as sysdba

    SQL> startup

       ORACLE 19c via Docker on Mac安装教程&客户端配置&连接Navicat GUI_第4张图片

    4)另外遇到有报错需要修改listener.ora等配置文件的话,配置完成后需要重启服务              

    $ lsnrctl stop          //停止服务    

    $ lsnrctl start         //开启服务

    $ lsnrctl status        //查询服务状态

 

 

 


PART II:客户端配置


1.刚刚docker上安装的是oracle的服务器端,现在来在本机上配置客户端

 

2.首先下载oracle的instant client基础包和sqlplus拓展包(这里需要登录oracle账号才能下载哟~)

        https://www.oracle.com/database/technologies/instant-client/macos-intel-x86-downloads.html

        - 基础包: 

        - sqlplus: 

 

———————  前面的下载链接最下方也有官方的下述配置教程——————— 

 

3.下载完成后把这两个压缩包都移动到你要放置的路径(先不用解压)

 

4.打开Terminal进入到该路径下    

  $ sudo cd /opt/oracle

  $ unzip instantclient-basic-macos.x64-19.3.0.0.0dbru.zip

  $ unzip instantclient-sqlplus-macos.x64-19.3.0.0.0dbru.zip

   (或者直接$ sudo unzip instantclient-\*.zip 同时解压两个压缩包)

 

5.给这些文件创建引用路径,不然使用的时候软件会找不到

  $ mkdir ~/lib

  $ ln -s ~/opt/oracle/instantclient_19_3/libclntsh.dylib ~/lib/  

 

6.配置环境变量

  $ vi ~/.bash_profile

    //在.bash_profile文件内加上以下内容(⚠️  注意根据自己的服务器设置各变量值)       

  export ORACLE_HOME=/opt/oracle/instantclient_19_3
  export ORACLE_SID=ORCLCDB
  export DYLD_LIBRARY_PATH=$ORACLE_HOME
  export LD_LIBRARY_PATH=$ORACLE_HOME
  export NLS_LANG=AMERICAN_AMERICA.UTF8
  export TNS_ADMIN=$ORACLE_HOME/network/admin
  export PATH=$PATH:$ORACLE_HOME 

 

7.生成环境变量

 $ source ~/.bash_profile

 

8.现在就可以从本地终端执行sqlplus了

 

 


PART III:连接Navicat GUI


1.安装Navicat : http://www.navicat.com.cn/products#navicat

2.打开Navicat新建一个Oracle的数据库连接

    ORACLE 19c via Docker on Mac安装教程&客户端配置&连接Navicat GUI_第5张图片

2.根据之前的服务器配置修改客户端连接配置

    ORACLE 19c via Docker on Mac安装教程&客户端配置&连接Navicat GUI_第6张图片

 

3.测试连接

    ORACLE 19c via Docker on Mac安装教程&客户端配置&连接Navicat GUI_第7张图片    

    ORACLE 19c via Docker on Mac安装教程&客户端配置&连接Navicat GUI_第8张图片    

 

4.然后oracle就出现在你的连接列表里啦

    

 

5.双击一下建立连接

    ORACLE 19c via Docker on Mac安装教程&客户端配置&连接Navicat GUI_第9张图片

 

6.ALL SET!✅

 

 

【参考】

  • https://www.oracle.com/database/technologies/instant-client/macos-intel-x86-downloads.html
  • https://www.jianshu.com/p/527a14f29967
  • https://www.dbform.com/2019/05/06/how-to-build-and-run-oracle-database-19c-on-docker/
  • https://juejin.im/entry/58fb250044d9040069dcecad

 

 

 

 

 

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