達夢數據庫還原


邏輯導入主要使用dimp命令

  四種級別的導入命令如下:

  FULL: ./dimp USERID=SYSDBA/SYSDBA FILE=/mnt/data/dexp/db_str.dmp LOG=db_str.log FULL=Y  DIRECTORY=/mnt/data/dimp

  OWNER: ./dimp USERID=SYSDBA/SYSDBA FILE=/mnt/data/dexp/db_str.dmp LOG=db_str.log  OWNER=USER01 DIRECTORY=/mnt/data/dimp

  SCHEMAS: ./dimp USERID=SYSDBA/SYSDBA FILE=/mnt/data/dexp/db_str.dmp LOG=db_str.log SCHEMAS=USER01 DIRECTORY=/mnt/data/dimp

  TABLES: ./dimp USERID=SYSDBA/SYSDBA FILE=/mnt/data/dexp/db_str.dmp LOG=db_str.log TABLES=table1,table2 DIRECTORY=/mnt/data/dimp

遠程導入文件命令:sshpass -p pwd  scp -P 22 username@遠程ip:/opt/data/test1.dmp + 本地存放目錄

以tables級別為例:

在備份是已將備份文件名和等備份信息保存到數據庫,還原時通過記錄id查詢到備份信息拼接語句。

 public String recover(Map<String, Object> param) {
        String result = "";
        String copyType = param.get(“type”);
        Map<String, Object> map = new HashMap<>();
        Connection conn = DMruntimeUtil.login(ip, userName, userPwd);
        String filename = param.getWjmc();
        if (param.get(“tids”) == "") {
            //全部恢復
        } else {
            //部分恢復
            // 根據tids拼接表名
            List<Bfb> bfbList = bfbMapper.getTables(param.getTids().toString().split(","));
            if (bfbMapper == null || bfbList.size() == 0) {
                return null;
            }
            
            String tnames = param.get("tnames");
            String dexpStr = "";

            // 恢復命令./dimp USERID=SYSDBA/SYSDBA FILE=/mnt/data/dexp/db_str.dmp LOG=db_str.log
            // DIRECTORY=/mnt/data/dimp
            dexpStr = DMruntimeUtil.dimpByTables(hostip, dbname, username, password, filename, tnames);
            if (copyType.equals("本地")) {
                String cmd = "cd /opt/dameng/dmdbms/bin;" + dexpStr;
                result = DMruntimeUtil.execute(conn, cmd);
            } else if (copyType.equals("異域")) {
                // sshpass -p pwd scp -P 22 root@ip:/opt/data/test1.dmp
                // /opt/dameng/dmdbms/dm7data/EVAL/dexp/
                String cmd = "sshpass -p  " + param.getRepassword() + " scp -P " + param.getPort() + " "
                        + param.getUsername() + "@" + param.getIp() + ":" + param.getDir() + "/" + filename
                        + " /opt/dameng/dmdbms/dm7data/EVAL/dexp/;cd /opt/dameng/dmdbms/bin;" + dexpStr;
                result = DMruntimeUtil.execute(conn, cmd);
            }
        }
        return result;
    }


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM