In this Blog we are going to learn about how create the database in local server by using another database files from remote server. For this blog i have used my oracle 12c database.
Before started to create we should get the database files from remote server by using SCP command.
PRE CREATION OF DATABASE:
Required database files are PARAMETER FILE(PFILE),DATAFILE, CONTROL FILE, REDOLOG FILE. Then we should create a path location for that remote files, its should be same as a remote path location for database files. Else database cannot identify the files.
Step 1: Startup the database with remote database pfile:
[oracle@oracle ~]$ export ORACLE_SID=gdb1 [oracle@oracle ~]$ export ORACLE_HOME=/u01/app/oracle/product/12.2.0.1/db_1 [oracle@oracle ~]$ export PATH=$PATH:$ORACLE_HOME/bin [oracle@oracle ~]$ sqlplus / as sysdbaSQL*Plus: Release 12.2.0.1.0 Production on Sat Jan 23 11:18:36 2021
Copyright (c) 1982, 2016, Oracle. All rights reserved.
Connected to an idle instance.
SQL> startup
ORACLE instance started.
Total System Global Area 524288000 bytes
Fixed Size 8794696 bytes
Variable Size 381685176 bytes
Database Buffers 130023424 bytes
Redo Buffers 3784704 bytes
ORA-65101: container database set up incorrectly
SQL> alter system set ENABLE_PLUGGABLE_DATABASE=FALSE Scope=spfile;
alter system set ENABLE_PLUGGABLE_DATABASE=FALSE Scope=spfile
*
ERROR at line 1:
ORA-32001: write to SPFILE requested but no SPFILE is in use
Note: Above error is came because of database is running in pfile, there is no spfile for this database so we can’t change anything using command like “scope=spfile”.
For that we creating a spfile from pfile using below command:
SQL> create spfile from pfile;
File created.
SQL> shut abort
ORACLE instance shut down.
SQL> startup nomount
ORACLE instance started.
Total System Global Area 524288000 bytes
Fixed Size 8794696 bytes
Variable Size 381685176 bytes
Database Buffers 130023424 bytes
Redo Buffers 3784704 bytes
SQL> alter system set ENABLE_PLUGGABLE_DATABASE=FALSE Scope=spfile;
System altered.
SQL> shut abort
ORACLE instance shut down.
SQL> startup mount
ORACLE instance started.
Total System Global Area 524288000 bytes
Fixed Size 8622624 bytes
Variable Size 377490912 bytes
Database Buffers 134217728 bytes
Redo Buffers 3956736 bytes
Database mounted.
Step 2: Now we should take a backup of control file by using below command:
SQL> alterdatabase backup controlfile to trace as ‘/u01/app/oracle/diag/rdbms/man4/man4/trace/ctl1.sql’;
Database altered.
SQL> shut abort
ORACLE instance shut down.
SQL>
Step 3: Next bounce the database and recreate the control file from copy of backup control file:
SQL> startup nomount
ORACLE instance started.
Total System Global Area 524288000 bytes
Fixed Size 8622624 bytes
Variable Size 377490912 bytes
Database Buffers 134217728 bytes
Redo Buffers 3956736 bytes
SQL> CREATE CONTROLFILE REUSE DATABASE “NDB1” NORESETLOGS ARCHIVELOG
MAXLOGFILES 5
MAXLOGMEMBERS 5
MAXDATAFILES 100
MAXINSTANCES 1
MAXLOGHISTORY 292
LOGFILE
GROUP 1 ‘/u01/ndb1/files/redo/redo01.log’ SIZE 100M BLOCKSIZE 512,
GROUP 2 ‘/u01/ndb1/files/redo/redo02.log’ SIZE 100M BLOCKSIZE 512,
GROUP 3 ‘/u01/ndb1/files/redo/redo03.log’ SIZE 100M BLOCKSIZE 512
— STANDBY LOGFILE
DATAFILE
‘/u01/ndb1/files/data/system01.dbf’,
‘/u01/ndb1/files/data/sysaux01.dbf’,
‘/u01/ndb1/files/data/undotbs01.dbf’,
‘/u01/ndb1/files/data/users01.dbf’,
‘/u01/ndb1/files/data/system02.dbf’,
‘/u01/app/oracle/product/12.2.0.1/db_1/dbs/tbs1.dbf’,
‘/u01/app/oracle/product/12.2.0.1/db_1/dbs/tbs2.dbf’,
‘/u01/app/oracle/product/12.2.0.1/db_1/dbs/test03.dbf’,
‘/u01/ndb1/files/data/TESTTBS01.dbf’
CHARACTER SET US7ASCII
; 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23
Control file created.
Step 4: After successfully recreate the controfile the now we should do the MEDIA RECOVERY FOR BACKUP CONTROLFILE:
SQL> recover database using backup controlfile;
ORA-00279: change 8423555 generated at 09/07/2020 09:16:52 needed for thread 1
ORA-00289: suggestion :
/u01/app/oracle/product/12.2.0.1/db_1/dbs/arch1_2_1027778234.dbf
ORA-00280: change 8423555 for thread 1 is in sequence #2
Specify log: {<RET>=suggested | filename | AUTO | CANCEL}
/u01/ndb1/files/redo/redo01.log
ORA-00310: archived log contains sequence 1; sequence 2 required
ORA-00334: archived log: ‘/u01/ndb1/files/redo/redo01.log’
SQL> recover database using backup controlfile;
ORA-00279: change 8423555 generated at 09/07/2020 09:16:52 needed for thread 1
ORA-00289: suggestion :
/u01/app/oracle/product/12.2.0.1/db_1/dbs/arch1_2_1027778234.dbf
ORA-00280: change 8423555 for thread 1 is in sequence #2
Specify log: {<RET>=suggested | filename | AUTO | CANCEL}
/u01/ndb1/files/redo/redo03.log
ORA-00339: archived log does not contain any redo
ORA-00334: archived log: ‘/u01/ndb1/files/redo/redo03.log’
SQL> recover database using backup controlfile;
ORA-00279: change 8423555 generated at 09/07/2020 09:16:52 needed for thread 1
ORA-00289: suggestion :
/u01/app/oracle/product/12.2.0.1/db_1/dbs/arch1_2_1027778234.dbf
ORA-00280: change 8423555 for thread 1 is in sequence #2
Specify log: {<RET>=suggested | filename | AUTO | CANCEL}
/u01/ndb1/files/redo/redo02.log
Log applied.
Media recovery complete.
Step 5: Once media recovery completes we should open the database by using resetlogs.
When the database restarting after the recovery process at the time every database sholud open as a resetlogs command.
SQL> alter database open resetlogs;
Database altered.
SQL> select name,open_mode from v$database;
NAME OPEN_MODE
——— ——————–
NDB1 READ WRITE
Step 6: POST CREATION
In this stage we should verify the all tablespace, datafiles and tables of remote database is there in local server.
SQL> show user
USER is “SYS”
SQL> select table_name,tablespace_name from dba_tables where tablespace_name=’TESTTBS’;
no rows selected
SQL> select tablespace_name,file_name from dba_data_files;
TABLESPACE_NAME
——————————
FILE_NAME
——————————————————————————–
SYSTEM
/u01/ndb1/files/data/system01.dbf
SYSTEM
/u01/ndb1/files/data/system02.dbf
SYSTEM
/u01/app/oracle/product/12.2.0.1/db_1/dbs/test03.dbf
TABLESPACE_NAME
——————————
FILE_NAME
——————————————————————————–
SYSAUX
/u01/ndb1/files/data/sysaux01.dbf
UNDOTBS
/u01/ndb1/files/data/undotbs01.dbf
USERS
/u01/ndb1/files/data/users01.dbf
TABLESPACE_NAME
——————————
FILE_NAME
——————————————————————————–
TBS1
/u01/app/oracle/product/12.2.0.1/db_1/dbs/tbs1.dbf
TBS2
/u01/app/oracle/product/12.2.0.1/db_1/dbs/tbs2.dbf
TBS3
/u01/app/oracle/product/12.2.0.1/db_1/dbs/MISSING00008
TABLESPACE_NAME
——————————
FILE_NAME
——————————————————————————–
TBS0
/u01/app/oracle/product/12.2.0.1/db_1/dbs/MISSING00010
TBS0
/u01/app/oracle/product/12.2.0.1/db_1/dbs/MISSING00011
TESTTBS
/u01/ndb1/files/data/TESTTBS01.dbf
12 rows selected.
SQL> select table_name,tablespace_name from dba_tables where tablespace_name=’TESTTBS’ and table_name=’PROS’;
no rows selected
SQL>
Now that we have successfully create a database using remote database files. Then we have done the verification on local server all the tablespace with that datafile and tables are created.