linux环境下备份oracle
说实话oracle备份好麻烦!!
尝试了好多种方式,终于成功了,记录一下
第一步,先相看一下备份的目录
select * from dba_directories
注意为什么要查看呢?
我一开始用了网上的方法,创建备份的目录
$sqlplus /nolog
$conn sys /as sysdba
SQL> create directory expdata as '/home/oracle/oraclebak';
Directory created.
SQL> grant read,write on directory expdata to backupuser;
SQL> exit
$chmod -R oracle:oinstall /home/oracle/oraclebak
但是呢,这种方法创建的目录备份时会出问题
比如我上面创建的目录名是expdata
执行备份:expdp loginuser/123456@ORCL directory=expdata dumpfile=FULL_8.dmp FULL=y
一直报错:
Connected to: Oracle Database 11g Release 11.2.0.4.0 - 64bit Production
ORA-39002: invalid operation
ORA-39070: Unable to open the log file.
ORA-39087: directory name expdata is invalid
不行,我就找了一个oracle自己创建好的目录,比如DATA_PUMP_DIR
再执行:expdp c##shopdb/123456@orclshop directory=DATA_PUMP_DIR dumpfile=FULL_8.dmp FULL=y
等待了一段时间,竟然备份成功了
导入数据
先创建一个账户用来导入数据
#创建用户
create user c##impuser identified by 123456;
#创建表空间
create tablespace 表空间名 datafile 'D:\oracle11\oradata\库名\XXX.pdf' size 200M autoextend on next 50m maxsize 1000m ;
#用户授权
grant connect ,resource to c##impuser;
#用创建的用户名和密码登录oracle数据库
conn c##impuser/123456
#最该权限授权
#用最高权限账号登录
grant dba to c##impuser
#如果没有权限,就切换成sys授权
在导入机上,我把导出的文件FULL_8.dmp 放到了d盘,然后在cmd中执行命令impdp c##impuser/123456 file=d:\FULL_8.dmp full=y ignore=y
报错
PS C:\WINDOWS\system32> impdp c##impuser/123456 file=d:\FULL_8.dmp full=y ignore=y;
Import: Release 12.1.0.2.0 - Production on 星期二 12月 17 13:37:39 2019
Copyright (c) 1982, 2014, Oracle and/or its affiliates. All rights reserved.
连接到: Oracle Database 12c Enterprise Edition Release 12.1.0.2.0 - 64bit Production
With the Partitioning, OLAP, Advanced Analytics and Real Application Testing options
ORA-39001: 参数值无效
ORA-39000: 转储文件说明错误
ORA-39088: 文件名不能包含路径说明
找解决方法,google之,大致的解决方法就是“impdp程序之前先创建directory,如名字为oracle_backup,路径d:\backup,文件位置不需要指出,impdp程序会自动去之前创建的directory中查找impdp命令中指定的文件名是否存在”
所在要先创建备份目录,然后把导出的文件放到备份的目录中,再执行命令:impdp c##impuser/123456 directory=oracle_backup file=FULL_8.dmp full=y ignore=y;
大致该差不多了!!