By Clemens Bleile
From Oracle Database Appliance (ODA) version 19.11. onwards the ORACLE_HOMEs and ORACLE_BASE will be created on ACFS, i.e. take space from an ASM-diskgroup instead of taking filesystem space from /u01. See this blog concerning details.
If the ODA has been upgraded from a release < 19.11. to 19.11. or newer, then you usually have diag- and admin-data in 2 ORACLE_BASE-locations:
/u01/app/oracle
for databases created before migrating to ODA 19.11. or newer and
/u01/app/odaorabase/oracle
for databases created after the migration to ODA 19.11. or newer.
An ORACLE_HOME is associated to an ORACLE_BASE. This can be shown by running the command orabase:
oracle@dbi-oda-x8:/home/oracle/ [rdbms191300] orabase /u01/app/odaorabase/oracle
orabase takes its info from
$ORACLE_HOME/install/orabasetab
Migrating databases created before ODA 19.11. to an ORACLE_HOME created after the installation of ODA 19.11. causes diagnostics and admin-data to remain in the “old” ORACLE_BASE /u01/app/oracle, but the command orabase points to the “new” ORACLE_BASE /u01/app/odaorabase/oracle. Tools, which rely on a global ORACLE_BASE settings may have problems handling 2 ORACLE_BASE locations on a machine.
REMARK: The dbi-services tool DMK Management Kit can handle the situation with different ORACLE_BASE on a machine by specifying the ORACLE_BASE-location per database in separate sections in $DMK_HOME/etc/dmk.conf.
The following instructions will show the steps to move the diag- and admin-data of a database from an “old” ORACLE_BASE /u01/app/oracle to the “new” ORACLE_BASE /u01/app/odaorabase/oracle:
E.g. assume we have a Database CBLTEST which has an ORACLE_BASE /u01/app/oracle and a newly created database CBLTEST2 with an ORACLE_BASE /u01/app/odaorabase0:
[root@dbi-oda-x8 log]# odacli list-databases ID DB Name DB Type DB Version CDB Class Shape Storage Status DbHomeID ---------------------------------------- ---------- -------- -------------------- ---------- -------- -------- ---------- ------------ ---------------------------------------- f9e51c56-fcd2-47a3-bcb4-56587a710f1e CBLTEST SI 19.9.0.0.201020 false OLTP odb1 ASM CONFIGURED d9d1b8dd-4abc-46fe-aae4-d52162d66dab 34fd593b-7586-41c9-a58d-71dfc0cf1d90 CBLTEST2 SI 19.13.0.0.211019 true OLTP odb1s ASM CONFIGURED 4dda330d-feed-491b-bace-006c22b75672
After bringing CBLTEST to 19.13. with
# odacli update-dbhome -i d9d1b8dd-4abc-46fe-aae4-d52162d66dab -v 19.13.0.0.0
it has the following ORACLE_BASE-setting:
oracle@dbi-oda-x8:/home/oracle/ [CBLTEST] orabase /u01/app/odaorabase/oracle
but the diagnostics-data still below the “old” ORACLE_BASE.
Here the steps to copy your diag- and admin-data for CBLTEST to the new ORACLE_BASE:
REMARK 1: The situation with Read-Only ORACLE_HOMEs is not covered here.
REMARK 2: Before doing this in production you should test this on a test system carefully. If in doubt open a Service Request with Oracle.
1. Change diagnostic_dest and the audit_file_dest in the spfile
sqlplus / as sysdba SQL> alter system set diagnostic_dest='/u01/app/odaorabase/oracle' scope=spfile; SQL> alter system set audit_file_dest='/u01/app/odaorabase/oracle/admin/CBLTEST/adump' scope=spfile;
2. Shutdown the DB
srvctl stop database -db CBLTEST
3. Copy the rdbms-diag-data to new ORACLE_BASE
cp -pR /u01/app/oracle/diag/rdbms/cbltest /u01/app/odaorabase/oracle/diag/rdbms
4. Copy the admin-directory to the new ORACLE_BASE
cp -pR /u01/app/oracle/admin/CBLTEST /u01/app/odaorabase/oracle/admin
5. Copy the audit-data for spillover-files from unified auditing.
cp -pR /u01/app/oracle/audit/CBLTEST /u01/app/odaorabase/oracle/audit
6. Change ORACLE_BASE to the new value and adjust your scripts, which do set ORACLE_BASE. E.g. for DMK adjust $DMK_HOME/etc/dmk.conf
export ORACLE_BASE=/u01/app/odaorabase/oracle
REMARK: You may check if the environment variable ORACLE_BASE has been stored in the Oracle Cluster registry:
oracle@dbi-oda-x8:/home/oracle/ [CBLTEST] srvctl getenv database -d CBLTEST -t "ORACLE_BASE" CBLTEST: PRKF-1128 : Environment variable ORACLE_BASE is not defined.
If it has been set (which would be very unusuable on an ODA) then you can overwrite it with
oracle@dbi-oda-x8:/home/oracle/ [CBLTEST] srvctl setenv database -d CBLTEST -t "ORACLE_BASE=/u01/app/odaorabase/oracle" oracle@dbi-oda-x8:/home/oracle/ [CBLTEST] srvctl getenv database -d CBLTEST -t "ORACLE_BASE" CBLTEST: ORACLE_BASE=/u01/app/odaorabase/oracle
7. Startup the DB
srvctl start database -db CBLTEST
8. Check that everything is correct
8.1. Re-login as oracle, set the environment and connect “as sysdba”. Here with DMK sourced:
oracle@dbi-oda-x8:/home/oracle/ [rdbms191300] CBLTEST ********* dbi services Ltd. ********* STATUS : OPEN DB_UNIQUE_NAME : CBLTEST OPEN_MODE : READ WRITE LOG_MODE : ARCHIVELOG DATABASE_ROLE : PRIMARY FLASHBACK_ON : NO FORCE_LOGGING : YES VERSION : 19.13.0.0.0 CDB Enabled : NO ************************************* oracle@dbi-oda-x8:/home/oracle/ [CBLTEST] echo $ORACLE_BASE /u01/app/odaorabase/oracle oracle@dbi-oda-x8:/home/oracle/ [CBLTEST] sqh SQL*Plus: Release 19.0.0.0.0 - Production on Fri Jan 21 20:51:48 2022 Version 19.13.0.0.0 Copyright (c) 1982, 2021, Oracle. All rights reserved. Connected to: Oracle Database 19c Standard Edition 2 Release 19.0.0.0.0 - Production Version 19.13.0.0.0 SQL> select value from v$diag_info where value like '/u01%'; VALUE --------------------------------------------------------------------------------- /u01/app/odaorabase/oracle /u01/app/odaorabase/oracle/diag/rdbms/cbltest/CBLTEST /u01/app/odaorabase/oracle/diag/rdbms/cbltest/CBLTEST/trace /u01/app/odaorabase/oracle/diag/rdbms/cbltest/CBLTEST/alert /u01/app/odaorabase/oracle/diag/rdbms/cbltest/CBLTEST/incident /u01/app/odaorabase/oracle/diag/rdbms/cbltest/CBLTEST/cdump /u01/app/odaorabase/oracle/diag/rdbms/cbltest/CBLTEST/hm /u01/app/odaorabase/oracle/diag/rdbms/cbltest/CBLTEST/trace/CBLTEST_ora_45735.trc /u01/app/odaorahome/oracle/product/19.0.0.0/dbhome_4 9 rows selected. SQL> quit Disconnected from Oracle Database 19c Standard Edition 2 Release 19.0.0.0.0 - Production Version 19.13.0.0.0 oracle@dbi-oda-x8:/home/oracle/ [CBLTEST] cda oracle@dbi-oda-x8:/u01/app/odaorabase/oracle/admin/CBLTEST/ [CBLTEST] ls -l total 364 drwxr-x--- 2 oracle oinstall 20480 Jan 13 22:01 adump drwxr-xr-x 2 oracle oinstall 20480 Jan 13 22:48 backup drwxr-x--- 2 oracle oinstall 20480 Jan 13 12:27 dpdump drwxr-xr-x 2 oracle oinstall 20480 Jan 13 18:01 etc drwxr-xr-x 2 oracle oinstall 20480 Jan 13 22:48 log drwxr-x--- 2 oracle oinstall 20480 Jan 13 12:29 pfile drwxr-x--- 2 oracle oinstall 20480 Jan 13 12:23 xdb_wallet oracle@dbi-oda-x8:/u01/app/odaorabase/oracle/admin/CBLTEST/ [CBLTEST]
8.2. Check adrci
oracle@dbi-oda-x8:/home/oracle/ [CBLTEST] adrci ADRCI: Release 19.0.0.0.0 - Production on Fri Jan 21 19:51:30 2022 Copyright (c) 1982, 2019, Oracle and/or its affiliates. All rights reserved. ADR base = "/u01/app/odaorabase/oracle" adrci> show base ADR base is "/u01/app/odaorabase/oracle" adrci>
–> The Base-setting in adrci is coming from the file $ORACLE_HOME/log/diag/adrci_dir.mif
9. Cleanup
If everything is correct, then you may delete the data from the “old” ORACLE_BASE:
rm -rf /u01/app/oracle/diag/rdbms/cbltest rm -rf /u01/app/oracle/admin/CBLTEST rm -rf /u01/app/oracle/admin/audit/CBLTEST
References
https://marcelpils.de/orabase-doesnt-show-the-current-oracle-base-path
https://www.thegeekdiary.com/oracle-database-how-to-set-environment-variables-using-srvctl
https://logic.edchen.org/how-to-resolve-no-adr-base-is-set
MOS Notes
How To Change The Value For ORACLE_BASE In The Inventory Of A 12.1 RDBMS Home (Doc ID 2010941.1)
orabase command returns no value instead of ORACLE_BASE value (Doc ID 2225573.1)
L’article Oracle Database Appliance (ODA): Adjusting to the new ORACLE_BASE-setting from 19.11. onwards est apparu en premier sur dbi Blog.