问题描述
我在C#/。NET Core中设置了一项服务,其功能的一部分是每天在指定的时间启动RMAN for Oracle。这些功能都可以以Oracle用户的身份完美运行,但不能以root用户身份或以systemd身份运行(即使我在init文件中包括了以oracle运行的参数)。
尝试以root身份运行RMAN时出错: Error as Root
ORA-12162:TNS:net服务名称指定不正确
C#中的代码:
string oraHome = Environment.GetEnvironmentVariable("ORACLE_HOME");
//execute powershell cmdlets or scripts using command arguments as process
ProcessStartInfo processInfo = new ProcessStartInfo
{
FileName = $"{oraHome}/bin/rman",Arguments = $"NOCATALOG TARGET / CMDFILE {RMANObjects.Backup}RMAN_{RMANObjects.sn}.rcv LOG {RMANObjects.Backup}backup_log_{RMANObjects.sn}.txt",RedirectStandardError = true,RedirectStandardOutput = true,UseShellExecute = false,CreateNoWindow = true
};
//start powershell process using process start info
Process process = new Process();
process.StartInfo = processInfo;
process.Start();
RMANandLogMover初始化/服务文件
[Unit]
Description=RMANandLogMover
DefaultDependencies=no
[Service]
Type=notify
WorkingDirectory=/home/oracle/app/RMANandLogMover/8.25Logmover
ExecStart=/home/oracle/app/RMANandLogMover/8.25Logmover/RMANandLogMover
Environment=ORACLE_HOME=/home/oracle/app/product/19.0.0/dbhome_1
User=oracle
Group=backupdba
RemainAfterExit=yes
[Install]
WantedBy=default.target
解决方法
这里的问题不是所有环境变量都已设置。我建议您首先调用oraenv
,并确保您使用的是oracle的os用户,而不是其他任何用户
export ORACLE_HOME=<path>
export ORACLE_SID=orcl
export ORAENV_ASK=NO
. oraenv
首先对此进行编码,然后运行RMAN:)