Recently I needed a good PLSQL tool also on Linux, after the whole Oracle stuff has massive flaws I decided to use the best tool on the market (PL/SQL Developer from Allround Automations) with Wine.
After I really like how Codeweavers are supporting the open source project wine, I decided to purchase the commercial version Crossover (very close to wine).
I tried a bit around and what I found out is that on my Linux system (Debian Stretch with Gnome, 3 sreens) PL/SQL Developer 12 ist not working (windows flipping endless).
I decided to go to version 11, and also take the 32bit version (had a headache with 64 bit version on wine), I also took Windows 7 (why not its stable...) and the R11 instant client (because I know this version is working).
The results are fantastic, until now I could not find any bugs, all looks good, below you find the steps it took me.
PL/SQL Developer 11 32bit (PL/SQL Developer downloads)
Oracle Instant Client 11.2 32bit (instantclient-basic-win32-188.8.131.52.0.zip) (Instant Client Download)
Create a new Windows 7 32bit bottle (I did it via the cxsetup GUI, but of course you can also do it by script)
Open the c: drive of your bottle (wherever it is located on your system) and install the instant client
mkdir -p oracle/network/admin
mv instantclient_11_1 oracle/bin
Set some environment variables
Run regedit in the bottle (I did it via the bottle manager).
Create a Key
NLS_LANG HKEY_LOCAL_MACHINE\Software\Oracle with value
Add bin directory to path and set TNS_ADMIN (so the client finds our tnsnames.ora files for sure).
PATH and add
Add String TNS_ADMIN and set it to c:\oracle (yes I place my tnsnames file always in c:\oracle because I usually have multiple installations and want to just maintain one file).
Create tnsnames.ora file.
cat > ~/.cxoffice/PLSQLDEV/dosdevices/c:/oracle/tnsnames.ora <<- EOF
(ADDRESS = (PROTOCOL = TCP)(HOST = localhost)(PORT = 1521))
(SERVER = DEDICATED)
(SERVICE_NAME = XE)
Install PL/SQL Developer 11
After everything is prepared just install the software into the bottle (did it again via GUI).