可拷,很刑!Autoupgrade升级数据库如喝水...
作者:IT邦德
中国DBA联盟(ACDU)成员,10余年DBA工作经验,
Oracle、PostgreSQL ACE
CSDN博客专家及B站知名UP主,全网粉丝10万+
擅长主流Oracle、MySQL、PG、高斯及Greenplum备份恢复,
安装迁移,性能优化、故障应急处理微信:jem_db
QQ交流群:587159446
公众号:IT邦德
@
1.Autoupgrade介绍
2 兼容性检查
3 数据库备份
4. 安装19C数据库软件
4.1 创建目录并授权
4.2 添加用户组
4.3 修改环境变量
4.4 解压19C安装包
4.5 静默安装19C数据库软件
5.升级前信息检查
5.1 创建autoupgrade配置文件
5.2 analyzef分析
5.3 查看分析日志
5.4 修复升级不满足的条件
6.deploy升级19C
7.升级后的工作
7.1 删除restore point
7.2 设置COMPATIBLE参数
7.3 重置密码
7.4 生成新密码文件
7.5 DB_DOMAIN调整
7.5 连接测试19C
8.总结
Part1前言
Autoupgrade工具支持升级前的检查、升级问题修复、一键式自动升级以及升级后的问题修复,极大的简化数据库的升级步骤。
11.Autoupgrade介绍
Autoupgrade是Oracle推出的自动升级工具,通过该工具可以将数据库升级为Oracle12.2之后的版本,工具支持升级前的检查、升级问题修复、一键式自动升级以及升级后的问题修复,极大的简化数据库的升级步骤。
只要源端版本可以直接升级到支持的目标版本,都可以使用该工具进行
那么接下里就给大家分享最近实施过的11G单机升级到19全过程
22 兼容性检查
如果源Oracle上的compatible参数设置的值太低,无法升级到Oracle Database 19c,此时必须在源 Oracle Database 版本上设置至少满足Oracle Database 19c升级支持的最小值(11.2.0)。
SQL> show parameter compatible;NAME TYPE VALUE
----------------------------------------------
compatible string 11.2.0.4.0
如果源Oracle Database版本不符,需要更改后重启数据库
SQL> alter system set compatible='11.2.0' scope=spfile;
33 数据库备份
RMAN>
run{
backup as compressed backupset database
format '/u01/dbbak/db/DB%U.bkp'
plus archivelog format '/u01/dbbak/arch/ARCH%U.bkp'
delete all input;
BACKUP CURRENT CONTROLFILE
FORMAT '/u01/dbbak/control_ctl';
}
44. 安装19C数据库软件
4.1 创建目录并授权
为新版本19C的Oracle数据库选择一个位置,该位置与当前11G版本的Oracle主目录分开。
mkdir -p /u01/19c/oracle
mkdir -p /u01/19c/oraInventory
mkdir -p /u01/19c/oracle/product/19.0.0/dbhome_1
chown -R oracle:oinstall /u01/19c
chmod -R 775 /u01/19c
4.2 添加用户组
/usr/sbin/groupadd -g 1504 backupdba
/usr/sbin/groupadd -g 1505 dgdba
/usr/sbin/groupadd -g 1506 kmdba
/usr/sbin/usermod -g oinstall -G dba,backupdba,dgdba,kmdba,oper oracle
4.3 修改环境变量
--以下操作在Oracle用户下执行
[oracle@rhel79 ~]$ cp ~/.bash_profile ~/.bash_profile_bak[oracle@rhel79 ~]$ vi ~/.bash_profile
export PATH
unset TNS_ADMIN
export ORACLE_BASE=/u01/19c/oracle
export ORACLE_HOME=$ORACLE_BASE/product/19.0.0/dbhome_1
export ORACLE_SID=PROD
export PATH=$ORACLE_HOME/bin:$PATH
[oracle@rhel79 ~]$ source ~/.bash_profile
4.4 解压19C安装包
上传安装包到/opt目录下,登陆到Oracle用户,解压19C安装包至$ORACLE_HOME。
[oracle@rhel79 ~]$ cd $ORACLE_HOME
[oracle@rhel79 dbhome_1]$ unzip /opt/LINUX.X64_193000_db_home.zip
4.5 静默安装19C数据库软件
cd $ORACLE_HOME/install/response
vi db_install.rsp#软件版本信息
oracle.install.responseFileVersion=/oracle/install/rspfmt_dbinstall_response_schema_v19.0.0
#安装选项-仅安装数据库软件
oracle.install.option=INSTALL_DB_SWONLY
#oracle用户用于安装软件的组名
UNIX_GROUP_NAME=oinstall
#oracle产品清单目录
INVENTORY_LOCATION=/u01/19c/oraInventory
#oracle安装目录
ORACLE_HOME=/u01/19c/oracle/product/19.0.0/dbhome_1
#oracle基础目录
ORACLE_BASE=/u01/19c/oracle
#安装版本类型:企业版
oracle.install.db.InstallEdition=EE
#指定组信息
oracle.install.db.OSDBA_GROUP=dba
oracle.install.db.OSOPER_GROUP=oper
oracle.install.db.OSBACKUPDBA_GROUP=backupdba
oracle.install.db.OSKMDBA_GROUP=kmdba
oracle.install.db.OSRACDBA_GROUP=dba
oracle.install.db.OSDGDBA_GROUP=dgdba
su - oracle
cd $ORACLE_HOME
./runInstaller -silent -noconfig -responseFile \
$ORACLE_HOME/install/response/db_install.rsp
55.升级前信息检查
5.1 创建autoupgrade配置文件
1.jdk版本不满足8以上,需要安装jdk8环境
[oracle@rhel79 ~]$ java -version
openjdk version "1.8.0_262"
OpenJDK Runtime Environment (build 1.8.0_262-b10)
OpenJDK 64-Bit Server VM (build 25.262-b10, mixed mode)2.下载上传最新的autoupgrade.jar到$ORACLE_HOME/rdbms/admin/,
从mos文档2485457.1中下载获得
[oracle@rhel79 ~]$ cp /opt/autoupgrade.jar \
/u01/19c/oracle/product/19.0.0/dbhome_1/rdbms/admin/
3.autoupgrade配置文件
[oracle@rhel79 ~]$ java -jar $ORACLE_HOME/rdbms/admin/autoupgrade.jar \
-create_sample_file config
vi sample_config.cfg
#日志路径
global.autoupg_log_dir=/u01/19c/oracle/cfgtoollogs/autoupgrade
#日志目录
upg1.log_dir=/u01/19c/oracle/cfgtoollogs/autoupgrade/employee
#升级数据库的ORACLE_SID
upg1.sid=PROD
upg1.source_home=/u01/app/oracle/product/11.2.0/dbhome_1
upg1.target_home=/u01/19c/oracle/product/19.0.0/dbhome_1
upg1.start_time=NOW
#升级节点的hostname
upg1.upgrade_node=rhel79
#升级之后执行对象编译
upg1.run_utlrp=yes
#升级之后,升级时区
upg1.timezone_upg=yes
#升级的目标版本19c
upg1.target_version=19
5.2 analyzef分析
java -jar $ORACLE_HOME/rdbms/admin/autoupgrade.jar \
-config /home/oracle/sample_config.cfg -mode analyze
该命令会生成一个报告,用于检查源数据库是否满足升级条件,并给出相关修改建议。
5.3 查看分析日志
从以下报错可以看出,需要对原始对11G库启用快速恢复区及 开归档才做才能继续后续的操作
1.开归档
SQL> shutdown immediate;
SQL> startup mount;
SQL> alter database archivelog;
SQL> alter database open;2.快速恢复区设置
SQL> alter system set db_recovery_file_dest_size=1800g;
SQL> alter system set db_recovery_file_dest='/home/oracle/recovery';
再次analyzef分析后正常
5.4 修复升级不满足的条件
1.源库11G删除源库OLAP目录
SQL> @$ORACLE_HOME/olap/admin/catnoamd.sql2.收集字典统计信息
SQL> EXECUTE DBMS_STATS.GATHER_DICTIONARY_STATS;
3.收集固定对象的统计信息
SQL> EXECUTE DBMS_STATS.GATHER_FIXED_OBJECTS_STATS;
4.Oracle数据库Oracle主页删除EXF和RUL
SQL>@$ORACLE_HOME/rdbms/admin/catnoexf.sql
5.无效对象编译
SQL>@$ORACLE_HOME/rdbms/admin/utlrp.sql
6.清空数据库回收站
SQL> PURGE DBA_RECYCLEBIN;
66.deploy升级19C
--Oracle19C的环境中
[oracle@rhel79 ~]$ java -jar $ORACLE_HOME/rdbms/admin/autoupgrade.jar \
> -config /home/oracle/sample_config.cfg -mode deploy
AutoUpgrade 24.4.240426 launched with default internal options
Processing config file ...
+--------------------------------+
| Starting AutoUpgrade execution |
+--------------------------------+
1 Non-CDB(s) will be processed
Type 'help' to list console commands
upg> status
upg> lsj
+----+-------+---------+---------+-------+----------+-------+-----------+
|Job#|DB_NAME| STAGE|OPERATION| STATUS|START_TIME|UPDATED| MESSAGE|
+----+-------+---------+---------+-------+----------+-------+-----------+
| 102| PROD|DBUPGRADE|EXECUTING|RUNNING| 01:23:33| 4s ago|0%Upgraded |
+----+-------+---------+---------+-------+----------+-------+-----------+
Total jobs 1
upg> status -job 102
Details Job No 102
Oracle SID PROD
Start Time 24/05/27 01:23:33
Elapsed (min): 1
End time: N/A
Logfiles
Logs Base: /u01/19c/oracle/cfgtoollogs/autoupgrade/employee/PROD
Job logs: /u01/19c/oracle/cfgtoollogs/autoupgrade/employee/PROD/102
Stage logs: /u01/19c/oracle/cfgtoollogs/autoupgrade/employee/PROD/102/dbupgrade
TimeZone: /u01/19c/oracle/cfgtoollogs/autoupgrade/employee/PROD/temp
Remote Dirs:
Stages
SETUP <1 min
GRP <1 min
PREUPGRADE <1 min
PRECHECKS <1 min
PREFIXUPS <1 min
DRAIN <1 min
DBUPGRADE ~0 min (RUNNING)
POSTCHECKS
POSTFIXUPS
POSTUPGRADE
SYSUPDATES
Stage-Progress Per Container
+--------+---------+
|Database|DBUPGRADE|
+--------+---------+
| PROD| 0 % |
+--------+---------+
等待升级完成,此时可以通过log监控进程
也可以通过命令行监控
77.升级后的工作
7.1 删除restore point
SQL> select name from v$restore_point;
NAME
------------------------------------------
AUTOUPGRADE_221145114461854_PRODSQL> drop restore point AUTOUPGRADE_221145114461854_PROD;
7.2 设置COMPATIBLE参数
SQL> show parameter compatible;
NAME TYPE VALUE
-------------------------------------------------------
compatible string 11.2.0.4.0
noncdb_compatible boolean FALSESQL> alter system set compatible = '19.0.0' scope=spfile;
SQL> shutdown immediate;
SQL> startup
SQL> show parameter compatible;
NAME TYPE VALUE
-------------------------------------------------------
compatible string 19.0.0
noncdb_compatible boolean FALSE
7.3 重置密码
SQL> SELECT USERNAME,ACCOUNT_STATUS
FROM DBA_USERS WHERE USERNAME IN ('SYS','SYSTEM');
USERNAME ACCOUNT_STATUS
----------------------------------------------------------------------------------------
SYSTEM EXPIRED & LOCKED
SYS LOCKEDSQL> UPDATE USER$ SET ASTATUS=0 WHERE NAME='SYS';
SQL> UPDATE USER$ SET ASTATUS=0 WHERE NAME='SYSTEM';
SQL> COMMIT;
SQL> alter system flush shared_pool;
SQL> SELECT USERNAME,ACCOUNT_STATUS FROM DBA_USERS
WHERE USERNAME IN ('SYS','SYSTEM');
USERNAME ACCOUNT_STATUS
----------------------------------------------------------------------------------------
SYSTEM OPEN
SYS OPEN
SQL> alter user system identified by oracle;
SQL> alter user sys identified by oracle;
7.4 生成新密码文件
cd $ORACLE_HOME/dbs
mv orapwPROD orapwPROD_bak
orapwd file=$ORACLE_HOME/dbs/orapwPROD password=oracle format=12 force=y
7.5 DB_DOMAIN调整
SQL> show parameter db_domain;
NAME TYPE VALUE
-----------------------------------------
db_domain string NULLSQL> alter system reset db_domain scope=spfile;
7.5 连接测试19C
sqlplus system/[email protected]:1521/PROD
88.总结
AutoUpgrade工具可以自动执行升级任务,减少手动操作的复杂性和潜在错误。它能够自动执行必要的检查、分析和转换操作,大大简化了升级过程.