云上Oracle 数据库本地备份部署测试
1.说明
由于运行在云上的Oracle数据库暂无本地备份,为了保障租户业务系统的可持续性以及数据安全,特此进行数据库备份本地部署并进行测试。
2.备份策略
(1)数据库数据量
SQL> select sum(bytes)/1024/1024/1024 from dba_segments;
SUM(BYTES)/1024/1024/1024
-------------------------
98.9221191
(2)策略内容
根据租户数据量查询统计结果以及租户的业务场景,将租户数据库的备份策略设定如下:
备份类型:逻辑备份
备份方式:采用数据泵expdp导出方式
备份时间:每日0:00
备份保留时间:30天
3.备份部署准备
(1)环境准备
创建存储挂载目录:
mkdir /backup
chown oracle:oinstall /backup
(2)挂载备份存储
mount -t nfs -o vers=3,nolock 10.216.83.205:/ /backup
(3)创建备份存储目录
cd /backup
mkdir fullbackup
(4)创建备份路径
create directory fullbackup as '/backup/fullbackup';
grant read,write on directory fullbackup to public;
4.备份脚本测试
脚本测试环境为本地Oracle测试环境。
1.创建测试用户
create user c##test identfied by test;
grant dba to c##test;
conn c##test/test;
create table test0827 as select * from dba_objects;
create directory fullbackup as ‘/backup/fullbackup’;
grant read,write on directory fullbackup to public;
2.脚本内容
[oracle@rhel fullbackup]$ more fullbackup.sh
#!/bin/sh
#Oracle环境设置
export ORACLE_BASE=/u01/app/oracle
export ORACLE_HOME=$ORACLE_BASE/product/12.1.0/db_1
export ORACLE_SID=ora12c1
export NLS_LANG=AMERICAN_AMERICA.ZHS16GBK
export PATH=$PATH:/u01/app/oracle/product/12.1.0/db_1/bin:$ORACLE_HOME/OPatch
DMP_FILE=fullbackup_expdp_$(date +%Y%m%d%H%M).dmp
LOG_FILE=fullbackup_expdp_$(date +%Y%m%d%H%M).log
#expdp导出数据库开始
expdp 'system/"J(oXhc6bo3"' full=y directory=fullbackup DUMPFILE=$DMP_FILE logfile=$LOG_FILE;
3.执行测试脚本
[oracle@rhel fullbackup]$ chmod +x fullbackup.sh
[oracle@rhel fullbackup]$ ll
总用量 4
-rwxr-xr-x. 1 oracle oinstall 562 8月 27 15:51 fullbackup.sh
[oracle@rhel fullbackup]$ sh fullbackup.sh
Export: Release 23.0.0.0.0 - Production on 星期二 8月 27 15:51:08 2024
Version 23.4.0.24.05
Copyright (c) 1982, 2024, Oracle and/or its affiliates. All rights reserved.
连接到: Oracle Database 23ai Free Release 23.0.0.0.0 - Develop, Learn, and Run for Free
警告: 连接到容器数据库的根或种子时通常不需要 Oracle Data Pump 操作。
启动 "SYSTEM"."SYS_EXPORT_FULL_01": "system/********" full=y directory=fullbackup DUMPFILE=fullbackup_expdp_20240827.dmp logfile=fullbackup_expdp_20240827.log
处理对象类型 DATABASE_EXPORT/EARLY_OPTIONS/VIEWS_AS_TABLES/TABLE_DATA
处理对象类型 DATABASE_EXPORT/NORMAL_OPTIONS/TABLE_DATA
处理对象类型 DATABASE_EXPORT/NORMAL_OPTIONS/VIEWS_AS_TABLES/TABLE_DATA
处理对象类型 DATABASE_EXPORT/SCHEMA/TABLE/TABLE_DATA
处理对象类型 DATABASE_EXPORT/SCHEMA/TABLE/INDEX/STATISTICS/INDEX_STATISTICS
处理对象类型 DATABASE_EXPORT/SCHEMA/TABLE/STATISTICS/TABLE_STATISTICS
处理对象类型 DATABASE_EXPORT/TABLESPACE
处理对象类型 DATABASE_EXPORT/PROFILE
处理对象类型 DATABASE_EXPORT/SCHEMA/USER
处理对象类型 DATABASE_EXPORT/RADM_FPTM
处理对象类型 DATABASE_EXPORT/GRANT/SYSTEM_GRANT/PROC_SYSTEM_GRANT/RULE
处理对象类型 DATABASE_EXPORT/GRANT/SYSTEM_GRANT/PROC_SYSTEM_GRANT/AQ
处理对象类型 DATABASE_EXPORT/GRANT/SYSTEM_GRANT/PROC_SYSTEM_GRANT/SQL
处理对象类型 DATABASE_EXPORT/GRANT/SYSTEM_GRANT/PROC_SYSTEM_GRANT/JVM
处理对象类型 DATABASE_EXPORT/SCHEMA/GRANT/SYSTEM_GRANT
处理对象类型 DATABASE_EXPORT/SCHEMA/ROLE_GRANT
处理对象类型 DATABASE_EXPORT/SCHEMA/DEFAULT_ROLE
处理对象类型 DATABASE_EXPORT/SCHEMA/ON_USER_GRANT
处理对象类型 DATABASE_EXPORT/SCHEMA/TABLESPACE_QUOTA
处理对象类型 DATABASE_EXPORT/RESOURCE_COST
处理对象类型 DATABASE_EXPORT/TRUSTED_DB_LINK
处理对象类型 DATABASE_EXPORT/DIRECTORY/DIRECTORY
处理对象类型 DATABASE_EXPORT/DIRECTORY/GRANT/OWNER_GRANT/OBJECT_GRANT
处理对象类型 DATABASE_EXPORT/DIRECTORY/GRANT/CROSS_SCHEMA/OBJECT_GRANT
处理对象类型 DATABASE_EXPORT/SYSTEM_PROCOBJACT/PRE_SYSTEM_ACTIONS/PROCACT_SYSTEM/LOGREP
处理对象类型 DATABASE_EXPORT/SYSTEM_PROCOBJACT/PRE_SYSTEM_ACTIONS/PROCACT_SYSTEM/RMGR
处理对象类型 DATABASE_EXPORT/SYSTEM_PROCOBJACT/PROCOBJ/RMGR
处理对象类型 DATABASE_EXPORT/SYSTEM_PROCOBJACT/PROCOBJ/SCHEDULER
处理对象类型 DATABASE_EXPORT/SYSTEM_PROCOBJACT/POST_SYSTEM_ACTIONS/PROCACT_SYSTEM/RMGR
处理对象类型 DATABASE_EXPORT/SYSTEM_PROCOBJACT/POST_SYSTEM_ACTIONS/PROCACT_SYSTEM/SRVR
处理对象类型 DATABASE_EXPORT/SYSTEM_PROCOBJACT/POST_SYSTEM_ACTIONS/PROCACT_SYSTEM/SEC
处理对象类型 DATABASE_EXPORT/SCHEMA/PROCACT_SCHEMA/LOGREP
处理对象类型 DATABASE_EXPORT/EARLY_OPTIONS/VIEWS_AS_TABLES/TABLE
处理对象类型 DATABASE_EXPORT/NORMAL_OPTIONS/TABLE
处理对象类型 DATABASE_EXPORT/NORMAL_OPTIONS/VIEWS_AS_TABLES/TABLE
处理对象类型 DATABASE_EXPORT/SCHEMA/TABLE/TABLE
处理对象类型 DATABASE_EXPORT/SCHEMA/TABLE/COMMENT
处理对象类型 DATABASE_EXPORT/SCHEMA/TABLE/INDEX/INDEX
处理对象类型 DATABASE_EXPORT/AUDIT_UNIFIED/AUDIT_POLICY_ENABLE
. . 导出了 "SYS"."KU$_USER_MAPPING_VIEW" 6.1 KB 35 行
. . 导出了 "AUDSYS"."AUD$UNIFIED":"SYS_P202" 23.5 MB 13870 行
. . 导出了 "AUDSYS"."AUD$UNIFIED":"SYS_P301" 88.6 KB 71 行
. . 导出了 "AUDSYS"."AUD$UNIFIED":"SYS_P387" 67.9 KB 26 行
. . 导出了 "SYS"."SQL_LOG$" 0 KB 0 行
. . 导出了 "WMSYS"."WM$CONSTRAINTS_TABLE$" 0 KB 0 行
. . 导出了 "WMSYS"."WM$LOCKROWS_INFO$" 0 KB 0 行
. . 导出了 "WMSYS"."WM$UDTRIG_INFO$" 0 KB 0 行
. . 导出了 "SYS"."AUD$" 0 KB 0 行
. . 导出了 "SYSTEM"."REDO_DB" 27.2 KB 1 行
. . 导出了 "WMSYS"."WM$WORKSPACES_TABLE$" 12.5 KB 1 行
. . 导出了 "WMSYS"."WM$HINT_TABLE$" 10.1 KB 97 行
. . 导出了 "LBACSYS"."OLS$INSTALLATIONS" 7.1 KB 2 行
. . 导出了 "WMSYS"."WM$WORKSPACE_PRIV_TABLE$" 7.2 KB 11 行
. . 导出了 "SYS"."DAM_CONFIG_PARAM$" 6.6 KB 13 行
. . 导出了 "SYS"."TSDP_SUBPOL$" 6.4 KB 1 行
. . 导出了 "WMSYS"."WM$NEXTVER_TABLE$" 6.5 KB 1 行
. . 导出了 "LBACSYS"."OLS$PROPS" 6.2 KB 3 行
. . 导出了 "WMSYS"."WM$ENV_VARS$" 6.1 KB 3 行
. . 导出了 "SYS"."TSDP_PARAMETER$" 6 KB 1 行
. . 导出了 "SYS"."TSDP_POLICY$" 6 KB 1 行
. . 导出了 "WMSYS"."WM$VERSION_HIERARCHY_TABLE$" 6.1 KB 1 行
. . 导出了 "WMSYS"."WM$EVENTS_INFO$" 5.9 KB 12 行
. . 导出了 "LBACSYS"."OLS$AUDIT_ACTIONS" 5.8 KB 8 行
. . 导出了 "LBACSYS"."OLS$DIP_EVENTS" 5.6 KB 2 行
. . 导出了 "AUDSYS"."AUD$UNIFIED":"AUD_UNIFIED_P0" 0 KB 0 行
. . 导出了 "LBACSYS"."OLS$AUDIT" 0 KB 0 行
. . 导出了 "LBACSYS"."OLS$COMPARTMENTS" 0 KB 0 行
. . 导出了 "LBACSYS"."OLS$DIP_DEBUG" 0 KB 0 行
. . 导出了 "LBACSYS"."OLS$GROUPS" 0 KB 0 行
. . 导出了 "LBACSYS"."OLS$LAB" 0 KB 0 行
. . 导出了 "LBACSYS"."OLS$LEVELS" 0 KB 0 行
. . 导出了 "LBACSYS"."OLS$POL" 0 KB 0 行
. . 导出了 "LBACSYS"."OLS$POLICY_ADMIN" 0 KB 0 行
. . 导出了 "LBACSYS"."OLS$POLS" 0 KB 0 行
. . 导出了 "LBACSYS"."OLS$POLT" 0 KB 0 行
. . 导出了 "LBACSYS"."OLS$PROFILE" 0 KB 0 行
. . 导出了 "LBACSYS"."OLS$PROFILES" 0 KB 0 行
. . 导出了 "LBACSYS"."OLS$PROG" 0 KB 0 行
. . 导出了 "LBACSYS"."OLS$SESSINFO" 0 KB 0 行
. . 导出了 "LBACSYS"."OLS$USER" 0 KB 0 行
. . 导出了 "LBACSYS"."OLS$USER_COMPARTMENTS" 0 KB 0 行
. . 导出了 "LBACSYS"."OLS$USER_GROUPS" 0 KB 0 行
. . 导出了 "LBACSYS"."OLS$USER_LEVELS" 0 KB 0 行
. . 导出了 "SYS"."DAM_CLEANUP_EVENTS$" 0 KB 0 行
. . 导出了 "SYS"."DAM_CLEANUP_JOBS$" 0 KB 0 行
. . 导出了 "SYS"."FW_ALLOW_LIST$" 0 KB 0 行
. . 导出了 "SYS"."FW_ALLOW_LIST_CONTEXT$" 0 KB 0 行
. . 导出了 "SYS"."FW_ALLOW_LIST_SQL$" 0 KB 0 行
. . 导出了 "SYS"."FW_CAPTURE$" 0 KB 0 行
. . 导出了 "SYS"."TSDP_ASSOCIATION$" 0 KB 0 行
. . 导出了 "SYS"."TSDP_CONDITION$" 0 KB 0 行
. . 导出了 "SYS"."TSDP_FEATURE_POLICY$" 0 KB 0 行
. . 导出了 "SYS"."TSDP_PROTECTION$" 0 KB 0 行
. . 导出了 "SYS"."TSDP_SENSITIVE_DATA$" 0 KB 0 行
. . 导出了 "SYS"."TSDP_SENSITIVE_TYPE$" 0 KB 0 行
. . 导出了 "SYS"."TSDP_SOURCE$" 0 KB 0 行
. . 导出了 "SYSTEM"."REDO_LOG" 0 KB 0 行
. . 导出了 "WMSYS"."WM$BATCH_COMPRESSIBLE_TABLES$" 0 KB 0 行
. . 导出了 "WMSYS"."WM$CONS_COLUMNS$" 0 KB 0 行
. . 导出了 "WMSYS"."WM$MODIFIED_TABLES$" 0 KB 0 行
. . 导出了 "WMSYS"."WM$MP_GRAPH_WORKSPACES_TABLE$" 0 KB 0 行
. . 导出了 "WMSYS"."WM$MP_PARENT_WORKSPACES_TABLE$" 0 KB 0 行
. . 导出了 "WMSYS"."WM$NESTED_COLUMNS_TABLE$" 0 KB 0 行
. . 导出了 "WMSYS"."WM$RESOLVE_WORKSPACES_TABLE$" 0 KB 0 行
. . 导出了 "WMSYS"."WM$RIC_LOCKING_TABLE$" 0 KB 0 行
. . 导出了 "WMSYS"."WM$RIC_TABLE$" 0 KB 0 行
. . 导出了 "WMSYS"."WM$RIC_TRIGGERS_TABLE$" 0 KB 0 行
. . 导出了 "WMSYS"."WM$UDTRIG_DISPATCH_PROCS$" 0 KB 0 行
. . 导出了 "WMSYS"."WM$VERSION_TABLE$" 0 KB 0 行
. . 导出了 "WMSYS"."WM$VT_ERRORS_TABLE$" 0 KB 0 行
. . 导出了 "WMSYS"."WM$WORKSPACE_SAVEPOINTS_TABLE$" 0 KB 0 行
. . 导出了 "SYS"."GV_$UNIFIED_AUDIT_TRAIL" 88.5 KB 73 行
. . 导出了 "SYS"."FGA_LOG$FOR_EXPORT" 0 KB 0 行
. . 导出了 "SYS"."SQL$TEXT_DATAPUMP" 0 KB 0 行
. . 导出了 "SYS"."SQLOBJ$AUXDATA_DATAPUMP" 0 KB 0 行
. . 导出了 "SYS"."SQLOBJ$DATA_DATAPUMP" 0 KB 0 行
. . 导出了 "SYS"."SQL$_DATAPUMP" 0 KB 0 行
. . 导出了 "SYS"."SQLOBJ$PLAN_DATAPUMP" 0 KB 0 行
. . 导出了 "SYS"."SQLOBJ$_DATAPUMP" 0 KB 0 行
. . 导出了 "SYSTEM"."SCHEDULER_JOB_ARGS" 0 KB 0 行
. . 导出了 "SYSTEM"."SCHEDULER_PROGRAM_ARGS" 0 KB 0 行
. . 导出了 "WMSYS"."WM$EXP_MAP" 7.9 KB 3 行
. . 导出了 "WMSYS"."WM$METADATA_MAP" 0 KB 0 行
. . 导出了 "MDSYS"."RDF_PARAM$" 6.6 KB 3 行
. . 导出了 "SYS"."AUDTAB$TBS$FOR_EXPORT" 6 KB 2 行
. . 导出了 "SYS"."DBA_SENSITIVE_DATA" 0 KB 0 行
. . 导出了 "SYS"."DBA_TSDP_POLICY_PROTECTION" 0 KB 0 行
. . 导出了 "SYS"."NACL$_ACE_EXP" 0 KB 0 行
. . 导出了 "SYS"."NACL$_HOST_EXP" 7.5 KB 1 行
. . 导出了 "SYS"."NACL$_WALLET_EXP" 0 KB 0 行
. . 导出了 "C##TEST"."TEST0827" 10.4 MB 70819 行
已成功加载/卸载了主表 "SYSTEM"."SYS_EXPORT_FULL_01"
******************************************************************************
SYSTEM.SYS_EXPORT_FULL_01 的转储文件集为:
/backup/fullbackup/fullbackup_expdp_20240827.dmp
作业 "SYSTEM"."SYS_EXPORT_FULL_01" 已于 星期二 8月 27 15:58:30 2024 elapsed 0 00:06:52 成功完成
根据日志信息显示,执行备份脚本成功,数据库导出备份成功,无报错。
4.备份文件导入测试
删除测试用户及数据:
drop user c##test cascade;
SQL> drop user c##test cascade;
用户已删除。
查看备份文件:
fullbackup_expdp_20240827.dmp
fullbackup_expdp_20240827.log
使用备份文件进行数据导入:
[oracle@rhel fullbackup]$ impdp 'system/"J(oXhc6bo3"' schemas=c##test directory=fullbackup DUMPFILE=fullbackup_expdp_20240827.dmp logfile=fullbackup_impdp_20240827.log
Import: Release 23.0.0.0.0 - Production on 星期二 8月 27 16:10:55 2024
Version 23.4.0.24.05
Copyright (c) 1982, 2024, Oracle and/or its affiliates. All rights reserved.
连接到: Oracle Database 23ai Free Release 23.0.0.0.0 - Develop, Learn, and Run for Free
警告: 连接到容器数据库的根或种子时通常不需要 Oracle Data Pump 操作。
已成功加载/卸载了主表 "SYSTEM"."SYS_IMPORT_SCHEMA_01"
启动 "SYSTEM"."SYS_IMPORT_SCHEMA_01": "system/********" schemas=c##test directory=fullbackup DUMPFILE=fullbackup_expdp_20240827.dmp logfile=fullbackup_impdp_20240827.log
处理对象类型 DATABASE_EXPORT/SCHEMA/USER
处理对象类型 DATABASE_EXPORT/SCHEMA/GRANT/SYSTEM_GRANT
处理对象类型 DATABASE_EXPORT/SCHEMA/ROLE_GRANT
处理对象类型 DATABASE_EXPORT/SCHEMA/DEFAULT_ROLE
处理对象类型 DATABASE_EXPORT/SCHEMA/PROCACT_SCHEMA/LOGREP
处理对象类型 DATABASE_EXPORT/SCHEMA/TABLE/TABLE
处理对象类型 DATABASE_EXPORT/SCHEMA/TABLE/TABLE_DATA
. . 导入了 "C##TEST"."TEST0827" 10.4 MB 70819 行
处理对象类型 DATABASE_EXPORT/SCHEMA/TABLE/STATISTICS/TABLE_STATISTICS
作业 "SYSTEM"."SYS_IMPORT_SCHEMA_01" 已于 星期二 8月 27 16:12:16 2024 elapsed 0 00:00:50 成功完成
根据导入日志信息提示,备份文件导入成功,c##用户数据导入成功。
导入信息验证:
select count(*) from c##test.test0827;
SQL> select count(*) from c##test.test0827;
COUNT(*)
----------
70819
SQL>
导入数据验证成功。
5.正式部署
创建备份脚本:
cd /backup/fullbakcup
vi fullbackup.sh
脚本内容如下:
#!/bin/sh
#Oracle环境设置
export ORACLE_BASE=/u01/app/oracle
export ORACLE_HOME=$ORACLE_BASE/product/12.1.0/db_1
export ORACLE_SID=ora12c1
export NLS_LANG=AMERICAN_AMERICA.ZHS16GBK
export PATH=$PATH:/u01/app/oracle/product/12.1.0/db_1/bin:$ORACLE_HOME/OPatch
DMP_FILE=fullbackup_expdp_$(date +%Y%m%d%H%M).dmp
LOG_FILE=fullbackup_expdp_$(date +%Y%m%d%H%M).log
#expdp导出数据库开始
expdp 'system/"J(oXhc6bo3"' full=y directory=fullbackup DUMPFILE=$DMP_FILE logfile=$LOG_FILE;
Oracle用户下设置定时任务:
6.注意事项
(1)注意备份时间需要设置为业务空闲时段,避免由于备份引起IO资源占用,导致业务受影响。
(2)定期进行备份任务查看,确认备份结果是否成功,出现报错及时进行处理。
(3)定期进行备份文件维护,避免过多的备份文件占用存储空间,减少不必要的空间浪费。