有没有一种方法可以运行.NET Core服务,该服务使用OS身份验证将RMAN备份作为systemd运行?

问题描述

我在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:)

相关问答

依赖报错 idea导入项目后依赖报错,解决方案:https://blog....
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下...
错误1:gradle项目控制台输出为乱码 # 解决方案:https://bl...
错误还原:在查询的过程中,传入的workType为0时,该条件不起...
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct...