plsql 导入dmp表(全量导入)

SQL*Plus用户权限配置详解
本文详细介绍了如何使用SQL*Plus启动并配置用户权限,包括创建用户、授予特定权限等关键步骤。
步骤:
第一,启动sql*puls
第二,以system/manager登陆
第三,create user 用户名 IDENTIFIED BY 密码 (如果已经创建过用户,这步可以省略)
第四,GRANT CREATE USER,DROP USER,ALTER USER ,CREATE ANY VIEW ,
                            DROP ANY VIEW,EXP_FULL_DATABASE,IMP_FULL_DATABASE,

                            DBA,CONNECT,RESOURCE,CREATE SESSION TO 用户名字 

启动plsql导入数据库

### 使用 PL/SQL 导入 DMP 文件及数据泵 impdp 使用方法 PL/SQL 是一种用于 Oracle 数据库的编程语言,它允许开发人员直接在数据库中编写存储过程、函数和触发器。虽然 PL/SQL 本身不直接支持导入 DMP 文件的功能,但可以通过调用 Oracle 数据泵(Data Pump)工具 `impdp` 来实现 DMP 文件导入操作。 #### 1. **使用数据泵 impdp 导入 DMP 文件** Oracle 数据泵是一种高性能的数据库导入导出工具,支持并行处理和细粒度控制。以下是使用 `impdp` 导入 DMP 文件的基本步骤: ##### 1.1 **创建逻辑目录** 在导入操作之前,需要确保 Oracle 数据库中已经定义了逻辑目录,该目录指向实际的文件系统路径。创建逻辑目录的 SQL 语句如下: ```sql CREATE DIRECTORY dpdata1 AS '/u01/app/oracle/dpdump'; GRANT READ, WRITE ON DIRECTORY dpdata1 TO your_username; ``` 其中 `/u01/app/oracle/dpdump` 是服务器上存储 DMP 文件的实际路径,`your_username` 是执行导入操作的数据库用户。 ##### 1.2 **执行 impdp 命令** 在操作系统命令行中运行 `impdp` 命令来导入 DMP 文件。基本语法如下: ```bash impdp username/password@database_instance directory=dpdata1 dumpfile=your_dump_file.dmp logfile=import_log.log FULL=y ``` - `username/password@database_instance`:数据库用户名、密码和实例名。 - `directory=dpdata1`:指定之前创建的逻辑目录。 - `dumpfile=your_dump_file.dmp`:指定要导入DMP 文件。 - `logfile=import_log.log`:指定导入操作的日志文件。 - `FULL=y`:导入整个 DMP 文件内容。 ##### 1.3 **PL/SQL 调用 impdp** 虽然 PL/SQL 本身不直接支持执行操作系统命令,但可以通过 `DBMS_SCHEDULER` 或 `UTL_FILE` 等包间接调用外部脚本或命令。例如,可以创建一个外部脚本来执行 `impdp` 命令,并通过 `DBMS_SCHEDULER` 调度执行。 ```sql BEGIN DBMS_SCHEDULER.create_job ( job_name => 'import_dmp_job', job_type => 'EXECUTABLE', job_action => '/u01/app/oracle/scripts/import_dmp.sh', start_date => SYSTIMESTAMP, repeat_interval => NULL, end_date => NULL, enabled => TRUE ); END; ``` 其中 `/u01/app/oracle/scripts/import_dmp.sh` 是一个包含 `impdp` 命令的 Shell 脚本。 #### 2. **常见问题及解决方案** ##### 2.1 **ORA-01653: Unable to extend table** 此错误无法扩展,通常是由于空间不足引起的。解决方法包括: - **增加空间大小**:可以通过添加新的数据文件或调整现有数据文件的大小来扩展空间。 ```sql ALTER DATABASE DATAFILE '/u01/app/oracle/oradata/mydb/mytablespace01.dbf' RESIZE 500M; ``` - **启用自动扩展**:确保数据文件启用了自动扩展功能。 ```sql ALTER DATABASE DATAFILE '/u01/app/oracle/oradata/mydb/mytablespace01.dbf' AUTOEXTEND ON NEXT 100M MAXSIZE UNLIMITED; ``` ##### 2.2 **ORA-39171: Job is experiencing a resumable wait** 此错误导入作业正在等待资源释放,通常是由于空间不足或锁等待引起的。解决方法包括: - **检查并释放资源**:确保没有其他长时间运行的操作占用大量资源。 - **启用可恢复操作**:可以在 `impdp` 命令中启用可恢复操作选项 `RESUMABLE=y`,以便在资源释放后自动继续执行。 ##### 2.3 **导入过程中卡死** 如果导入过程中卡在某个阶段(例如 `Processing object type SCHEMA_EXPORT/TABLE/INDEX/INDEX`),可能是由于索引重建耗时较长或资源不足。解决方法包括: - **优化索引**:在导入前禁用索引,导入完成后重新启用索引。 - **增加内存**:适当增加 `impdp` 使用的内存资源,可以通过设置 `PARALLEL` 参数来提高性能。 #### 3. **查看空间和临时空间信息** 在导入过程中,空间和临时空间的大小可能会影响性能。可以通过以下 SQL 查询空间和临时空间的信息: ```sql -- 查询空间大小 SELECT t.tablespace_name, ROUND(SUM(bytes / (1024 * 1024)), 0) ts_size FROM dba_tablespaces t, dba_data_files d WHERE t.tablespace_name = d.tablespace_name GROUP BY t.tablespace_name; -- 查询临时空间信息 SELECT tablespace_name, file_name, bytes / 1024 / 1024 file_size, autoextensible FROM dba_temp_files; ``` #### 4. **网络连接和监听状态检查** 确保数据库监听器正常运行,可以使用以下命令检查监听状态: ```bash lsnrctl status LISTENER lsnrctl start LISTENER lsnrctl stop LISTENER ``` 此外,可以通过 `netstat` 命令检查端口是否被占用: ```bash netstat -aon | findstr "1521" ``` --- ###
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值