oracle 12.1.0.2升级oracle12.2.0.1(non cdb)

https://blog.csdn.net/bjywxc/article/details/106898480

1、环境准备环境准备工作,需要在升级前完成,这里不做过多介绍。我的环境如下:虚拟机:rhel 7.4升级前数据库版本:oracle 12.1.0.2升级后数据库版本:oracle 12.2.0.1参考文档:https://docs.oracle.com/en/database/oracle/oracle-database/12.2/upgrd/checklists-for-oracle-database-upgrade.html#GUID-5FAA2A12-87C5-4D65-B7AE-C9D67FA4F05F
2、升级前工作1、升级前一定要先备份数据,防止升级失败。2、创建测试数据
SQL> create user ogg identified by ogg;User created.SQL> grant dba to ogg;Grant succeeded.SQL> create table ogg.a (  2    dd nvarchar2(11),  3    aa nvarchar2(11)  4  )  5  ;Table created.SQL> SQL> insert into ogg.a VALUES ('aa','22');1 row created.SQL> commit;Commit complete.SQL> select * from ogg.a;DD          AA----------- -----------aa          22SQL> exit12345678910111213141516171819203、安装升级切换到oracle12.2.0.1的安装目录执行runInstaller
[oracle@test1 ~]$ cd /soft/database/[oracle@test1 database]$ ./runInstaller 121、取消安全更新,下一步

2、选择升级现有数据库。
3、下一步
4、指定oracle12.2软件的安装目录。
5、下一步
6、下一步

7、安装
8、另外一个窗口以root用户执行脚本

[root@test1 soft]# /u01/app/oracle/product/12.2.0/dbhome_1/root.sh Performing root user operation.
The following environment variables are set as:    ORACLE_OWNER= oracle    ORACLE_HOME=  /u01/app/oracle/product/12.2.0/dbhome_1
Enter the full pathname of the local bin directory: [/usr/local/bin]: The contents of "dbhome" have not changed. No need to overwrite.The file "oraenv" already exists in /usr/local/bin.  Overwrite it? (y/n) [n]: y   Copying oraenv to /usr/local/bin ...The contents of "coraenv" have not changed. No need to overwrite.
Entries will be added to the /etc/oratab file as needed byDatabase Configuration Assistant when a database is createdFinished running generic part of root script.Now product-specific root actions will be performed.Do you want to setup Oracle Trace File Analyzer (TFA) now ? yes|[no] : yInstalling Oracle Trace File Analyzer (TFA).Log File: /u01/app/oracle/product/12.2.0/dbhome_1/install/root_test1_2020-06-22_13-57-40-716080198.logFinished installing Oracle Trace File Analyzer (TFA)[root@test1 soft]# 1234567891011121314151617181920212223249、输入原库的sys用户和密码。
10、下一步
11、默认,下一步。
12、如果之前有手动备份数据,选择第三项,没有备份选择第二项进行数据备份。
12、默认监听,下一步。
13、下一步。
14、下一步,完成
15、等待升级完成。
16、等待完成即可。17、修改环境变量到新的ORACLE_HOME18、验证数据是否一致。
DBUA降级降级前准备1、验证所有组件和字典对象
set  pagesize500set  linesize  100col comp_id format a10col comp_name format a30col version format a10col status format a8select name from v$database;select name from v$version;select  substr(comp_name,1,40)  comp_name,  status,  substr (version,1,10) version  from  dba_registry  order  by  comp_name;  select  substr(object_name,1,40)  object_name,substr(owner,1,15) owner, object_type  from    dba_objects  where  status='INVALID'  order  by  owner,object_type;  select  owner,object_type,count(*)  from  dba_objects  where  status='INVALID'   group  by  owner,object_type  order  by ownerselect substr(comp_id,1,15) comp_id,substr(comp_name,1,30) comp_name,substr(version,1,10) version,status from dba_registryselect owner, count(object_name) "Invalid object count" from dba_objects where status!='VALID' and owner in ('SYS','SYSTEM') group by owner;12345678910111213如果有无效对象,则执行 utlrp.sql 多次,如果对象无法解析为有效状态,则不能继续降级。
$  cd  $ORACLE_HOME/rdbms/admin   $  sqlplus  "/  as  sysdba"   SQL>  @utlrp.sql1232、如果已在数据库上启用了 Oracle Database Vault,如果输出为TRUE,则需要禁用,输出为FALSE则进行下一步。
SQL> SELECT * FROM CDB_DV_STATUS;禁用 Oracle Database Vault 触发器: SQL>CONNECT  DVSYS/DVSYS    SQL>ALTER  TRIGGER  DV_BEFORE_DDL_TRG  DISABLE;    SQL>ALTER  TRIGGER  DV_AFTER_DDL_TRG  DISABLE; 123453、如果设置了操作系统参数 ORA_TZFILE,请取消其设置。如果不取消设置 ORA_TZFILE 变量,连接至数据库时可能会生成以下错误:
SP2-1503: Unable to initialize Oracle call interface SP2-0152: ORACLE may not be functioning properly124、如果在降级至之前的数据库版本之前,已运行 DBMS_DST 软件包将时区版本升级至新版本,那么必须将版本时区文件安装到旧的 Oracle 数据库版本上的$ORACLE_HOME/ORACORE/ZONEINFO 目录中。
查询V$TIMEZONE_FILE视图,当前使用的timezone文件
SQL> select * from V$TIMEZONE_FILE;
 
FILENAME                VERSION     CON_ID
-------------------- ---------- ----------
timezlrg_32.dat              32          0
注: 需要将19c $ORACLE_HOME/oracore/zoneinfo 下的timezlrg_32.dat 文件拷贝到 11gR2 的$ORACLE_HOME/oracore/zoneinfo 目录下
cp /u01/app/oracle/product/19.0.0/db_1/oracore/zoneinfo/timezlrg_32.dat /u01/app/oracle/product/11.2.0/db_1/oracore/zoneinfo1234567891011121314155、如果数据库使用了 Oracle Label Security, 则需要在19c ORACLE_HOME下执行olspredowngrade.sql 脚本
查询下面视图,查看Oracle Label Security是否使用,输出为FALSE则进行下一步。SQL> SELECT VALUE FROM V$OPTION WHERE PARAMETER = 'Oracle Label Security';如果返回TRUE,执行 olspredowngrade.sql 脚本: SQL> @ORACLE_HOME/rdbms/admin/olspredowngrade.sql12346、如果数据库启用了 Unified Auditing, 建议备份和清除审计文件
a . 查看是否有unified audit 记录,输出为0则进行下一步。
SQL> SELECT COUNT(*) FROM UNIFIED_AUDIT_TRAIL; 
b. 备份现有的审计数据到表格中
SQL> CREATE TABLE UA_DATA AS (SELECT * FROM UNIFIED_AUDIT_TRAIL);
c. 清除审计记录
EXEC DBMS_AUDIT_MGMT.CLEAN_AUDIT_TRAIL(audit_trail_type => DBMS_AUDIT_MGMT.AUDIT_TRAIL_UNIFIED, use_last_arch_timestamp => FALSE);12345678910117、如果配置了EM,则需要删掉sysman用户 ,重建EM
DROP USER sysman CASCADE;18、降级前数据库备份
数据库降级1、执行降级脚本
如果是RAC数据库,设置参数CLUSTER_DATABASE=FALSE,保留一个实例,关闭其它实例,降级后,必须将该参数设置回 truesqlplus / as sysdbaSQL> alter system set CLUSTER_DATABASE=FALSE scope=spfile sid=’*’;SQL> shutdown immediate;以19c ORACLE_HOME 启动数据库export ORACLE_HOME= /u01/app/oracle/product/19.0.0/db_1sqlplus / as sysdbaSQL> startup downgrade;Sql> Spool downgrade.logSql> @$ORACLE_HOME/rdbms/admin/catdwgrd.sqlSql> spool offSql> shutdown immediateExit SQL PlusSql> exit;12345678910111213142、修改环境变量指向旧版本,检查oratab 文件。3、执行catrelod.sql 重载组件版本
sqlplus / as sysdba
SQL> STARTUP UPGRADE;
SQL> @$ORACLE_HOME/rdbms/admin/catrelod.sql123454、重启数据库,执行重新编译脚本
SQL> SHUTDOWN IMMEDIATE;SQL> STARTUP;SQL> @$ORACLE_HOME/rdbms/admin/utlrp.sql
如果是RAC 数据库,则设回CLUSTER_DATABASE参数为TRUEsqlplus / as sysdbaSQL> alter system set CLUSTER_DATABASE=TRUE scope=spfile sid=’*’;更新CRS中注册的数据库版本信息$ srvctl downgrade database -d db-unique-name -o oraclehome -t to_version
降级完成后结果:SQL> select name from v$database;SQL> select * from v$version;12345678910111213降级后报错处理
降级后 数据库alert 日志每隔5分钟就有报错:
ORA-1400 encountered when generating server alert SMG-4121
MOS 解决方案(ORA-1400 encountered when generating server alert SMG-4121 after downgrade from 12c to 11.2.0.4 (Doc ID 2169006.1))如下:Recreate the the SYS.ALERT_QUE using the following steps:
1. Drop the alert_QTsqlplus / as sysdbaalter system enable restricted session;exec dbms_aqadm.drop_queue_table('ALERT_QT',true);
2. Drop tables wri$_alert_history and WRI$_ALERT_OUTSTANDINGdrop table WRI$_ALERT_OUTSTANDING;drop table WRI$_ALERT_HISTORY;
3. Recreate the alert_que and associated objects:SQL>@$ORACLE_HOME/rdbms/admin/dbmsslrt.sqlSQL>@$ORACLE_HOME/rdbms/admin/catalrt.sqlSQL>@$ORACLE_HOME/rdbms/admin/catmwin.sqlSQL>@$ORACLE_HOME/rdbms/admin/exechae.sqlSQL>@$ORACLE_HOME/rdbms/admin/utlrp.sqlSQL>alter system disable restricted session;
经过验证,处理后alert日志不再有ORA-1400报错了。1234567891011121314151617181920212223242526https://www.cnblogs.com/sky2088/p/13373404.htmlhttp://www.ludatou.com/?p=2921————————————————版权声明:本文为CSDN博主「bjywxc」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。原文链接:https://blog.csdn.net/bjywxc/article/details/106898480

喜欢请赞赏一下啦^_^

微信赞赏

支付宝赞赏

原文地址:https://www.cnblogs.com/lkj371/p/15072058.html