我在docker:中的Mac上安装了Oracle 11g xe
docker run -h "oraclehost" --name "oracle" -d -p 1521:1521 carloscastillo/rgt-oracle-xe-11g
在docker终端(CLI,而不是普通的Mac终端(中,一切似乎都很好,我可以执行查询:
The default interactive shell is now zsh.
To update your account to use zsh, please run `chsh -s /bin/zsh`.
For more details, please visit https://support.apple.com/kb/HT208050.
Kevins-MacBook-Pro:~ kevin$ docker exec -it 6b............1a /bin/sh; exit
# sqlplus
SQL*Plus: Release 11.2.0.2.0 Production on Mon Mar 15 10:50:29 2021
Copyright (c) 1982, 2011, Oracle. All rights reserved.
Enter user-name: system
Enter password:
Connected to:
Oracle Database 11g Express Edition Release 11.2.0.2.0 - 64bit Production
SQL> connect hr/tiger
Connected.
但当我想创建假脱机文件时,它显示了下面的错误。我试着用谷歌搜索,但还是没用。文件路径正确吗?或者此操作是否具有这样做的权限?
SQL> SPOOL Users/kevin/Desktop/DBM/DBsession1.txt
SP2-0606: Cannot create SPOOL file "Users/kevin/Desktop/DBM/DBsession1.txt"
另一个问题是,当我想在docker中移动终端中的箭头键时,它显示:^[[C^[[C^][D^[[C
我将Mac终端首选项更改为Commanded(完整路径(:/bin/bash正如本页所述,但这仍然不起作用。。。
有人能帮忙吗?请留言,谢谢!
您的场景
SQL> !df -h
Filesystem Size Used Avail Use% Mounted on
overlay 59G 40G 16G 72% /
tmpfs 64M 0 64M 0% /dev
tmpfs 3.0G 0 3.0G 0% /sys/fs/cgroup
shm 64M 0 64M 0% /dev/shm
overlay 3.0G 560K 3.0G 1% /usr/sbin/docker-init
/dev/vda1 59G 40G 16G 72% /etc/hosts
grpcfuse 932G 484G 431G 53% /opt/oracle/oradata
tmpfs 3.0G 0 3.0G 0% /proc/acpi
tmpfs 3.0G 0 3.0G 0% /sys/firmware
SQL>
SQL> spool /Users/BJBRA/Desktop/myfile.txt
SP2-0606: Cannot create SPOOL file "/Users/BJBRA/Desktop/myfile.txt"
我做了什么
SQL> !df -h
Filesystem Size Used Avail Use% Mounted on
overlay 59G 40G 17G 71% /
tmpfs 64M 0 64M 0% /dev
tmpfs 3.0G 0 3.0G 0% /sys/fs/cgroup
shm 64M 0 64M 0% /dev/shm
overlay 3.0G 560K 3.0G 1% /usr/sbin/docker-init
grpcfuse 932G 484G 431G 53% /desktop <---------- HERE it is!
/dev/vda1 59G 40G 17G 71% /etc/hosts
tmpfs 3.0G 0 3.0G 0% /proc/acpi
tmpfs 3.0G 0 3.0G 0% /sys/firmware
SQL> spool /desktop/myfile.txt
SQL> select dummy from dual;
D
-
X
SQL> spool off
SQL> !cat /desktop/myfile.txt
SQL> select dummy from dual;
D
-
X
SQL> spool off
解决方案
为了让容器访问主机上的文件夹,您需要使用-v选项绑定装载主机目录
docker run -h "oraclehost" --name "oracle" -v /Users/kevin/Desktop/DBM:/DBM -d -p 1521:1521 carloscastillo/rgt-oracle-xe-11g
sqlplus和箭头键
需要使用工具rlwrap才能使箭头键工作。就我个人而言,我从不在容器中操作数据库。我总是使用安装在Mac上的sqlplus来访问容器数据库——在那里我已经通过brew安装了rlwrap。
在MacOS上安装sqlplus(从oracle.com下载二进制文件(
# install on MacOS
brew tap InstantClientTap/instantclient
cp ~/Download/instantclient*.zip /usr/local/Homebrew/Library/Taps/instantclienttap/homebrew-instantclient
brew install instantclient-basic
brew install instantclient-sqlplus
brew install instantclient-tools
brew install rlwrap
Warning: rlwrap 0.45 is already installed and up-to-date.
alias sqlplus
alias sqlplus='rlwrap sqlplus'
祝你好运!