Skip to content
September 19, 2018 / Shivananda Rao P

Configuring TDE in 11.2 RAC database with dataguard enabled

In this post, I’m writing on how to implement TDE in a 11g RAC environment with Dataguard

 

Environment:
Oracle RDBMS version: 11.2.0.3
Primary nodes: node1, node2
Standby nodes: drnode1, drnode2
Primary Databaase: crmsdb
Standby Database: crmdb

 

Firstly, let me check if the standby database is in sync with the primary database.

 

[oracle@node1]$ dgmgrl /
DGMGRL for Linux: Version 11.2.0.3.0 - 64bit Production

Copyright (c) 2000, 2009, Oracle. All rights reserved.

Welcome to DGMGRL, type "help" for information.
Connected.
DGMGRL> show configuration

Configuration - crmdb_dg

  Protection Mode: MaxPerformance
  Databases:
    crmsdb - Primary database
    crmdb  - Physical standby database

Fast-Start Failover: DISABLED

Configuration Status:
SUCCESS

 

Now, add the below entry in the SQLNET.ORA file on all the nodes of the Primary database. The SQLNET.ORA file needs to be present in the location where the TNS_ADMIN points.

 

The value for the DIRECTORY parameter in the below entry specifies the location where the wallet needs to be stored. In my case, I’m placing it ata “$ORACLE_HOME/network/admin//wallet”. If the specified directory structure does not exist, then you need to create one.

 

ENCRYPTION_WALLET_LOCATION=
(SOURCE=
  (METHOD=FILE)
  (METHOD_DATA=(DIRECTORY=/u01/app/oracle/product/11.2.0.3/db_1/network/admin/$ORACLE_SID/wallet))
)

 

Please note that in a RAC environment, the wallet can be placed in a shared location where all the nodes of the cluster database can access it (Ideally, it can be placed on ASM storage which I shall expalin in my coming posts). In this environment, I’m having a separate wallet for each node.

 

Once you add the entry in SQLNET.ORA file, you need to bounce the instances so that wallet location is upated correctly when you query the gv$encryption_wallet view.

 

As of now, I have not bounced the 2nd instance and due to which the wallet location is pointing to wrong location when I query the gv$encryption_wallet view.
Hence a restart of the 2nd instance is needed.

 

SQL> select * from gv$encryption_wallet order by inst_id;

   INST_ID WRL_TYPE        WRL_PARAMETER                                                          STATUS
---------- --------------- ---------------------------------------------------------------------- ------------------
         1 file            /u01/app/oracle/product/11.2.0.3/db_1/network/admin/$ORACLE_SID/wallet CLOSED
         2 file            /u01/app/oracle/product/11.2.0.3/db_1/admin/crmsdb/wallet              CLOSED
		 

 

[oracle@node1 admin]$ srvctl stop instance -i crmsdb2 -d crmsdb
[oracle@node1 admin]$ 
[oracle@node1 admin]$ srvctl start instance -i crmsdb2 -d crmsdb
[oracle@node1 admin]$ 

 

Now, querying the gv$encryption_wallet provides the expected result.

 

SQL> select * from gv$encryption_wallet order by inst_id;

   INST_ID WRL_TYPE        WRL_PARAMETER                                                          STATUS
---------- --------------- ---------------------------------------------------------------------- ------------------
         1 file            /u01/app/oracle/product/11.2.0.3/db_1/network/admin/$ORACLE_SID/wallet CLOSED
         2 file            /u01/app/oracle/product/11.2.0.3/db_1/network/admin/$ORACLE_SID/wallet CLOSED
		 

 

On any one instance of the primary database, create the wallet. Here, I’m running it on the first node of the primary database.

 

SQL> alter system set encryption key identified by "oracle123";

System altered.

 

Just crosscheck the wallet file presence under the wallet location.

 

[oracle@node1 ~]$ cd /u01/app/oracle/product/11.2.0.3/db_1/network/admin/crmsdb1/wallet
[oracle@node1 wallet]$ ls -lrt
total 4
-rw-r--r--. 1 oracle oinstall 1573 Aug 25 13:41 ewallet.p12

 

Now, SCP the wallet file

 

[oracle@node1 wallet]$ scp ewallet.p12 oracle@node2:/u01/app/oracle/product/11.2.0.3/db_1/network/admin/crmsdb2/wallet/
ewallet.p12                                                                                                           100% 1573     1.5KB/s   00:00    
[oracle@node1 wallet]$ 

 

You now manually need to open the wallet

 

SQL> alter system set encryption wallet open identified by "oracle123";

System altered.

 


SQL> select * from gv$encryption_wallet order by 1;

   INST_ID WRL_TYPE             WRL_PARAMETER                                                          STATUS
---------- -------------------- ---------------------------------------------------------------------- ------------------
         1 file                 /u01/app/oracle/product/11.2.0.3/db_1/network/admin/$ORACLE_SID/wallet OPEN
         2 file                 /u01/app/oracle/product/11.2.0.3/db_1/network/admin/$ORACLE_SID/wallet OPEN

 

In order to close the wallet manually, you can use the below command.

 

SQL> alter system set encryption wallet close identified by "oracle123";

System altered.

 

It is recommended to enable the wallet for auto login. This will ensure that there is no need to open or close the wallet manually. Oracle will automatically open the wallet when an encrypted object is accessed or created. This can be done by using the “orapki” utility.

 

[oracle@node1 wallet]$ orapki wallet create -wallet /u01/app/oracle/product/11.2.0.3/db_1/network/admin/crmsdb1/wallet -auto_login
Oracle PKI Tool : Version 11.2.0.3.0 - Production
Copyright (c) 2004, 2011, Oracle and/or its affiliates. All rights reserved.

Enter wallet password:            
   
[oracle@node1 wallet]$

 

When prompted for the wallet password, provide the password that was used previously to create the key.

 

[oracle@node1 ~]$ cd /u01/app/oracle/product/11.2.0.3/db_1/network/admin/crmsdb1/wallet/
[oracle@node1 wallet]$ ls -lrt
total 8
-rw-r--r--. 1 oracle oinstall 1573 Aug 25 13:41 ewallet.p12
-rw-------. 1 oracle oinstall 1651 Aug 25 13:47 cwallet.sso

 

[oracle@node1 wallet]$ scp cwallet.sso oracle@node2:/u01/app/oracle/product/11.2.0.3/db_1/network/admin/crmsdb2/wallet/
cwallet.sso                                                                                                           100% 1651     1.6KB/s   00:00   

 

Now, bouncing the database will not stop you for opening the wallet as the above autologin option opens it automatically.

 

[oracle@node1 ~]$ srvctl stop database -d crmsdb
[oracle@node1 ~]$ 
[oracle@node1 ~]$ 
[oracle@node1 ~]$ srvctl start database -d crmsdb

 

[oracle@node1 ~]$ sql

SQL*Plus: Release 11.2.0.3.0 Production on Sat Sep 8 10:55:31 2018

Copyright (c) 1982, 2011, Oracle.  All rights reserved.


Connected to:
Oracle Database 11g Enterprise Edition Release 11.2.0.3.0 - 64bit Production
With the Partitioning, Real Application Clusters, Automatic Storage Management, OLAP,
Data Mining and Real Application Testing options

SQL> set linesize 300
SQL> col wrl_parameter for a70
SQL> select * from gv$encryption_wallet order by 1;

   INST_ID WRL_TYPE             WRL_PARAMETER                                                          STATUS
---------- -------------------- ---------------------------------------------------------------------- ------------------
         1 file                 /u01/app/oracle/product/11.2.0.3/db_1/network/admin/$ORACLE_SID/wallet OPEN
         2 file                 /u01/app/oracle/product/11.2.0.3/db_1/network/admin/$ORACLE_SID/wallet OPEN

 

Now on the DR nodes, follow the same steps as done on the primary nodes.
Add same entry as above in sqlnet.ora file on all nodes of the standby and then restart the instances to get the wallet_location updated.

 

[oracle@drnode1 admin]$ srvctl stop instance -i crmdb1 -d crmdb
[oracle@drnode1 admin]$ srvctl start instance -i crmdb1 -d crmdb

 

[oracle@drnode1 admin]$ srvctl stop instance -i crmdb2 -d crmdb
[oracle@drnode1 admin]$ srvctl start instance -i crmdb2 -d crmdb
[oracle@drnode1 admin]$ 

 

Once restarted, query the gv$encryption_wallet view to verify if WRL_PARAMETER value corresponds to that mentioned in the WALLET_LOCATION value in the SQLNET.ORA file.

 

SQL> select * from gv$encryption_wallet;

   INST_ID WRL_TYPE        WRL_PARAMETER                                                          STATUS
---------- --------------- ---------------------------------------------------------------------- ------------------
         1 file            /u01/app/oracle/product/11.2.0.3/db_1/network/admin/$ORACLE_SID/wallet CLOSED
         2 file            /u01/app/oracle/product/11.2.0.3/db_1/network/admin/$ORACLE_SID/wallet CLOSED

 

On the standby, MRP may terminate

 

Errors with log +FRA/crmdb/archivelog/2018_08_25/thread_1_seq_64.376.985096395
MRP0: Background Media Recovery terminated with error 28365
Errors in file /u01/app/oracle/diag/rdbms/crmdb/crmdb1/trace/crmdb1_mrp0_12241.trc:
ORA-28365: wallet is not open
Managed Standby Recovery not using Real Time Apply
Recovery interrupted!
Recovered data files to a consistent state at change 1361738
MRP0: Background Media Recovery process shutdown (crmdb1)

 

Now, do not create any key on the standby database.

 

		 
[oracle@node1 wallet]$ scp ewallet.p12 oracle@drnode1:/u01/app/oracle/product/11.2.0.3/db_1/network/admin/crmdb1/wallet/
oracle@drnode1's password: 
ewallet.p12                                                                                                           100% 1573     1.5KB/s   00:00    
[oracle@node1 wallet]$ 
[oracle@node1 wallet]$ 
[oracle@node1 wallet]$ scp ewallet.p12 oracle@drnode2:/u01/app/oracle/product/11.2.0.3/db_1/network/admin/crmdb2/wallet/
The authenticity of host 'drnode2 (192.168.0.123)' can't be established.
RSA key fingerprint is 48:83:c6:32:28:0d:25:a8:5a:25:03:c7:21:96:6e:64.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added 'drnode2,192.168.0.123' (RSA) to the list of known hosts.
oracle@drnode2's password: 
ewallet.p12                                                                                                           100% 1573     1.5KB/s   00:00    
[oracle@node1 wallet]$ 

 

You can now open the wallet manually on the standby database using the below command:

 

SQL> alter system set encryption wallet open identified by "oracle123";

System altered.

 

But since I have enabled autologin on the primary database, I’d like the same to be enabled on the standby as well. So shall copy the cwallet.sso file from primary to both the nodes of the standby.

 

[oracle@node1 ~]$ cd /u01/app/oracle/product/11.2.0.3/db_1/network/admin/crmsdb1/wallet/
[oracle@node1 wallet]$ ls -lrt
total 8
-rw-r--r--. 1 oracle oinstall 1573 Aug 25 13:41 ewallet.p12
-rw-------. 1 oracle oinstall 1651 Aug 25 13:47 cwallet.sso
[oracle@node1 wallet]$ 
[oracle@node1 wallet]$ scp cwallet.sso oracle@drnode1:/u01/app/oracle/product/11.2.0.3/db_1/network/admin/crmdb1/wallet/
oracle@drnode1's password: 
cwallet.sso                                                                                                           100% 1651     1.6KB/s   00:00    
[oracle@node1 wallet]$ 
[oracle@node1 wallet]$ scp cwallet.sso oracle@drnode2:/u01/app/oracle/product/11.2.0.3/db_1/network/admin/crmdb2/wallet/
oracle@drnode2's password: 
cwallet.sso                                                                                                           100% 1651     1.6KB/s   00:00    
[oracle@node1 wallet]$ 

 

[oracle@drnode1 ~]$ srvctl stop database -d crmdb
[oracle@drnode1 ~]$ 
[oracle@drnode1 ~]$ srvctl start database -d crmdb

 

[oracle@drnode1 ~]$ sql

SQL*Plus: Release 11.2.0.3.0 Production on Sat Sep 8 11:17:50 2018

Copyright (c) 1982, 2011, Oracle.  All rights reserved.


Connected to:
Oracle Database 11g Enterprise Edition Release 11.2.0.3.0 - 64bit Production
With the Partitioning, Real Application Clusters, Automatic Storage Management, OLAP,
Data Mining and Real Application Testing options

SQL> col wrl_parameter for a70
SQL> set linesize 300
SQL> select * from gv$encryption_wallet order by 1;

   INST_ID WRL_TYPE             WRL_PARAMETER                                                          STATUS
---------- -------------------- ---------------------------------------------------------------------- ------------------
         1 file                 /u01/app/oracle/product/11.2.0.3/db_1/network/admin/$ORACLE_SID/wallet OPEN
         2 file                 /u01/app/oracle/product/11.2.0.3/db_1/network/admin/$ORACLE_SID/wallet OPEN

 

	 
SQL> select status,instance_name,database_role from v$database,v$instance;

STATUS       INSTANCE_NAME    DATABASE_ROLE
------------ ---------------- ----------------
MOUNTED      crmdb1           PHYSICAL STANDBY

 

SQL> select process,status,sequence#,inst_id,thread# from gV$managed_standby;

PROCESS   STATUS        SEQUENCE#    INST_ID    THREAD#
--------- ------------ ---------- ---------- ----------
ARCH      CONNECTED             0          1          0
ARCH      CONNECTED             0          1          0
ARCH      CONNECTED             0          1          0
ARCH      CONNECTED             0          1          0
MRP0      APPLYING_LOG         71          1          2
ARCH      CLOSING              87          2          1
ARCH      CLOSING              70          2          2
ARCH      CONNECTED             0          2          0
ARCH      CONNECTED             0          2          0
RFS       IDLE                  0          2          0
RFS       IDLE                  0          2          0

PROCESS   STATUS        SEQUENCE#    INST_ID    THREAD#
--------- ------------ ---------- ---------- ----------
RFS       IDLE                 88          2          1
RFS       IDLE                  0          2          0
RFS       IDLE                 71          2          2
RFS       IDLE                  0          2          0

15 rows selected.

 

[oracle@drnode1 ~]$ dgmgrl /
DGMGRL for Linux: Version 11.2.0.3.0 - 64bit Production

Copyright (c) 2000, 2009, Oracle. All rights reserved.

Welcome to DGMGRL, type "help" for information.
Connected.
DGMGRL> show configuration

Configuration - crmdb_dg

  Protection Mode: MaxPerformance
  Databases:
    crmsdb - Primary database
    crmdb  - Physical standby database

Fast-Start Failover: DISABLED

Configuration Status:
SUCCESS

 

 

 

COPYRIGHT

© Shivananda Rao P, 2012 to 2018. Unauthorized use and/or duplication of this material without express and written permission from this blog’s author and/or owner is strictly prohibited. Excerpts and links may be used, provided that full and clear credit is given to Shivananda Rao and http://www.shivanandarao-oracle.com with appropriate and specific direction to the original content.

 

 

 

DISCLAIMER

The views expressed here are my own and do not necessarily reflect the views of any other individual, business entity, or organisation. The views expressed by visitors on this blog are theirs solely and may not reflect mine

 

 

Leave a comment