在本文中,我将讨论如何将 Oracle 数据库从 11.2.0.4 升级到 12.1.0.2。
当前 ORACLE_HOME :
/u01/app/oracle/product/11.2.0/dbhome_1
新的 ORACLE_HOME :
/u02/app/oracle/product/12.1.0.2/db_1
数据库名称:TESTDB
先决条件
1.我们创建目录并授予权限。
$ mkdir -p /u02/app/oracle/product/12.1.0.2/db_1
$ chown -R oracle:oinstall /u02
$ chmod -R 775 /u02
2.我们清空回收站。
SQL> PURGE DBA_RECYCLEBIN;
3.我们编译无效对象。
SQL> @?/rdbms/admin/utlrp.sql
手动升级
1.我们复制Preupgrade工具的脚本文件。
$ mkdir -p /tmp/upgrade
$ cp /u02/app/oracle/product/12.1.0.2/db_1/rdbms/admin/preupgrd.sql /tmp/upgrade
$ cp /u02/app/oracle/product/12.1.0.2/db_1/rdbms/admin/utluppkg.sql /tmp/upgrade
- 我们运行 Preupgrade 工具。
SQL> @/tmp/upgrade/preupgrd.sql
ACTIONS REQUIRED:
1. Review results of the pre-upgrade checks:
/tmp/upgrade/preupgrade.log
2. Execute in the SOURCE environment BEFORE upgrade:
/tmp/upgrade/preupgrade_fixups.sql
3. Execute in the NEW environment AFTER upgrade:
/tmp/upgrade/postupgrade_fixups.sql
$ cd /tmp/upgrade
$ ls -ltr
-rw-r--r-- 1 oracle oinstall 8049 Sep 10 11:36 preupgrade.log
-rw-r--r-- 1 oracle oinstall 3567 Sep 10 11:36 preupgrade_fixups.sql
-rw-r--r-- 1 oracle oinstall 2656 Sep 10 11:36 postupgrade_fixups.sql
- 我们运行 preupgrade_fixups.sql 并检查更改。
SQL> @/tmp/upgrade/preupgrade_fixups.sql
- 运行 preupgrade_fixup.sql 后的建议更改如下。
ALTER SYSTEM SET PROCESSES=300 SCOPE=SPFILE
- Stop EM Database Control:
$> emctl stop dbconsole
cp /u02/app/oracle/product/12.1.0.2/db_1/rdbms/admin/emremove.sql $ORACLE_HOME/rdbms/admin/
- Connect to the Database using the SYS account AS SYSDBA:
SET ECHO ON;
SET SERVEROUTPUT ON;
@emremove.sql
ORACLE_HOME/olap/admin/catnoamd.sql script before or
after the upgrade.
EXECUTE dbms_stats.gather_dictionary_stats;
- 我们检查 dbms_scheduler 作业并禁用启用的作业。
SQL> set pagesize 2000
SQL> set lines 2000
SQL> set long 99999
SQL> select owner,JOB_NAME,ENABLED,state from dba_scheduler_jobs;
SQL> execute dbms_scheduler.disable('RLM$EVTCLEANUP');
6.我们检查system和sys的默认表空间。 两者必须相同。
SQL> SELECT username, default_tablespace
FROM dba_users
WHERE username in ('SYS','SYSTEM');
USERNAME |DEFAULT_TABLESPACE
------------------------------|------------------------------
SYSTEM |SYSTEM
SYS |SYSTEM
- 我们停止监听器并关闭数据库。
$ lsnrctl stop listener
SQL> shu immediate
- 设置新的 ORACLE HOME 路径。
$ export ORACLE_HOME=/u02/app/oracle/product/12.1.0.2/db_1
$ export PATH=$ORACLE_HOME/bin:$PATH
$ export ORACLE_BASE=/u02/app/oracle/
- 将11G $ORACLE_HOME/dbs下的spfile和密码文件复制到12C $ORACLE_HOME/dbs。
$ cp /u01/app/oracle/product/11.2.0/dbhome_1/dbs/spfileTESTDB.ora /u02/app/oracle/product/12.1.0.2/db_1/dbs/
$ cp /u01/app/oracle/product/11.2.0/dbhome_1/dbs/orapwTESTDB /u02/app/oracle/product/12.1.0.2/db_1/dbs/
10.我们以升级模式启动数据库。
$ cd $ORACLE_HOME/rdbms/admin
$ pwd
/u02/app/oracle/product/12.1.0.2/db_1/rdbms/admin
$ sqlplus “/ as sysdba”
SQL> startup UPGRADE
SQL> exit
- 我们以 4 次并行运行 catupgrd 脚本文件。
$cd $ORACLE_HOME/rdbms/admin
$ORACLE_HOME/perl/bin/perl catctl.pl -n 4-l $ORACLE_HOME/diagnostics catupgrd.sql
- 我们遵循日志。
$ cd /uv1172/apps/oracle/product/12.1.0.2/diagnostics
$ tail -100f catupgrd0.log
- 我们打开数据库并运行升级后工具。
$ sqlplus "/as sysdba"
SQL> startup
SQL> @utlu121s.sql
- 我们运行 catuppst.sql。
SQL>@$ORACLE_HOME/rdbms/admin/catuppst.sql
- 我们运行 postupgrade_fixups.sql 并执行建议的操作。
SQL>@$ORACLE_HOME/rdbms/admin/catuppst.sql
-- The following item is probably included in your postupgrade_fixups.sql script.
EXECUTE DBMS_STATS.gather_fixed_objects_stats;
-- Recompile invalid objects.
@utlrp.sql
-- Check for newly invalid objects.
@utluiobj.sql
-- Run again to check the final outcome of the upgrade.
@utlu121s.sql
- 我们检查升级后的数据库。
sqlplus / as sysdba
SQL> SELECT name, open_mode FROM v$database;
NAME OPEN_MODE
--------- --------------------
TESTDB READ WRITE
正如我们在上面看到的,升级后数据库在 READ/WRITE 模式下可用。
「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。




