apm install build-oracle
Oracle compiler for Atom
Uses the atom-build package to execute Oracle compilations in the Atom editor.
This package requires atom-build to be installed.
To be able to compile your code, you need either
SQLcl available on your system - preferably in your PATH.
SQL*Plus requires more steps to get set up (such as installing the instant client), but you will get much faster compile times so that is the preferred interpreter (
SQLcl is Java based, so launching the JVM each time adds to the compile time).
SQL*Plus set up
You may face issues depending on how you set up the instant client. The typical guide involves setting an environment variable
DYLD_LIBRARY_PATH. Unforunately, in OS X El Capitan, this variable is not passed in as an environment variable into Atom (this is a part of security measure known as System Integrity Protection). You can also see that this is not output if you run the
env command on the terminal.
If you followed those general steps, you will likely be getting this error (or very similar):
dyld: Library not loaded: /ade/dosulliv_sqlplus_mac/oracle/sqlplus/lib/libsqlplus.dylib
Referenced from: /opt/Oracle/instantclient_11_2/sqlplus
Reason: image not found
Trace/BPT trap: 5
Two ways around this.
- In the settings for this plugin, set the path where your client files are (copy what you have for your existing DYLD_LIBRARY_PATH).
- Or, instead of setting
DYLD_LIBRARY_PATH, you can make all the libaries available in a location that
SQL*Plusknows where to look for them. Two common locations are
/usr/local/lib. So, assuming you placed the instant client at
/opt/Oracle/instantclient_11_2, run the following:
sudo mkdir -p /usr/local/lib
sudo ln -s /opt/Oracle/instantclient_11_2/libclntsh.dylib.11.1 /usr/local/lib/libclntsh.dylib.11.1
sudo ln -s /opt/Oracle/instantclient_11_2/libnnz11.dylib /usr/local/lib/libnnz11.dylib
sudo ln -s /opt/Oracle/instantclient_11_2/libociei.dylib /usr/local/lib/libociei.dylib
sudo ln -s /opt/Oracle/instantclient_11_2/libsqlplus.dylib /usr/local/lib/libsqlplus.dylib
sudo ln -s /opt/Oracle/instantclient_11_2/libsqlplusic.dylib /usr/local/lib/libsqlplusic.dylib
PATH is set up with the instant client directory on it so that
sqlplus is on it. In your
~/.bash_profile add the line:
I went with
/usr/local/lib rather than
~/lib so to not fill up my home directory. Aside from that difference, this is much as what is described on the download page of the instant client (down the bottom of the page).
If you previously set up
DYLD_LIBRARY_PATH you can unset that and you should be good to go.
To be able to run SQL*Plus from Atom, Atom needs to have all the relevant enviornment variables set up. I followed the installation from this guide. The guide mentions to set environment variables in a system wide location or
~/.bash_profile. The guide suggests to install it in a system wide location since you typically only have one Oracle client installed per system. That is a good approach also for Atom, as it will ensure Atom picks up the relevant environment variables. I found that environment variables set in
~/.bash_profile are not picked up by the (GUI) terminal, and upon further digging I found that
~/.bash_profile is only picked up when launching a virtual console - see this post. The other location you may be tempted to use is
~/.bashrc, however this is also not a good place as Atom doesn’t seem to pick up the environment set up in there, see this comment.
So, to sum it up. Either place your Oracle variables in a script at
/etc/profile.d/oracle.sh (globally set), or place them in
~/.profile which will get picked up by Atom.
SQLcl set up
An issue you may face on Windows is if you try and compile code containing unicode characters, they won’t persist when compiling with SQLcl. The reason is that the JVM doesn’t default to UTF-8 encoding on Windows.
To get around this, ensure you point to sql.bat (instead of sql.exe) and also that you have checked “Enforce UTF-8” in the package settings, similar to:
Enforce UTF-8 encoding is on, the environment variable
JAVA_OPTS will be set to
-Dfile.encoding=UTF-8. This is also discussed on Stack overflow: http://stackoverflow.com/questions/361975/setting-the-default-java-character-encoding
Install through apm or in Atom itself, where the name of the package is
apm install build-oracle
Once installed, you will want to access the settings and set the relevant path for your SQL interpreter. That will be either SQLcl or SQL*Plus. For me, I have
sqlplus in my
path so no change is necessary (there is an issue where PATH may not be correctly set in Atom, in that case you should set the full path of
sqlplus). If I wanted to point it to the binary for
SQLcl, which isn’t in my
path, I would set the configuration to
In your project root directory, add a JSON file named
.atom-build-oracle.json, where you can define build targets for your project. This contents of the file expects an array of objects, which supports the following parameters:
|targetName||A descriptive name of the build target. This is so you know to which environment you’ll be compiling to.||hr: dev|
|connectString||The connect string you would used to connect to
note 1: You must specify a password at this stage.
|host||The server of the database||example.com|
|port||The database port||1521 (default)|
|sid||The database SID or service name||XE|
|user||The schema name you connect to||hr|
|password||The password of the schema||oracle|
connectString is built from the other server details if you ommit that setting.
Suppose I have the following TNS entry defined:
``` XE1 = (DESCRIPTION = (ADDRESS_LIST = (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.56.101)(PORT = 1521))
) (CONNECT_DATA = (SERVICE_NAME = XE) ) ) ```
My build file becomes:
"targetName" : "hr: dev",
"connectString" : "hr/hr@XE1"
"targetName" : "hr: dev",
"host" : "example.com",
"sid" : "xe",
"port" : 1521,
"user" : "hr",
"password" : "hr"
Where you can specify any number of build targets. If your database server uses service names instead of SID, you can enter the service name in the property “sid” nonetheless.
Since this file contains sensitive information (password) you will likely also want to add an entry to your
.gitignore file so this is not published.
It’s worth noting, that to get the build system to recognise the above configuration, you will need to reload atom (only the first time). This can be done in the menu
View->Reload or with the keyboard shortcut
This plugin is an extension to the
build system, providing the necessary scripts to compile Oracle code. The build triggers are determined as part of the over-arching
build package. To build the active file is done with the keyboard shortcut
f9. By default, this will be the first entry in your build config file. The active build target can be switched with
f7, which will also trigger a build on the active file:
The build panel (with build output) can be toggled with