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

实战oracle 19c rac部署rman备份策略

原创 jieguo 2023-06-06
2359

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

image.png
image.png

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

image.png
image.png

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> 

image.png

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;

image.png

7.常见错误

7.1 ORA-27369: job of type EXECUTABLE failed with exit code: 255 execve: Exec format error

image.png

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用户和属主,无权限读取。
image.png
处理办法:
在数据库服务器任意节点,对于已存在的文件,在oracle用户下执行su - oracle
chmod -R 777 /bak/rman,为解决新备份文件的权限问题,则在备份脚本末尾增加赋权命令即可:chmod -R 777 /bak/rman
image.png

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/

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

评论