最近有个oracle数据库迁移的项目,数据量不大,所以采用impdb远程导入的方式进行
1、创建dblink
CREATE DATABASE LINK your_dblink
CONNECT TO your_username IDENTIFIED BY your_password
USING 'your_tns_entry';
2、创建表空间
CREATE TABLESPACE your_tablespace
DATAFILE '/path/to/your_tablespace.dbf' SIZE 100M
AUTOEXTEND ON NEXT 10M
MAXSIZE UNLIMITED;
3、创建用户并授权
CREATE USER your_username
IDENTIFIED BY your_password
DEFAULT TABLESPACE your_tablespace
TEMPORARY TABLESPACE temp_tablespace
QUOTA unlimited ON your_tablespace;
grant exp_full_database to RFN;
grant imp_full_database to RFN;
grant resource,connect to RFN;
3、导入
impdp User/Pass network_link=dblink_name schemas=schemas_name cluster=no exclude=statistics,grant parallel=5 TRANSFORM=DISABLE_ARCHIVE_LOGGING:Y remap_schema=xxx:xxx remap_tablespace=xxx:xxx
User/Pass
:指定连接到目标数据库的用户名和密码。network_link=dblink_name
:指定要用于导入的数据库链接名(dblink_name
)。数据将通过此链接从源数据库导入。schemas=schemas_name
:指定要从源数据库导入的模式。cluster=no
:禁用导入到聚簇表。NO
选项表示不将数据加载到聚簇表中。exclude=statistics,grant
:在导入过程中排除统计信息和授权的导入。parallel=5
:指定导入操作的并行度。在这种情况下,设置为5,这意味着导入将使用最多5个并行进程。TRANSFORM=DISABLE_ARCHIVE_LOGGING:Y
:将导入转换为禁用导入对象的归档日志记录。Y
表示“是”,启用此转换。remap_schema=xxx:xxx
:在导入期间指定模式的重新映射。属于源模式xxx
的对象将被重新映射到目标模式xxx
。remap_tablespace=xxx:xxx
:在导入期间指定表空间的重新映射。原本位于源表空间xxx
的对象将被重新映射到目标表空间xxx
。
4、更新统计数据
EXEC DBMS_STATS.GATHER_SCHEMA_STATS(ownname => 'XXX');