![](/img/trans.png)
[英]Is there a way to run a DI scoped service on a timer with .net core?
[英]Is there a way to run a .NET Core Service that uses OS authentication to run RMAN backups as systemd?
我在 C#/.NET Core 中設置了一個服務,它的部分功能是在每天的指定時間為 Oracle 啟動 RMAN。 這些功能都可以完美地以 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 :)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.