本文共分为三部分
PART I:安装ORACLE
PART II: 客户端配置 (指路 ➡️ juejin.cn/post/684790…)
PART III: 连接Navicat GUI (指路 ➡️ juejin.cn/post/684790…)
PART I:安装ORACLE
1.软件安装
- docker
- oracle安装介质(www.oracle.com/database/te…)
- 我选择的是 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的官方完整运行指南
- 或访问本地README文件(注意指令执行的位置)
$ vi docker-images/OracleDatabase/SingleInstance/README.md3.构建该镜像的容器
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 oracle4.设置密码
在界面上出现的log内容里,第一行可以看到随机分配的账号初始密码
ORACLE PASSWORD FOR SYS, SYSTEM AND PDBADMIN: aPNa4TEcIUf=1 我们也可以直接执行.setPassword.sh文件修改密码
$ docker exec oracle19c ./setPassword.sh oracle5.运行container
然后就可以开始运行我们的数据库了!!!
- 进入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
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=orcl
[oracle@oraclehost ~]$ echo $ORACLE_SID
orcl - 修改配置文件~/.bash_profile
ERROR:
ORA-12162: TNS:net service name is incorrectly specified
[oracle@d90999e88f74 ~]$ vi ~/.bash_profile —————————以下为.bash_profile内容—————————————
—————————————————————————————————
[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 4)另外遇到有报错需要修改listener.ora等配置文件的话,配置完成后需要重启服务
$ lsnrctl stop //停止服务
$ lsnrctl start //开启服务
$ lsnrctl status //查询服务状态[参考]