暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

rman备份恢复相关

larntor 2024-01-08
148

---------------------全备

RMAN_LOG_FILE=orcl_full_`date +%Y%m%d`.log
export ORACLE_SID=orcl
rman target / log=/data/oracle/rmanbackup/ORCLBAK/$RMAN_LOG_FILE append <<EOF
crosscheck backup;
crosscheck archivelog all;
crosscheck copy;
delete noprompt expired backup;
delete noprompt obsolete;
delete noprompt expired archivelog all;
run {
allocate channel t1 type disk;
allocate channel t2 type disk;
allocate channel t3 type disk;
allocate channel t4 type disk;
backup as compressed backupset INCREMENTAL LEVEL 0 FILESPERSET 10 FORMAT '/data/oracle/rmanbackup/ORCLBAK/orcl_data_%T_%s' database;
backup format '/data/oracle/rmanbackup/ORCLBAK/orcl_cont_%s_%T' current controlfile;
backup archivelog all format '/data/oracle/rmanbackup/ORCLBAK/orcl_archivelog_%U.bak';
BACKUP FORMAT '/data/oracle/rmanbackup/ORCLBAK/orcl_spfile_%s_%p_%t' SPFILE;
release channel t1;
release channel t2;
release channel t3;
release channel t4;
}
exit;
EOF

-------------------------恢复

restore controlfile from '/data/oracle/rmanbackup/ORCLBAK/orcl_cont_9574_20230718'; 

run {
allocate channel t1 type disk;
allocate channel t2 type disk;
allocate channel t3 type disk;
allocate channel t4 type disk;
restore database;
recover database;
release channel t1;
release channel t2;
release channel t3;
release channel t4;
}

-------------

catalog start with '/data/oracle/rmanbackup/ORCLBAK';

recover database until scn 12367183938339;

---恢复归档

restore ARCHIVELOG until sequence 97;

set archivelog destination to '/data/oracle/dmp';

restore archivelog from sequence 114814 until sequence 114893;

restore archivelog from sequence 155600 thread 2 until sequence 155700 thread 2;

restore ARCHIVELOG FROM TIME "to_date('01/17/22 16:30:01','MM/DD/YY HH24:MI:SS')" UNTIL TIME "to_date('01/17/22 23:40:01','MM/DD/YY HH24:MI:SS')";

--------注册归档

alter database register logfile '/data/oracle/dmp/2_73997_1018702018.dbf'; 

begin
for i in 139830..139858 loop
execute immediate 'alter database register logfile ''/data/oracle/dmp/2_'||i||'_1074284574.dbf''';
end loop;
end;
/  

---------------------------------------nbu恢复相关

/usr/openv/netbackup/bin/bplist -S  xxxxxxxxxxxxxx -C xxxxxxxxxx  -t 4 -b -l -R /       #####-k 策略名

run
{
allocate channel t1 type 'sbt_tape' ;
send 'NB_ORA_CLIENT=xxxxxxx,NB_ORA_SERV=xxxxxxxxxxxxxx';
restore primary controlfile from 'cntrl_1741_1_1119836214';
release channel t1;
}


date
rman target / log=/home/oracle/restore_orcl0424.log <<EOF
RUN{
ALLOCATE CHANNEL CH1 TYPE 'SBT_TAPE' parms 'ENV=(NB_ORA_CLIENT=xxxxxxxxx)';
ALLOCATE CHANNEL CH2 TYPE 'SBT_TAPE' parms 'ENV=(NB_ORA_CLIENT=xxxxxxxxxxxxx)';
ALLOCATE CHANNEL CH3 TYPE 'SBT_TAPE' parms 'ENV=(NB_ORA_CLIENT=xxxxxxxxxxxxxxxxxxx)';
ALLOCATE CHANNEL CH4 TYPE 'SBT_TAPE' parms 'ENV=(NB_ORA_CLIENT=xxxxxxxxxxxxxxx)';
SEND DEVICE TYPE 'SBT_TAPE' 'NB_ORA_SERV=xxxxxxxxxxxxxxxxxxxxxx';
sql 'alter session set nls_date_format="YYYY-MM-DD HH24:MI:SS"';
SET UNTIL TIME ='2023-04-17 00:00:00';
set newname for database to '/data/oracle/oradata/ORCL/%b';
restore database;
release channel CH1;
release channel CH2;
release channel CH3;
release channel CH4;}
exit;
EOF
date

rman>switch database to copy;


date
rman target / log=/home/oracle/recover_orcl0424.log <<EOF
RUN{
ALLOCATE CHANNEL CH1 TYPE 'SBT_TAPE' parms 'ENV=(NB_ORA_CLIENT=xxxxxxxxxxxxxxxxxx)';
ALLOCATE CHANNEL CH2 TYPE 'SBT_TAPE' parms 'ENV=(NB_ORA_CLIENT=xxxxxxxxxxxxxxxxxxxxxxxxxxxxx)';
ALLOCATE CHANNEL CH3 TYPE 'SBT_TAPE' parms 'ENV=(NB_ORA_CLIENT=xxxxxxxxxxxxxxxxxxxxxxxxxxx)';
ALLOCATE CHANNEL CH4 TYPE 'SBT_TAPE' parms 'ENV=(NB_ORA_CLIENT=xxxxxxxxxxxxxxxxxxxxx)';
SEND DEVICE TYPE 'SBT_TAPE' 'NB_ORA_SERV=xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx';
sql 'alter session set nls_date_format="YYYY-MM-DD HH24:MI:SS"';
SET UNTIL TIME ='2023-06-14 00:00:00';
recover database;
release channel CH1;
release channel CH2;
release channel CH3;
release channel CH4;}
exit;
EOF
date

---------------------------

报错:
ORA-19554: error allocating device, device type: SBT_TAPE, device name:
ORA-27211: Failed to load Media Management Library
解决办法:
$ ln -s /usr/openv/netbackup/bin/libobk.so64 $ORACLE_HOME/lib/libobk.so
$ /usr/openv/netbackup/bin/oracle_link

-------------------------------------------------------------------------

--19c 10以下的小版本可能碰到在open resetlogs 时hang住,

需要设置隐含参数

alter system set "_min_undosegs_for_parallel_fptr"=0 scope=both sid='*' ;

然后重新open

--先清理掉部分不需要的redolog

select group#,member from v$Logfile;

alter database drop logfile group 6;

select distinct 'alter database drop logfile group '||group#||';' from v$Logfile;

alter database clear unarchived logfile  group 14;

alter database drop logfile group 14;

...

alter database add logfile group 3 ('/data1/oradata/testfms/redo03.log') size 500m;

alter database add logfile thread 1 group 3('+arch') size 1G;

--打开数据库

alter database open resetlogs;

--禁用threa2

alter database disable thread 2; 

--清理temp

select tablespace_name from dba_tablespaces where contents='TEMPORARY';

create temporary tablespace temp1 tempfile  '/data/oracle/oradata/orcl/temp02.dbf'  size 100m;

alter database default temporary tablespace temp1;

drop tablespace temp including contents and datafiles;

create temporary tablespace temp tempfile  '/data/oracle/oradata/orcl/temp01.dbf'  size 30G;

alter database default temporary tablespace temp;

drop tablespace temp1 including contents and datafiles;

--清理undo

select tablespace_name from dba_tablespaces where contents='UNDO'; 

drop tablespace undotbs2 including contents and datafiles;

----------19cpdb service

exec dbms_service.create_service('xxxxx','xxxxx');
exec dbms_service.start_service('xxxx');
exec dbms_service.stop_service('xxxx');
exec dbms_service.delete_service('xxxxx');
set lines 200
col name for a20
col pdb for a20
select con_id,name,enabled,pdb from cdb_Services order by 1;

--------------------------版本不一致,需重新编译

SQL> spool catout.log

SQL> startup upgrade;

SQL> set echo on

SQL> @$ORACLE_HOME/rdbms/admin/catalog.sql   <--------------$ORACLE_HOME/rdbms/admin

SQL> @$ORACLE_HOME/rdbms/admin/catproc.sql  <--------------$ORACLE_HOME/rdbms/admin

SQL> @$ORACLE_HOME/rdbms/admin/utlrp.sql      <--------------$ORACLE_HOME/rdbms/admin

SQL> spool off

SQL> shutdown immediate;

SQL> startup;

------------------------------------------------------exp相关

USERID='/ as sysdba'
directory=dmp
dumpfile=xxxxxx_uat0726_%U.dmp
logfile=xxxxxxxxxx_user0726.log
parallel=8
schemas=(xxxxxxx,xxxx)
cluster=N
compression=all
exclude=STATISTICS

空间不够,导出到asm磁盘,创建目录obak create directory obak as '+data/obak';

USERID='/ as sysdba'
directory=obak
dumpfile=xxxxxx_uat0726_%U.dmp
logfile=dmp:xxxxxxx_user0726.log
parallel=8
schemas=(xxxxxxx,xxxx)
cluster=N
compression=all
exclude=STATISTICS

exclude=table:"in('xxxxxxxxxx','xxxxx'),STATISTICS

------导入

USERID='/ as sysdba'
directory=dmp
logfile=xxxxxxx_user0105.log
dumpfile=xxxxxxx_osit0104_%U.dmp
parallel=8

cluster=N

exclude=table:"in('xxxxxxxxxx','xxxxx'),STATISTICS

remap_schema=xxxxx:xxxxxx0101

-通过dblink导入

USERID='/ as sysdba'
directory=dmp
logfile=xxxxxxxx_user0519.log
NETWORK_LINK=xxxxxx
parallel=8
schemas=(xxxx,xxxxxxxxx)
cluster=N

-----导入指定表

USERID='/ as sysdba'
directory=dmp
logfile=xxxxxxxx_mtableesp0105.log
dumpfile=xxxxxxxx_sit_0104.dmp
tables=(
xxxxx.xxxxxxxxxxxxxxxxxxxxx,
xxxxx.xxxxxxxxxxxxxxxxxxxxxxxx)
remap_schema=xxxx:xxxxxxxxxxxxxxxxxxxxxxx
EXCLUDE=STATISTICS 

---------------------------------------------导入导出分区表exp

nohup exp xxxx/"xxxxxx"@xxxxxx file=xxxxxx122508.dmp tables=xxxx.xxxxxx:xxxxxxx_2023M9,xxxxx.xxxxxxx:xxxxxxx_2023M10 &

nohup imp xxxx/"xxxxxxx" file=/data/oracle/dumpdir/xxxxxxxxx07.dmp log=/data/oracle/dumpdir/log/xxxxxxx.log tables=xxxx:xxxxxxx_2023Q3,xxxxx:xxxxxx_2023Q4 buffer=40960000 commit=y fromuser=xxxx touser=xxxxxx ignore=y &

------------序列

impdp "'/ as sysdba'" directory= dumpfile=xxxxxx_0104.dmp logfile=xxxxxsequence_0104.log sqlfile=xxxxxxx_seq.sql include=sequence 

------------------收集统计信息

exec dbms_stats.gather_schema_stats(ownname=>'xxxxxxx',estimate_percent=>DBMS_STATS.AUTO_SAMPLE_SIZE,degree=>16,cascade=>true,granula
rity=>'ALL');

exec DBMS_STATS.GATHER_TABLE_STATS(ownname=>'xxxxxxx',tabname=>'xxxxxx',method_opt=>'for all columns size auto',cascade=>true,force=>true,degree=>16,no_invalidate=>false);

-- no_invalidate=>false 立即失效

-----------------------sqlldr2

cd $ORACLE_HOME/bin
chmod 775 sqluldr2_linux64_10204.bin
ln -s sqluldr2_linux64_10204.bin sqluldr2

sqluldr2 xxxxx/xxxxxxxx@xxxxxx:1521/orcl sql=/data/dumpdir/xxxx.sql head=yes file=/data/dumpdir/xxxxxx0227.csv log=/data/dumpdir/xxxxx0202.log charset=AL32UTF8 

sqlldr userid=xxxx/xxxxxxx@xxxxxx:1521/orcl  control=xxxxxx.ctl direct=true 

options(skip=1,columnarrayrows=20971520,rows=10000,readsize=20971520,errors=999999999)
load data
CHARACTERSET AL32UTF8
infile '/data/dumpdir/xxxxx.csv'
insert into table "xxxxx"
fields terminated by ','
Optionally enclosed by '\''
(xxxx)

---------有换行符时

UPDATE xxxx SET xxxx = REPLACE(v_sn, CHR(13), '');

最后修改时间:2024-01-08 14:49:55
「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论