oracle 12.1.0.2升级oracle12.2.0.1(non cdb)
oracle的升级方式有很多种,本文主要是介绍oui图形工具进行升级,比较不容易出错。https://blog.csdn.net/qianglei6077/article/details/931610251、环境准备环境准备工作,需要在升级前完成,这里不做过多介绍。我的环境如下:虚拟机:rhel 7.4升级前数据库版本:oracle 12.1.0.2
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 22
SQL> exit
3、安装升级
切换到oracle12.2.0.1的安装目录执行runInstaller
[oracle@test1 ~]$ cd /soft/database/
[oracle@test1 database]$ ./runInstaller
1、取消安全更新,下一步
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 by
Database Configuration Assistant when a database is created
Finished 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] :
y
Installing 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.log
Finished installing Oracle Trace File Analyzer (TFA)
[root@test1 soft]#
9、输入原库的sys用户和密码。
10、下一步
11、默认,下一步。
12、如果之前有手动备份数据,选择第三项,没有备份选择第二项进行数据备份。
12、默认监听,下一步。
13、下一步。
14、下一步,完成
15、等待升级完成。
16、等待完成即可。
17、修改环境变量到新的ORACLE_HOME
18、验证数据是否一致。
DBUA
降级
降级前准备
1、验证所有组件和字典对象
set pagesize500
set linesize 100
col comp_id format a10
col comp_name format a30
col version format a10
col status format a8
select 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 owner
select substr(comp_id,1,15) comp_id,substr(comp_name,1,30) comp_name,substr(version,1,10) version,status from dba_registry
select owner, count(object_name) "Invalid object count" from dba_objects where status!='VALID' and owner in ('SYS','SYSTEM') group by owner;
如果有无效对象,则执行 utlrp.sql 多次,如果对象无法解析为有效状态,则不能继续降级。
$ cd $ORACLE_HOME/rdbms/admin
$ sqlplus "/ as sysdba"
SQL> @utlrp.sql
2、如果已在数据库上启用了 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;
3、如果设置了操作系统参数 ORA_TZFILE,请取消其设置。如果不取消设置 ORA_TZFILE 变量,连接至数据库时可能会生成以下错误:
SP2-1503: Unable to initialize Oracle call interface
SP2-0152: ORACLE may not be functioning properly
4、如果在降级至之前的数据库版本之前,已运行 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/zoneinfo
5、如果数据库使用了 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.sql
6、如果数据库启用了 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);
7、如果配置了EM,则需要删掉sysman用户 ,重建EM
DROP USER sysman CASCADE;
8、降级前数据库备份
数据库降级
1、执行降级脚本
如果是RAC数据库,设置参数CLUSTER_DATABASE=FALSE,保留一个实例,关闭其它实例,降级后,必须将该参数设置回 true
sqlplus / as sysdba
SQL> 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_1
sqlplus / as sysdba
SQL> startup downgrade;
Sql> Spool downgrade.log
Sql> @$ORACLE_HOME/rdbms/admin/catdwgrd.sql
Sql> spool off
Sql> shutdown immediate
Exit SQL Plus
Sql> exit;
2、修改环境变量指向旧版本,检查oratab 文件。
3、执行catrelod.sql 重载组件版本
sqlplus / as sysdba
SQL> STARTUP UPGRADE;
SQL> @$ORACLE_HOME/rdbms/admin/catrelod.sql
4、重启数据库,执行重新编译脚本
SQL> SHUTDOWN IMMEDIATE;
SQL> STARTUP;
SQL> @$ORACLE_HOME/rdbms/admin/utlrp.sql
如果是RAC 数据库,则设回CLUSTER_DATABASE参数为TRUE
sqlplus / as sysdba
SQL> 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;
降级后报错处理
降级后 数据库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_QT
sqlplus / as sysdba
alter system enable restricted session;
exec dbms_aqadm.drop_queue_table('ALERT_QT',true);
2. Drop tables wri$_alert_history and WRI$_ALERT_OUTSTANDING
drop table WRI$_ALERT_OUTSTANDING;
drop table WRI$_ALERT_HISTORY;
3. Recreate the alert_que and associated objects:
SQL>@$ORACLE_HOME/rdbms/admin/dbmsslrt.sql
SQL>@$ORACLE_HOME/rdbms/admin/catalrt.sql
SQL>@$ORACLE_HOME/rdbms/admin/catmwin.sql
SQL>@$ORACLE_HOME/rdbms/admin/exechae.sql
SQL>@$ORACLE_HOME/rdbms/admin/utlrp.sql
SQL>alter system disable restricted session;
经过验证,处理后alert日志不再有ORA-1400报错了。
https://www.cnblogs.com/sky2088/p/13373404.html
http://www.ludatou.com/?p=2921
更多推荐
所有评论(0)