linux环境下如何对oracle数据库进行整库备份
来源:互联网 发布:异地备份软件 编辑:程序博客网 时间:2024/06/05 18:31
项目需求:把服务器A上的一个数据库整库备份到服务器B上
一、备份数据库
1. 远程登录到服务器A
2. 使用如下命令导出数据库:
exp 用户名/密码@ip /home/database.dmp
二、传输文件
1. 远程登录到服务器B
2. 使用如下命令将备份文件从服务器A传送到服务器B上
scp remoteUser@remoteIp:remoteFile localPath
三、创建用户和表空间
1. 切换到操作Oracle数据库
su - oracle
切换成功会提示相关数据库的实例。
2. 切换到sqlplus操作
sqlplus "/as sysdba"
3. 创建临时表空间
create temporary tablespace user_temp
tempfile '/home/oracle/app/oracle/oradata/orcl/user_temp.dbf'
size 50m
autoextend on
next 50m maxsize 20480m
extent management local;
4. 创建数据表空间
create tablespace user_data
logging
datafile '/home/oracle/app/oracle/oradata/orcl/user_data.dbf'
size 50m
autoextend on
next 50m maxsize 20480m
extent management local;
5. 创建用户并指定表空间
create user username identified by password
default tablespace user_data
temporary tablespace user_temp;
6. 给用户授予权限
grant connect,resource,dba to username;
修改表空间
7. 如果想修改用户默认表空间使用如下命令:
ALTER USER user名
DEFAULT TABLESPACE tablespace名;
8. 退出sqlplus
exit
四、导入数据库:
imp 用户名/密码@ip file=/home/database.dmpbuffer=102400000 feedback=10000 full=y
到这里就完成了数据库的恢复。
但是在导入的时候可能会出现如下问题:
一、导入dmp文件,报 IMP-00013: only a DBA can import a file exported by another DBA 的问题,
这篇博客http://blog.itpub.net/28758644/viewspace-1063614/给了两种解决方法:
1. 给导入用户赋予dba 权限
SQL>grant sysdba to user;
SQL>grant imp_full_database to user;
2.使用普通用户导出dmp 文件,(我遇到的情况是测试环境的用户都有DBA权限,没有权限revoke dba权限,导致dmp文件导出都具有DBA权限)
变通的方法是:在本地导入具有带DBA权限的dmp 文件,然后再revoke DBA权限,最后导出的dmp 文件就不具有DBA权限,普通用户也可以导入。
二、导入了大量的数据库表后发现导入错了,怎么才能快速删除大量数据库表。
解决办法可参照http://www.cnblogs.com/chshnan/archive/2012/02/07/2341694.html这篇博客给出的两种方法
1、如果有删除用户的权限,则可以:
drop user user_name cascade;
加了cascade就可以把用户连带的数据全部删掉。
删除后再创建该用户。
--创建管理员用户
create user 用户名 identified by 密码 defaulttablespace space_data(表空间名称) temporary tablespace space_temp(临时表空间名称);
--授权
grant connect,dba to 用户名;
--修改限额
ALTER USER "用户名"QUOTA UNLIMITED ON SPACE_DATA(表空间名称);
--查看所有用户对象
select uo.object_name,uo.object_type fromuser_objects uo where uo.object_type<>'LOB' order by uo.object_type desc
2、如果没有删除用户的权限,则可以执行:
select 'drop table '||table_name||';' fromcat where table_type='TABLE'
将会输出一批删除表的sql语句,这些SQL语句执行一下就可以了。(需要有drop table的权限)
- linux环境下如何对oracle数据库进行整库备份
- LINUX下如何直接对MYSQL数据库进行备份?
- 备份软件对oracle数据库进行恢复(BE对linux下oracle恢复)
- linux下对mysql的数据库进行定时备份
- linux下应用crontab对mysql数据库进行定时备份
- linux环境下规定时间内进行数据库备份
- Linux+Oracle环境下如何将A服务器上的数据库备份还原到B服务器
- linux下进行oracle数据库的rman备份脚本
- linux下对oracle备份
- 对oracle数据库中的数据表进行备份
- linux下备份oracle数据库
- Linux下备份oracle数据库
- Linux下备份oracle数据库
- Linux环境下如何通过WMI对windows进行监控
- 如何为Oracle数据库进行备份
- Linux环境下自动备份oracle数据库并传输到指定的备份存储器上
- Linux环境Oracle数据库 RMAN备份
- Linux环境下mysql数据库定时备份
- linux3.2.0块设备及nandflash驱动框架
- 【数据结构与算法】折半查找算法(二分法)
- Tomcat源码阅读四:Digester工具
- js基础
- Google 收购 Android 十周年 全面解读Android现状
- linux环境下如何对oracle数据库进行整库备份
- 微软牛津项目:图像搜索
- EventBus使用详解(一)——初步使用EventBus
- 求解!
- 极光推送相关步骤
- linux.6.5+cacti.0.8.7. 的安装记录
- ROS中的turtlebot包
- topcoder客户端相关问题
- C#反射(Reflection)的应用