LINUXOR.SK ... open source notes ...

Oracle RAC 11 - Backup Exec server and RAC backup

category: solutionz · date: 2016-12-31 · updated: 2026-10-02 · author: LALA

Oracle RAC Solution · Previous: Backup Exec agent

With the agent on both nodes, the Backup Exec server had to be taught what a RAC database is. Backup Exec 15 does not address a RAC database through one of its nodes: it wants a virtual node with a name made of the database name and the database identifier, resolvable to the nodes, and it wants accounts for the operating system and for the database. This part is the most trial and error of the whole build. The product set accounts I had not chosen, listed the nodes under names I did not want, and refused a database account that worked everywhere else. The notes record the order in which it finally worked, and that order is what is described here.

The backup paths

All backup traffic was meant for the backup network: eth0 of the nodes (10.30.30.11, 10.30.30.12) and the second interface of the server (mng-backupsrv01-bck, 10.30.30.14). The notes give the reason as a condition: if the production network with the public, VIP and SCAN addresses is in effect a back-end network for the application servers and so not directly reachable, the backup server has to be given addresses it can reach.

mermaid
flowchart LR
  subgraph srv["mng-backupsrv01"]
    be["Backup Exec 15 server, 10.30.30.14"]
    hosts["hosts file: oradb01 and oradb02 to 10.30.30.x"]
  end
  subgraph dns["dns1"]
    zone["example.net: rac-clsopdb-1234567890, two A records"]
  end
  subgraph n1["oradb01, 10.30.30.11"]
    a1["agent beremote"]
    os1["file systems"]
    i1["instance clsopdb1"]
  end
  subgraph n2["oradb02, 10.30.30.12"]
    a2["agent beremote"]
    os2["file systems"]
    i2["instance clsopdb2"]
  end
  rac["virtual node RAC-clsopdb-1234567890"]
  be -- "OS backup, logon local/be" --> a1
  be -- "OS backup, logon local/be" --> a2
  be -- "database backup, logon local/oracle" --> rac
  rac -. "10.30.30.11" .-> a1
  rac -. "10.30.30.12" .-> a2
  zone -. "resolves the virtual node" .-> rac
  hosts -. "resolves the node names" .-> be
  a1 --> os1
  a2 --> os2
  a1 -- "clsopdb/sys as SYSDBA" --> i1
  a2 -- "clsopdb/sys as SYSDBA" --> i2
AccountKindUsed forStored on the server as
belocal account on the nodes, member of beoperlogging on to the node agents for the operating system backuplocal/be
oraclelocal account on the nodes, member of beoperlogging on to the virtual node and the Oracle server list; the agent's system credentials for Oracle operationslocal/oracle
sysdatabase account, SYSDBAthe database credential of the virtual node; the instance credential in AgentConfigclsopdb/sys
BACKUP_EXECdatabase account, SYSDBAmeant to be the database credential; created, tested, not usedclsopdb/BACKUP_EXEC

The DBID and the virtual node

The virtual node is named RAC-<database>-<DBID>. The DBID was read on a node as oracle, in SQL*Plus, connected as system with the connect identifier clsopdb.

sql
select DBID, NAME from v$database;
output 3 lines
      DBID NAME
---------- ---------
1234567890 CLSDB

The DBID printed here is a made-up value of the right shape; the real one is not published. With it the virtual node is RAC-clsopdb-1234567890.

The same output shows a contradiction I can only report. Everything in the Backup Exec notes calls the database clsopdb, with the instances clsopdb1 and clsopdb2, and the virtual node carries that name. The query, run in a session connected to clsopdb, prints the database name CLSDB, which is the name in the installer answers and the srvctl output of Database creation and user environments, and the comment above the DNS records below also says CLSDB. The notes hold no tnsnames.ora and no statement that would say whether clsopdb was an alias, a service or a second database, so I leave both names as the notes have them.

The database account BACKUP_EXEC

The plan was to run the database side of the backup under an account of its own instead of sys. It was created in two steps, on a node as oracle in SQL*Plus: the account and its ordinary grants as system, and the SYSDBA privilege as sys.

As system it got UNLIMITED TABLESPACE, the roles AQ_ADMINISTRATOR_ROLE and CONNECT, all roles as default roles and SYSTEM as its default tablespace. GRANT SYSDBA needs a SYSDBA session and was given as sys.

The statements as they were typed are a Config document: SQL for the DBID and the BACKUP_EXEC account. The password in it is the placeholder <BACKUP_EXEC_DB_PASSWORD>.

Names: DNS and the hosts file

The Backup Exec server has to resolve the virtual node. The notes name two ways: the hosts file of the server, or records on the DNS server. I took the second. Two A records with the same name were added to the forward zone on dns1, pointing at the backup-network addresses of the two nodes.

ini
; Oracle RAC - records for Symantec Backup Exec (the Oracle RAC database named "CLSDB", DBID "1234567890")
rac-clsopdb-1234567890    A    10.30.30.11
rac-clsopdb-1234567890    A    10.30.30.12

The whole zone file is a Config document, example.net zone, and the server is described in DNS server: Knot.

The node names needed the other way. In DNS oradb01.example.net is the public address 10.30.10.11, which under that condition the backup server cannot reach directly, and the agents announce themselves under exactly that name. So on the Backup Exec server, and only there, the plain node names were pointed at the backup network in C:\Windows\System32\drivers\etc\hosts.

ini
10.30.30.11 oradb01.example.net oradb01
10.30.30.12 oradb02.example.net oradb02

It is a Config document of its own: hosts file on the Backup Exec server.

Logon accounts and the Oracle server list

In the console, under Configuration and Settings, Logon Accounts, Manage Logon Accounts, four accounts were added: every account the server would need except root. Two are operating system accounts of the nodes from the group beoper (local/be, local/oracle), two are database accounts (clsopdb/sys, clsopdb/BACKUP_EXEC). None was marked as a restricted logon account or as the default account.

Then the list of Oracle servers, under Configuration and Settings, Backup Exec Settings, Oracle. It holds the Oracle nodes and the logon account for each. Three entries went in: the virtual node RAC-clsopdb-1234567890, ORADB01.example.net and ORADB02.example.net, all with the logon account local/oracle. Note that the nodes stand here under their names without -BCK. Everything that was set in the console is listed in one Config document: Backup Exec server settings.

What appeared after the agent restart

The agents were restarted on both nodes (as root, /etc/init.d/VRTSralus.init restart), and the server then showed five machines it had learned about from the agents.

Server shownDetected as
ORADB01-BCK.example.netWindows
ORADB02-BCK.example.netWindows
ORADB01.example.netLinux
ORADB02.example.netLinux
RAC-clsopdb-1234567890Oracle RAC

The virtual node was there, detected as what it is. The nodes were there twice, and the entries with the backup-network names, the ones I wanted, were detected as Windows machines. The notes record the fact and no explanation, and I have none.

Three corrections followed. First, the two entries without -BCK were removed, because only the backup network was to be used. Second, they came back: at every restart the agent tells the server about itself again. Advertising was therefore switched off on the nodes with Advertising Disabled=1 in ralus.cfg, as described in Backup Exec agent; the notes add that with advertising on, logging in to the database was troublesome or did not work at all and the tablespaces and archive logs could not even be listed. Third, since nothing announces the nodes any more, they were added by hand: Backup and Restore, Add Server, Linux Computer, ORADB01-BCK.example.net and ORADB02-BCK.example.net, both with local/oracle. The notes do not say what happened to the two entries detected as Windows before the same names were added as Linux computers.

Correcting the logon account

The virtual node did not keep the account it was given. In the Oracle server list it had local/oracle; the object the server created for it had "System Logon Account". This had to be corrected in the properties of the virtual node, and the same on the node entry. After that both entries were refreshed with the Refresh button, so that the server read the nodes and the database again with the right account.

ObjectLogon account as set by the productCorrected to
Virtual node RAC-clsopdb-1234567890System Logon Accountlocal/oracle
Node ORADB01.example.netSystem Logon Accountlocal/oracle

The database credential: BACKUP_EXEC, then sys

After the refresh the virtual node showed the database clsopdb under Credentials, with the setting "use server's logon account". That is the operating system account, and a database needs a database account. The notes hold two steps for the same field.

StepCredential of Oracle Database clsopdbResult
[9.3]clsopdb/BACKUP_EXECNot usable
[9.4]clsopdb/sysThe setting that stayed

The remark between them is one of the few places where the notes lose their temper. The account BACKUP_EXEC was correct and worked in the database, with SYSDBA, and Backup Exec still could not use it, "because the Backup Exec server handles credentials very, very oddly". With sys it worked. So the dedicated account exists in the database, holds SYSDBA and unlimited quota, and does nothing; the backup runs as sys on both ends, in AgentConfig on the nodes and in the console.

The last step, [9.5], is the operating system backup. On both node entries the logon account and the credentials were changed from "use server's logon account" to local/be, the account made for this purpose in the previous part.

Contradictions in this part

What is missing

The notes stop where the configuration of the server ends. They hold no backup job: no selection list, no schedule, no storage or media set, no retention. They hold no RMAN settings and no job template other than the answer "no customized job template" in AgentConfig, no recovery catalog (the answer was no), no log of a finished backup and no restore test, neither of a file nor of the database. That sys had to be used is stated; that a backup ran to its end or that a restore was ever proven is not. For a write-up of a backup this is the largest gap, and I cannot fill it from memory.

What I found on the internet

The notes end with four links and a remark about them: the information in them does not explain the details and some of the configurations are plainly misleading, and I found nothing better about backing up Oracle RAC with Symantec Backup Exec. They are listed as they were then.

Checked against Backup Exec 25.1

Backup Exec 15 has been out of support since 7 November 2019; the current release is 25.1. Its Administrator's Guide describes the RAC backup in the same terms, and it explains the one thing that cost me most.

As builtToday
Virtual node RAC-clsopdb-1234567890Unchanged: the nodes of a cluster share one name of the form RAC-<database name>-<database ID>, shown on the Backup and Restore tab. The Agent Utility has to be run on each node first
Two A records for the virtual node, or lines in the server's hosts fileThe guide says only that Backup Exec uses the fully qualified name to connect to the node with the highest priority. It gives no instruction to create a DNS or hosts entry; the step fills a gap
Backup Exec Settings, Oracle: the virtual node and both nodes with a logon accountSame place. For RAC nodes the name RAC-<database name>-<database ID> is entered for each node, and the logon account must have administrative rights on the Oracle server
BACKUP_EXEC with SYSDBA refused, sys acceptedDocumented: for database versions before 12c "the privilege and user for RMAN connection is SYSDBA and SYS". On 11.2 sys is what the agent expects
GRANT SYSDBA to a backup accountFrom Oracle 12c the privilege for backup tools is SYSBACKUP, a subset of SYSDBA, granted to an account created for it; Backup Exec requires such an account for 12c and later
AQ_ADMINISTRATOR_ROLE, UNLIMITED TABLESPACE, default tablespace SYSTEMNot asked for by the current guide
Oracle 11.2.0.4 RACThe compatibility list of Backup Exec 25 still has Oracle 11g and RAC on Linux, on its "Retiring Soon" list

So what the notes call very odd handling of credentials was the documented behaviour for an 11.2 database: for database versions before 12c the guide names SYS with SYSDBA as the user and privilege of the agent's RMAN connection. The support articles under veritas.com now redirect to a page that asks for a login, so the two Veritas links above should be taken as dead.

What I would do differently

← solutionz