Fallstricke bei der Migration auf 11g Szenario: Unsere 9i Spieldatenbank soll auf 11g migriert werden. Die Vorbereitungen sind weitgehend abgeschlossen, nur der SYSAUX-Tablespace fehlt noch. Diesen erstellen wir noch unter 9i unter Ignoranz der Oracle-Empfehlung einfach mit den Defaultwerten:
create tablespace sysaux datafile 'path/name' SIZE 512M;
Oracle empfiehlt hier Folgendes:
Create the SYSAUX tablespace only if you are upgrading from Oracle Database9i Release 2 (9.2) with the following mandatory attributes:
ONLINE
PERMANENT
READ WRITE
EXTENT MANAGEMENT LOCAL
SEGMENT SPACE MANAGEMENT AUTO
Der Haken liegt bei der letzten Option, die unter 9i nicht default ist – normal wird MANUAL gesetzt. Starten wir das Upgrade dann mit diesem falschem Sysaux, schlägt catupgrd sehr schnell fehl:
SELECT TO_NUMBER ('Not AUTO segment space management') from ts$
*
ERROR at line 1:
ORA-01722: invalid number
Disconnected from Oracle Database 11g Enterprise Edition Release 11.1.0.7.0 - 64bit Production
With the Partitioning, OLAP, Data Mining and Real Application Testing options
Damit stecken wir dann in der Klemme: Wir können den Tablespace unter 11g nicht löschen:
SQL> drop tablespace sysaux; drop tablespace sysaux * ERROR at line 1: ORA-00600: internal error code, arguments: [kttdtsn-1], [], [], [], [], [], [], [], [], [], [], []
Wir kommen aber auch nicht mehr auf 9i zurück, um das dort zu tun:
SQL> alter database mount; ORA-00201: controlfile version 9.2.0.0.0 incompatible with ORACLE version 9.2.0.0.0 ORA-00202: controlfile: 'path/file_01.ctl'
Soviel dazu. Gut, dass dies eine Spieldatenbank ist, deren vollständiges Recovery (nicht nur Controlfiles, sondern auch Datenfiles) ganz schnell geht..