在线时间:8:00-16:00
迪恩网络APP
随时随地掌握行业动态
扫描二维码
关注迪恩网络微信公众号
背景: 由于现上的rds数据库需要在2021年1月1日之前,从oracle 11.2.0.4升级到19c,现在需要我测试升级后业务兼容不,所以,需要我把准生产linux 11.2.0.4的oracle升级到19c 文章参考资料来自support文档 ID 2548962.1,Doc ID 2577572.1 oracle升级到19C有直接和间接升级,11.2.0.4以下的版本需要先升级到11.2.0.4然后再升级到19c;11.2.0.4以上版本可以直接升级。而我的版本是11.2.0.4,所以升级成非CDB的数据库。
19c升级步骤 升级环境 1.备份 这个可以逻辑的或RMAN的备份 2.安装19软件的步骤 把新建的ORACLE_HOME目录(我的是/u01/app/oracle/product/19c/dbhome_1)建好,解压下载的19软件(修改解压文件的权限) oracle用户: mkdir -p /u01/app/oracle/product/19c/dbhome_1 (root用户需要修改权限) cd /u01/app/oracle/product/19c/dbhome_1/ 静默安装的话: 设置好 新的ORACLE_HOME,ORACLE_BASE ./runInstaller -ignorePrereq -waitforcompletion -silent \
图形界面安装: ./runInstaller -ignoreInternalDriverError
3.进行升级前检查 3.1清理数据库清空回收站
3.2 检查所有的物化视图检查所有的物化视图的状态,刷新所有没有刷新的物化视图。 执行下面的 SQL 查询: SQL> SELECT o.name FROM sys.obj$ o, sys.user$ u, sys.sum$ s WHERE o.type# = 42 AND bitand(s.mflags, 8) =8;
3.3Schema-Only 的用户以及升级密码状态为 EXPIRED 的用户在开始升级之前,请确定是否要对密码处于EXPIRED状态且其帐户处于LOCKED状态的默认Oracle数据库帐户使用密码身份验证。 此功能还可以降低未授权者使用默认密码侵入这些帐户的安全风险。
3.4复制 Transparent Encryption Oracle 钱包 如果使用了带 Oracle 钱包的 Transparent Data Encryption (TDE),那么拷贝 thesqlnet.ora 和 wallet 文件到新的Oracle home。在升级前需要手工拷贝 sqlnet.ora 和 wallet 文件。
打开数据库 wallet。 SQL> STARTUP MOUNT;
SQL> ALTER SYSTEM SET ENCRYPTION WALLET OPEN 3.5理解密码大小写敏感从 Oracle Database 12c release 2 (12.2) 开始,默认的基于密码验证的协议排除了大小写不敏感的 10g 版本的密码。默认的SQLNET.ORA文件中参数SQLNET.ALLOWED_LOGON_VERSION_SERVER被设置成了 12 (排他模式)。 为了安全起见,Oracle建议使用大小写敏感的密码验证。这是默认的设置。但是在升级数据库的时候可以短暂的关闭大小写敏感的密码验证。在升级后,可以再决定是否启用大小写敏感的密码验证。 在升级前,Oracle建议您检查是否新的密码验证会影响您的应用。可以做下面的检查:
3.6对只读表空间升级以 -T 参数使用 Parallel Upgrade Utility 可以在升级时把用户表空间置为只读。 因为数据库可以读取之前版本创建的数据文件 header, 所以在升级时我们不需要做额外的操作。当升级完成后,表空间被置为读写时,文件 header 会自动被更新。如果升级失败,无法把表空间重新 online,那么检查升级日志。日志中包含把表空间重新 online 的语句。可以在数据库中或者每个pdb里手工执行来 online 表空间。 如果升级失败可以检查升级的日志 (Oracle_base/cfgtoologs/dbua), 并且手工执行日志中的命令来 online 表空间。可以检查如下日志: SQL> ALTER TABLESPACE <Tablespace Name> READ ONLY;
Tablespace altered. 而在每个日志文件的结尾部分,可以找到把表空间置为读写的SQL命令: SQL> ALTER TABLESPACE <Tablespace Name> READ WRITE;
Tablespace altered. 虽然以上检查个人觉得有点花里胡哨的,默认的11G密码大小写敏感,但是要知道,如果以上条件不通过,就会失败或者12c需要降级后升级。
出于安全考虑,不同的 Windows 账户配置为 Oracle home 不允许共享同一个 Oracle Base。
步骤 4: Preupgrade 步骤在源库执行 Preupgrade 脚本 $Earlier_release_Oracle_home/jdk/bin/java -jar $New_release_Oracle_home/rdbms/admin/preupgrade.jar FILE TEXT DIR output_dir
升级前在 11.2 数据库上执行 OLS preprocess 脚本: ORACLE_HOME/rdbms/admin/olspreupgrade.sql
ORACLE_HOME/rdbms/admin/emremove.sql ORACLE_HOME/olap/admin/catnoamd.sql
SQL> GRANT DV_PATCH_ADMIN to SYS;
CONNECT SYS AS SYSDBA
ORACLE_HOME/rdbms/admin/olspreupgrade.sql
ORACLE_HOME/rdbms/admin/emremove.sql ORACLE_HOME/olap/admin/catnoamd.sql
SQL> REVOKE DV_PATCH_ADMIN from SYS;
对于Database Vault,赋予SYS以DV_PATCH_ADMIN的角色 SQL> GRANT DV_PATCH_ADMIN to SYS;
使用 emremove.sql 手工删除 DB control关闭 DB control emctl stop dbconsole
SQL>SET ECHO ON
SQL>SET SERVEROUTPUT ON SQL>@emremove.sql >> Script located in new 12c ORACLE_HOME/rdbms/admin 从系统中手工删除ORACLE_HOME/HOSTNAME_SID/ 和 ORACLE_HOME/oc4j/j2ee/OC4J_DBConsole_HOSTNAME_SID 目录 确保升级前所有的文件都没有处于备份模式执行下面的语句: SQL> SELECT * FROM v$backup WHERE status != 'NOT ACTIVE';
清空回收站要清空回收站,执行下面的语句: SQL> PURGE DBA_RECYCLEBIN
注意: 升级前务必清空回收站来避免 ORA-00600 错误并且减少升级时间。 性能方面保存性能相关指标 收集统计信息可以减少停机时间,Oracle建议使用 DBMS_STATS.GATHER_DICTIONARY_STATS 来收集这些统计信息,比如: SQL> EXEC DBMS_STATS.GATHER_DICTIONARY_STATS;
检查时区设置源库的 time zone 文件版本应该小于或者等于目标库的 time zone 文件版本。如果源库的 time zone 文件版本更高,那么需要升级目标库的 time zone 文件版本来对应源库的 time zone 文件。
关于升级 Oracle OLAP Data Security Policies在 11g 数据库上定义的 Data security roles 不能自动转换成 ORAS。所以在升级前,需要删除所有在 11g 数据库上定义的 data security roles。升级后可以使用新版本的 Analytic Workspace Manager 重新定义 data security roles。
步骤5.升级具体步骤 19c linux7需要安装的yum包: yum install -y bc yum install -y binutils yum install -y compat-libcap1 yum install -y compat-libstdc++-33 #yum install -y dtrace-modules #yum install -y dtrace-modules-headers #yum install -y dtrace-modules-provider-headers yum install -y dtrace-utils yum install -y elfutils-libelf yum install -y elfutils-libelf-devel yum install -y fontconfig-devel yum install -y glibc yum install -y glibc-devel yum install -y ksh yum install -y libaio yum install -y libaio-devel yum install -y libdtrace-ctf-devel yum install -y libXrender yum install -y libXrender-devel yum install -y libX11 yum install -y libXau yum install -y libXi yum install -y libXtst yum install -y libgcc yum install -y librdmacm-devel yum install -y libstdc++ yum install -y libstdc++-devel yum install -y libxcb yum install -y make yum install -y net-tools # Clusterware yum install -y nfs-utils # ACFS yum install -y python # ACFS yum install -y python-configshell # ACFS yum install -y python-rtslib # ACFS yum install -y python-six # ACFS yum install -y targetcli # ACFS yum install -y smartmontools yum install -y sysstat # Added by me. yum install -y unixODBC dnf install -y bc dnf install -y binutils #dnf install -y compat-libcap1 dnf install -y compat-libstdc++-33 #dnf install -y dtrace-modules #dnf install -y dtrace-modules-headers #dnf install -y dtrace-modules-provider-headers #dnf install -y dtrace-utils dnf install -y elfutils-libelf dnf install -y elfutils-libelf-devel dnf install -y fontconfig-devel dnf install -y glibc dnf install -y glibc-devel dnf install -y ksh dnf install -y libaio dnf install -y libaio-devel #dnf install -y libdtrace-ctf-devel dnf install -y libXrender dnf install -y libXrender-devel dnf install -y libX11 dnf install -y libXau dnf install -y libXi dnf install -y libXtst dnf install -y libgcc dnf install -y librdmacm-devel dnf install -y libstdc++ dnf install -y libstdc++-devel dnf install -y libxcb dnf install -y make dnf install -y net-tools # Clusterware dnf install -y nfs-utils # ACFS dnf install -y python # ACFS dnf install -y python-configshell # ACFS dnf install -y python-rtslib # ACFS dnf install -y python-six # ACFS dnf install -y targetcli # ACFS dnf install -y smartmontools dnf install -y sysstat # Added by me. dnf install -y unixODBC # New for OL8 dnf install -y libnsl dnf install -y libnsl.i686 dnf install -y libnsl2 dnf install -y libnsl2.i686 启动预检查: /u01/app/oracle/precheck下的日志 db_recovery_file_dest string /u01/app/oracle/fast_recovery_area 5.1关闭数据库 PURGE DBA_RECYCLEBIN; lsnrctl stop; SHUTDOWN IMMEDIATE;
为升级新的Oracle Home做准备
设置环境变量指向目标 ORACLE_HOME 新的ORACLE_HOME为 export ORACLE_HOME=/u01/app/oracle/product/19c/dbhome_1 从旧的Oracle home下拷贝 SPFILE.ORA 或者 INIT.ORA到目标Oracle home,PURGE DBA_RECYCLEBIN然后把 使用目标 ORACLE_HOME(设置 ORACLE_HOME 为目标 ORACLE_HOME)启动数据库到 upgrade 模式(后续需要把sqlnet.ora,tnsnames.ora,listerner.ora复制到新的目录) cp /u01/app/oracle/product/11.2.0/dbhome_1/dbs/spfiletest19c.ora /u01/app/oracle/product/19c/dbhome_1/dbs/ cp /u01/app/oracle/product/11.2.0/dbhome_1/dbs/orapwtest19c /u01/app/oracle/product/19c/dbhome_1/dbs/ startup upgrade;
cd $ORACLE_HOME/bin ./dbupgrade 耐心等待约1个小时结束如下:
执行 Post-Upgrade Status 工具, utlusts.sql 并且检查升级的日志。在新的版本下执行 Post-Upgrade Status 工具。 $ sqlplus "/as sysdba" 注意: 之前版本的 utluNNNs.sql 在 19c 上被替换为 utlusts.sql 注意: 如果执行 utlusts.sql 时碰到错误 "ORA-06502: PL/SQL: numeric or value error: character string buffer too small" ,那么执行
如果使用了Oracle Clusterware,设置了 CLUSTER_DATABASE=TRUE 那么你必须升级数据库对应的 Oracle Clusterware keys。在19c上运行 srvctl 来做这件事,比如: ORACLE_HOME/bin/srvctl upgrade database -db name -o ORACLE_HOME
检查升级状态执行 dbupgdiag.sql 并检查日志。可以从 Note 556610.1 下载这个脚本。 编译失效对象执行 utlrp.sql (多次) 来使它们生效,直到失效对象的个数不再改变。 $ sqlplus "/ AS SYSDBA"
SQL> @?/rdbms/admin/utlrp.sql
步骤6: 升级后步骤
|
2023-10-27
2022-08-15
2022-08-17
2022-09-23
2022-08-13
请发表评论