RMAN备份要求:每周日18点全备,其它日期同时间增备,保留两个全备份
rman target /
CONFIGURE RETENTION POLICY TO REDUNDANCY 2;
CONFIGURE RETENTION POLICY TO RECOVERY WINDOW OF 15 DAYS;--要么windows要么redundancy,一般选择windows合理
CONFIGURE RMAN OUTPUT TO KEEP FOR 15 DAYS;
1.准备足够的备份空间:此次直接备份到nfs异机。(根据表空间占用评估备份空间)
注意两个节点都需要挂接NFS
挂接备份路径
mount -t nfs -o rw,bg,hard,rsize=32768,wsize=32768,vers=3,nointr,proto=tcp 192.168.0.111:/data /bak
mkdir /bak/rman
确认oracle用户可写 touch /bak/rman/1.txt
修改/etc/fstab保证重启自动挂接:
192.168.0.111:/data /bak nfs rw,bg,hard,rsize=32768,wsize=32768,vers=3,nointr,proto=tcp,_netdev 0 0
自动挂接测试:
umount /bak
mount -a
df -hT确认可以看到如下截图挂接成功,并且oracle用户可写。
cd /bak
touch 1.txt
2.启用rman备份跟踪
SQL> alter database enable block change tracking using file '+DATA';
SQL> select status,filename from v$block_change_tracking;
STATUS
----------
FILENAME
--------------------------------------------------------------------------------
ENABLED
+DATA/JYC/CHANGETRACKING/ctf.340.1138815317
3.准备备份脚本并测试:(准确记录备份时间和备份大小,评估应该设定的备份开始和结束时间)
注意在两个节点的相同路径都存放相同脚本。
[oracle@rac1 bak]$ pwd
/home/oracle/bak
[oracle@rac1 bak]$ ll
total 12
-rwxr-xr-x 1 oracle oinstall 745 Jun 6 17:57 jycdb_full_jycdb.sh
-rwxr-xr-x 1 oracle oinstall 701 Jun 6 18:00 jycdb_incr_jycdb.sh
-rwxr-xr-x 1 oracle oinstall 532 Jun 6 17:33 expdp_job.sh
[oracle@rac1 bak]$ more jycdb_incr_jycdb.sh
#!/bin/bash
echo -e '******Start********_'$(date '+%Y-%m-%d %H:%M:%S')
source /home/oracle/.bash_profile
rman target / log=/bak/rman/jycdb_incr_`date +%Y%m%d-%H%M%S`.log <<EOF
run{
allocate channel c1 type disk;
allocate channel c2 type disk;
backup as compressed backupset incremental level 1 tag 'jycdb_incr_level_1' format '/bak/rman/jycdb_incr_%d_%T_%s' database include current controlfile;
backup as compressed backupset archivelog all format '/bak/rman/jycdb_arch_1_%s_%p_%t_%d' delete input;
crosscheck backup;
delete noprompt expired backup;
delete noprompt obsolete;
crosscheck archivelog all;
delete noprompt expired archivelog all;
release channel c1;
release channel c2;
}
exit;
EOF
[oracle@rac1 bak]$ cat jycdb_full_jycdb.sh
#!/bin/bash
echo -e '******Start********_'$(date '+%Y-%m-%d %H:%M:%S')
source /home/oracle/.bash_profile
find /bak/rman/ -mtime +15 -name "jycdb_*" -exec rm -f {} \;
rman target / log=/bak/rman/full_jycdb_`date +%Y%m%d-%H%M%S`.log <<EOF
run{
allocate channel c1 type disk;
allocate channel c2 type disk;
backup as compressed backupset incremental level 0 tag 'jycdb_incr_level_0' format '/bak/rman/jycdb_full_%d_%T_%s' database include current controlfile;
backup as compressed backupset archivelog all format '/bak/rman/jycdb_arch_0_%s_%p_%t_%d' delete input;
crosscheck backup;
delete noprompt expired backup;
delete noprompt obsolete;
crosscheck archivelog all;
delete noprompt expired archivelog all;
release channel c1;
release channel c2;
}
exit;
EOF
测试:
nohup ./jycdb_full_jycdb.sh > ./1.log &
tail -f 1.log
4.查看备份进度(测试时):
col opname format a32
col target_desc format a32
col perwork format a12
set lines 160
set wrap off
select sid,OPNAME,TARGET_DESC,sofar,TOTALWORK,TIME_REMAINING,ELAPSED_SECONDS from v$session_longops where sofar!=totalwork;
新开窗口观察备份增长
watch -n 1 du -sm rman
新开窗口观察网络流量
sar -n DEV 1
新开窗口观察CPU、IO压力
sar 1 100000
iostat -dm 1
5.使用oracle任务计划做备份任务(当然也可以在操作系统crontab任务中配置计划,只需在任意1个节点部署运行即可;由于此次在oracle库中配置,所以需要注意应在两节点挂接nfs和存放相同备份脚本)
[oracle@rac1 bak]$ sqlplus / as sysdba
SQL*Plus: Release 19.0.0.0.0 - Production on Tue Jun 6 19:39:24 2023
Version 19.18.0.0.0
Copyright (c) 1982, 2022, Oracle. All rights reserved.
Connected to:
Oracle Database 19c Enterprise Edition Release 19.0.0.0.0 - Production
Version 19.18.0.0.0
SQL> show pdbs;
CON_ID CON_NAME OPEN MODE RESTRICTED
---------- ------------------------------ ---------- ----------
2 PDB$SEED READ ONLY NO
3 JYCDB READ WRITE NO
SQL> set linesize 500;
SQL> col NEXT_RUN_DATE format a50
SQL> col OBJECT_NAME format a30
SQL> select obj#, object_name, next_run_date from sys.scheduler$_job ssj, dba_objects dob where ssj.obj# = dob.object_id and object_name like 'JYCDB_BAK%';
no rows selected
SQL> select obj#, object_name, next_run_date from sys.scheduler$_job ssj, dba_objects dob where ssj.obj# = dob.object_id;
OBJ# OBJECT_NAME NEXT_RUN_DATE
---------- ------------------------------ --------------------------------------------------
19685 PURGE_LOG 07-JUN-23 03.00.00.654753 AM PST8PDT
19688 FILE_WATCHER
19694 PMO_DEFERRED_GIDX_MAINT_JOB 07-JUN-23 02.00.00.065217 AM PST8PDT
19695 CLEANUP_NON_EXIST_OBJ 06-JUN-23 10.58.25.141697 PM +08:00
19696 CLEANUP_ONLINE_IND_BUILD 06-JUN-23 05.14.27.319985 AM -07:00
19697 CLEANUP_TAB_IOT_PMO 06-JUN-23 05.14.37.287152 AM -07:00
19698 CLEANUP_TRANSIENT_TYPE 06-JUN-23 10.58.25.096625 PM +08:00
19699 CLEANUP_TRANSIENT_PKG 06-JUN-23 05.14.57.000000 AM -07:00
19700 CLEANUP_ONLINE_PMO 06-JUN-23 05.15.07.887309 AM -07:00
19701 FILE_SIZE_UPD 16-MAR-24 10.58.06.209593 AM +08:00
19817 ORA$AUTOTASK_CLEAN 07-JUN-23 03.00.00.607016 AM PST8PDT
OBJ# OBJECT_NAME NEXT_RUN_DATE
---------- ------------------------------ --------------------------------------------------
19820 HM_CREATE_OFFLINE_DICTIONARY
19821 DRA_REEVALUATE_OPEN_FAILURES
20151 ORA$PREPLUGIN_BACKUP_JOB
20642 BSLN_MAINTAIN_STATS_JOB 11-JUN-23 12.00.00.417570 AM -07:00
20708 FGR$AUTOPURGE_JOB
20709 RSE$CLEAN_RECOVERABLE_SCRIPT 07-JUN-23 12.00.00.300713 AM PRC
20710 SM$CLEAN_AUTO_SPLIT_MERGE 07-JUN-23 12.00.00.312885 AM PRC
20863 LOAD_OPATCH_INVENTORY
22395 XMLDB_NFS_CLEANUP_JOB
76100 MGMT_CONFIG_JOB 07-JUN-23 01.01.01.068116 AM +08:00
76101 MGMT_STATS_CONFIG_JOB 01-JUL-23 01.01.01.364332 AM +08:00
OBJ# OBJECT_NAME NEXT_RUN_DATE
---------- ------------------------------ --------------------------------------------------
91874 LOAD_OPATCH_INVENTORY_2
91873 LOAD_OPATCH_INVENTORY_1
24 rows selected.
SQL> select job_name, job_type, enabled, state from user_scheduler_jobs where job_name like 'JYCDB_BAK%';
no rows selected
SQL>
在BYDAY参数指定周日(BYDAY=SUN),执行时间指定 1 点(BYHOUR=18):
begin
dbms_scheduler.create_job
(
job_name => 'JYCDB_BAK_LEVEL_0',
job_type => 'EXECUTABLE',
job_action => '/home/oracle/bak/jycdb_full_jycdb.sh',
repeat_interval => 'FREQ=WEEKLY; BYDAY=SUN; BYHOUR=18;BYMINUTE=0;BYSECOND=0',
enabled => true,
comments => 'JYCDB Backup JOB LEVEL_0'
);
end;
/
增量备份任务,指定每周从周一到周六,每天18点执行;
在BYDAY参数指定周一至周六(BYDAY=MON,TUE,WED,THU,FRI,SAT):
begin
dbms_scheduler.create_job
(
job_name => 'JYCDB_BAK_LEVEL_1',
job_type => 'EXECUTABLE',
job_action => '/home/oracle/bak/jycdb_incr_jycdb.sh',
repeat_interval => 'FREQ=WEEKLY; BYDAY=MON,TUE,WED,THU,FRI,SAT; BYHOUR=18;BYMINUTE=0;BYSECOND=0',
enabled => true,
comments => 'JYCDB Backup JOB LEVEL_1'
);
end;
/
设置属性参考:
exec dbms_scheduler.set_attribute(name => 'JYCDB_BAK_LEVEL_0',attribute => 'REPEAT_INTERVAL',value => 'FREQ=WEEKLY; BYDAY=SUN; BYHOUR=18;BYMINUTE=0;BYSECOND=0');
exec dbms_scheduler.set_attribute(name => 'JYCDB_BAK_LEVEL_1',attribute => 'REPEAT_INTERVAL',value => 'FREQ=WEEKLY; BYDAY=MON,TUE,WED,THU,FRI,SAT; BYHOUR=18;BYMINUTE=0;BYSECOND=0');
exec dbms_scheduler.set_attribute(name => 'JYCDB_BAK_LEVEL_0',attribute => 'INSTANCE_ID',value => 1);
SQL> select job_name, job_type, enabled, state from user_scheduler_jobs where job_name like 'JYCDB_BAK%';
JOB_NAME JOB_TYPE ENABL STATE
-------------------------------------------------------------------------------------------------------------------------------- ---------------- ----- --------------------
JYCDB_BAK_LEVEL_0 EXECUTABLE TRUE SCHEDULED
JYCDB_BAK_LEVEL_1 EXECUTABLE TRUE SCHEDULED
SQL> select obj#, object_name, next_run_date from sys.scheduler$_job ssj, dba_objects dob where ssj.obj# = dob.object_id and object_name like 'JYCDB_BAK%';
OBJ# OBJECT_NAME NEXT_RUN_DATE
---------- ------------------------------ --------------------------------------------------
94313 JYCDB_BAK_LEVEL_0 11-JUN-23 06.40.46.570439 PM PRC
94314 JYCDB_BAK_LEVEL_1 07-JUN-23 06.40.59.627431 PM PRC
SQL> select log_id, log_date, status from user_scheduler_job_run_details where job_name like 'JYCDB_BAK%';
no rows selected
SQL>
6.备份检查:
至少观察一周,确保备份结果符合预期,不影响业务性能。
测试可能用到的命令:
exec DBMS_SCHEDULER.drop_JOB(job_name=>'JYCDB_BAK_LEVEL_1');
exec DBMS_SCHEDULER.run_JOB(job_name=>'JYCDB_BAK_LEVEL_1');
查看执行结果:
set line 180
set wrap off
col JOB_NAME for a30
col STATUS for a10
col ACTUAL_START_DATE for a20
col RUN_DURATION for a16
select JOB_NAME,INSTANCE_ID,STATUS,ERROR#,ACTUAL_START_DATE,RUN_DURATION,ADDITIONAL_INFO from dba_scheduler_job_run_details where job_name like 'JYCDB_BAK%' order by ACTUAL_START_DATE desc;
7.常见错误
7.1 ORA-27369: job of type EXECUTABLE failed with exit code: 255 execve: Exec format error
BEGIN DBMS_SCHEDULER.run_JOB(job_name=>'JYCDB_BAK_LEVEL_1'); END;
*
ERROR at line 1:
ORA-27369: job of type EXECUTABLE failed with exit code: 255 execve: Exec
format error
ORA-06512: at "SYS.DBMS_ISCHED", line 242
ORA-06512: at "SYS.DBMS_SCHEDULER", line 566
ORA-06512: at line 1
处理办法:脚本头增加
#!/bin/bash
7.2 ORA-27369: job of type EXECUTABLE failed with exit code: No such file or directory
select JOB_NAME,STATUS,ERROR#,ACTUAL_START_DATE,RUN_DURATION,ADDITIONAL_INFO,ERRORS from dba_scheduler_job_run_details where job_name like 'JYCDB_BAK%';
JOB_NAME
------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
STATUS ERROR# ACTUAL_START_DATE
------------------------------ ---------- ---------------------------------------------------------------------------
RUN_DURATION
---------------------------------------------------------------------------
ADDITIONAL_INFO
------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
ERRORS
------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
JYCDB_BAK_LEVEL_1
FAILED 2 07-JUN-23 06.40.59.840001 PM PRC
+000 00:00:00
JOB_NAME
------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
STATUS ERROR# ACTUAL_START_DATE
------------------------------ ---------- ---------------------------------------------------------------------------
RUN_DURATION
---------------------------------------------------------------------------
ADDITIONAL_INFO
------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
ERRORS
------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
ORA-27369: job of type EXECUTABLE failed with exit code: No such file or directory
检查两个节点的alert日志,发现节点1正常,而节点2的alert日志有报错如下:
Errors in file /oracle/app/oracle/diag/rdbms/jyc/jyc2/trace/jyc2_j000_20581.trc:
ORA-12012: error on auto execute of job "SYS"."JYCDB_BAK_LEVEL_1"
ORA-27369: job of type EXECUTABLE failed with exit code: No such file or directory
2023-06-07T22:00:00.081080+08:00
Setting Resource Manager CDB plan DEFAULT_MAINTENANCE_PLAN via parameter
2023-06-07T22:00:00.152945+08:00
JYCDB(3):Setting Resource Manager plan SCHEDULER[0x4D51]:DEFAULT_MAINTENANCE_PLAN via scheduler window
JYCDB(3):Setting Resource Manager plan DEFAULT_MAINTENANCE_PLAN via parameter
2023-06-08T00:01:13.263519+08:00
TABLE SYS.WRP$_REPORTS_TIME_BANDS: ADDED INTERVAL PARTITION SYS_P1434 (4906) VALUES LESS THAN (TO_DATE(' 2023-06-08 01:00:00', 'SYYYY-MM-DD HH24:MI:SS', 'NLS_CALENDAR=GREGORIAN'))
2023-06-08T01:00:33.778381+08:00
TABLE SYS.WRP$_REPORTS: ADDED INTERVAL PARTITION SYS_P1435 (4907) VALUES LESS THAN (TO_DATE(' 2023-06-09 01:00:00', 'SYYYY-MM-DD HH24:MI:SS', 'NLS_CALENDAR=GREGORIAN'))
TABLE SYS.WRP$_REPORTS_DETAILS: ADDED INTERVAL PARTITION SYS_P1436 (4907) VALUES LESS THAN (TO_DATE(' 2023-06-09 01:00:00', 'SYYYY-MM-DD HH24:MI:SS', 'NLS_CALENDAR=GREGORIAN'))
2023-06-08T02:00:00.104176+08:00
Closing Resource Manager plan via scheduler window
Clearing Resource Manager CDB plan via parameter
2023-06-08T02:00:00.136410+08:00
JYCDB(3):Closing scheduler window
JYCDB(3):Closing Resource Manager plan via scheduler window
JYCDB(3):Clearing Resource Manager plan via parameter
2023-06-08T06:30:33.287999+08:00
Thread 2 advanced to log sequence 572 (LGWR switch), current SCN: 65077905
Current log# 9 seq# 572 mem# 0: +DATA/JYC/ONLINELOG/group_9.292.1131713213
2023-06-08T06:30:35.597431+08:00
ARC1 (PID:13798): Archived Log entry 2155 added for T-2.S-571 ID 0x179d9e75 LAD:1
[oracle@rac2 trace]$
[oracle@rac2 trace]$ more /oracle/app/oracle/diag/rdbms/jyc/jyc2/trace/jyc2_j000_20581.trc
Trace file /oracle/app/oracle/diag/rdbms/jyc/jyc2/trace/jyc2_j000_20581.trc
Oracle Database 19c Enterprise Edition Release 19.0.0.0.0 - Production
Version 19.18.0.0.0
Build label: RDBMS_19.18.0.0.0DBRU_LINUX.X64_230111
ORACLE_HOME: /oracle/app/oracle/product/19c/dbhome_1
System name: Linux
Node name: rac2
Release: 5.4.17-2102.201.3.el7uek.x86_64
Version: #2 SMP Fri Apr 23 09:05:55 PDT 2021
Machine: x86_64
Instance name: jyc2
Redo thread mounted by this instance: 2
Oracle process number: 236
Unix process pid: 20581, image: oracle@rac2 (J000)
*** 2023-06-07T18:40:59.932362+08:00 (CDB$ROOT(1))
*** SESSION ID:(3390.19105) 2023-06-07T18:40:59.932413+08:00
*** CLIENT ID:() 2023-06-07T18:40:59.932419+08:00
*** SERVICE NAME:(SYS$USERS) 2023-06-07T18:40:59.932424+08:00
*** MODULE NAME:(DBMS_SCHEDULER) 2023-06-07T18:40:59.932428+08:00
*** ACTION NAME:(JYCDB_BAK_LEVEL_1) 2023-06-07T18:40:59.932433+08:00
*** CLIENT DRIVER:(SERVER) 2023-06-07T18:40:59.932437+08:00
*** CONTAINER ID:(1) 2023-06-07T18:40:59.932442+08:00
ORA-12012: error on auto execute of job "SYS"."JYCDB_BAK_LEVEL_1"
<error barrier> at 0x7ffd173fbd90 placed jslv.c@1927
ORA-27369: job of type EXECUTABLE failed with exit code: No such file or directory
[oracle@rac2 trace]$ pwd
/oracle/app/oracle/diag/rdbms/jyc/jyc2/trace
上述错误是因为任务在rac2上运行了,而rac2上忘记放置相应的备份脚本以及未挂接nfs目录导致。
7.3 umount.nfs: /bak: device is busy
[root@rac2 ~]# cd /
[root@rac2 /]# umount /bak
umount.nfs: /bak: device is busy
[root@rac2 /]# df -h
Filesystem Size Used Avail Use% Mounted on
devtmpfs 126G 0 126G 0% /dev
tmpfs 126G 2.1G 124G 2% /dev/shm
tmpfs 126G 450M 126G 1% /run
tmpfs 126G 0 126G 0% /sys/fs/cgroup
/dev/mapper/ol-root 495G 104G 392G 21% /
/dev/sr0 4.6G 4.6G 0 100% /media/cdrom
/dev/vda1 1014M 204M 811M 21% /boot
tmpfs 26G 0 26G 0% /run/user/54322
tmpfs 26G 0 26G 0% /run/user/54321
tmpfs 26G 0 26G 0% /run/user/0
192.168.0.111:/data 3.0T 251G 2.8T 9% /bak
[root@rac2 /]# ps -ef|grep rman
root 22777 3561 0 11:02 pts/2 00:00:00 grep --color=auto rman
[root@rac2 /]# umount -f /bak
umount.nfs: /bak: device is busy
[root@rac2 /]# fuser -m -v /bak
USER PID ACCESS COMMAND
/bak: root kernel mount /bak
oracle 30869 ..c.. bash
[root@rac2 /]# ps -ef|grep 30869
root 5496 3561 0 11:03 pts/2 00:00:00 grep --color=auto 30869
oracle 30869 30816 0 09:13 pts/0 00:00:00 -bash
[root@rac2 /]#
[root@rac2 /]# kill -9 30869
[root@rac2 /]# ps -ef|grep 30869
root 9914 3561 0 11:03 pts/2 00:00:00 grep --color=auto 30869
[root@rac2 /]# fuser -m -v /bak
USER PID ACCESS COMMAND
/bak: root kernel mount /bak
[root@rac2 /]# umount /bak
[root@rac2 /]# df -h
Filesystem Size Used Avail Use% Mounted on
devtmpfs 126G 0 126G 0% /dev
tmpfs 126G 2.1G 124G 2% /dev/shm
tmpfs 126G 449M 126G 1% /run
tmpfs 126G 0 126G 0% /sys/fs/cgroup
/dev/mapper/ol-root 495G 104G 392G 21% /
/dev/sr0 4.6G 4.6G 0 100% /media/cdrom
/dev/vda1 1014M 204M 811M 21% /boot
tmpfs 26G 0 26G 0% /run/user/54322
tmpfs 26G 0 26G 0% /run/user/0
[root@rac2 /]# cat /etc/fstab
#
# /etc/fstab
# Created by anaconda on Mon Mar 6 21:54:51 2023
#
# Accessible filesystems, by reference, are maintained under '/dev/disk'
# See man pages fstab(5), findfs(8), mount(8) and/or blkid(8) for more info
#
/dev/mapper/ol-root / xfs defaults 0 0
UUID=ab5d1dfb-39c6-4b21-bdb5-7ccc185e587e /boot xfs defaults 0 0
/dev/mapper/ol-swap swap swap defaults 0 0
/dev/sr0 /media/cdrom iso9660 ro 0 0
/home/swap/swap_file swap swap defaults 0 0
192.168.0.111:/data /bak nfs rw,bg,hard,rsize=32768,wsize=32768,vers=3,nointr,proto=tcp,_netdev 0 0
[root@rac2 /]#
[root@rac2 /]# mount -a
[root@rac2 /]# df -hT
Filesystem Type Size Used Avail Use% Mounted on
devtmpfs devtmpfs 126G 0 126G 0% /dev
tmpfs tmpfs 126G 2.1G 124G 2% /dev/shm
tmpfs tmpfs 126G 449M 126G 1% /run
tmpfs tmpfs 126G 0 126G 0% /sys/fs/cgroup
/dev/mapper/ol-root xfs 495G 104G 392G 21% /
/dev/sr0 iso9660 4.6G 4.6G 0 100% /media/cdrom
/dev/vda1 xfs 1014M 204M 811M 21% /boot
tmpfs tmpfs 26G 0 26G 0% /run/user/54322
tmpfs tmpfs 26G 0 26G 0% /run/user/0
192.168.0.111:/data nfs 3.0T 251G 2.8T 9% /bak
[root@rac2 /]# su - oracle
Last login: Thu Jun 8 11:00:39 CST 2023 on pts/2
[oracle@rac2 ~]$ cd /bak
[oracle@rac2 bak]$ touch 1.txt
[oracle@rac2 bak]$ rm 1.txt
[oracle@rac2 bak]$
或者不用kill命令,直接fuser -cvk /bak,不显示详细进程则去掉参数v,fuser -ck /bak即可。
[root@rac1 ~]# fuser -m -v /bak
USER PID ACCESS COMMAND
/bak: root kernel mount /bak
root 25535 ..c.. bash
root 32522 ..c.. bash
[root@rac1 ~]# fuser -cv /bak
USER PID ACCESS COMMAND
/bak: root kernel mount /bak
root 25535 ..c.. bash
root 32522 ..c.. bash
[root@rac1 ~]# fuser -mv /bak
USER PID ACCESS COMMAND
/bak: root kernel mount /bak
root 25535 ..c.. bash
root 32522 ..c.. bash
[root@rac1 ~]# ps -ef|grep 25535
root 17759 14821 0 11:13 pts/3 00:00:00 grep --color=auto 25535
root 19557 25535 0 09:16 pts/0 00:00:00 su - oracle
root 25535 22293 0 09:02 pts/0 00:00:00 -bash
[root@rac1 ~]# ps -ef|grep 32522
root 19858 14821 0 11:13 pts/3 00:00:00 grep --color=auto 32522
root 32522 22293 0 10:01 pts/2 00:00:00 -bash
[root@rac1 ~]#
[root@rac1 ~]#
[root@rac1 ~]#
[root@rac1 ~]# fuser -cvk /bak
USER PID ACCESS COMMAND
/bak: root kernel mount /bak
root 25535 ..c.. bash
root 32522 ..c.. bash
[root@rac1 ~]# fuser -mv /bak
USER PID ACCESS COMMAND
/bak: root kernel mount /bak
[root@rac1 ~]# fuser -cv /bak
USER PID ACCESS COMMAND
/bak: root kernel mount /bak
[root@rac1 ~]#
[root@rac1 ~]# fuser -ck /bak
[root@rac1 ~]# fuser -mv /bak
USER PID ACCESS COMMAND
/bak: root kernel mount /bak
[root@rac1 ~]# fuser -cv /bak
USER PID ACCESS COMMAND
/bak: root kernel mount /bak
如上操作记录,处理办法为fuser -m -v /bak找出占用的进程,kill -9掉。
7.4备份主机没权限读取拷贝备份的文件:
如下图,备份的主机用户和属主ID不存在实际的oracle用户和属主,无权限读取。
处理办法:
在数据库服务器任意节点,对于已存在的文件,在oracle用户下执行su - oracle
chmod -R 777 /bak/rman,为解决新备份文件的权限问题,则在备份脚本末尾增加赋权命令即可:chmod -R 777 /bak/rman
8.相关参考:
https://docs.oracle.com/en/database/oracle/oracle-database/19/arpls/DBMS_SCHEDULER.html#GUID-A24DEB5D-2EAF-4C0B-8715-30DC947B3F87
https://www.huoban.com/news/post/2505.html
https://www.modb.pro/db/619858
https://www.cnblogs.com/passby1/p/13690250.html
https://blog.csdn.net/meichuangkeji/article/details/108006505
https://dbamarco.wordpress.com/2023/11/