<output id="qn6qe"></output>

    1. <output id="qn6qe"><tt id="qn6qe"></tt></output>
    2. <strike id="qn6qe"></strike>

      亚洲 日本 欧洲 欧美 视频,日韩中文字幕有码av,一本一道av中文字幕无码,国产线播放免费人成视频播放,人妻少妇偷人无码视频,日夜啪啪一区二区三区,国产尤物精品自在拍视频首页,久热这里只有精品12
      代碼改變世界

      db_expdp_data_v1.sh導數腳本分享

      2025-08-06 22:44  瀟湘隱者  閱讀(32)  評論(0)    收藏  舉報

      腳本介紹

      在日常運維工作中,經常會有使用數據泵導數的需求.遇到這種需求,經常需要手寫一個導數的腳本或者去找一個導數腳本的例子進行修改. 這樣重復的工作,雖然沒有很復雜,突然有一天意識到應該避免這樣重復、瑣碎、繁雜的工作. 工作就要提升效率與自動化,可以優化的流程和方法,盡量優化,能簡單的盡量簡單.哪怕簡潔一點點。于是有了這樣一個腳本.

      腳本變量

      DUMP_DIR        設置數據泵的導出的路徑. 根據實際情況調整                                          
      DB_USER         訪問數據庫的賬號,可以不設置(如果啟用操作系統認證方式),默認不設置
      DB_PASSWORD     DB_USER指定賬戶的密碼,可以不設置(如果啟用操作系統認證方式),默認不設置                                          
      PARALLEL_NUM    expdp的并行度                                                   
      LOG_FILE        此變量賦值在usage函數的后面進行重新賦值..      
      

      上面變量除了DUMP_DIR需要設置外,其它變量幾乎不用設置.當然每個人的實際環境可能有所不同.根據實際情況進行調整.

      腳本參數

      腳本有三個參數:

      ./db_expdp_data_v1.sh <ORACLE_SID>|<PDB_NAME>   <DUMP_DIR>  [<SCHEMA_NAME>]  
      
      1. 第一個參數指定<ORACLE_SID>或<PDB_NAME>.
        因為在筆者手頭維護的環境絕大部分是ORACLE 19c的多租戶環境,有些環境甚至是多實例環境. 有些是非多租戶環境. 當你使用<PDB_NAME>時就導出PDB的數據.

      2. 第二個參數指定<DIR_NAME>

        指定DIRECTORY_NAME, 如下所示,腳本中會在指定的數據庫或PDB_NAME中創建一個名字為<DIR_NAME>的目錄

      # 創建DUMP DIRECTORY目錄
      # sqlplus -s "${DB_USER}/${DB_PASSWORD}@DB_NAME" << EOF
      sqlplus -s "/ as sysdba" <<EOF
      CREATE OR REPLACE DIRECTORY ${DIR_NAME} AS '${DUMP_DIR}';
      EOF
      
      1. 第三個參數為可選參數, 如果未指定的話,則導出整個數據庫,而不是按SCHEMA_NAME導數.

      腳本源碼

      #!/sbin/sh
      ####!/bin/bash
      
      #########################################################################################
      #                                                                                       #
      # This script uses expdp to export the whole database or pdb database                   #
      #                                                                                       #
      #########################################################################################
      #                                                                                       #
      # ScriptName            :    db_expdp_data_v1.sh                                        #
      # Author                :    瀟湘隱者                                                      #
      # CreateDate            :    2025-01-27                                                 #
      # Email                 :    kerry2008code@qq.com                                       #
      #***************************************************************************************#
      # 變量配置                                                                              #
      #---------------------------------------------------------------------------------------#
      # DUMP_DIR        設置數據泵的導出的路徑                                                #
      # DB_USER         訪問數據庫的賬號,可以不設置(如果啟用操作系統認證方式),默認不設置      #
      # DB_PASSWORD     DB_USER指定賬戶的密碼                                                 #
      # PARALLEL_NUM    expdp的并行度                                                         #
      # LOG_FILE        此變量賦值在usage函數的后面進行賦值.                                  #
      # COMPRESSION_WAY 導出壓縮的方式                                                        #
      #---------------------------------------------------------------------------------------#
      # 參數說明                                                                              #
      #---------------------------------------------------------------------------------------#
      #  $1  <ORACLE_SID>|<PDB_NAME>                                                          #
      #  $2  <DIR_NAME>  mandatory parameter                                                  #
      #  $3  <SCHEME_ANME,SCHEME_ANME>  可選參數                                              #
      #                                                                                       #
      #---------------------------------------------------------------------------------------#
      #   Usage:                                                                              #
      #       ./db_expdp_data_v1.sh <ORACLE_SID>   <DUMP_DIR>  <SCHEMA_NAME>                  #
      #   Example:                                                                            #
      #       ./db_expdp_data_v1.sh gsp DP                                                    #
      #   多租戶環境, 可以這么做:                                                             #
      #   例如,需要導出gspprod這個PDB數據庫,那么可以執行下面命令:                             #
      #       ./db_expdp_data_v1.sh gspprod DP                                                #
      #   導出gspprod這個數據庫下的gspdata這個SCHEMA下的數據                                  #
      #       ./db_expdp_data_v1.sh gspprod DP gspdata                                        #
      #***************************************************************************************#
      # Version        Modified Date            Description                                   #
      #***************************************************************************************#
      # V.1.0          2025-01-27              創建此腳本                                     #
      # V.1.1          2025-02-10              增加變量判斷數據庫版本                         #
      # V.1.2          2025-04-06              增加按SCHEMA_NAME導出數據                      #
      #---------------------------------------------------------------------------------------#
      #注意事項:                                                                             #
      #    1. 此腳本適用于多實例環境,第一個參數可以指定ORACLE_SID或PDB NAME                   #
      #    2. 在使用前,請檢查/設定變量ORACLE_HOME,DUMP_DIR, 如果數據庫使用系統認證方式登錄    #
      #       則無須設置變量DB_USER,DB_PASSWORD                                               #
      #    3. 注意根據實際情況調整函數create_dump_dir中登錄數據庫的方式                       #
      #    4. 注意根據實際情況調整函數expdp_dump_file中鏈接數據庫的方式                       #
      #    5. 此腳本在HP-UX和Linx(RHEL)是適用的,但是不能保證所有平臺都OK,使用前請測試驗證     #
      #########################################################################################
      
      # 注意,如果環境變量有設置ORACLE_HOME,此處可以不用指定ORACLE_HOME.在多實例,多數據庫環境最好指定.
      #export ORACLE_HOME=/opt/oracle19c/product/19.3.0/db_1
      
      DUMP_DIR=/db_backup/dp_dump
      DB_USER="*****"
      DB_PASSWORD="*****"
      DB_NAME="******"
      PARALLEL_NUM=4
      EXP_DATE=$(date +%Y%m%d_%H%M)
      COMPRESSION_WAY='DATA_ONLY' # DATA_ONLY,METADATA_ONLY,ALL,NONE
      DB_VERSION='E'  # E表示企業版, S表示標準版 O表示其它
      LOG_FILE='${DUMP_DIR}/expdp_${DB_NAME}_${EXP_DATE}.log'
      SCHEMA_NAME=''
      
      usage()
      {
          echo "Usage: `basename $0` <ORACLE_SID>|<PDB_NAME> [<SCHEMA_NAME>] "
          echo "eg: `basename $0` gsp dp  test1,test2,test3"
          echo "eg:  `basename $0` gsp dp"
          exit 1
      }
      
      if [ $# -eq 2 ]; then 
          DB_NAME=$1
          DIR_NAME=$2
          LOG_FILE=${DUMP_DIR}/expdp_${DB_NAME}_${EXP_DATE}.log
      elif [ $# -eq 3 ]; then
          DB_NAME=$1
          DIR_NAME=$2
          SCHEMA_NAME=$3
          LOG_FILE=${DUMP_DIR}/expdp_${DB_NAME}_${EXP_DATE}.log
      else 
         echo "The number of script parameters is incorrect"
         usage
      fi 
      
      check_env()
      {
          if [ ! -d "${DUMP_DIR}" ];then
            echo "the path ${DUMP_DIR} did not exist, please check it"
            exit 1
          fi
      
          DB_EXIST=`ps -ef | grep ora_pmon_${DB_NAME} | grep -v grep | wc -l` 
      
          if [ $DB_EXIST = 1 ];then
              #多實例環境下,有些環境,需要指定ORACLE_SID
               export ORACLE_SID=${DB_NAME}
          else
              #如果多租戶環境,這個是PDB
               #IS_PDB_EXIST=`sqlplus -s ${DB_USER}/${DB_PASSWORD} <<EOF
               IS_PDB_EXIST=`sqlplus  -s "/ as sysdba" <<EOF
      SET HEADING OFF 
      SELECT COUNT(*) VALUE FROM CDB_PDBS WHERE PDB_NAME=UPPER('${DB_NAME}');
      EOF`
              if [ $IS_PDB_EXIST -eq 1 ];then
                export ORACLE_PDB_SID=${DB_NAME}
              else
                echo "the pdb ${DB_NAME} does not exist, please check it"
                exit 1
              fi
          fi 
      
         # 查詢數據庫版本信息
         #VERSION_INFO=$(sqlplus -silent $ORA_USER/$ORA_PASSWORD as sysdba <<EOF
         VERSION_INFO=$(sqlplus -s " / as sysdba " <<EOF
         SET PAGESIZE 0 FEEDBACK OFF VERIFY OFF HEADING OFF ECHO OFF
         SELECT banner FROM v\$version WHERE rownum = 1;
         EXIT;
      EOF
      )
      
         # 檢查是否為企業版
         if [[ $VERSION_INFO =~ "Enterprise Edition" ]]; then
           DB_VERSION='E'
         elif [[ $VERSION_INFO =~ "Standard Edition" ]]; then
           DB_VERSION='S'
         else
           DB_VERSION='O'
         fi
         
         #判斷schema是否存在,此處暫不實現,由執行腳本的人控制.
      }
      
      
      create_dump_dir()
      {
       
      # 創建DUMP DIRECTORY目錄
      # sqlplus -s "${DB_USER}/${DB_PASSWORD}@DB_NAME" << EOF
      sqlplus -s "/ as sysdba" <<EOF
      CREATE OR REPLACE DIRECTORY ${DIR_NAME} AS '${DUMP_DIR}';
      EOF
      
      SQL_STATUS=$?
      
      if [ $SQL_STATUS -ne 0 ]; then
        echo "create dump directory failed, please check it!"
        exit 1
      else 
        echo "create dump directory succesful."
      fi
      }
      
      expdp_dump_file()
      {
      
      if [ ${DB_VERSION} == "E" ]; then
          if  [ -z $SCHEMA_NAME ]; then
              #系統認證方式
              EXP_CMD=`$ORACLE_HOME/bin/expdp \'/ as  sysdba \'  directory=${DIR_NAME}  full=y  dumpfile=${DB_NAME}_${EXP_DATE}_%U.dmp filesize=8G parallel=${PARALLEL_NUM} logfile=${DB_NAME}_${EXP_DATE}.log COMPRESSION=${COMPRESSION_WAY}`
              #非系統認證方式
              #EXP_CMD=`$ORACLE_HOME/bin/expdp ${DB_USER}/${DB_PASSWORD}@${DB_NAME}  directory=${DIR_NAME}  full=y  dumpfile=${DB_NAME}_${EXP_DATE}_%U.dmp filesize=8G parallel=${PARALLEL_NUM} logfile=${DB_NAME}_${EXP_DATE}.log COMPRESSION=ALL`
          else
              #系統認證方式
              EXP_CMD=`$ORACLE_HOME/bin/expdp \'/ as  sysdba \'  directory=${DIR_NAME}  schemas=${SCHEMA_NAME}  dumpfile=${DB_NAME}_${EXP_DATE}_%U.dmp filesize=8G parallel=${PARALLEL_NUM} logfile=${DB_NAME}_SCHEMA_${EXP_DATE}.log COMPRESSION=${COMPRESSION_WAY}`
              #非系統認證方式
              #EXP_CMD=`$ORACLE_HOME/bin/expdp ${DB_USER}/${DB_PASSWORD}@${DB_NAME}  directory=${DIR_NAME}  schema=${SCHEMA_NAME}  dumpfile=${DB_NAME}_${EXP_DATE}_%U.dmp filesize=8G parallel=${PARALLEL_NUM} logfile=${DB_NAME}_SCHEMA_${EXP_DATE}.log COMPRESSION=${COMPRESSION_WAY}`
          fi
      else
          if  [ -z $SCHEMA_NAME ]; then
              #系統認證方式
              EXP_CMD=`$ORACLE_HOME/bin/expdp \'/ as  sysdba \'  directory=${DIR_NAME}  full=y  dumpfile=${DB_NAME}_${EXP_DATE}.dmp filesize=8G  logfile=${DB_NAME}_${EXP_DATE}.log`
              #非系統認證方式
              #EXP_CMD=`$ORACLE_HOME/bin/expdp ${DB_USER}/${DB_PASSWORD}@${DB_NAME}  directory=${DIR_NAME}  full=y  dumpfile=${DB_NAME}_${EXP_DATE}.dmp filesize=8G  logfile=${DB_NAME}_${EXP_DATE}.log`
          else
              #系統認證方式
              EXP_CMD=`$ORACLE_HOME/bin/expdp \'/ as  sysdba \'  directory=${DIR_NAME}  schemas=${SCHEMA_NAME}  dumpfile=${DB_NAME}_${EXP_DATE}.dmp filesize=8G  logfile=${DB_NAME}_SCHEMA_${EXP_DATE}.log `
              #非系統認證方式
              #EXP_CMD=`$ORACLE_HOME/bin/expdp ${DB_USER}/${DB_PASSWORD}@${DB_NAME}  directory=${DIR_NAME}  schema=${SCHEMA_NAME}  dumpfile=${DB_NAME}_${EXP_DATE}.dmp filesize=8G  logfile=${DB_NAME}_SCHEMA_${EXP_DATE}.log`
          fi
      fi 
      echo "The export command:\n"
      
      $EXP_CMD
      
      
      if [ $? -eq 0 ]; then
          echo "The data export was successful using expdp!"
      else
          echo "The data export was failed using expdp"
      fi
      }
      
      main()
      {
        check_env
        create_dump_dir
        expdp_dump_file
      }
      
      # 執行主函數
      main 2>&1 | tee ${LOG_FILE}  
      

      PS:有個讓人頭痛的問題,微信公眾號展示的代碼在格式上會部分亂掉,本人的代碼其實并沒有這么凌亂(如下部分截圖所示)。

      主站蜘蛛池模板: 女人张开腿无遮无挡视频| 午夜精品福利亚洲国产| 蜜臀av黑人亚洲精品| 蒙城县| 中文字幕制服国产精品| 中文字幕成人精品久久不卡| 嫖妓丰满肥熟妇在线精品| 亚洲av成人一区国产精品| 中文字幕国产精品资源| 国产亚洲欧美另类一区二区| 久久精品伊人波多野结衣| 国产偷国产偷亚洲清高网站| 日本中文一二区有码在线| 国产精品无码a∨麻豆| 国产精品成人va在线播放| 最近中文字幕完整版hd| 国产麻豆剧果冻传媒一区| 集安市| 亚洲精品一区国产精品| 永久免费AV无码网站大全| 亚洲欧洲日韩国内精品| 一级国产在线观看高清| 人妻中文字幕在线视频无码| 久9re热视频这里只有精品免费| 玉田县| 中文字幕无码成人免费视频 | 99精品热在线在线观看视| 久久五十路丰满熟女中出| 久久精品国产亚洲不av麻豆| 成人拍拍拍无遮挡免费视频| 国产精品白丝一区二区三区| 一级国产在线观看高清| 亚洲中文字幕有综合久久| 性欧美牲交在线视频| 国产AV福利第一精品| 97亚洲熟妇自偷自拍另类图片| 久久久久久久波多野结衣高潮| 护士张开腿被奷日出白浆| 国产成人精品久久一区二区 | 成人午夜在线观看日韩| 亚洲欧洲一区二区精品|