@echo off
CHCP 65001
set BACKUP_DIR=D:\backup\wssys
set ORACLE_USERNAME=wssys
set ORACLE_PASSWORD="""hyzjsys@@1"""
set ORACLE_DB=orcl
set filename=%date:~0,4%%date:~5,2%%date:~8,2%%time:~0,2%%time:~3,2%%time:~6,2%
set "filename=%filename: =0%"
expdp %ORACLE_USERNAME%/%ORACLE_PASSWORD%@%ORACLE_DB% directory=wssys dumpfile="%filename%.dmp" EXCLUDE=TABLE:\" IN('LOG_API','LOG_ERROR')\"
cmd
注意在.bat中要将符号转义。
在 Oracle 中,可以使用以下步骤清空每个表空间中的表并重新导入数据:
-
确定需要清空的表空间和表的名称 可以使用以下 SQL 查询在数据库中查找需要操作的表和表空间:
// 拼接处删除的语句 SELECT TABLESPACE_NAME,TABLE_NAME, 'DROP TABLE ' || TABLESPACE_NAME||'.'||TABLE_NAME || ' CASCADE CONSTRAINTS' || ';' FROM USER_TABLES; -
使用以下 SQL 语句将表空间中的表删除:
DROP TABLE <table_name> CASCADE CONSTRAINTS; -
在本地使用 expdp 命令或在远程服务器上使用 exp 导出数据到文件中:
expdp system/password@<db_name> DIRECTORY=<directory_object_name> DUMPFILE=<dump_file_name>.dmp SCHEMAS=<schema_name>或
exp system/password@<db_name> FILE=<dump_file_name>.dmp OWNER=<schema_name>其中,<directory_object_name> 是已创建的 Oracle 目录对象的名称,<dump_file_name> 是用于导出数据的文件名,<schema_name> 是要导出数据的Oracle用户名称。
-
在目标数据库中使用 impdp 命令(或使用 imp 命令)将数据导入到表中:
impdp system/password@<db_name> DIRECTORY=<directory_object_name> DUMPFILE=<dump_file_name>.dmp SCHEMAS=<schema_name>或
imp system/password@<db_name> FILE=<dump_file_name>.dmp FULL=Y其中,<directory_object_name> 是已创建的 Oracle 目录对象的名称,<dump_file_name> 是导出数据的文件名,<schema_name> 是要导入数据的 Oracle 用户名。
注意:在使用 impdp 或 imp 命令导入数据之前,请确保表空间足够存储数据。
select * from ALL_DIRECTORIES; // 查看所有目录
// 没有则创建
CREATE DIRECTORY wssys_DIR AS 'D:\backup\wssys';
// 把你的dmp文件放到上面那个目录,然后指定目录倒入
impdp wssys/snackpub@orcl directory=wssys_DIR dumpfile=wssys周三022306230000.DMP
以上是清空每个表空间表并重新导入数据的基本步骤,具体操作步骤可能会根据实际情况略有不同。