Oacle12c 데이터 백업, 복구 정책

6766 단어 Oacle
Oacle 에 대해 잘 모 르 겠 습 니 다. 간단 한 startup, shutdown, lsnrctl start 등 명령 만 할 수 있 습 니 다. Oacle 을 좋아 하지 않 고 사용 하기 어렵 습 니 다.
실제 상황 에 따라 username, password, ORACLE 를 수정 하 십시오.SID, / PATH / TO / DIR 등
expdp 완비
expdp 는 완비 만 할 수 있 고 증분 백업 은 할 수 없습니다.
백업 파일 저장 디 렉 터 리 만 들 기
 --         (      )
 create or replace directory DMP_DIR as '/PATH/TO/DIR';
--      ,     
  grant read,write on directory DMP_DIR to USERNAME; 
--     
  select * from all_directories;
--  
  select * dba_directories;
--   ORACLE_SID
 select instance from v$thread;

expdp 데이터베이스 스 크 립 트
#!/bin/bash
source /home/oracle/.bash_profile

export ORACLE_BASE=/PATH/TO/ORACLE/BASE

export ORACLE_HOME=$ORACLE_BASE/product/12.1.0/dbhome_1

export ORACLE_SID=${ORACLE_SID}

export PATH=$PATH:$HOME/bin:$ORACLE_HOME/bin

export LD_LIBRARY_PATH=$ORACLE_HOME/lib:/usr/lib

DATE=`date +%Y%m%d`;
expdp UESRNAME/PASSWORD@ORACLE_SID directory=DUMP_DIR dumpfile=FILENAME_$DATE.dmp logfile=expdp_FILENAME_$DATE.log

참고 문서: expdp 소개    매우 상세 하 다
                 공식 문서
impdp 데이터 복구
--      ,      (    TABLESPACENAME   )(                 ,100 G   ,           )
create tablespace TABLESPACENAME  datafile  '/PATH/TO/TABLESPACE/TABLESPACENAME.dbf' size 2g autoextend on; 
alter tablespace TABLESPACENAME add datafile '/PATH/TO/TABLESPACE/TABLESPACENAME01.dbf' size 2g autoextend on; 
--     (         )
create user USERNAME identified by PASSWORD default tablespace TABLESPACENAME;
--      
grant dba to USERNAME;
--    dba    ,         
grant execute on SYS.DBMS_LOCK to USERNAME;
grant execute on SYS.DBMS_PIPE to USERNAME;
grant execute on SYS.DBMS_CRYPTO to USERNAME;
--           (      )
create directory DUMP_DIR as '/PATH/TO/DIR'; 
--       
Grant read,write on directory DUMP_DIR to USERNAME;
--     ,      tablespace   , remap_tablespace    
impdp USERNAME/PASSWORD@${ORACLE_SID} directory=DUMP_DIR dumpfile=FILENAME_$DATE.dmp logfile=imp_FILENAME_$DATE.log  remap_tablespace=OLD_TABLESPACENAME:TABLESPACENAME

transform=segment_attributes:n      원래 표 공간 이름 을 모 르 면 표 공간 과 저장 자 구 를 제거 하고 현재 기본 표 공간 으로 데 이 터 를 가 져 올 수 있 습 니 다.
remap_tablespace                              원래 의 시계 공간: 새로운 시계 공간
remap_schema                                  원래 schema: 새로운 schema (문자 집합)
RMAN 증분 백업
이해 차이 가 너무 크 면 추 태 를 보이 지 않 는 다.
RMAN 백업 데이터
RMAN 복구 데이터
Oracle RMAN 증분 백업 전체 복구 테스트
다음은 RMAN 증분 백업 스 크 립 트 (ORACLE SID 와 DUMP DIR 을 변경 해 야 함) 입 니 다.
증분 백업 등급 0: full backup 에 해당 하 며 전체 datafile blocks 를 백업 하면 증분 백업 의 출발점 이 될 수 있 습 니 다.1 - 4: 이 등급 은 2 개의 백업 모드 차이 점 증분 백업 이 있 습 니 다. 백업 은 level n or lower 의 변경 블록 을 포함 하고 n 은 지정 할 수 있 습 니 다.lower 는 큰 디지털 누적 성 증분 백업 입 니 다. 백업 은 level n - 1 or lower 의 변경 블록 을 포함 합 니 다. n 은 차이 점 증분 백업 은 백업 이 매일 바 뀌 는 블록 이 고 누적 성 증분 백업 은 출발점 에서 며칠 동안 바 뀌 는 블록 입 니 다.
백업 효과:
주 를 한 주기 로 하고 일요일 을 시작 으로 일요일 에 한 번 씩 준비 하고 월요일, 화요일, 수요일 에 누적 적 인 증분 백업 을 하 며 목요일 에 차이 점 증분 백업 을 하고 금요일, 토요일 에 누적 적 인 증분 백업 을 하 며 매달 1 일 에 한 번 씩 제거 합 니 다.
#!/bin/bash
source /home/oracle/.bash_profile
#ORACLE_SID=ORACLE_SID  # ORACLE_SID
#ORACLE_HOME=  #ORACLE_HOME
echo "ORACLE_SID = ${ORACLE_SID},ORACLE_HOME = $ORACLE_HOME"
LOGFILE=`dirname $0`/orabkup.log
echo "see logfile in "$LOGFILE
date=`date +%Y-%m-%d`
echo "----------------------------start backup ----------------------------------" >> $LOGFILE
date >>$LOGFILE
#every 1th day of month truncate the logfile
dy=`date +%d`
if [ $dy -eq 1 ]; then
 cat /dev/null > $LOGFILE
fi
unset dy

WEEK_DAILY=`date +%a`
case  "$WEEK_DAILY" in
      "Mon")
           BAK_LEVEL=2;;
      "Tue")
           BAK_LEVEL=2;;
      "Wed")
           BAK_LEVEL=2;;
      "Thu")
           BAK_LEVEL=1;;
      "Fri")
           BAK_LEVEL=2;;
      "Sat")
           BAK_LEVEL=2;;
      "Sun")
           BAK_LEVEL=0;;
      "*")
           BAK_LEVEL=error
esac
echo "Today is $WEEK_DAILY ,backup level is $BAK_LEVEL" >> $LOGFILE

$ORACLE_HOME/bin/rman target / 1>>$LOGFILE  <run{ allocate channel c1 device type disk;
    allocate channel c2 device type disk;
    allocate channel c3 device type disk;
    allocate channel c4 device type disk;
    crosscheck backup;
backup as compressed backupset
   incremental level $BAK_LEVEL tag '${ORACLE_SID}_lev_$BAK_LEVEL'
database include current controlfile format 'DUMP_DIR/${ORACLE_SID}_%U_%T.bak';
release channel c1;
release channel c2;
release channel c3;
release channel c4;
sql 'alter system archive log current';
delete noprompt expired backup;
delete noprompt obsolete device type disk;
crosscheck archivelog all;
delete noprompt expired archivelog all;
delete noprompt archivelog all completed before 'sysdate-7';
#exit
}
EOF

date >>$LOGFILE
echo "---------------------------end backup ----------------------------------" >> $LOGFILE

좋은 웹페이지 즐겨찾기