Do you ever wonder how to get all parameters for CREATE DATABASE Statement ?
I will be sharing some of the reverse engineering done to create a duplicate copy of the database.
Some of you may be thinking, “Why not just duplicate database or backup and restore?”
For the project I was working on, this was not feasible since Extended Data Types (12c NF) was enabled and there is no going back.
Restoring database from backup would result in too much data loss.
This leaves the only option is to create new database with max_string_size=standard, and perform full export/import.
From backup controlfile to trace:
SYS@DB1> alter database backup controlfile to trace as '/tmp/cf_@.sql' reuse resetlogs;
Database altered.
SYS@DB1>
From /tmp/cf_DB1.sql:
$ ll /tmp/cf_DB1.sql
-rw-r--r--. 1 oracle oinstall 2955 Oct 11 04:45 /tmp/cf_DB1.sql
STARTUP NOMOUNT
CREATE CONTROLFILE REUSE DATABASE "DB1" RESETLOGS ARCHIVELOG
MAXLOGFILES 32
MAXLOGMEMBERS 4
MAXDATAFILES 400
MAXINSTANCES 1
MAXLOGHISTORY 292
LOGFILE
GROUP 1 '/oradata/DB1A/onlinelog/o1_mf_1_czl4h9sg_.log' SIZE 200M BLOCKSIZE 512,
GROUP 2 '/oradata/DB1A/onlinelog/o1_mf_2_czl4h9yr_.log' SIZE 200M BLOCKSIZE 512,
GROUP 3 '/oradata/DB1A/onlinelog/o1_mf_3_czl4hbdb_.log' SIZE 200M BLOCKSIZE 512
From DBA_REGISTRY:
DB1:(SYS@DB1):PRIMARY> select name,comp_id,comp_name,version,schema,status 2 from v$database,dba_registry 3 order by 2 4 ; NAME COMP_ID COMP_NAME VERSION SCHEMA STATUS ---------- ------------ ---------------------------------------- ---------- ---------- -------- DB1 CATALOG Oracle Database Catalog Views 12.1.0.2.0 SYS VALID DB1 CATJAVA Oracle Database Java Packages 12.1.0.2.0 SYS VALID DB1 CATPROC Oracle Database Packages and Types 12.1.0.2.0 SYS VALID DB1 JAVAVM JServer JAVA Virtual Machine 12.1.0.2.0 SYS VALID DB1 XDB Oracle XML Database 12.1.0.2.0 XDB VALID DB1 XML Oracle XDK 12.1.0.2.0 SYS VALID 6 rows selected. DB1:(SYS@DB1):PRIMARY>
From DATABASE_PROPERTIES:
DB1:(SYS@DB1):PRIMARY> select property_name,property_value from DATABASE_PROPERTIES; PROPERTY_NAME PROPERTY_VALUE ---------------------------------------- ---------------------------------------- DICT.BASE 2 DEFAULT_TEMP_TABLESPACE TEMP DEFAULT_PERMANENT_TABLESPACE USERS DEFAULT_EDITION ORA$BASE Flashback Timestamp TimeZone GMT TDE_MASTER_KEY_ID EXPORT_VIEWS_VERSION 8 DEFAULT_TBS_TYPE SMALLFILE GLOBAL_DB_NAME DB1 NLS_RDBMS_VERSION 12.1.0.2.0 NLS_NCHAR_CHARACTERSET AL16UTF16 NLS_NCHAR_CONV_EXCP FALSE NLS_LENGTH_SEMANTICS BYTE NLS_COMP BINARY NLS_DUAL_CURRENCY $ NLS_TIMESTAMP_TZ_FORMAT DD-MON-RR HH.MI.SSXFF AM TZR NLS_TIME_TZ_FORMAT HH.MI.SSXFF AM TZR NLS_TIMESTAMP_FORMAT DD-MON-RR HH.MI.SSXFF AM NLS_TIME_FORMAT HH.MI.SSXFF AM NLS_SORT BINARY NLS_DATE_LANGUAGE AMERICAN NLS_DATE_FORMAT DD-MON-RR NLS_CALENDAR GREGORIAN NLS_CHARACTERSET AL32UTF8 NLS_NUMERIC_CHARACTERS ., NLS_ISO_CURRENCY AMERICA NLS_CURRENCY $ NLS_TERRITORY AMERICA NLS_LANGUAGE AMERICAN DST_SECONDARY_TT_VERSION 0 DST_PRIMARY_TT_VERSION 18 DST_UPGRADE_STATE NONE MAX_STRING_SIZE STANDARD DBTIMEZONE US/Mountain WORKLOAD_CAPTURE_MODE WORKLOAD_REPLAY_MODE NO_USERID_VERIFIER_SALT 88C7FDB8D44CA60E05624A08A177722C 37 rows selected. DB1:(SYS@DB1):PRIMARY>
From V$DATABASE:
DB1:(SYS@DB1):PRIMARY> r
1 select log_mode,flashback_on,force_logging,created
2 from V$DATABASE
3*
LOG_MODE FLASHBACK_ON FORCE_LOGGING CREATED
------------ ------------------ --------------------------------------- -------------------
ARCHIVELOG NO NO 2016-10-08 08:34:02
DB1:(SYS@DB1):PRIMARY>
From: V$BLOCK_CHANGE_TRACKING:
DB1:(SYS@DB1):PRIMARY> r 1 select status, filename 2 from V$BLOCK_CHANGE_TRACKING 3* STATUS FILENAME ---------- -------------------- DISABLED DB1:(SYS@DB1):PRIMARY>
From DBA_SCHEDULER_GLOBAL_ATTRIBUTE:
DB1:(SYS@DB1):PRIMARY> r
1 select *
2 from DBA_SCHEDULER_GLOBAL_ATTRIBUTE
3 order by 1
4*
ATTRIBUTE_NAME VALUE
---------------------------------------- ----------------------------------------
CURRENT_OPEN_WINDOW
DEFAULT_TIMEZONE US/Mountain
EMAIL_SENDER
EMAIL_SERVER
EMAIL_SERVER_CREDENTIAL
EMAIL_SERVER_ENCRYPTION NONE
EVENT_EXPIRY_TIME
FILE_WATCHER_COUNT 0
LAST_OBSERVED_EVENT
LOG_HISTORY 30
MAX_JOB_SLAVE_PROCESSES
11 rows selected.
DB1:(SYS@DB1):PRIMARY>
The finished SQL: crdb.sql
spool crdbp.log set echo on timing on time on host echo $ORACLE_SID host sysresv create spfile from pfile; startup force nomount; CREATE DATABASE MAXINSTANCES 1 MAXLOGFILES 32 MAXLOGMEMBERS 4 MAXLOGHISTORY 292 MAXDATAFILES 400 ARCHIVELOG CHARACTER SET AL32UTF8 NATIONAL CHARACTER SET AL16UTF16 SET TIME_ZONE='US/Mountain' USER SYS IDENTIFIED BY oracle USER SYSTEM IDENTIFIED BY oracle EXTENT MANAGEMENT LOCAL DATAFILE SIZE 513M AUTOEXTEND ON NEXT 128M MAXSIZE 8193M SYSAUX DATAFILE SIZE 257M AUTOEXTEND ON NEXT 128M MAXSIZE 8193M LOGFILE GROUP 1 SIZE 200M,GROUP 2 SIZE 200M,GROUP 3 SIZE 200M DEFAULT TEMPORARY TABLESPACE temp TEMPFILE SIZE 256M AUTOEXTEND ON NEXT 128M MAXSIZE 8192M DEFAULT TABLESPACE users DATAFILE SIZE 129M AUTOEXTEND ON NEXT 128M MAXSIZE 8193M UNDO TABLESPACE undotbs1 DATAFILE SIZE 256M AUTOEXTEND ON NEXT 128M MAXSIZE 8192M; spool off @?/rdbms/admin/catalog.sql @?/rdbms/admin/catproc.sql @?/javavm/install/initjvm.sql @?/xdk/admin/initxml.sql @?/xdk/admin/xmlja.sql @?/rdbms/admin/catjava.sql @?/rdbms/admin/catxdbj.sql @?/rdbms/admin/utlrp.sql exec dbms_scheduler.set_scheduler_attribute(attribute=>'default_timezone',value=>'US/Mountain'); -- alter system set nls_length_semantics=CHAR scope=both sid='*'; -- alter database flashback on; -- alter database FORCE LOGGING; -- alter database enable block change tracking; connect system/oracle @?/sqlplus/admin/pupbld.sql exit
Leave a comment