有没有办法运行使用操作系统身份验证来运行 RMAN 备份作为 systemd 的 .NET Core 服务?
Posted
技术标签:
【中文标题】有没有办法运行使用操作系统身份验证来运行 RMAN 备份作为 systemd 的 .NET Core 服务?【英文标题】:Is there a way to run a .NET Core Service that uses OS authentication to run RMAN backups as systemd? 【发布时间】:2021-01-01 08:21:11 【问题描述】:我在 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.BackupRMAN_RMANObjects.sn.rcv LOG RMANObjects.Backupbackup_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
【问题讨论】:
为什么不为它写一个简单的 bash 脚本呢? 为什么除了 oracle 软件所有者(通常是“oracle”)之外,您还想以任何方式运行 rman?我想不出一个好的理由。除此之外,您的环境可能没有正确设置 - 特别是 ORACLE_HOME 和 ORACLE_SID。 【参考方案1】:这里的问题不是所有的环境变量都设置好了。我建议您先调用oraenv
,并确保您使用的是oracle的操作系统用户,而不是其他任何用户
export ORACLE_HOME=<path>
export ORACLE_SID=orcl
export ORAENV_ASK=NO
. oraenv
首先编写代码,然后运行 RMAN :)
【讨论】:
以上是关于有没有办法运行使用操作系统身份验证来运行 RMAN 备份作为 systemd 的 .NET Core 服务?的主要内容,如果未能解决你的问题,请参考以下文章
有没有办法使用 oauth 令牌连接到 New-CsOnlineSession?
在 Git 中运行预提交挂钩。有没有办法验证脚本是不是正在运行?