在测试过程中,一般为了让测试环境与开发环境隔离,一般要球测试环境对应的数据库也与开发环境进行隔离

这时候我的做法是:先创建一个用于测试环境的用户,然后将开发环境中该用户对应的表及数据导出,再导入到测试用户下

具体实现步骤:

方式一:

创建测试用户,并赋权限(看需要是否需要创建表空间)--》》》然后可直接使用imp命令将开发环境用户下的所有表及数据,包括约束,存储过程,触发器导出为一个dmp文件,然后使用exp命令将该文件导入到测试用户下即可

--创建表空间
CREATE TABLESPACE "TBS_KFMH_DAT01" DATAFILE 
  '/+DG_DATA/kfmh_dat01' SIZE 204800000
  LOGGING ONLINE PERMANENT BLOCKSIZE 8192
  EXTENT MANAGEMENT LOCAL AUTOALLOCATE DEFAULT 
 NOCOMPRESS  SEGMENT SPACE MANAGEMENT AUTO
--/+DG_DATA/kfmh_dat002为oracle的数据文件路径
--TBS_KFMH_DAT01为表空间名称

---创建用户
create user kfmhDev identified by kfmhDev
  default tablespace TBS_KFMH_DAT01
  temporary tablespace TEMP
  profile DEFAULT
  password expire;
  
--赋权限
-- Grant/Revoke object privileges 
grant execute on DBMS_JOB to kfmhDev;
grant execute on DBMS_RANDOM to kfmhDev;
-- Grant/Revoke role privileges 
grant connect to kfmhDev;
-- Grant/Revoke system privileges 
grant alter session to kfmhDev;
grant create cluster to kfmhDev;
grant create materialized view to kfmhDev;
grant create procedure to kfmhDev;
grant create sequence to kfmhDev;
grant create session to kfmhDev;
grant create synonym to kfmhDev;
grant create table to kfmhDev;
grant create trigger to kfmhDev;
grant create type to kfmhDev;
grant create view to kfmhDev;
grant execute any procedure to kfmhDev;
grant execute any type to kfmhDev;
grant force transaction to kfmhDev;
grant select any table to kfmhDev;
grant unlimited tablespace to kfmhDev;

---查看表空间大小及使用情况
SELECT a.tablespace_name "表空间名", 
total "表空间大小", 
free "表空间剩余大小", 
(total - free) "表空间使用大小", 
total / (1024 * 1024 * 1024) "表空间大小(G)", 
free / (1024 * 1024 * 1024) "表空间剩余大小(G)", 
(total - free) / (1024 * 1024 * 1024) "表空间使用大小(G)", 
round((total - free) / total, 4) * 100 "使用率 %" 
FROM (SELECT tablespace_name, SUM(bytes) free 
FROM dba_free_space 
GROUP BY tablespace_name) a, 
(SELECT tablespace_name, SUM(bytes) total 
FROM dba_data_files 
GROUP BY tablespace_name) b 
WHERE a.tablespace_name = b.tablespace_name

select * from user_tables;

select * from user_tables where num_rows!=0;

--查询外键列表
select * from user_constraints c where c.constraint_type = 'R';

--查询所有索引
select t.*,i.index_type from user_ind_columns t,user_indexes i where t.index_name = i.index_name and t.table_name = i.table_name

--查询触发器 
SELECT NAME FROM USER_SOURCE WHERE TYPE = 'TRIGGER' GROUP BY NAME

--导出用户下的所有表结构及数据
--进入到oracle所在服务器(通常为linux)
--进入linux
--# su - oracle

--导出某个用户下的所有数据
--$ exp sys/oracle\"@kfmh\" file=kfmhTest.dmp owner=kfmhTest log=exp_kfmhTest.log

只导出数据对象,不导出数据 (rows=n )

--向某个用户导入数据
--$ imp sys/oracle\"@kfmh\" file=kfmhTest.dmp log=imp_kfmhDev.log fromuser=kfmhTest touser=kfmhDev commit=y ignore=y

方式二:

我给人的项目由于表众多,且不同表之间的关联性比较强,使用第一张方式导出表数据的时候会报错,此时我是按照分布导出的方式进行的:
步骤如下:

创建测试用户,并赋权限(看需要是否需要创建表空间)--》》》然后导出表结构,导出表数据--》》》在导入到测试用户时,是先将表结构和主键导入,然后导入数据,再导入表存储过程,触发器,最后导入外键

传送门:

3. 三种模式 
    (1)表方式,将指定表的数据导出/导入。 
    导出:导出一张或几张表:$ exp user/pwd file=/dir/xxx.dmp log=xxx.log tables=table1,table2 
    导出某张表的部分数据 
    $ exp user/pwd file=/dir/xxx.dmp log=xxx.log tables=table1 query=\“where col1=\‘…\’and col2 \<…\” 
    导入:导入一张或几张表 
    $ imp user/pwd file=/dir/xxx.dmp log=xxx.log tables=table1, 
    table2 fromuser=dbuser touser=dbuser2 commit=y ignore=y 
    (2)用户方式,将指定用户的所有对象及数据导出/导入。 
    导出:$ exp user/pwd file=/dir/xxx.dmp log=xxx.log owner=(xx, yy) 
    只导出数据对象,不导出数据 (rows=n ) 
    $ exp user/pwd file=/dir/xxx.dmp log=xxx.log owner=user rows=n 
    导入:$ imp user/pwd file=/dir/xxx.dmp log=xxx.log fromuser=dbuser touser=dbuser2 
    commit=y ignore=y 
    (3)全库方式,将数据库中的所有对象导出/导入导出: 
    $ exp user/pwd file=/dir/xxx.dmp log=xxx.log full=ycommit=y ignore=y 
    导入:$ imp user/pwd file=/dir/xxx.dmp log=xxx.log fromuser=dbuser touser=dbuser2

oracle将一个用户下的所有表复制到以一个用户下相关推荐

  1. linux给文件夹下所有文件授权,Linux 如何将一个文件夹的所有内容授权给某一个用户...

    我们可以使用chown命令,ch这里代表change(改变)的意思,own代表英文单词的owner(拥有者),连在一起就是 change owner ,改变某个文件或者文件夹的拥有者. 一般只有roo ...

  2. linux整个目录复制移动,Linux将一个文件夹或文件夹下的所有内容复制到另一个文件夹,个人常用收录...

    1.将一个文件夹下的所有内容复制到另一个文件夹下 cp -r /home/packageA/* /home/cp/packageB/ 或 cp -r /home/packageA/. /home/cp ...

  3. 批量上传相册,将一个文件夹下的所有图片,复制到另一个文件夹,仅给出文件夹目录

    package cn.hp.demo01;import java.io.*;/* * 批量上传相册 *将一个文件夹下的所有图片,复制到另一个文件夹 *仅给出文件夹目录*/ public class D ...

  4. linux怎么授权目录,详解Linux如何将一个文件夹的所有内容授权给某一个用户?...

    详解Linux如何将一个文件夹的所有内容授权给某一个用户? 发布时间:2020-09-14 15:23:51 来源:脚本之家 阅读:138 作者:冰阔落 栏目:服务器 [问题分析] 我们可以使用cho ...

  5. linux命令 把文件夹拷贝一遍_Linux 将文件夹下的所有文件复制到另一个文件里

    如何将文件夹/home/work下的文件复制到/home/temp里面? 使用命令: cp -R /home/work/* /home/temp *表示所有文件 但是/home/work 下的隐藏文件 ...

  6. SQL Server将数据库中的表复制到另一个数据库

    在使用SqlServer的过程中,我们可能需要将表从一个数据库复制到另一个数据库中,今天,小编为大家介绍这种操作的具体方法及步骤. 一:复制表结构: 1.首先,打开并连接Sql Server,在源数据 ...

  7. 写一函数,将一个字符串中的元音字母复制到另一个字符串,然后输出

    题目描述 写一函数,将一个字符串中的元音字母复制到另一个字符串,然后输出. 输入 一行字符串 输出 顺序输出其中的元音字母(aeiuo) 样例输入 abcde 样例输出 ae #include< ...

  8. sql如何把一个数据库的表复制到另一个数据库中【转载】

    sql如何把一个数据库的表复制到另一个数据库中[转载] 这篇经验帖是我转载的,是我搜到的最为直观具体的 一.需要把一张表的表结构从一个数据(A)库复制到另一个数据库(B).操作步奏如下: ①在数据库A ...

  9. 写一个函数,将一个字符串中的元音字母复制到另一个字符串,然后输出

    写一个函数,将一个字符串中的元音字母复制到另一个字符串,然后输出 思路:所谓复制到另一个字符串中,就是使a,b数组中元素一一对应,因为字符串结束的标志是\0,所以最后要赋值\0. #include&l ...

最新文章

  1. Android测试原理概述(一)
  2. UNITY 打APK是如何确定哪些资源有用哪些无用的
  3. MySQL的体系结构是C S结构_c/s结构的数据库系统结构是指
  4. linux 查看用户上次修改密码的日期
  5. 【Shell教程】一----什么是Shell
  6. 第二:Git如何将本地项目上传到Github(超详解)
  7. Matlab Tricks(二十三)—— 保存图像到 pdf
  8. R语言︱ 数据库SQL-R连接与SQL语句执行(RODBC、sqldf包)
  9. 指令 出厂_CNC数控加工中心编程指令详解
  10. PyCharm汉化包安装下载及PyCharm无法进行设置问题
  11. Note8 android 9 root,三星NOTE8国行 N9500 9.0 root N9500ZCS4DSD5 root 高级设置
  12. html设置背景图片颜色,CSS设置背景图片及背景颜色示例
  13. c++创建一个linux deamon进程
  14. Kinect v2(Microsoft Kinect for Windows v2 )配置移动电源解决方案
  15. 域名WHOIS信息隐私保护
  16. 如何将时间序列分解为周期序列和趋势序列的和?
  17. 自来水智慧水务平台(建设方案及项目经验)
  18. 记录12306项目抢票成功的经历:CentOS7环境
  19. 唯品会财报:一面骄阳,一面寒霜
  20. 安图实验室信息系统--用户许可协议(仅供学习使用)

热门文章

  1. Service Mesh -- Istio概述
  2. 慧通教育——python进阶习题第一关(一)
  3. 连接mumu模拟器运行frida
  4. 2012.5 中端娱乐攒机配置
  5. XMind8 思维导图中文版
  6. 一场疫情让我明白:当死亡来临时,什么才是最好的告别
  7. 转:js 将json字符串转换为json对象的方法解析
  8. Python笔记11-基于VN.py的实时K线生成器
  9. 连看视界java_大咖视界|LinkIDE:全栈轻应用开发者的强兵利器
  10. (收藏)强烈推荐几个学习数据结构和算法的网站和可视化工具