oracle 备份

101 阅读2分钟
@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 中,可以使用以下步骤清空每个表空间中的表并重新导入数据:

  1. 确定需要清空的表空间和表的名称 可以使用以下 SQL 查询在数据库中查找需要操作的表和表空间:

    // 拼接处删除的语句
    SELECT TABLESPACE_NAME,TABLE_NAME, 'DROP TABLE ' || TABLESPACE_NAME||'.'||TABLE_NAME || ' CASCADE CONSTRAINTS' || ';' FROM USER_TABLES;
    

  2. 使用以下 SQL 语句将表空间中的表删除:

    DROP TABLE <table_name> CASCADE CONSTRAINTS;

  3. 在本地使用 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用户名称。

  4. 在目标数据库中使用 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

以上是清空每个表空间表并重新导入数据的基本步骤,具体操作步骤可能会根据实际情况略有不同。