无法在Mac docker中的Oracle 11g中后台处理,文件路径或权限问题?(SP2-0606:无法创建SPOOL



我在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' 

祝你好运!

最新更新