Skip to content
ferventcoder edited this page May 3, 2012 · 9 revisions

Oracle

RoundhousE integrates with Oracle.

##Prerequisites To be able to run RH with Oracle, the additional prerequisite of having oracle client tools installed is required.

Batch Splits

Put a ; on a single line where you want to split and it will work.

Batch split example

The following ; would cause a batch split:

CREATE TABLE Timmy
(
  ID  Number(19,0) NOT NULL
  ,dude varchar(50) NULL
)
;
ALTER TABLE Timmy ADD (PRIMARY KEY(id))

None of the following statement is split:

begin
Insert into Table (column1,column2) values (value1,value2);
Insert into Table (column1,column2) values (value1,value2);
Insert into Table (column1,column2) values (value1,value2);
Insert into Table (column1,column2) values (value1,value2);
end;

ConnectionString

We did not get Oracle working correctly over Windows Authentication yet. But you can use tnsless connections to provide to RoundhousE.

###ConnectionString example

Data Source=(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=_SERVERNAME_)(PORT=1521))(CONNECT_DATA=(SERVICE_NAME=_SERVICENAME_)));User Id=_DatabaseName_;Password=_DatabaseName_;Persist Security Info=false

If one experiences problems with this approach, you may consider adding Pooling=False; to the connection string, but be aware of the performance considerations when using this setting.

No transactional support for Oracle

###Auto Commit DDL Oracle has the behavior of implicitly committing transactions before and after executing DDL statements.

For more info: Oracle 9i SQL versus Standard SQL

So if you try to execute roundhouse with transaction support against an Oracle db, RH will tell this is not supported.

###RoundhousE_ScriptsRunError is very usefull on Oracle RoundhousE will throw an error on the script that fails. And because Oracle migrations can't happen in a transaction, all previous scripts are executed and logged into the table Roundhouse_ScriptsRun. The last record in this table is the last succesfull executed script. The faling script, eventually split up in multiple parts by ; is logged in the RoundhousE_ScriptsRunError table. The column erroneous_part_of_script contains the failing part. So you know what was executed and what wasn't to fix the issue.

Our advice is to test your migrations in your builds and multiple environments to avoid this.