Is it possible to customize default tablespaces when installing Oracle Database 12c? - oracle

I'm having trouble with an Oracle Database 12c Release 1 install for Linux. I am expecting to see a 'DATA01' tablespace and 'INDEX01' tablespace after I finish installation and database setup.
I follow the guide at this link https://oracle-base.com/articles/12c/oracle-db-12cr1-installation-on-oracle-linux-7. After the install I end up with the following default tablespaces: SYSTEM , SYSAUX , USERS , UNDOTBS1 , and TEMP.
Am I missing some customization steps to get the 'DATA01' and 'INDEX01' tablespaces to show up or should I not expect those additional tablespaces?

I am expecting to see a 'DATA01' tablespace and 'INDEX01' tablespace after I finish installation and database setup.
Why are you expecting that? Default installation installs default tablespaces. If you want to take control over it, create the database yourself, starting with create database command.
It allows you to specify default (that would be your data01), temporary and undo tablespaces. Index (or any other) tablespace is added separately with create tablespace command. Nowadays, it is usual to let Oracle handle that itself. Previously, people did create separate tablespaces for data and indexes to improve performance, but today that's not to be done.
Finally, this question should probably be placed on SE DBA, not here (as we're mostly developers).

Related

Cannot start Oracle-XE 18c due to being full

I am unable to start a container inside oracel 18c xe , when using command "Alter Datbase Open" it gives error
"ORA-12954: The request exceeds the maximum allowed database size of 12 GB"
Upon searching internet i have found a way which says
"The only way was to append the XE datafiles in a "auxiliary" Oracle 18c home"
But i am unable to understnad how to mount only single tablespace from my xe database into Home version and remove not required stuff from the tablespace to free up space. Any help regarding this is appreciated
There is a bug in Oracle XE which allows a BigFile tablespace being created in a container DB and grow beyond the DB size limit imposed by Oracle Express Edition. The bug is fixed on version 19.1.0.
Unfortunately there is no workaround for this bug.
You might try to open the database with the problematic tablespace in OFFLINE and perform the following actions:
1.Start the database in mount state
SQL> STARTUP MOUNT
2.Put the tablespace in offline,
SQL> ALTER TABLESPACE xxxxx OFFLINE IMMEDIATE;
3.Open the database
SQL> ALTER DATABASE OPEN ;
In this status, the problematic tablespace is offline, so you can't access any element on it. Remove everything you don't need from other tablespaces ( USERS , etc) and resize others to a lower size ( UNDO , TEMP, SYSTEM ), if possible. Then, try also to resize the problematic datafile ( if the data is beyond the HWM it won't work ).
Finally, put the tablespace that was offline online again and see if the total size of the database is lower than the limit. Then try to open the database.

Which is the fastest way to create a test database(with all data) from a production database which is quite big in size (400 GB)?

I am a java person and not so much familiar with Oracle available features. Please help me.
The requirement is that, we are looking for some virtual(replica/mirror/view) database to be created from Production database just for testing purpose. Once we are done with executing all the automation test cases, delete the virtual database created. So are there any such concepts in Oracle ?
We are on Oracle 12c.
Many apps use same DB(its huge)
PS: We also use docker for deployment and also AWS.
use Rman duplicate to duplicate the test database from production.
https://oracle-base.com/articles/11g/duplicate-database-using-rman-11gr2
you can duplicate from backups or duplicate from active database
You can probably ask your database admin to export the table space to a new test machine which has the same oracle version installed. May require If there are only very few tables, then you can spool your tables out and use sqlloader to load them to a test database ( you will need to manually create the structure of the tables in test environment before hand.
In both cases, you might want to scrub out the sensitive information as per your requirements and standards.

Flyway Migrations with Oracle 12c

I'm looking to get Flyway migrations setup with Oracle 12C, however running the 'flyway baseline' I received the following error on schema_table creation.
Message : ORA-01950: no privileges on tablespace 'USERS'
The end-goal here with this setup is to get a CI and CD process that can create an Oracle Database (with DBCA) then run flyway migrate to migrate the database to the latest version.
With that in mind, how can I get passed this issue? Do i need to create the scheme and Tablespace configuration outside of Flyway before I do anything?.
Edit: Moudiz has suggested ALTER USER quota 100M on USERS, whilst that does get me passed the issue. I'd be more interested in a solution in the area of dbca/flyway configuration. Any extra 'tweak' script i need to run for deployment is not ideal.
this statement should help you.
ALTER USER <user> quota 100M on USERS

Refreshing tablespace using RMAN incremental backup from one DB to Other

If I have two DB's having same database structure and every schema has its separate tablespace then can I use RMAN to take tablespace level backups and apply them on other DB's tablespace?
Example: say I have DB schema 'scott' which have been assigned tablespace 'scott_ts' (on both databases), I take backup of scott_ts tablespace and restore it on other DB and after that to refresh this schema/tablespace I apply daily incremental level backups on it?
(Please note that I've done some research on other options like data pump, golden gate oracle streams etc. I just specifically want to know whether RMAN would help me in this case or not).
Oracle Database 10G on Windows Server 2003.
RMAN is a backup&recovery tool. You can't use it for that purpose. You can use it only as part of "transportable tablespace" process in this context. You can try to use logical standby DB for that purpose but it's little bit overkill.

How to duplicate an Oracle instance?

How can I duplicate an Oracle instance? Does anyone have any idea how to do so?
Assuming you want the schema and data duplicated, use the exp and imp commands to export your database, then import it as another user using the FROMUSER and TOUSER parameters.
Well, presumably you have a backup (surely!), so just test your backup recovery on your test server.
To be slightly more serious, it depends what version you are using, newer versions of RMAN make it pretty easy I believe, older versions, you basically do it as a backup recover.
How I've done it in the past, is basically
copy backup data files
create init file
create a new controlfile is the command 'CREATE CONTROLFILE SET DATABASE "TEST" RESETLOGS ARCHIVELOG'
Apply archivelogs and then open with resetlogs
Here is an article which explains the process with a bit more detail
A minor comment on your terminology - "instance" is actually the set of processes running on the database server host and you want to duplicate the "database".
As someone else mentioned, the best way is to start with an RMAN backup of the original database. However, since Oracle 9 RMAN has had the "DUPLICATE DATABASE" command, which takes care of a lot of housekeeping that used to be necessary if you just made a copy by restoring a production backup (e.g. resetting DBID, changing data and log file locations in the control file, setting database GLOBAL_NAME, etc.).
If you're not using RMAN, and the database is on the small side, you can script something that puts each tablespace in hot backup mode, copies the datafiles for that tablespace to a backup location, and then takes the tablespace out of hot backup mode. You now have a recoverable backup that can be moved to another host for archive log application. This definitely has a performance impact on the original database and should be your last resort.
Create a template based on your existing instance. You can then create other instances.

Resources