———– —————————————-
10 Linux x86 64-bit
3.2 跨平台传输操作步骤
跨平台传输操作步骤:
— 1.1 使用Data Pump导出表空间元数据
— 在源数据库上执行:
EXPDP system/password DIRECTORY=data_pump_dir DUMPFILE=exp_Example.dmp TRANSPORT_TABLESPACES=EXAMPLE TRANSPORT_FULL_CHECK=YES;– 2. 复制数据文件(源数据库到目标数据库)
— 2.1 查看表空间的数据文件
SELECT file_name FROM dba_data_files WHERE tablespace_name = ‘EXAMPLE’;– 2.2 复制数据文件到目标数据库
— 使用scp或其他文件传输工具复制数据文件
— 例如:
— scp /u01/app/oracle/oradata/fgedudb/example01.dbf oracle@target_server:/u01/app/oracle/oradata/fgedudb/
— 3. 数据文件格式转换(如果源平台和目标平台字节序不同)
— 3.1 使用RMAN转换数据文件
— 在目标数据库上执行:
— RMAN> CONVERT DATAFILE ‘/u01/app/oracle/oradata/fgedudb/example01.dbf’
— > TO PLATFORM ‘Linux x86 64-bit’
— > FORMAT ‘/u01/app/oracle/oradata/fgedudb/example01_converted.dbf’;
— 4. 导入表空间元数据(目标数据库)
— 4.1 使用Data Pump导入表空间元数据
— 在目标数据库上执行:
IMPDP system/password DIRECTORY=data_pump_dir DUMPFILE=exp_Example.dmp TRANSPORT_DATAFILES=’/u01/app/oracle/oradata/fgedudb/example01.dbf’;– 5. 将表空间设置为读写模式(目标数据库)
— 5.1 验证表空间状态
SELECT tablespace_name, status FROM dba_tablespaces WHERE tablespace_name = ‘EXAMPLE’;– 5.2 将表空间设置为读写模式
ALTER TABLESPACE EXAMPLE READ WRITE;– 6. 清理工作(源数据库)
— 6.1 如果不需要保留源表空间,可以将其设置为读写模式或删除
ALTER TABLESPACE EXAMPLE READ WRITE;– 或者
— DROP TABLESPACE EXAMPLE INCLUDING CONTENTS AND DATAFILES;
Version 19.3.0.0.0
Copyright (c) 1982, 2019, Oracle and/or its affiliates. All rights reserved.
Starting “SYSTEM”.”SYS_EXPORT_TRANSPORTABLE_01″: system/******** DIRECTORY=data_pump_dir DUMPFILE=exp_Example.dmp TRANSPORT_TABLESPACES=EXAMPLE TRANSPORT_FULL_CHECK=YES
Processing object type TRANSPORTABLE_EXPORT/PLUGTS_BLK
Processing object type TRANSPORTABLE_EXPORT/TABLE
Processing object type TRANSPORTABLE_EXPORT/INDEX/INDEX
Processing object type TRANSPORTABLE_EXPORT/CONSTRAINT/CONSTRAINT
Processing object type TRANSPORTABLE_EXPORT/INDEX/STATISTICS/INDEX_STATISTICS
Processing object type TRANSPORTABLE_EXPORT/TABLE/STATISTICS/TABLE_STATISTICS
Processing object type TRANSPORTABLE_EXPORT/POST_INSTANCE/PLUGTS_BLK
Master table “SYSTEM”.”SYS_EXPORT_TRANSPORTABLE_01″ successfully loaded/unloaded
******************************************************************************
Dump file set for SYSTEM.SYS_EXPORT_TRANSPORTABLE_01 is:
/u01/app/oracle/admin/fgedudb/dpdump/exp_Example.dmp
******************************************************************************
Datafiles required for transportable tablespace EXAMPLE:
/u01/app/oracle/oradata/fgedudb/example01.dbf
Job “SYSTEM”.”SYS_EXPORT_TRANSPORTABLE_01″ successfully completed at Thu Jun 1 12:05:00 2023 elapsed 0 00:05:00
3.3 跨平台传输验证
跨平台传输验证:
— 1.1 检查表空间是否存在
SELECT tablespace_name, status FROM dba_tablespaces WHERE tablespace_name = ‘EXAMPLE’;– 1.2 检查数据文件是否正确
SELECT file_name, status FROM dba_data_files WHERE tablespace_name = ‘EXAMPLE’;– 2. 验证表空间中的对象
— 2.1 检查表空间中的对象数量
SELECT owner, object_type, count(*) FROM dba_objects WHERE tablespace_name = ‘EXAMPLE’ GROUP BY owner, object_type;– 2.2 验证表中的数据
SELECT COUNT(*) FROM hr.employees;– 2.3 验证索引状态
SELECT index_name, status FROM dba_indexes WHERE tablespace_name = ‘EXAMPLE’;– 3. 验证表空间性能
— 3.1 执行查询测试
SELECT * FROM hr.employees WHERE department_id = 10;– 3.2 检查表空间使用情况
SELECT tablespace_name, sum(bytes)/1024/1024/1024 AS used_gb, sum(maxbytes)/1024/1024/1024 AS max_gb FROM dba_data_files WHERE tablespace_name = ‘EXAMPLE’ GROUP BY tablespace_name;– 4. 验证表空间依赖关系
— 4.1 检查是否有引用该表空间的对象
SELECT owner, object_name, object_type FROM dba_objects WHERE referenced_name = ‘EXAMPLE’ OR referenced_type = ‘TABLESPACE’;– 5. 验证表空间的可读写性
— 5.1 尝试在表空间中创建表
CREATE TABLE hr.test_table (id NUMBER, name VARCHAR2(100)) TABLESPACE EXAMPLE;– 5.2 尝试插入数据
INSERT INTO hr.test_table VALUES (1, ‘Test’);COMMIT;– 5.3 尝试查询数据
SELECT * FROM hr.test_table;– 5.4 清理测试数据
DROP TABLE hr.test_table;
—————————— ———
EXAMPLE ONLINE
Part04-生产案例与实战讲解
4.1 Oracle数据库跨平台传输案例
以下是一个跨平台传输的实际案例:
— 1. 准备工作
— 1.1 检查源平台和目标平台信息
— 源平台(Windows):
SELECT platform_id, platform_name FROM v$database;– 目标平台(Linux):
SELECT platform_id, platform_name FROM v$database;– 1.2 检查可传输平台列表
SELECT * FROM v$transportable_platform;– 1.3 检查字符集
SELECT value FROM nls_database_parameters WHERE parameter = ‘NLS_CHARACTERSET’;– 2. 源数据库操作(Windows)
— 2.1 检查表空间信息
SELECT tablespace_name, status, contents FROM dba_tablespaces WHERE tablespace_name = ‘EXAMPLE’;– 2.2 检查是否有依赖关系
EXECUTE dbms_tts.transport_set_check(‘EXAMPLE’, TRUE);SELECT * FROM transport_set_violations;– 2.3 将表空间设置为只读模式
ALTER TABLESPACE EXAMPLE READ ONLY;– 2.4 导出表空间元数据
EXPDP system/password DIRECTORY=data_pump_dir DUMPFILE=exp_Example.dmp TRANSPORT_TABLESPACES=EXAMPLE TRANSPORT_FULL_CHECK=YES;– 2.5 查看数据文件位置
SELECT file_name FROM dba_data_files WHERE tablespace_name = ‘EXAMPLE’;– 3. 文件传输
— 3.1 复制数据文件到目标数据库(Linux)
— 使用ftp或其他文件传输工具复制数据文件
— 例如:
— ftp> put D:\oracle\oradata\orcl\example01.dbf /u01/app/oracle/oradata/fgedudb/
— 4. 目标数据库操作(Linux)
— 4.1 数据文件格式转换
— 使用RMAN转换数据文件
— RMAN> CONVERT DATAFILE ‘/u01/app/oracle/oradata/fgedudb/example01.dbf’
— > TO PLATFORM ‘Linux x86 64-bit’
— > FORMAT ‘/u01/app/oracle/oradata/fgedudb/example01_linux.dbf’;
— 4.2 导入表空间元数据
IMPDP system/password DIRECTORY=data_pump_dir DUMPFILE=exp_Example.dmp TRANSPORT_DATAFILES=’/u01/app/oracle/oradata/fgedudb/example01_linux.dbf’;– 4.3 将表空间设置为读写模式
ALTER TABLESPACE EXAMPLE READ WRITE;– 5. 验证传输结果
— 5.1 检查表空间状态
SELECT tablespace_name, status FROM dba_tablespaces WHERE tablespace_name = ‘EXAMPLE’;– 5.2 检查数据文件
SELECT file_name, status FROM dba_data_files WHERE tablespace_name = ‘EXAMPLE’;– 5.3 验证数据
SELECT COUNT(*) FROM hr.employees;– 5.4 验证对象
SELECT owner, object_type, count(*) FROM dba_objects WHERE tablespace_name = ‘EXAMPLE’ GROUP BY owner, object_type;– 6. 源数据库清理
— 6.1 将表空间设置为读写模式(如果需要保留)
ALTER TABLESPACE EXAMPLE READ WRITE;– 或者
— 6.2 删除表空间(如果不需要保留)
— DROP TABLESPACE EXAMPLE INCLUDING CONTENTS AND DATAFILES;
4.2 跨平台传输性能测试与分析
跨平台传输性能测试与分析:
— 1.1 创建测试表空间
CREATE TABLESPACE test_ts DATAFILE ‘/u01/app/oracle/oradata/fgedudb/test_ts01.dbf’ SIZE 10G AUTOEXTEND ON NEXT 1G;– 1.2 创建测试用户
CREATE USER test_user IDENTIFIED BY test_user DEFAULT TABLESPACE test_ts;GRANT CONNECT, RESOURCE TO test_user;– 1.3 创建测试表
CREATE TABLE test_user.test_table (
id NUMBER,
name VARCHAR2(100),
value NUMBER,
create_date DATE
) TABLESPACE test_ts;– 1.4 插入测试数据
INSERT INTO test_user.test_table
SELECT
rownum,
‘Test ‘ || rownum,
rownum * 100,
SYSDATE – rownum/1000
FROM dual
CONNECT BY rownum <= 10000000;COMMIT;-- 2. 测试跨平台传输性能 -- 2.1 记录开始时间 SET TIMING ON -- 2.2 将表空间设置为只读模式 ALTER TABLESPACE test_ts READ ONLY;-- 2.3 导出表空间元数据 EXPDP system/password DIRECTORY=data_pump_dir DUMPFILE=exp_test_ts.dmp TRANSPORT_TABLESPACES=test_ts TRANSPORT_FULL_CHECK=YES;-- 2.4 记录导出时间 SET TIMING OFF -- 2.5 复制数据文件(模拟网络传输) -- 记录复制时间 -- 2.6 数据文件格式转换 -- 记录转换时间 -- 2.7 导入表空间元数据(目标数据库) -- 记录导入时间 -- 2.8 将表空间设置为读写模式 ALTER TABLESPACE test_ts READ WRITE;-- 3. 测试跨平台传输后的性能 -- 3.1 执行查询测试 SET TIMING ON SELECT COUNT(*) FROM test_user.test_table WHERE value > 500000000;SET TIMING OFF
— 3.2 执行插入测试
SET TIMING ON
INSERT INTO test_user.test_table VALUES (10000001, ‘Test 10000001’, 1000000100, SYSDATE);COMMIT;SET TIMING OFF
— 3.3 执行更新测试
SET TIMING ON
UPDATE test_user.test_table SET value = value * 2 WHERE id <= 100000;COMMIT;SET TIMING OFF
-- 4. 分析测试结果
-- 4.1 比较导出时间
-- 4.2 比较复制时间
-- 4.3 比较转换时间
-- 4.4 比较导入时间
-- 4.5 比较传输前后的查询性能
-- 4.6 比较传输前后的DML性能
-- 5. 清理测试数据
-- 5.1 删除测试表
DROP TABLE test_user.test_table;-- 5.2 删除测试用户
DROP USER test_user CASCADE;-- 5.3 删除测试表空间
DROP TABLESPACE test_ts INCLUDING CONTENTS AND DATAFILES;
4.3 故障排除
跨平台传输故障排除:
— 问题:表空间导出失败
— 解决方案:
— 1.1 检查表空间状态
SELECT tablespace_name, status FROM dba_tablespaces WHERE tablespace_name = ‘EXAMPLE’;– 1.2 检查依赖关系
EXECUTE dbms_tts.transport_set_check(‘EXAMPLE’, TRUE);SELECT * FROM transport_set_violations;– 1.3 检查目录权限
SELECT directory_name, directory_path FROM dba_directories WHERE directory_name = ‘DATA_PUMP_DIR’;– 1.4 检查空间使用情况
SELECT * FROM dba_free_space WHERE tablespace_name = ‘SYSTEM’;– 2. 数据文件转换失败
— 问题:数据文件格式转换失败
— 解决方案:
— 2.1 检查RMAN配置
— RMAN> SHOW ALL;
— 2.2 检查数据文件权限
— 使用操作系统命令检查文件权限
— ls -l /u01/app/oracle/oradata/fgedudb/example01.dbf
— 2.3 检查目标目录空间
— df -h /u01/app/oracle/oradata/fgedudb/
— 2.4 检查平台兼容性
SELECT * FROM v$transportable_platform;– 3. 导入失败
— 问题:表空间导入失败
— 解决方案:
— 3.1 检查数据文件路径
SELECT file_name FROM dba_data_files WHERE tablespace_name = ‘EXAMPLE’;– 3.2 检查数据文件权限
— 使用操作系统命令检查文件权限
— ls -l /u01/app/oracle/oradata/fgedudb/example01.dbf
— 3.3 检查目标数据库空间
SELECT tablespace_name, sum(bytes)/1024/1024/1024 AS used_gb, sum(maxbytes)/1024/1024/1024 AS max_gb FROM dba_data_files GROUP BY tablespace_name;– 3.4 检查字符集兼容性
SELECT value FROM nls_database_parameters WHERE parameter = ‘NLS_CHARACTERSET’;– 4. 表空间状态异常
— 问题:表空间状态异常
— 解决方案:
— 4.1 检查表空间状态
SELECT tablespace_name, status FROM dba_tablespaces WHERE tablespace_name = ‘EXAMPLE’;– 4.2 尝试将表空间设置为读写模式
ALTER TABLESPACE EXAMPLE READ WRITE;– 4.3 检查表空间损坏情况
SELECT * FROM v$recover_file WHERE tablespace_name = ‘EXAMPLE’;– 5. 数据不一致
— 问题:传输后数据不一致
— 解决方案:
— 5.1 验证数据行数
SELECT COUNT(*) FROM hr.employees;– 5.2 验证数据内容
SELECT * FROM hr.employees WHERE rownum <= 10;-- 5.3 检查索引状态
SELECT index_name, status FROM dba_indexes WHERE tablespace_name = 'EXAMPLE';-- 5.4 重建损坏的索引
ALTER INDEX hr.emp_empid_pk REBUILD;-- 6. 跨平台传输性能问题
-- 问题:跨平台传输速度慢
-- 解决方案:
-- 6.1 使用并行选项
-- EXPDP system/password DIRECTORY=data_pump_dir DUMPFILE=exp_Example.dmp TRANSPORT_TABLESPACES=EXAMPLE TRANSPORT_FULL_CHECK=YES PARALLEL=4;
-- 6.2 使用压缩选项
-- EXPDP system/password DIRECTORY=data_pump_dir DUMPFILE=exp_Example.dmp TRANSPORT_TABLESPACES=EXAMPLE TRANSPORT_FULL_CHECK=YES COMPRESSION=ALL;
-- 6.3 使用高速网络传输
-- 使用scp -C或其他压缩传输工具
-- 6.4 优化RMAN转换性能
-- RMAN> CONVERT DATAFILE ‘/u01/app/oracle/oradata/fgedudb/example01.dbf’
— > TO PLATFORM ‘Linux x86 64-bit’
— > FORMAT ‘/u01/app/oracle/oradata/fgedudb/example01_linux.dbf’
— > PARALLELISM 4;
Part05-风哥经验总结与分享
5.1 跨平台传输最佳实践
- 在低峰期进行跨平台传输,减少对生产系统的影响
- 传输前充分测试,确保源平台和目标平台的兼容性
- 使用Data Pump的并行选项提高导出/导入性能
- 对于大型表空间,使用压缩选项减少传输时间
- 使用高速网络连接进行数据文件传输
- 对于跨平台传输,使用RMAN进行数据文件转换
- 传输后及时验证数据的完整性和一致性
- 保留源数据库的备份,以防传输过程中出现问题
- 文档化跨平台传输的过程和步骤,便于后续参考
5.2 常见问题与解决方案
- 导出失败:检查表空间状态、依赖关系和目录权限
- 数据文件转换失败:检查RMAN配置、数据文件权限和目标目录空间
- 导入失败:检查数据文件路径、权限和目标数据库空间
- 表空间状态异常:尝试将表空间设置为读写模式,检查损坏情况
- 数据不一致:验证数据行数和内容,重建损坏的索引
- 跨平台传输性能问题:使用并行选项、压缩选项和高速网络传输
5.3 性能优化建议
- 使用Data Pump的并行选项提高导出/导入性能
- 对于大型表空间,使用压缩选项减少传输时间
- 使用高速网络连接进行数据文件传输
- 在传输前清理表空间中的无用数据,减少传输量
- 使用RMAN的并行转换功能提高数据文件转换性能
- 优化目标数据库的存储配置,提高导入性能
- 监控传输过程,及时发现和解决性能瓶颈
- 对于大型数据库,考虑使用增量传输策略
更多视频教程www.fgedu.net.cn
学习交流加群风哥微信: itpux-com
from oracle:www.itpux.com
本文由风哥教程整理发布,仅用于学习测试使用,转载注明出处:http://www.fgedu.net.cn/10327.html
