"Faking" an Oracle Database - oracle

The QA department that tests my apps at work uses an Oracle database that they all share. Things get really hairy w/ their cases getting changed. bug reported filed + I spend time just to find out the test case has been changed = time wasted.
What I'd like is for dev and qa to all have our own copy of Oracle running on our machines, so we can protect our data and chase our tails... less.
The problem, which I understand, is we don't have funding for all those licenses. Using an open source database won't work because we have all kinds of PL/SQL packages and triggers that I'm sure tie us to Oracle.
Does anyone know of a way (or maybe an open source product) to "fake" an Oracle database? There are no performance requirements at all. I don't mean mocking objects (we do use that for unit testing), but the actual "listening on a port for your request" RDMS. It's a longshot, but I have to ask.

Use Oracle Express for this purpose.
http://www.oracle.com/technetwork/products/express-edition/overview/index.html
Oracle Database 11g Express Edition
Free to develop, deploy, and distribute
Oracle Database 11g Express Edition (Oracle Database XE) is an
entry-level, small-footprint database based on the Oracle Database 11g
Release 2 code base. It's free to develop, deploy, and distribute;
fast to download; and simple to administer.
Oracle Database XE is a great starter database for:
Developers working on PHP, Java, .NET, XML, and Open Source
applications
DBAs who need a free, starter database for training and deployment
Independent Software Vendors (ISVs) and hardware vendors who want a
starter database to distribute free of charge
Educational institutions and students who need a free database for
their curriculum
With Oracle Database XE, you can now develop and deploy applications
with a powerful, proven, industry-leading infrastructure, and then
upgrade when necessary without costly and complex migrations.
Oracle Database XE can be installed on any size host machine with any
number of CPUs (one database per machine), but XE will store up to
11GB of user data, use up to 1GB of memory, and use one CPU on the
host machine.
Support is provided through a free Oracle Discussion Forum monitored
by Oracle employees as well as community experts.

You can use Oracle XE (Express Edition) which is free.
You can download it here.

Assuming that each developer needs less than 11 GB of data in their personal copy of the database, have you looked at using the free express edition of the Oracle database? You can install that on your local machine or even deploy it in production free of charge. You can't use enterprise edition features but basic PL/SQL should work exactly as it does in whatever edition of the database you're using now.
It's not obvious to me, however, that this is really the solution to the problem you're having. If test cases are getting changed without that information getting communicated to developers or test data that one person is relying on is being changed by some other person, creating more database instances with more copies of the same data isn't likely to be terribly helpful. If you have a local copy of the database, you need some way of getting the current version of all the objects (tables, packages, triggers, etc.). You need some way of getting the data that a particular tester is relying on. You need some way of moving your changes from your machine to the shared databases in a way that doesn't stomp on the changes other developers are making. None of these hurdles are insurmountable, but they do require a very solid build and deployment process-- otherwise, you end up with chaos where the version of code in your database is subtly different than the version of code in everyone else's database and the test data in your system has slightly different characteristics than the test data that QA is using leading to lots of bugs that are reproducible on one system but not another. If your current build and deployment process can't even ensure that test cases aren't changing while bugs are being investigated, I would tend to expect that adding more instances is going to make the problem worse, not better.

Related

GoldenGate version 12 installation/upgradation on zOS

I have GoldenGate version 11.1 on my z/OS and Linux servers. I need to upgrade the GoldenGate to version 12 on both the servers. The database that GG is interacting is DB2. I looked up on the internet for the instructions but to me they seem little complex.
My question is if it is possible for a standard GoldenGate developer to install/upgrade its version on both the servers or I will need a consultant from Oracle to do this activity for me? The good part of calling a Oracle consultant is I will get a lot of learning but the con is they charge a lot for this activity.
Please suggest.
Upgrading a replication system is not a straightforward task. As you have mentioned, there are many thing you need to be aware of. You need first to plan the upgrade process, test it and as a final task, implement it on the production replication system.
For example, GoldenGate 12 has different default values for some parameters than GoldenGate 11. You might need to check the PRM files and adapt them to the never version.
Everything about the upgrade process is written in the documentation and in the Oracle MOS notes. It is possible that all the work that is done during the upgrade is made by a mortal person.
You have to choose by yourself what level of risk you are willing to accept. And make a plan what to do if something goes wrong.
Upgrading can be a complex task and time consuming. The product team for Oracle GoldenGate is attempting to make it as easy and painless as possible.
Seeing that you are on Oracle GoldenGate 11g for Non-Oracle (DB2 for z/OS), the upgrade process can be a bit perplexing.
First, I would recommend you skip 12c and go to 19c. Oracle GoldenGate 19c has all the patches and fixes that 12c does not.
Second, the 12c/19c set of binaries for GoldenGate for Non-Oracle (DB2 for z/OS) is a different install. Starting in Oracle GoldenGate 12c for Non-Oracle (DB2 for z/OS) you can do the install on a Linux mid-tier machine. The only thing that gets installed on the z/OS platform is two (2) stored procedures. This approach opens up a lot of flexibility for the z/OS platform and lowers the overall MIPS processes. More information can be found here: https://docs.oracle.com/en/middleware/goldengate/core/19.1/gghdb/using-oracle-goldengate-db2-z-os.html
Upgrading the system would be the similar to what you have done in the past, but now it will be all linux based and provide you a cost savings by lowing MIPS.

What are options for a Delphi app to migrate away from BDE if using Oracle database

We have a Delphi 5 app connecting to an Oracle 8i database.
Most logic is siting in the database as Stored Procedures. Currently we are using the Borland Database Engine (BDE) to connect to Oracle via OCI client 9.2.
This app was originally written in '96 using Delphi 1 then upgraded to Delphi 5 in '99.
The plan is to upgrade to XE client and Oracle 11g.
What are what the options to simply replace the BDE with something else and keep the effort to a minimum?
So far I have seen:
AnyDAC (http://www.da-soft.com/anydac/)
devart ODAC (http://www.devart.com/odac/)
DOA (http://www.allroundautomations.com/)
I am not considering DBExpress as I do not believe that it will have the performance that we need.
Things that are important are:
ease of upgrade, e.g. wizard or some other tool to convert DBE components,
Good Performance.
I am leaning towards devart as they do have a migration tool (although it only does a partial job) and they have a direct TCP option to connect to database without the need for a client.
You will need to learn about the differences between BDE and other architectures. Whether you plan to move to dbExpress or not you should read and learn from this whitepaper.
The architecture of dbExpress is an intentional architecture, designed to address critical flaws not only in the BDE's lowest levels, but also in its upper levels (the TTable/TQuery components) and architecture. Understanding the reasons for those changes, and the limitations in the BDE that they address, is a key element in moving your app off the BDE, to anything.
As for your contention on performance, I like to see people use real data, not form opinions based on hand-waving, or adjectives like "fast" imparted upon objects, without experimental backing.
I have not personally used DOA, but if I wasn't going to use dbExpress, that would be the next thing I would evaluate, for Oracle-only environments. nevertheless, I wouldn't assume that dbExpress is slower, without testing both in my own environment.
Updated: Originally I mentioned Delphi OCI, but it turns out it's out of date, and not very active. DelphiOCI project on sourceforge, works with Delphi 7 and before, not on unicode delphi, and only with older (Oracle 8i and older) oracle versions... If this was able to work in my environment, I'd have tried it. Oh, and it's GPL. Okay. Not so great.
Both ODAC and DOA (although DOA development is pretty stale lateley) will give you access to Oracle features dbExpress and other generic DB access libraries will usually not allow access to. If your application does support Oracle only, and doesn't need to support other DBs, it's IMHO far better to exploit Oracle capabilites fully.
The ease of port depends on how you wrote you BDE component code. ODAC has tools to simplify BDE porting (I never used them, though), while AFAIK DOA has not.
DOA TOracleQuery is not a TDataset descendant, and thereby is not a direct TQuery replacement, although it has less overhead, and thereby has good performance, while TOracleDaset is the only dataset-like component.
I would not use the ODAC direct TCP connection to Oracle without the Oracle client but for very special needs - it is an unsupported (by Oracle) connection, I'd prefer to use Oracle Instant Client if a small (relatively...) footprint is needed, at least it is a fully supported option and let you (or your customers) open support request with Oracle if needed.

are claims of Oracle being hard to administer on simple tasks correct? aren't there quality admin apps for it? [closed]

Closed. This question is opinion-based. It is not currently accepting answers.
Want to improve this question? Update the question so it can be answered with facts and citations by editing this post.
Closed 8 years ago.
Improve this question
I see this claim made in a rant here http://discuss.joelonsoftware.com/default.asp?joel.3.456646.47 . As well as in various other rants that can be looked up on google using "oracle sucks". Ok, well, if let's say something as low key as Drupal doesn't have an easy to use visual IDE I can understand why, but if this is really true about something as big money as Oracle, why don't we see an entire ecosystem of user-friendly visual tools for basic DBA work on Oracle? I mean, people who work on Oracle work for companies with big budgets, so surely they could afford a license for a fancy "sit tight and enjoy the ride Oracle admin studio" of some sort to help developers do some stuff by themselves without pestering the DBA? Or do these tools really exist and do good job whereas the people doing the rants are simply unaware of them?
Quest Software has a variety of tools, primarily TOAD but also Spotlight and there is a backup monitoring tool in beta, for database admin.
Part of the issue is that Oracle runs on a variety of platforms, such as Solaris, Linux and Windows. The larger (and therefore more complex) installs have been on more exotic hardware. A 'full stack' admin tool would really have to be native to the database platform, and that just hasn't been practical. That's one reason why the OEM stuff is built as a web-app, and why SQL*Plus, the standard client, has stuck as a command line tool. As has RMAN, the backup/recovery manager.
Another issue is that there is a lot of baggage in Oracle. Rather than a simple "Database = File" or "Table = File" model, Oracle needed to cope with data volumes too big for single files. So they have a concept of a tablespace which maps database objects to data files. That's not so much an issue with modern filesystems.
Finally, Oracle is a high-end product. You use it in situations where the cheaper alternatives can't cut it. So it is often applied in more complex environments which would require more admin anyway. In that way, it is more a case that with Oracle, you can admin your way out of situations which impossible for a competitor product.
There are tools for Oracle, both built-in and third-party.
I think that the tools for SQL Server are a lot easier to use. And third party tools for SQL Server (i.e. Red Gate) are also extremely easy to use and powerful (compared to Toad, which has a byzantine and complex user interface)
Oracle is a multi-platform database and it dates from the original RDBMS implementations generation (one of the first which competed to replace older systems), so it has a lot of layers at install which can be very challenging to deal with. PL/SQL is also more difficult for development compared to SQL Server, MySQL or DB/2 in many ways.
From the point of view of small development shops without dedicated development DBA (or a production DBA who actually understands development) resources, Oracle is less productive than SQL Server or MySQL.
For DBA management and monitoring there's Oracle Enterprise Manager Grid Control. Not an IDE, purely an enterprise-wide administration tool for all of the databases in an organization. Everything from backups to performance monitoring, job creation, alerts, and so forth.
When I was a grasshopper Master Po told me : 'A fool with a tool is still a fool'. As others have pointed out Oracle is a high-end product. You really have to read the documentation, once you understand the basic concepts of oracle there are a lot of tools available. Allmost all tasks are command-line based. A lot of different GUI applications are available to assist you. Oracle's main tools are Enterprise Manager and SQL Developer. Server side you have a few tools you can use: Database Configuration Assitant, Network Configuration Assistent, Migration Assistent, etc. Choose the one you like for a sprecific task. Bottom line is : it's not a point and click application.
If you're deploying Oracle in a large corporate environment, there is an ecosystem of user-friendly tools to administer the database. But most of those tools are relatively painful to install-- they need their own database, for example, and install components on the database server along with the central repository. It makes perfect sense to invest in this sort of heavy-weight infrastructure when you're spending 6 or 7 figures on Oracle database licenses and you need to handle things like continuous monitoring and alerting.
On the other hand, most of the folks that are complaining about Oracle usability are trying to install and run Oracle in a much different environment. If you're a developer, for example, that wants to run Oracle on your local laptop so that you have the full stack installed, you're not going to need or want one of these heavyweight tools. Those folks are going to end up with whatever tools Oracle installs by default. Traditionally, those tools have been somewhat less than ideal. Oracle is getting better about that by shipping a lightweight Enterprise Manager web client with the database that is very useful for these types of installs. But it can still be a bit of a fight to ensure that the Enterprise Manager web client works perfectly on a developer's Windows laptop install which leads a non-trivial number of developers to conclude that "Oracle sucks".
I use an app called PL/SQL developer, and it works pretty well, IMO.
www.enterprise-elements.com is one such tool
You have noticed that you are pointing to a four-year-old rant right? By a supposed DBA who didn't even know enough to turn off unneeded services in order to shorten up the load time?
I'm sorry, but if the complaint is "why can't this industrial-strength DB be managed as easy as this lightweight, feature-poor, freeware?" then I think it is a self-answering question.
To answer the rest, yes there are tools out there. To specifically answer your " I mean, people who work on Oracle work for companies with big budgets, so surely they could afford a license for a fancy "sit tight and enjoy the ride Oracle admin studio" of some sort to help developers do some stuff by themselves without pestering the DBA? " , this is more often a factor of a DBA choosing to lock down privileges - not a function of the database itself. A tool is no use to a developer if their user account is not granted the rights to do what they want.
Rants like that one? Looks like someone tasked with running an app they had no interest in actually learning much about. No wonder they got frustrated. Yes, sometimes Oracle causes frustration of its own, but many of these rants are from people who probably picked a database platform far above their needs, and are disinclined to really learn how to manage it.

Set up a development environment for MVC2 as it would be for a development team

So at work we have our environment setup as most of you probably do as well. We have a centralized code base (controlled through SVN), which runs off a Database on the same server (Integration). We bring this code base down and copy the database down locally to work on our machines with.
This is what I need to figure out how to set up. I want to setup a Database in SQL Server 2008 locally, have it connected to my MVC 2 app, and also have it locally setup in IIS so I can test it without going into the debugger and running in the Development Server of VS2010 everytime.
So far searching I haven't really found any articles or anything that tell how to set this up, even though I feel like it is the most common thing to do (as most software shops are setup this way).
Any sources or directions would be awesome.
Thanks!
I am running Windows 7 Ultimate, Visual Studio 2010, SQL Server 2008, and IIS (whichever version comes with Windows 7).
The answer is "it depends". Although most of the software shops are setup like this there are tweaks in the setup. Especially when it comes to Database.
I found 2 cases:
In most cases where I worked, I found they have a DEV database server where the developers are given access on a perticular database which the entire team works on. They do install SQL Management Studio on the dev machines for connecting to the server/database.
Some shops have SQLExpress setup on each developer machine where they maintain a local copy of the database (same as yours)... This comes with additional headache of syncing copies of multiple databases. We used it with Visual Studion Database Projects in past and it worked like charm in many cases where we used to get "delta" updates and apply to server database. Obviously - these updates were done by someone who knew the VS DB PRO features and given some dedicated hours to perfrom the sync.
I still prefer a "controlled environment" as opposed to #2 where the schema changes are controlled by only a few...
Just my 2 cents...
Lots of this really depends on the app and local details. But we do the same sorts of things all the time. First and foremost, you'll want your develop some standardization and/or conventions about environment -- it makes life alot easier if everyone agrees that they should be running the local test DB at .\SQLEXPRESS and if they can agree on what the local urls should be.
Perhaps the tallest pole in the tent is automating the database setup -- there are some real challenges there, especially if your app has a significant amount of data it needs to be usable. I haven't found a perfect solution here, typically we use a combination of a utility called sseutil to create database instances and a database migration framework to make schema changes. Something like RoundhousE looks compelling here.

Best RDBMS for use from VB6

We are embarking on a grand/huge project which will take us around 1 full year of coding (by 4 developers) to get off the launch pad.
It is a complete Business Management System.
We can use any commercially available RDBMS like Oracle, MS SQL Server, etc. but we are looking out to use freeware and open source RDBMS system like FireBirdSQL, PostgreSQL, etc.
I would like to know as to which is the best RDBMS to use and which has got best support for stable OLEDB Providers. We have experimented with OLEDB Providers which are freeware for FireBird and pgSQL but are not satisfied with their performance and features.
Any suggestions please....
If there are any other Freeware and/or Open Source RDBMS other than listed above with high performing OLEDB Providers please enlighten me.
Yogi Yang
Note: We will be using VB 6 only and none other development tools or compilers! The target software will have to run on Windows9x based PCs (about 60 users) and the RDBMS server will run on Linux/Windows which ever is suitable.
I'd be as conservative as possible, since your client hardware and software will need tender loving care. Since SQL Server and VB6 (and Windows) all come from Microsoft, I don't see how you have any other choice.
You might even consider using an older version of SQL Server, since the standard OLEDB server and client parts might line up better, and be lighter-weight. Otherwise SQL Server Express on Windows XP I think can serve that many connections. It certainly would have the horsepower.
The OLE DB providers for SQL Server and SQL Native Client work well with SQL Server Express, as you'd expect from Microsoft, and therefore are an excellent choice for VB6.
We can use any commercially available RDBMS like Oracle, MS SQL Server, etc. but we are looking out to use freeware and open source RDBMS system like FireBirdSQL, PostgreSQL, etc.
What's wrong with the free versions of SQL Server, Oracle, or DB2? They are all significantly more powerful than the alternatives you mentioned and they give you an upgrade path if you need it.
I've had good experience with a MSSQL2005 database backend, with VB6 clients upward of 60-100 concurrent client instances... And this was a data-heavy application with A LOT of chatty database traffic, row locking, and what not.
Worked great. Interacting with the database was the least of the problems.
On that note...
Please use parameterized queries, unless you hate yourself and want to suffer needlessly.

Resources