DBA Data[Home] [Help]

FUNCTION: SYS.VERSION_SCRIPT

Source


1 FUNCTION version_script
2 RETURN VARCHAR2 IS
3 
4   p_null         char(1);
5   p_version      VARCHAR2(30);
6   p_prv_version  VARCHAR2(30);
7   server_version VARCHAR2(30);
8 
9 BEGIN
10 
11 -- For 12.1, direct uppgrades are supported from
12 -- 10.2.0.5, 11.1.0.7, and 11.2.0.2 and above.
13 
14   SELECT version INTO p_version FROM registry$ where cid='CATPROC';
15   IF substr(p_version,1,8) = '10.2.0.5' THEN
16      RETURN '1002000';
17   ELSIF substr(p_version,1,8) = '11.1.0.7' THEN
18      RETURN '1101000';
19   ELSIF substr(p_version,1,6) = '11.2.0' AND
20         substr(p_version,1,8) != '11.2.0.1' THEN
21      RETURN '1102000';
22   ELSIF substr(p_version,1,6) = '12.1.0' THEN -- current version
23      SELECT version INTO server_version FROM v$instance;
24      IF substr(p_version,1,8) != substr(server_version,1,8) THEN --- run c1201000
25         RETURN '1201000';
26      ELSE
27         -- version is the same as instance, so rerun the previous upgrade
28         -- rerun upgrade of previous release
29         EXECUTE IMMEDIATE
30              'SELECT prv_version FROM registry$ where cid=''CATPROC'''
31         INTO p_prv_version;
32 
33         IF substr(p_prv_version,1,8) = '10.2.0.5' THEN
34            RETURN '1002000';
35         ELSIF substr(p_prv_version,1,8) = '11.1.0.7' THEN
36            RETURN '1101000';
37         ELSIF substr(p_prv_version,1,6) = '11.2.0' AND
38               substr(p_prv_version,1,8) != '11.2.0.1' THEN
39            RETURN '1102000';
40         ELSIF substr(p_prv_version,1,6) = '12.1.0' OR
41               p_prv_version IS NULL THEN  -- new database
42            RETURN '1201000';
43         ELSE
44            RAISE_APPLICATION_ERROR(-20000,
45           'Upgrade re-run not supported from version ' || p_prv_version );
46         END IF;
47       END IF;
48   END IF;
49 
50   RAISE_APPLICATION_ERROR(-20000,
51        'Upgrade not supported from version ' || p_version );
52 
53 END version_script;