oracle数据备份和还原

前言

  • 用户:userzs
  • 密码:passzs
  • IP和端口:192.168.0.10:1521/orcl
  • oracle版本:11和12

oracle自带expexpdp程序用于数据导出备份,impimpdp程序用于数据导入还原。使用exp导出的数据文件,不能使用impdp进行还原;同理,使用expdp导出的数据文件也不能使用imp进行还原。

建议使用expdpimpdp

备份导出

注意,在oracle 11,exp默认不会导出空表,除非改一些参数;否则尽量使用expdp

  • expdp示例。注意directory名。生成的dmg文件在directory_name对应的directory_path目录下。
./expdp userzs/passzs@192.168.0.10:1521/orcl \
directory=DATA_DUMP_DIR \
dumpfile=backup20220426.dmp \
logfile=export20220426.log
  • 导出整个数据库
./expdp userzs/passzs@192.168.0.10:1521/orcl \
directory=DATA_DUMP_DIR \
dumpfile=backup20220426.dmp \
logfile=export20220426.log \
full=y

还原导入

  • impdp示例
./impdp userzs/passzs@192.168.0.10:1521/orcl \
directory=DATA_DUMP_DIR \
dumpfile=backup20220426.dmp \
logfile=import20220426.log
  • 覆盖导入
./impdp userzs/passzs@192.168.0.10:1521/orcl \
directory=DATA_DUMP_DIR \
dumpfile=backup20220426.dmp \
logfile=import20220426.log \
table_exists_action=replace

问题记录

windows下找不到expdp和impdp命令

windows命令行下如果没有expdpimpdp命令,但是有expimp命令,可以在cmd(注意不是powershell)下执行where exp,在输出结果的目录下找找expdpimpdp

导入时提示unable to extend table

这个是因为表空间不足,如果开了自动扩增但还是满了,就要增加表空间数据文件。

  1. 假设名为SYSAUX的表空间满了。
  2. 查看SYSAUX表空间的使用情况。数据文件,表空间名,已使用空间,最大空间
SELECT file_name, tablespace_name, bytes / 1024 / 1024 "bytes MB", maxbytes / 1024 / 1024 "maxbytes MB" FROM dba_data_files WHERE tablespace_name = 'SYSAUX';

-- 查看表空间数据文件是否已开启自动扩增
SELECT file_id, file_name, tablespace_name, autoextensible, increment_by FROM dba_data_files WHERE tablespace_name = 'SYSAUX' ORDER BY file_id desc;
  1. 假设表空间SYSAUX下只有一个数据文件为/home/oracle/oradata/ORCL/datafile/o1_mf_sysaux_qwerty_.dbf
  2. 扩增数据文件的大小。一般情况下,最大只能扩增到32g
alter database datafile '/home/oracle/oradata/ORCL/datafile/o1_mf_sysaux_qwerty_.dbf' resize 32g;
  1. 如果数据文件已经到了32g,那么就要使用dba权限为SYSAUX表空间添加一个数据文件
-- 添加数据文件 /home/oracle/oradata/ORCL/datafile/sysaux_002.dbf 到 SYSAUX
-- 数据文件大小为 1024MB,可以自动扩增到16GB
alter tablespace SYSAUX add datafile '/home/oracle/oradata/ORCL/datafile/sysaux_002.dbf' size 1024M autoextend on maxsize 16G;
  1. 使用第2步的SQL,查看SYSAUX表空间的数据文件,查看是否添加成功。

补充

  • oracle查看所有directory的命令,(需要在控制台执行)
select * from all_directories;
posted @ 2022-04-27 09:12  花酒锄作田  阅读(414)  评论(0编辑  收藏  举报