Part02-生产环境规划与建议
2.1 分区表迁移规划
分区表迁移规划:
- 评估迁移需求:评估分区表的迁移需求,包括数据量、迁移时间、迁移方式等
- 选择迁移方法:根据迁移需求,选择合适的迁移方法,如exp/imp、expdp/impdp、RMAN等
- 制定迁移计划:制定详细的迁移计划,包括迁移步骤、时间安排、风险评估等
- 准备迁移环境:准备目标环境,确保目标环境的配置和源环境一致
- 测试迁移过程:在测试环境中测试迁移过程,确保迁移的可行性和有效性
- 执行迁移操作:按照迁移计划执行迁移操作
- 验证迁移结果:验证迁移结果,确保分区表在目标环境中的一致性和可用性
风哥提示:在生产环境中,应选择合适的迁移方法,确保迁移过程的安全性和可靠性。
2.2 分区表升级规划
分区表升级规划:
- 评估升级需求:评估分区表的升级需求,包括版本升级、分区策略升级等
- 选择升级方法:根据升级需求,选择合适的升级方法,如数据库升级、分区策略调整等
- 制定升级计划:制定详细的升级计划,包括升级步骤、时间安排、风险评估等
- 准备升级环境:准备升级环境,确保升级环境的配置满足需求
- 测试升级过程:在测试环境中测试升级过程,确保升级的可行性和有效性
- 执行升级操作:按照升级计划执行升级操作
- 验证升级结果:验证升级结果,确保分区表在升级后的性能和可管理性
更多学习教程公众号风哥教程itpux_com
2.3 分区表迁移与升级注意事项
分区表迁移与升级的注意事项:
- 数据一致性:确保迁移和升级过程中的数据一致性
- 性能影响:最小化迁移和升级过程对系统性能的影响
- 安全性:确保迁移和升级过程中的数据安全
- 兼容性:确保目标环境与源环境的兼容性
- 备份策略:在迁移和升级前,制定合理的备份策略
- 回滚计划:制定详细的回滚计划,以应对迁移和升级过程中的问题
- 监控与验证:在迁移和升级过程中,进行实时监控和验证
- 文档记录:记录迁移和升级过程,为后续的维护提供参考
from oracle:www.itpux.com
Part03-生产环境项目实施方案
在生产环境中实施分区表迁移与升级的实施方案:
- 评估现有系统:评估现有分区表的性能和可管理性,确定迁移和升级的需求。
- 分析数据特点:分析分区表的数据特点,包括数据量、增长速度、查询模式等。
- 设计迁移与升级方案:根据分析结果,设计分区表的迁移与升级方案。
- 测试验证:在测试环境中测试迁移与升级方案,确保方案的可行性和有效性。
- 执行迁移与升级:在生产环境中执行迁移与升级操作。
- 监控与优化:在迁移与升级后,监控分区表的性能,及时优化分区表的设计和维护策略。
- 文档记录:记录迁移与升级过程,为后续的维护提供参考。
Part04-生产案例与实战讲解
4.1 分区表迁移方法
示例:使用expdp/impdp迁移分区表
EXPDP scott/tiger@source_dir DIRECTORY=DATA_PUMP_DIR DUMPFILE=sales_partitioned.dmp TABLES=sales_partitioned;– 目标数据库:导入分区表
IMPDP scott/tiger@target_dir DIRECTORY=DATA_PUMP_DIR DUMPFILE=sales_partitioned.dmp TABLES=sales_partitioned;– 源数据库:导出分区表(包含数据)
EXPDP scott/tiger@source_dir DIRECTORY=DATA_PUMP_DIR DUMPFILE=sales_partitioned_data.dmp TABLES=sales_partitioned INCLUDE=DATA;– 目标数据库:导入分区表(包含数据)
IMPDP scott/tiger@target_dir DIRECTORY=DATA_PUMP_DIR DUMPFILE=sales_partitioned_data.dmp TABLES=sales_partitioned;– 源数据库:导出分区表(并行)
EXPDP scott/tiger@source_dir DIRECTORY=DATA_PUMP_DIR DUMPFILE=sales_partitioned_parallel_%U.dmp TABLES=sales_partitioned PARALLEL=4;– 目标数据库:导入分区表(并行)
IMPDP scott/tiger@target_dir DIRECTORY=DATA_PUMP_DIR DUMPFILE=sales_partitioned_parallel_%U.dmp TABLES=sales_partitioned PARALLEL=4;
Export: Release 19.0.0.0.0 – Production on Wed Oct 23 10:00:00 2024
Version 19.3.0.0.0
Copyright (c) 1982, 2019, Oracle and/or its affiliates. All rights reserved.
Starting “SCOTT”.”SYS_EXPORT_TABLE_01″: scott/********@source_dir DIRECTORY=DATA_PUMP_DIR DUMPFILE=sales_partitioned.dmp TABLES=sales_partitioned
Processing object type TABLE_EXPORT/TABLE/TABLE
Processing object type TABLE_EXPORT/TABLE/TABLE_DATA
Processing object type TABLE_EXPORT/TABLE/INDEX/INDEX
Processing object type TABLE_EXPORT/TABLE/INDEX/STATISTICS/INDEX_STATISTICS
Processing object type TABLE_EXPORT/TABLE/STATISTICS/TABLE_STATISTICS
Master table “SCOTT”.”SYS_EXPORT_TABLE_01″ successfully loaded/unloaded
******************************************************************************
Dump file set for SCOTT.SYS_EXPORT_TABLE_01 is:
/u01/app/oracle/admin/source_dir/dpdump/sales_partitioned.dmp
Job “SCOTT”.”SYS_EXPORT_TABLE_01″ successfully completed at Wed Oct 23 10:05:00 2024 elapsed 0 00:05:00
— 目标数据库:导入分区表
Import: Release 19.0.0.0.0 – Production on Wed Oct 23 10:10:00 2024
Version 19.3.0.0.0
Copyright (c) 1982, 2019, Oracle and/or its affiliates. All rights reserved.
Starting “SCOTT”.”SYS_IMPORT_TABLE_01″: scott/********@target_dir DIRECTORY=DATA_PUMP_DIR DUMPFILE=sales_partitioned.dmp TABLES=sales_partitioned
Processing object type TABLE_EXPORT/TABLE/TABLE
Processing object type TABLE_EXPORT/TABLE/TABLE_DATA
Processing object type TABLE_EXPORT/TABLE/INDEX/INDEX
Processing object type TABLE_EXPORT/TABLE/INDEX/STATISTICS/INDEX_STATISTICS
Processing object type TABLE_EXPORT/TABLE/STATISTICS/TABLE_STATISTICS
Master table “SCOTT”.”SYS_IMPORT_TABLE_01″ successfully loaded/unloaded
******************************************************************************
Dump file set for SCOTT.SYS_IMPORT_TABLE_01 is:
/u01/app/oracle/admin/target_dir/dpdump/sales_partitioned.dmp
Job “SCOTT”.”SYS_IMPORT_TABLE_01″ successfully completed at Wed Oct 23 10:15:00 2024 elapsed 0 00:05:00
更多视频教程www.fgedu.net.cn
4.2 分区表升级方法
示例:分区表升级方法
— 步骤1:备份数据库
RMAN> BACKUP DATABASE PLUS ARCHIVELOG;– 步骤2:执行数据库升级
— 使用DBUA(Database Upgrade Assistant)或手动执行升级脚本
— 步骤3:验证分区表
SELECT table_name, partitioned FROM user_tables WHERE partitioned = ‘YES’;– 2. 分区策略升级(从范围分区升级到复合分区)
— 步骤1:创建新的复合分区表
CREATE TABLE sales_composite (
sale_id NUMBER PRIMARY KEY,
sale_date DATE,
region VARCHAR2(50),
product_id NUMBER,
quantity NUMBER,
amount NUMBER
)
PARTITION BY RANGE (sale_date)
SUBPARTITION BY LIST (region) (
PARTITION p2024 VALUES LESS THAN (TO_DATE(‘2025-01-01’, ‘YYYY-MM-DD’)) (
SUBPARTITION p2024_north VALUES (‘North’, ‘Northeast’),
SUBPARTITION p2024_south VALUES (‘South’, ‘Southeast’),
SUBPARTITION p2024_west VALUES (‘West’, ‘Southwest’),
SUBPARTITION p2024_east VALUES (‘East’, ‘Southeast’)
),
PARTITION p2025 VALUES LESS THAN (TO_DATE(‘2026-01-01’, ‘YYYY-MM-DD’)) (
SUBPARTITION p2025_north VALUES (‘North’, ‘Northeast’),
SUBPARTITION p2025_south VALUES (‘South’, ‘Southeast’),
SUBPARTITION p2025_west VALUES (‘West’, ‘Southwest’),
SUBPARTITION p2025_east VALUES (‘East’, ‘Southeast’)
)
);– 步骤2:将数据从旧表迁移到新表
INSERT INTO sales_composite SELECT * FROM sales_range;– 步骤3:重命名表
ALTER TABLE sales_range RENAME TO sales_range_old;ALTER TABLE sales_composite RENAME TO sales_range;– 步骤4:创建索引和约束
CREATE INDEX idx_sales_range_sale_date ON sales_range(sale_date) LOCAL;CREATE INDEX idx_sales_range_region ON sales_range(region) LOCAL;– 步骤5:验证数据
SELECT COUNT(*) FROM sales_range;SELECT COUNT(*) FROM sales_range_old;– 步骤6:删除旧表
DROP TABLE sales_range_old;
Starting backup at 23-OCT-24
current log archived
using target database control file instead of recovery catalog
allocated channel: ORA_DISK_1
channel ORA_DISK_1: SID=123 device type=DISK
channel ORA_DISK_1: starting full datafile backup set
channel ORA_DISK_1: specifying datafile(s) in backup set
input datafile file number=00001 name=/u01/app/oracle/oradata/ORCL/system01.dbf
input datafile file number=00002 name=/u01/app/oracle/oradata/ORCL/sysaux01.dbf
input datafile file number=00003 name=/u01/app/oracle/oradata/ORCL/undotbs01.dbf
input datafile file number=00004 name=/u01/app/oracle/oradata/ORCL/users01.dbf
channel ORA_DISK_1: starting piece 1 at 23-OCT-24
channel ORA_DISK_1: finished piece 1 at 23-OCT-24
piece handle=/u01/app/oracle/fast_recovery_area/ORCL/backupset/2024_10_23/o1_mf_nnndf_TAG20241023T102000_1234567890_.bkp tag=TAG20241023T102000 comment=NONE
channel ORA_DISK_1: backup set complete, elapsed time: 00:05:00
channel ORA_DISK_1: starting archived log backup set
channel ORA_DISK_1: specifying archived log(s) in backup set
input archived log thread=1 sequence=100 RECID=100 STAMP=1234567890
input archived log thread=1 sequence=101 RECID=101 STAMP=1234567891
channel ORA_DISK_1: starting piece 1 at 23-OCT-24
channel ORA_DISK_1: finished piece 1 at 23-OCT-24
piece handle=/u01/app/oracle/fast_recovery_area/ORCL/backupset/2024_10_23/o1_mf_annnn_TAG20241023T102000_1234567892_.bkp tag=TAG20241023T102000 comment=NONE
channel ORA_DISK_1: backup set complete, elapsed time: 00:01:00
Finished backup at 23-OCT-24
— 步骤3:验证分区表
TABLE_NAME PARTITIONED
—————————— ———–
SALES_RANGE YES
SALES_LIST YES
SALES_HASH YES
— 步骤5:验证数据
COUNT(*)
———-
100000
COUNT(*)
———-
100000
学习交流加群风哥微信: itpux-com
4.3 分区表迁移与升级案例
示例:分区表迁移与升级案例
— 步骤1:在开发环境中导出分区表
EXPDP scott/tiger@dev_dir DIRECTORY=DATA_PUMP_DIR DUMPFILE=sales_partitioned.dmp TABLES=sales_partitioned;– 步骤2:将导出文件复制到生产环境
scp /u01/app/oracle/admin/dev_dir/dpdump/sales_partitioned.dmp oracle@prod-server:/u01/app/oracle/admin/prod_dir/dpdump/– 步骤3:在生产环境中导入分区表
IMPDP scott/tiger@prod_dir DIRECTORY=DATA_PUMP_DIR DUMPFILE=sales_partitioned.dmp TABLES=sales_partitioned;– 案例2:从11g升级到19c
— 步骤1:备份11g数据库
RMAN> BACKUP DATABASE PLUS ARCHIVELOG;– 步骤2:安装19c数据库软件
— 步骤3:执行数据库升级
— 使用DBUA(Database Upgrade Assistant)
— 步骤4:验证分区表
SELECT table_name, partitioned FROM user_tables WHERE partitioned = ‘YES’;– 案例3:从范围分区升级到自动列表分区
— 步骤1:创建新的自动列表分区表
CREATE TABLE sales_auto_list (
sale_id NUMBER PRIMARY KEY,
sale_date DATE,
region VARCHAR2(50),
product_id NUMBER,
quantity NUMBER,
amount NUMBER
)
PARTITION BY LIST (region) AUTOMATIC (
PARTITION p_north VALUES (‘North’, ‘Northeast’),
PARTITION p_south VALUES (‘South’, ‘Southeast’),
PARTITION p_west VALUES (‘West’, ‘Southwest’),
PARTITION p_east VALUES (‘East’, ‘Southeast’)
);– 步骤2:将数据从旧表迁移到新表
INSERT INTO sales_auto_list SELECT * FROM sales_list;– 步骤3:重命名表
ALTER TABLE sales_list RENAME TO sales_list_old;ALTER TABLE sales_auto_list RENAME TO sales_list;– 步骤4:创建索引和约束
CREATE INDEX idx_sales_list_region ON sales_list(region) LOCAL;CREATE INDEX idx_sales_list_sale_date ON sales_list(sale_date) LOCAL;– 步骤5:验证数据
SELECT COUNT(*) FROM sales_list;SELECT COUNT(*) FROM sales_list_old;– 步骤6:删除旧表
DROP TABLE sales_list_old;
— 步骤1:在开发环境中导出分区表
Export: Release 19.0.0.0.0 – Production on Wed Oct 23 11:00:00 2024
Version 19.3.0.0.0
Copyright (c) 1982, 2019, Oracle and/or its affiliates. All rights reserved.
Starting “SCOTT”.”SYS_EXPORT_TABLE_01″: scott/********@dev_dir DIRECTORY=DATA_PUMP_DIR DUMPFILE=sales_partitioned.dmp TABLES=sales_partitioned
Processing object type TABLE_EXPORT/TABLE/TABLE
Processing object type TABLE_EXPORT/TABLE/TABLE_DATA
Processing object type TABLE_EXPORT/TABLE/INDEX/INDEX
Processing object type TABLE_EXPORT/TABLE/INDEX/STATISTICS/INDEX_STATISTICS
Processing object type TABLE_EXPORT/TABLE/STATISTICS/TABLE_STATISTICS
Master table “SCOTT”.”SYS_EXPORT_TABLE_01″ successfully loaded/unloaded
******************************************************************************
Dump file set for SCOTT.SYS_EXPORT_TABLE_01 is:
/u01/app/oracle/admin/dev_dir/dpdump/sales_partitioned.dmp
Job “SCOTT”.”SYS_EXPORT_TABLE_01″ successfully completed at Wed Oct 23 11:05:00 2024 elapsed 0 00:05:00
— 步骤3:在生产环境中导入分区表
Import: Release 19.0.0.0.0 – Production on Wed Oct 23 11:10:00 2024
Version 19.3.0.0.0
Copyright (c) 1982, 2019, Oracle and/or its affiliates. All rights reserved.
Starting “SCOTT”.”SYS_IMPORT_TABLE_01″: scott/********@prod_dir DIRECTORY=DATA_PUMP_DIR DUMPFILE=sales_partitioned.dmp TABLES=sales_partitioned
Processing object type TABLE_EXPORT/TABLE/TABLE
Processing object type TABLE_EXPORT/TABLE/TABLE_DATA
Processing object type TABLE_EXPORT/TABLE/INDEX/INDEX
Processing object type TABLE_EXPORT/TABLE/INDEX/STATISTICS/INDEX_STATISTICS
Processing object type TABLE_EXPORT/TABLE/STATISTICS/TABLE_STATISTICS
Master table “SCOTT”.”SYS_IMPORT_TABLE_01″ successfully loaded/unloaded
******************************************************************************
Dump file set for SCOTT.SYS_IMPORT_TABLE_01 is:
/u01/app/oracle/admin/prod_dir/dpdump/sales_partitioned.dmp
Job “SCOTT”.”SYS_IMPORT_TABLE_01″ successfully completed at Wed Oct 23 11:15:00 2024 elapsed 0 00:05:00
— 案例3:从范围分区升级到自动列表分区
— 步骤5:验证数据
COUNT(*)
———-
100000
COUNT(*)
———-
100000
学习交流加群风哥QQ113257174
4.4 分区表迁移与升级性能优化
示例:分区表迁移与升级性能优化
— 导出时使用并行
EXPDP scott/tiger@source_dir DIRECTORY=DATA_PUMP_DIR DUMPFILE=sales_partitioned_%U.dmp TABLES=sales_partitioned PARALLEL=4;– 导入时使用并行
IMPDP scott/tiger@target_dir DIRECTORY=DATA_PUMP_DIR DUMPFILE=sales_partitioned_%U.dmp TABLES=sales_partitioned PARALLEL=4;– 2. 使用压缩减少导出文件大小
EXPDP scott/tiger@source_dir DIRECTORY=DATA_PUMP_DIR DUMPFILE=sales_partitioned.dmp TABLES=sales_partitioned COMPRESSION=ALL;– 3. 使用网络链接直接迁移
EXPDP scott/tiger@source_dir NETWORK_LINK=target_link DIRECTORY=DATA_PUMP_DIR TABLES=sales_partitioned;– 4. 使用增量导出减少迁移时间
— 首次导出
EXPDP scott/tiger@source_dir DIRECTORY=DATA_PUMP_DIR DUMPFILE=sales_partitioned_full.dmp TABLES=sales_partitioned;– 增量导出
EXPDP scott/tiger@source_dir DIRECTORY=DATA_PUMP_DIR DUMPFILE=sales_partitioned_incremental.dmp TABLES=sales_partitioned FLASHBACK_TIME=SYSTIMESTAMP;– 5. 升级时使用并行执行
— 创建新表时使用并行
CREATE TABLE sales_composite (
sale_id NUMBER PRIMARY KEY,
sale_date DATE,
region VARCHAR2(50),
product_id NUMBER,
quantity NUMBER,
amount NUMBER
)
PARTITION BY RANGE (sale_date)
SUBPARTITION BY LIST (region) (
PARTITION p2024 VALUES LESS THAN (TO_DATE(‘2025-01-01’, ‘YYYY-MM-DD’)) (
SUBPARTITION p2024_north VALUES (‘North’, ‘Northeast’),
SUBPARTITION p2024_south VALUES (‘South’, ‘Southeast’),
SUBPARTITION p2024_west VALUES (‘West’, ‘Southwest’),
SUBPARTITION p2024_east VALUES (‘East’, ‘Southeast’)
),
PARTITION p2025 VALUES LESS THAN (TO_DATE(‘2026-01-01’, ‘YYYY-MM-DD’)) (
SUBPARTITION p2025_north VALUES (‘North’, ‘Northeast’),
SUBPARTITION p2025_south VALUES (‘South’, ‘Southeast’),
SUBPARTITION p2025_west VALUES (‘West’, ‘Southwest’),
SUBPARTITION p2025_east VALUES (‘East’, ‘Southeast’)
)
) PARALLEL 4;– 插入数据时使用并行
ALTER SESSION ENABLE PARALLEL DML;INSERT /*+ PARALLEL(4) */ INTO sales_composite SELECT * FROM sales_range;COMMIT;
— 导出时使用并行
Export: Release 19.0.0.0.0 – Production on Wed Oct 23 12:00:00 2024
Version 19.3.0.0.0
Copyright (c) 1982, 2019, Oracle and/or its affiliates. All rights reserved.
Starting “SCOTT”.”SYS_EXPORT_TABLE_01″: scott/********@source_dir DIRECTORY=DATA_PUMP_DIR DUMPFILE=sales_partitioned_%U.dmp TABLES=sales_partitioned PARALLEL=4
Processing object type TABLE_EXPORT/TABLE/TABLE
Processing object type TABLE_EXPORT/TABLE/TABLE_DATA
Processing object type TABLE_EXPORT/TABLE/INDEX/INDEX
Processing object type TABLE_EXPORT/TABLE/INDEX/STATISTICS/INDEX_STATISTICS
Processing object type TABLE_EXPORT/TABLE/STATISTICS/TABLE_STATISTICS
Master table “SCOTT”.”SYS_EXPORT_TABLE_01″ successfully loaded/unloaded
******************************************************************************
Dump file set for SCOTT.SYS_EXPORT_TABLE_01 is:
/u01/app/oracle/admin/source_dir/dpdump/sales_partitioned_01.dmp
/u01/app/oracle/admin/source_dir/dpdump/sales_partitioned_02.dmp
/u01/app/oracle/admin/source_dir/dpdump/sales_partitioned_03.dmp
/u01/app/oracle/admin/source_dir/dpdump/sales_partitioned_04.dmp
Job “SCOTT”.”SYS_EXPORT_TABLE_01″ successfully completed at Wed Oct 23 12:02:30 2024 elapsed 0 00:02:30
— 导入时使用并行
Import: Release 19.0.0.0.0 – Production on Wed Oct 23 12:05:00 2024
Version 19.3.0.0.0
Copyright (c) 1982, 2019, Oracle and/or its affiliates. All rights reserved.
Starting “SCOTT”.”SYS_IMPORT_TABLE_01″: scott/********@target_dir DIRECTORY=DATA_PUMP_DIR DUMPFILE=sales_partitioned_%U.dmp TABLES=sales_partitioned PARALLEL=4
Processing object type TABLE_EXPORT/TABLE/TABLE
Processing object type TABLE_EXPORT/TABLE/TABLE_DATA
Processing object type TABLE_EXPORT/TABLE/INDEX/INDEX
Processing object type TABLE_EXPORT/TABLE/INDEX/STATISTICS/INDEX_STATISTICS
Processing object type TABLE_EXPORT/TABLE/STATISTICS/TABLE_STATISTICS
Master table “SCOTT”.”SYS_IMPORT_TABLE_01″ successfully loaded/unloaded
******************************************************************************
Dump file set for SCOTT.SYS_IMPORT_TABLE_01 is:
/u01/app/oracle/admin/target_dir/dpdump/sales_partitioned_01.dmp
/u01/app/oracle/admin/target_dir/dpdump/sales_partitioned_02.dmp
/u01/app/oracle/admin/target_dir/dpdump/sales_partitioned_03.dmp
/u01/app/oracle/admin/target_dir/dpdump/sales_partitioned_04.dmp
Job “SCOTT”.”SYS_IMPORT_TABLE_01″ successfully completed at Wed Oct 23 12:07:30 2024 elapsed 0 00:02:30
— 5. 升级时使用并行执行
— 插入数据时使用并行
100000 rows created.
Commit complete.
学习交流加群风哥QQ113257174
Part05-风哥经验总结与分享
风哥提示:在进行分区表迁移与升级时,应注意以下最佳实践:
- 选择合适的迁移方法:根据迁移需求,选择合适的迁移方法,如exp/imp、expdp/impdp、RMAN等。
- 制定详细的迁移计划:制定详细的迁移计划,包括迁移步骤、时间安排、风险评估等。
- 测试迁移过程:在测试环境中测试迁移过程,确保迁移的可行性和有效性。
- 备份数据:在迁移和升级前,对数据进行充分的备份,以应对可能的问题。
- 使用并行执行:合理使用并行执行,提高迁移和升级的速度。
- 监控迁移过程:在迁移过程中,进行实时监控,及时发现和解决问题。
- 验证迁移结果:在迁移完成后,验证迁移结果,确保数据的一致性和可用性。
- 选择合适的升级方法:根据升级需求,选择合适的升级方法,如数据库升级、分区策略调整等。
- 制定详细的升级计划:制定详细的升级计划,包括升级步骤、时间安排、风险评估等。
- 测试升级过程:在测试环境中测试升级过程,确保升级的可行性和有效性。
- 监控升级过程:在升级过程中,进行实时监控,及时发现和解决问题。
- 验证升级结果:在升级完成后,验证升级结果,确保分区表的性能和可管理性。
- 文档记录:记录迁移和升级过程,为后续的维护提供参考。
更多学习教程公众号风哥教程itpux_com
from:风哥.QQ113257174.WX:itpux-com,web: http://www.fgedu.net.cn
本文由风哥教程整理发布,仅用于学习测试使用,转载注明出处:http://www.fgedu.net.cn/10327.html
