DbHelper.cs 2.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566
  1. using Oracle.ManagedDataAccess.Client;
  2. using System;
  3. using System.Collections.Generic;
  4. using System.Diagnostics;
  5. using System.Linq;
  6. using System.Text;
  7. using System.Threading.Tasks;
  8. namespace Oracle11
  9. {
  10. public static class DbHelper
  11. {
  12. static readonly string connString = "Data Source=127.0.0.1:1521; User Id=TEST; Password=123456;";
  13. public static void CreateUserIfNotExit(string userName, string pwd)
  14. {
  15. GetAllDb(userName, pwd);
  16. userName = userName.ToUpper();
  17. //1.创建用户
  18. string sql = "SELECT username FROM dba_users WHERE username = :username";
  19. var userObj = OracleHelper.ExecuteScalar(connString, sql,
  20. new OracleParameter("username", userName));
  21. if (userObj == null)
  22. {
  23. sql = $"create user {userName} identified by {pwd} default tablespace USERS temporary tablespace TEMP profile DEFAULT password expire";
  24. OracleHelper.ExecuteNonQuery(connString, sql);
  25. }
  26. //2.给用户权限
  27. sql = $"grant dba to {userName}";
  28. OracleHelper.ExecuteNonQuery(connString, sql);
  29. sql = $"grant create session to {userName}";
  30. OracleHelper.ExecuteNonQuery(connString, sql);
  31. sql = $"grant unlimited tablespace to {userName}";
  32. OracleHelper.ExecuteNonQuery(connString, sql);
  33. }
  34. /// <summary>
  35. /// 全量备份
  36. /// </summary>
  37. /// <param name="oracleAddr">oracle地址(127.0.0.1:1521)</param>
  38. /// <param name="dbName">数据库实例名(orcl等)</param>
  39. /// <param name="user">用户名(不区分大小写)</param>
  40. /// <param name="pwd">密码</param>
  41. public static void BackupAll(string oracleAddr, string dbName, string user, string pwd)
  42. {
  43. string connString = $"Data Source={oracleAddr.Trim()}/{dbName}; User Id={user}; Password={pwd};";
  44. }
  45. public static List<string> GetAllDb(string user, string pwd)
  46. {
  47. var starInfo = new ProcessStartInfo()
  48. {
  49. FileName = "sqlplus",
  50. Arguments = $"{user}/{pwd} as sysdba",
  51. UseShellExecute = false,
  52. };
  53. starInfo.RedirectStandardInput = true;
  54. starInfo.RedirectStandardOutput = true;
  55. var pro = Process.Start(starInfo);
  56. var str = pro.StandardOutput.ReadLine();
  57. return null;
  58. }
  59. }
  60. }