Intoduction to Oracle Rest Data Services


First, let’s talk about REST apis. REST apis are very popular nowdays because they are easily accessible from any client able to make http(s) requests. The beauty of this is that you can access different systems through these rest apis independantly of how the system is built in the backend. For example I can access with a simple curl command the twitter, youtube or any public api which will return me data.

Rest APIs usually present data as a JSON object. If your are not already familiar with JSON here is an example of a JSON object:

{"menu": {
  "id": "file",
  "value": "File",
  "popup": {
    "menuitem": [
      {"value": "New", "onclick": "CreateNewDoc()"},
      {"value": "Open", "onclick": "OpenDoc()"},
      {"value": "Close", "onclick": "CloseDoc()"}

Oracle introduced the support of JSON as a datatype and methods to query JSON objects. This make things a lot easier when you have to work with these data structures.

Continue reading Intoduction to Oracle Rest Data Services

Creating an ACFS filesystem


About ACFS filesystem

ACFS mean  Automatic Storage Management Cluster File System. This filesystem volume resides inside the ASM database and can be used to store database files but also any type of files with or without direct relation to the database.

Oracle ACFS does not support Oracle Grid Infrastructure or Oracle Cluster Registry voting files.

The ACFS filesystem can be extended dynamically without any service interruption, you just need to add space to the diskgroup hosting the ACFS volume and then extend the filesystem. Continue reading Creating an ACFS filesystem

Datapump in parallel with a shell script

I recently came across an issue while exporting a huge partitioned table for a data migration. The export took years without any obvious reason.

After some research I found that the parallelism wasn’t working, I could only see one datapump worker at a time, then I found this note explaining the behaviour (Doc ID 1467662.1) .

A table with BASICFILE lobs cannot be exported in parallel, oracle advise to convert those BASICFILES to SECUREFILES; this was not possible for me.

The second solution was to run multiple export jobs in parallel, each one exporting a fraction of the table rows. In the example, oracle use a query using a range of the primary key to do an export, this was ok but I needed a more automatic method to divide the rows based on the degree of parallelism I wanted to apply, then I found this blog post from Morten Jensen.
Continue reading Datapump in parallel with a shell script