My best advice is to learn how to translate the technical knowledge you have to those who do not understand it. In my experience in both the corporate world, and in the freelance world, the most valuable and sought after skills have been the ones that help me to explain, or "de-geekify", common technical issues to non-technical folks.
Many business users (I will blanketly call them non-technical folks, but for sure there are many who have a technical background) feel indifferent or apathetic towards people with technical knowledge. Many of them feel IT folk "look down on them" and "make them feel stupid". Others tend to develop a belief that IT can "magically fix" the inefficiencies inherent in long-standing business processes and team miscommunications.
I have found in my career that those who succeed most in the business of technology (freelance or otherwise), possess the right marriage of technical acumen and interpersonal communication skills. It doesn't matter whether your counterpart (or competition) knows 10 times as much about Oracle as you do. The customer will, 8 times out of 10, respond most keenly to the personnel who best make them feel they understand what it is that technology will provide them.
By all means, learn Oracle, learn Java, learn extreme programming and OOP. But while you learn those skills, be sure to learn how to relate what you learn to those that will end up using it and benefiting from it in the long run.
cheers, and hope I didn't drag on too much,