Category Archives: Technical

My introduction to Synology DiskStation DS214


DataGrowth
Data growth visualization

In these times no household can be without ‘Home IT’ completely with a ‘home data center’. The figures for business data growth are at least equally applicable to the home situation, al least!

As in probably many situations, we started out with just some loose PC’s, which could be hooked up to The Internet, and after some time, also could be hooked up to one another. Gradually a fileserver was introduced because files were always on some other computer than you would need them. This made for a nice status quo, until the introduction of tablet computers and what not…

Now it was no longer so easy to access files or do whatever you wanted or needed, space was becoming scarcer by the day. Plus, our trusted old fileserver was starting to decay. I need to intervene. With a ‘data center’ just existing of a router a WiFi Accespoint, a central printer, some old and some newer workstations and tablets and this trusted old fileserver, an exchange wouldn’t be a daunting task…

A few years back I came across a company called Synology. I met some product guru of them and somehow registered the product name. Lately some of my colleagues started working with Synology in their home IT, so I decided this would be the way to go!

As I was running a fileserver with just a 100 Gigs of storage it was not hard to findBarracuda something with a bit more capacity. And the decision finally wasn’t too hard indeed.

A Synology DS (DiskStation) 214play it had to be and I decided upon 2 hard disks of 4 TB (Seagate Barracuda ST4000DM000) in a S.M.A.R.T. mirror setup.

Okay, so decision made, product purchased, product setup (which was just made too easy by all the discovery tooling). Disks setup in RAID 1 and on with the show!

And now the discovery fun begins…

DiskInsertsIt appears Synology has made 9 apps (for iPad / iPhone) that do all kinds of things!

  • DS Cloud, for your personal cloud solution
  • DS Mobile, monitor and manage download tasks on your DS
  • DS Finder, find Disk Stations and manage them (even remotely)
  • DS Photo, manage and view your photo collection
  • DS Cam, turn your DS into a video surveillance server
  • DS Download, to download anything you want (but mostly movies of course)
  • DS File, find files and anything else
  • DS Video, stream video anywhere
  • DS Audio, stream audio anywhere

So, okay, this is a bonus already! Just place files in the correct folder and your in business!

Currently I am migrating data towards the DS having first enabled some of the many apps inside the station, like:

  • Anti Virus
  • Java
  • iTunes Server
  • Mail Server (need to look into this, with many accounts with as many providers mail in a menace!)

Okay, well, these are just a few, but I fear there are MANY more apps out there!

Actually, from opening the box until being in business it took me 2 hours. Having a first run of customization down took me another 2 hours.

I guess doing the rest of the stuff

  • Hooking onto CrashPlan and possible MindTime
  • Getting VPN set up
  • Being able to access the DS over The Internet
  • Figuring out automatic movie download
  • Getting iTunes Server hooked up and running

will take me some hours still, but hey, this is more or less classifiable as hobby or at least additional functionality!

Some other things I heard / saw a DS was used for:DS214Play

  • Content Management server
  • Database server
  • Directory server
  • DNS server
  • ERP system
  • Forum host
  • GIT server
  • Online shop
  • Python
  • Website host
  • Wiki host
  • WordPress host

So, in the end, all is good now, we got plenty of space, a lot of new functionality. I would say, ‘Yay Synology’!


Oracle in perspective

A brief overview of alternatives…

This document focuses on the perception of the Oracle database related to ‘Small and Medium businesses’, European Style.
First we will take a quick look at Enterprise licensing and give a ballpark idea of prizes en possibilities. Next I will put this in perspective with more detail and will highlight possibilities to get ‘high end results’ with what is branded as ‘entry level’ investments. Everywhere I say Oracle, I mean the Oracle database.

Oracle is investment intensive
Oracle Enterprise Edition licenses are price-listed for over € 35.000 per processor. These CPU’s actually are not ‘real CPU’S’ but units which are defined according to Oracle’s Core Factor Table.
An Oracle Enterprise Edition license allows you to a) install and use the Oracle Enterprise Edition software and b) buy additional tooling to complete the Enterprise software stack. In this setting there is Oracle Active Data Guard, Oracle Database Vault, Partitioning, etc. to consider.
With Oracle Enterprise Edition it is possible to create a high performance, high available and ‘disaster resistant’ environment. Where it needs to be remarked that this program-set comes with an according price tag.

Oracle Standard Edition environment
A special exception in the Oracle license politics is the Oracle Standard Edition database. This installation uses the exact same database-software (binary compatible) as the Enterprise Edition edition but comprises a significantly reduced set of features and options that can be found in this global overview. The most important question is if these features and options are really needed to realize a high performance, high available and ‘disaster resistant’ environment.
Let’s first quickly zoom into a practical example the indicate an investment-perspective.
Based on a HP Proliant DL380 Gen8 E5-2690v2 Server with 2 processors with each 10 cores.

— Oracle Enterprise Edition:
2 x 10 cores x 0,5 core factor = 10 licenses x € 37,492 = € 374,920 excluding maintenance.
— Oracle Standard Edition:
2 x 1 processor = 2 licenses x € 13,813 = € 27,626 excluding maintenance.
— Oracle Standard Edition One:
2 x 1 processor = 2 licenses x € 4,578 = € 9,156 excluding maintenance.

In this setting we can save up to € 365,764 by leveraging Standard Edition. The reason is that the Standard Edition software is significantly cheaper but mainly because of the fact that the Standard Edition software is licensed per processor socket in stead of by the units defined by the ‘Core Factor Table’!
The limitation is that Standard Edition has a limit of 4 sockets per server and Standard Edition One is limited to 2 sockets per server. This is an important fact!

Room for investment
In our example it is possible to decide in favor of Standard Edition One. What we can subsequently deduce is that we have a theoretical budget of about € 350,000 available to make sure we have a sufficient high performance, high available and ‘disaster resistant’ installation. Even if we were to consume all of this budget, which is not very likely, the return on this investment remains high because the year-by-year support-cost for this environment is ((10 x € 8,248.19) -/- (2 x € 1,007.15)) € 79,467.60 per year cheaper.
In this calculation possible discounts have not been included. Looking at the volume of the investment differences any discounts will have to terminating influence. The year-by-year support-cost will remain based on the original price of the software.

Virtualization
One of the most significant hurdles with leveraging the Oracle software is virtualization, where technical considerations are not the toughest to deal with; the license consequences are!
As we concluded, Oracle Standard Edition is applicable on max 4 processors. In case of virtualization, it is true that all processors of all hardware, where the Oracle database can migrate to, either automatically or with live migration.
With this rule it is nearly impossible to leverage Standard Edition licenses and will is it be nearly impossible to use virtualization in a ‘small to medium business’ setting… Unless a smart alternative is chosen.

Alternatives
1. The abstraction layer
By leveraging virtualization-software as a abstraction layer, a server installation can be separated from the physical hardware configuration on which it runs. By using this alternative it is possible to recover from hardware failure more efficiently.
2. 2 x 2 sockets
By using a limited virtualization-cluster of 2 nodes with 2 sockets each having the maximum possible number of processor cores, the complete advantage of virtualization can be created using the maximum advantage of Standard Edition. Please note that we would need a Standard Edition license. Alternatively you could create a cluster with 2 x 1 socket to facilitate the usage of a Standard Edition One license.
3. ESL
In the case software from a third party is used, this software development party can agree on using a Embedded Software License; from Oracle. This form of licensing is quite specific and is therefor not further discussed here.
4. What will virtualization not solve
Virtualization is not replacement for Backup and it is no alternative for disaster proofing an Oracle database. These specific tasks are resolved by using backup of standby database tooling.

Tooling
In the beginning of this article it is indicated that the Oracle Enterprise Edition software give you the right to buy additional tooling to complete the Enterprise Software installation.
Alternatives for this tooling are also available for Standard Edition installations. Please consider:

  • Dbvisit as an alternative for Oracle Data Guard or Oracle Golden Gate
  • OraSash as an alternative for Oracle Active Session History
  • Nagios or SPS GenSys as alternatives to Oracle Enterprise Manager

Conclusion
Based on the information above we can conclude there are good possibilities to leverage the Oracle Database in a ‘Small and Medium Business’ environment. The information above is no complete and ultimate description of all possibilities, but this quick overview gives enough to work with to zoom into any specific challenge.

Idempotent, a parameter with adverse effect

To create and distribute, since long, we have had the power of Oracle Reports at our fingertips. These same report definitions can still be used successfully nowadays.

With all the technical changes over the years, we’ve come to a point where Oracle Reports Server, is now part of Oracle Fusion Middleware proposition. It is a (small) container, application or component of this software stack, where it is loaded in an application server and thus deployed.
Although this takes Oracle Reports Server into the modern age, it adds a lot of complexity for smaller implementations, a lot of tweaking and tuning to get it all running smoothly. One of these examples I would like to address here…

We were faced with a situation where we were running a report, an e-mail distribution report, sending out specific information to a multitude of e-mail addresses. And there was this situation where this report was run on a system, which was somewhat overloaded. This is not good, but not always completely predictable or avoidable.
For this report to run very long, actually was not a big issue as these individual e-mails were just informational and not time-bound on a minute-scale.

The problems started when we were getting word that some recipients of these e-mails were getting multitudes of copies of these e-mails! Which was sloppy at best…
Wait… multitudes of e-mail from a job which is running slow… That’s odd, they should be getting either a late e-mail or perhaps no e-mail at all! Not a lot of e-mails, that is contradictory!

This called for an investigation.

Finally we stumbled across a technology designed to do no harm, I would like to call your attention to idempotence!
Funny thing is, this setting is not part of Oracle Reports Server, but of another component used in this complexity, Oracle HTTP Server (OHS).

  • When set to ON and if the servers do not respond within WLIOTimeoutSecs (new name for HungServerRecoverSecs), the plug-ins fail over.
  • As stated on WikiPedia, an idempotent operation is “that can be applied multiple times without changing the result beyond the initial application

Obviously, this was not the case with our situation! This idempotent operation was applied multiple times and it did change the result far beyond the initial application. Up to 40 e-mails per recipients on one specific occasion.

In effect, what happened, was that the Oracle Report, which was called through a URL, did not complete within WLIOTimeoutSecs, was just restarted. The URL, as it was called to start the process, was called again from withing the Oracle Fusion Middleware Stack, starting a new run of e-mail distribution… over and over again.

We resolved the situation by two completely different actions.

  1. we made sure this operation was not run on a system which was too busy to handle the load
  2. we made sure Oracle Fusion Middleware wouldn’t get the crazy idea to re-run this operation again.

Number two was fixed by the adding of the following instruction to the installation guide (and actually doing this too):

Toggle parameter IdemPotent to ‘off’ in reports_ohs.conf in:

<drive>\oracle\middleware\asinst_1\config\OHS\ohs1\moduleconf\reports_ohs.conf

This can be accomplished through the Enterprise Manager

Webtier -> Ohs1 -> Oracle http Server -> Administration -> Advanced Configuration -> Choose a file -> reports_ohs.conf

Add the following line to the body:
## Added <name> <date>
IdemPotent off

Our problems are gone now!

Communication limit with mod_plsql through PlsqlMaxParameters

There is always a lot to do when you run your page. And, somehow, these days there are some default limits to the amount of work you are supposed to do.
Okay, but what does this mean…

In an application, we have a screen to create some appointment between a bunch of people. This bunch can become quite substantial indeed.
In those days we were running Oracle HTTP Server 9i to lift mod_plsql up in the IP, and we never had any issue creating these somewhat larger appointments in our application.

Recently we got a call on our service desk, which said there were some issues in creating an appointment with a greater number of participants. The message read, somewhere in the error-text:

HTTP-400 Too many arguments passed in. Got 2009 parameters. Upper limit is 2000

Okay, somehow this application function is not going to work!

On research we identified the parameter PlsqlMaxParameters to be the problem. This parameter was introduced with the first version of Oracle HTTP Server right after 9i. If unset, PlsqlMaxParameters defaults to a value of 2000.
I am guessing here, but my bet would be this to be a restriction to prevent a buffer-overrun of some kind.
To resolve the issue the PlsqlMaxParameter needed to be added to plsql.conf. (We tried to do this in dads.conf to keep most of Oracle HTTP Server unaffected, but got errored out).
We chose the value of 4000, meaning a 100% increase while maintaining a fair and safe limit.

For Oracle HTTP Server, the parameter is set in plsql.conf which can be found in either:

  • $ORACLE_BASE/Oracle_WT1/instances/instance1/config/OHS/ohs1/moduleconf
  • $ORACLE_BASE/ohs/Apache/modplsql/conf

For Oracle EPG, the parameter can be set as follows:

  • dbms_epg.set_global_attribute(‘max-parameters’, ‘100’);

And this is where it gets tricky!

Currently we are leveraging Oracle 11g Standalone HTTP Server (11.1.1.7), so without this bulky and difficult WebLogic overhead and we thought we’d aught to test this installation with these big appointments.
As expected, we received an error-message, so the behavior is consistent for this part. The scary bit though was that the error-message is no longer an error-message but a hint to go in the woods…

The request could not be understood by the server due to malformed syntax.

Which could virtually mean anything, and if we hadn’t run into the previous error, we’d have a helluvatime trying to resolve this.
Luckily the theater was set and we knew what we were searching for and testing, so we quickly resolved this also by adding PlsqlMaxParameters.

I hope this post will help you troubleshooting this catch-all message too!

Update on July 25th 2014
As we’re running into problems a new, I decided to call upon Oracle Support too… Raise and SR and see what comes floating to the top.

Well, a confirmation of what we already concluded, there is no conclusion…

I'm not able to determine what the maximum value is that you can set this to as it does not appear to have been documented in the bug, and the parameter has not been documented at all in the product documentation. I don't have access to the source code, so I'm not able to see if a hard limit has been set or not.

Raising the number of MaxPlsqlParameters is not considered to be a definite solution. Which kinda sounds logical since where you need a page-call with more than four thousand !! parameters (or even 2,000 when you think of it), you would think something could be optimized.

And the suggestions of MOS, which I will support:

  • I would suggest you raise the value to what you need it to be for your environment. If there is a hard limit in the code, and you configure this above that limit, then you will get an error.
  • I would then suggest you look into your application and work to reduce the number of parameters as per the recommendation of the developer of the parameter.

Oracle XML DB content easily moved

We have this application where we just store some specific content in an XDB-schema.

After a quick move of the Oracle database from a legacy system to a new environment we found that the XDB-schema and it’s contents were not moved. Okay, this is what happens when you use “good-ole” imp/exp instead of some “newer” technologies like RMAN or expdp.

What now? We can start the entire move again (but that would mean downtime for recreating the database, amongst others) or we could do a specific move for the XDB-schema (but meanwhile new content was being added to the system already). Actually all of these are not the nicest scenario’s and seemingly adding too much complexity. Not what we want…

What about a a smart alternative here too! We could simply use ftp after all.

From the EPG (Embedded PL/SQL Gateway) functionality of the database, we can just enable ftp through the Oracle database listener. With this functionality we can access the application database on the legacy system through ftp and easily copy the content to a local directory, especially since there is just a few hundered Megabytes of data.

Enable this access by:
execute dbms_xdb.setFtpPort(2100);

With a tool like Filezilla, the contents were copied to a local directory.

After the action is complete, ftp-access to the database is closed, you can never be too careful!
execute dbms_xdb.setFtpPort(0);

Loading this contents in the new location is a repetition of the actions. Enable the EPG-ftp-port on the new database, use an ftp-tool to upload the data and don’t forget to disable the EPG-ftp-port afterwards.

One tricky thing is that you should mind the data-ownership. This is easiest done by connecting to the ftp-account with the same user that owned the database in the source database!

When you run into errors, probably there could be something wrong with your XDB-installation. Please look at this post for some more on that!!

Can you boost your Oracle database performance on HP-UX for free?

Database performance, as is true with all performance related matters, has to do with resources.

This story specifically focuses on a real life experience with Oracle database performance on HP Unix running on Intel integrity CPU’s like these:

CPUinfo

The issue with installation is the hyper-threading aka. the use of the logical processors.
When the server is booted and is running, you can do basic performance review with a default tool like top.

lcpu_attr=0

In this exact case the server is running fine and there is no need to investigate further. But, in cases where there were performance issues, it would be a good idea to be aware of the numbering of the CPU’s in this overview (0, 2). This numbering suggests there would also be a ‘1’ and, where there would be a ‘1’ there would probably also be a ‘2’…

Yes there is and it is called ‘lcpu_attr’. A HP Unix kernel parameter which is, to my taste, a bit odd, not well known or well documented…

lcpu_attr (Tunable Kernel Parameter)

When turned on, lcpu_attr activates the logical CPU’s immediately. When you run top again, this is what it’ll look like (immediately)

lcpu_attr=1

Okay! Great… but… there are some catches.
This parameter lcpu_attr is a dynamically tunable kernel parameter but… it’ll crash your databases. So you will need a minimum of planned downtime for this action.

Also, you can set hyper-threading on in the EFI boot-loader.
But then you should be aware of this!

In the end, in this real-life story, we helped the situation advance by just doing:

1. stopping Oracle database(s)
2. kctune lcpu_attr=1
3. starting Oracle databas(s)

All in all, it could be not difficult to boost your Oracle database performance on HP-UX for free!

Thanks to my good friend Gerard van der Kooij for finding the final link!