oracle导出导入数据库
- 一.给空表分配空间:
这一步一定要做,否则空表不能导出.
首先连接你要导出的库,在该库上执行以下sql:
select 'alter table '||table_name||' allocate extent;' from user_tables where num_rows = 0
执行结果是一连串的sql语句,类似alter table tablename allocate extent;选择所有结果,复制,在库里统一执行一下.
我在网上看好多人要在后面加一句 where num_rows = 0,意思我懂,就是只对数据条数为0的表生成要执行的sql语句,但是这样似乎仍然会有漏的表,我使用
select table_name,num_rows from user_tables 在库里执行一下发现num_rows的值有的为null,不是0,反正看需要选择加不加吧
当然后面不加where条件的话,就把所有的表都设置了一遍,事实上有数据的表时不需要设置的,如果不想这样,就加个where num_rows = 0 or num_rows is null,这样应该就没有遗漏的表了.
- 二.导出dmp文件
在cmd中执行一下命令导出dmp文件:
exp 用户名/密码@监听名 file=E:\数据库名.dmp owner=(用户名) log=E:\日志名.log indexes=n statistics=none
这里加了owner表示将该用户下所有表导出
注意@后的监听名,一般你的oracle安装目录下有个tnsnames.ora文件,玩过pl/sql应该知道,经常要改它的,在这个文件加入监听配置
经过一段时间后控制台会提示导出成功,取决于数据库大小.
- 三.创建表空间
- 1.先查看以往数据库对应的文件路径在哪里:
SELECT t1.name, t2.name FROM v$tablespace t1, v$datafile t2 WHERE t1.ts#=t2.ts# order by t1.name;
注意在本地执行该命令的用户需拥有dba权限,否则会提示该表不存在,可以登录sqlplus,使用 conn / as sysdba登录,然后GRANT "DBA" TO 用户; 或者直接在sysdba中执行该sql,查看结果.
- 2.创建表空间
create tablespace mytisjs datafile 'E:\APP\ADMINISTRATOR\ORADATA\ORCL\mytisjs.dbf' (mytisjs.dbf前面的路径为你之前查询出来的路径,其实这里路径可以写任何位置,只是和之前的数据库统一存放在同一位置比较好) size 2000m autoextend on next 500m maxsize 10096m extent management local;
- 3.创建临时表空间
create temporary tablespace mytisjs_temp tempfile 'E:\APP\ADMINISTRATOR\ORADATA\ORCL\mytisjs_temp.dbf' size 500m autoextend on next 500m maxsize 2048m extent management local;
- 4.创建用户
CREATE USER test IDENTIFIED BY test
DEFAULT TABLESPACE "MYTISJS" (指定表空间为刚刚创建的表空间,注意表空间名称要大写)
TEMPORARY TABLESPACE "MYTISJS_TEMP";
- 5.授予权限
GRANT "DBA" TO test;
GRANT "CONNECT" TO test;
GRANT "RESOURCE" TO test;
- 四.导入dmp文件
用imp命令导入
imp test/test@mytisjs file=E:\tisjs.dmp log=E:\tisjs.log full=y ignore=y
其中test/test是用户名/密码 mytisjs和之前一样,在tnsnames.ora文件加入对应的配置,如果我要导入本地,就HOST就为localhost,file后的路径就是你之前导出的dmp文件路径,log也一样.
等一段时间就会提示导入成功,数据库就可以使用了.
如果dmp文件在本地,导入到本地数据库,直接imp test/test file=E:\tisjs.dmp log=E:\tisjs.log full=y ignore=y就可以了,不用配置监听也可以
- 五.表空间相关说明:
- 1.查看数据库的表空间,包括临时表空间
select * from (
Select a.tablespace_name,
to_char(a.bytes/1024/1024,'99,999.999') total_bytes,
to_char(b.bytes/1024/1024,'99,999.999') free_bytes,
to_char(a.bytes/1024/1024 - b.bytes/1024/1024,'99,999.999') use_bytes,
to_char((1 - b.bytes/a.bytes)*100,'99.99') || '%' use
from (select tablespace_name,
sum(bytes) bytes
from dba_data_files
group by tablespace_name) a,
(select tablespace_name,
sum(bytes) bytes
from dba_free_space
group by tablespace_name) b
where a.tablespace_name = b.tablespace_name
union all
select c.tablespace_name,
to_char(c.bytes/1024/1024,'99,999.999') total_bytes,
to_char( (c.bytes-d.bytes_used)/1024/1024,'99,999.999') free_bytes,
to_char(d.bytes_used/1024/1024,'99,999.999') use_bytes,
to_char(d.bytes_used*100/c.bytes,'99.99') || '%' use
from
(select tablespace_name,sum(bytes) bytes
from dba_temp_files group by tablespace_name) c,
(select tablespace_name,sum(bytes_cached) bytes_used
from v$temp_extent_pool group by tablespace_name) d
where c.tablespace_name = d.tablespace_name
)
- 2. 查看当前用户的使用的表空间及默认表空间,如果结果太多可以自己添加where条件过滤到当前用户
select username,default_tablespace,temporary_tablespace
from dba_users
- 3.临时表空间满了查询可能会报错,执行如下命令收缩临时表空间
ALTER TABLESPACE MYTISJS_TEMP SHRINK SPACE
其中MYTISJS_TEMP为要收缩的临时表空间名
- 4.删除用户及表空间
DROP USER TISJS5 CASCADE;
drop tablespace MYTISJS5 including contents and datafiles;
drop tablespace MYTISJS5_TEMP including contents and datafiles;
oracle导出导入数据库的更多相关文章
- Oracle导出/导入数据库的三种模式
导出 模式一:全量导出(慎用) exp 用户名/密码@数据库实例 owner=用户名 file=文件存储路径 log=日志存储路径 full=y 栗子:exp Mark/123456@151.2.*. ...
- Oracle导出导入数据库的方式
一.导入导出.dmp文件 利用cmd的操作命令导出,详情如下(备注:方法二是转载网上的教程):1:G:\Oracle\product\10.1.0\Client_1\NETWORK\ADMIN目录下有 ...
- atitit.sql server2008导出导入数据库大的表格文件... oracle mysql
atitit.sql server2008导出导入数据库大的表格文件... 1. 超过80M的文件是不能在查询分析器中执行的 1 2. Oracle ,mysql大的文件导入 1 2.1. 使用sql ...
- mysql进阶(十三)命令行导出导入数据库
MySQL命令行导出导入数据库 MySQL命令行导出数据库: 1,进入MySQL目录下的bin文件夹:cd MySQL中到bin文件夹的目录 如我输入的命令行:cd D:\Program Files\ ...
- 第二百九十节,MySQL数据库-MySQL命令行导出导入数据库,数据库备份还原
MySQL命令行导出导入数据库,数据库备份还原 MySQL命令行导出数据库:1,进入MySQL目录下的bin文件夹:cd MySQL中到bin文件夹的目录如我输入的命令行:cd C:\Program ...
- oracle 导出导入常见问题
oracle 导入导出常见有两种方法 EXP和IMP是客户端工具程序,它们既可以在客户端使用,也可以在服务端使用.EXPDP和IMPDP是服务端的工具程序,他们只能在ORACLE服务端使用,不能在客户 ...
- Oracle导出导入数据
Oracle数据导入导出imp/exp就相当与oracle数据还原与备份, 利用这个功能你可以构建俩个相同的数据库,一个用来测试,一个用来正式使用. 可以在SQLPLUS.EXE或者DOS(命令行)中 ...
- oracle导出/导入 expdp/impdp
Oracle使用EXPDP和IMPDP数据泵进行导出导入的方法(常用方法) 使用expdp和impdp时应该注重的事项: 1.exp和imp是客户端工具程序,它们既可以在客户端使用,也可以在服务端使用 ...
- Oracle导出导入
导出 exp 用户名/密码 file=文件名.dmp full=y; 导入 imp 用户名/密码 file=文件名.dmp full=y; 使用EXPDP和IMPDP时应该注意的事项: EXP和IMP ...
随机推荐
- RabbitMQ TroubleShooting
RabbitMQ是一款优秀的消息队列中间件,提供了稳定.监控完善的产品,但是软件就会有bug.为了前进路径可以畅通,我们必须了解出现的一些故障的快速处理方式,毕竟在生产环境,时间就是生命,尽快的处理是 ...
- C# 爬虫 正则、NSoup、HtmlAgilityPack、Jumony四种方式抓取小说
心血来潮,想爬点小说.通过百度选择了个小说网站,随便找了一本小说http://www.23us.so/files/article/html/13/13655/index.html. 1.分析html规 ...
- C#抽象类跟接口
抽象类描述的是一个什么东西,属性. 抽象类是对类的抽象,描述是什么 抽象类,继承后重写接口描述的是他做什么,行为.接口是对行为的抽象,描述做什么 ,进行继承后实行接口
- Linux磁盘空间被占用问题 (分区目录占用空间比实际空间要大: 资源文件删除后, 空间没有真正释放)
问题说明:IDC里的一台服务器的/分区使用率爆满了!已达到100%!经查看发现有个文件过大(80G),于是在跟有关同事确认后rm -f果断删除该文件.但是发现删除该文件后,/分区的磁盘空间压根没有释放 ...
- 索引节点(inode)爆满问题处理
关于磁盘空间中索引节点爆满的问题还是挺多的,借此跟大家分享几个情况: 情况一 在公司一台配置较低的Linux服务器(内存.硬盘比较小)的/data分区内创建文件时,系统提示磁盘空间不足,用df -h命 ...
- C_数据结构_数组的修改和删除
#include<stdio.h> typedef struct Node { int a,b; }node; node c[]; int n; void print() { int i; ...
- A. A Prank
题意 有数列从小到大排列,都是不同范围1~ 1000,问你最多去掉多少个数字还能复原 由于wrong很多发所以写一下 链接 [http://codeforces.com/contest/1062/pr ...
- linux及安全第八周总结
进程的调度时机与进程的切换 操作系统原理中介绍了大量进程调度算法,这些算法从实现的角度看仅仅是从运行队列中选择一个新进程,选择的过程中运用了不同的策略而已. 对于理解操作系统的工作机制,反而是进程的调 ...
- Linux内核分析作业八
进程的切换和系统的一般执行过程 贾瑗 原创作品转载请注明出处 <Linux内核分析>MOOC课程 http://mooc.study.163.com/course/USTC-1000029 ...
- <构建之法>8,9,10章的读后感
第八章 这一章主要讲的是需求分析,主要介绍在客户需求五花八门的情况下,软件团队如何才能准确而全面地找到这些需求. 第九章 问题:我们现在怎样培养才能成为一名合格的PM呢? 第十章 问题:如果典型用户吴 ...