I need to create interfaces between two different databases. I have an Oracle database and another Postgresql database.
The problem is that the schemas and structures of the databases are different.
I have performed migration / interface processes between two Postgresql databases before, but never with Oracle.
I think it is possible to do it with DBlink.
I need to keep both databases updated (bidirectional).
What do you suggest is a good alternative?
Related
I'm more used to a PostgreSQL world and am now struggling with Oracle.
I have multiple microservices with Spring Boot which use Flyway for database migration. With PostgreSQL, I would create a "database" for each microservice (e.g. createdb -O microservice1_user microservice1 and createdb -O microservice2_user microservice2) so that the tables don't clash and each microservice has its own flyway_schema_migration` table.
I have now access to one Oracle server. I have administrator access (if I'm not mistaken - I have an owner and a support user account).
What would be the best practice here? Can I create the equivalent of a "databases" (I think they are "schemas" in Oracle? And each schema is also a user?) for each microservice? Do I need to prefix the tables (I really would like to avoid that)?
Thanks!
SCHEMA and USER are practically synonymous in Oracle - so yes, each of your databases could be represented as a SCHEMA in Oracle.
However, if a user is granted privs, it would allow them to see data in another schema.
If you need a harder 'partition' then you could use the multitenant feature in Oracle.
You would then have a separate pluggable database for each microservice. Each could have one or more schemas, but they wouldn't be able to accidentally or otherwise access the data from another pluggable database.
We have customers who have implemented both architectural styles, so there's not necessarily a right or wrong way.
Going with multiple schemas in a single database is obviously the simpler way to go.
Data was sent to our company with PostgreSQL, but we are prohibited to use the tools of PostgreSQL , permitted the use of only Oracle.
How to migrate data from PostgreSQL to Oracle without using a third party application(they are also prohibited)? You can only use the tools of Oracle.
I found this article https://support.oracle.com/knowledge/Oracle%20Database%20Products/2220826_1.html but we don't have Support Identifier
We have one .sql file. It weighs 8 Gigabytes.
It looks like you have so many impediments in your company. Regarding Oracle's SQL Developer Migration Workbench, unfortunately it does not support the migration of PostgreSQL databases. However, the following 3rd-party software tools are available and may assist in migration, but I am afraid you cannot use them as you said that those products are forbidden:
http://www.easyfrom.net/download/?gclid=CNPntY36vsQCFUoqjgodHnsA0w#.VRBHKGPVuRQ
http://www.sqlines.com/postgresql-to-oracle
Other options will only move the data from your Postgresql database to Oracle database, it means that you must have the DDLs of the tables before to run the import:
To move data only, you can generate a flat file of the the
PostgreSQL data and use Oracle SQL*Loader.
Another option to migrate data only is to use Oracle Database
Gateway for ODBC which requires an ODBC driver to connect to the
PostreSQL database, and copy each table over the network using
sqlplus "COPY" or "CREATE TABLE AS SELECT" commands via oracle
database link.
Also, Oracle has discussion forum for migrating non-oracle databases to Oracle.
http://www.oracle.com/technetwork/database/migration/third-party-093040.html
But, if you have only a sql file, you should look at it to see whether you have both DDLs ( create tables and indexes, etc ) and the data itself as insert statements. If so, you need to split it and treat the DDLs to convert the original data types to Oracle datatypes.
I have started working with mysql earlier, where different database meant completely different database, and I can create delete databases.
but when I started to working with oracle, the structure really confused me, the 'database' term means the same in Oracle as Mysql? If not whats the difference?
Thanks!
Oracle doc explain the difference (and migration tips):
2.2.5.1 Databases
When migrating MySQL databases to Oracle, SQL Developer maps each MySQL database to a tablespace in Oracle. Database objects, such as tables, indexes and views are stored in the respective tablespaces and are referenced from the Oracle schema for the user that owns them.
I've an scenario where I have one database in Firebird or Oracle, and one database in sqlserver that it have some tables of the anothers databases.
I did like the tool like realm.io, where I can synchronize the databases.
How to do that?
I have a Oracle SE1 11.2 instance running. It has one database in it. How can I create another database. I have been using Mysql so far and I am able to create as many databases with it but when tried with Oracle it gives an error.
Oracle is different from MySQL in how it terms databases, instances and schemas.
For Oracle each instance has only one database, but each database can have many schemas.
RDS provides only 1 instance(database), if you want many you pay for each instance you want by launching a new instance. However, each instance can support multiple schema's. On RDS you can create up to 30 schema's for Oracle. (see the RDS FAQ).
Because each user = a schema, and each schema has its own tables independent of other schema's you can have up to 30 "databases" by leveraging the schema model.