oracle将一个用户下的所有表复制到以一个用户下
在测试过程中,一般为了让测试环境与开发环境隔离,一般要球测试环境对应的数据库也与开发环境进行隔离
这时候我的做法是:先创建一个用于测试环境的用户,然后将开发环境中该用户对应的表及数据导出,再导入到测试用户下
具体实现步骤:
方式一:
创建测试用户,并赋权限(看需要是否需要创建表空间)--》》》然后可直接使用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将一个用户下的所有表复制到以一个用户下相关推荐
- linux给文件夹下所有文件授权,Linux 如何将一个文件夹的所有内容授权给某一个用户...
我们可以使用chown命令,ch这里代表change(改变)的意思,own代表英文单词的owner(拥有者),连在一起就是 change owner ,改变某个文件或者文件夹的拥有者. 一般只有roo ...
- linux整个目录复制移动,Linux将一个文件夹或文件夹下的所有内容复制到另一个文件夹,个人常用收录...
1.将一个文件夹下的所有内容复制到另一个文件夹下 cp -r /home/packageA/* /home/cp/packageB/ 或 cp -r /home/packageA/. /home/cp ...
- 批量上传相册,将一个文件夹下的所有图片,复制到另一个文件夹,仅给出文件夹目录
package cn.hp.demo01;import java.io.*;/* * 批量上传相册 *将一个文件夹下的所有图片,复制到另一个文件夹 *仅给出文件夹目录*/ public class D ...
- linux怎么授权目录,详解Linux如何将一个文件夹的所有内容授权给某一个用户?...
详解Linux如何将一个文件夹的所有内容授权给某一个用户? 发布时间:2020-09-14 15:23:51 来源:脚本之家 阅读:138 作者:冰阔落 栏目:服务器 [问题分析] 我们可以使用cho ...
- linux命令 把文件夹拷贝一遍_Linux 将文件夹下的所有文件复制到另一个文件里
如何将文件夹/home/work下的文件复制到/home/temp里面? 使用命令: cp -R /home/work/* /home/temp *表示所有文件 但是/home/work 下的隐藏文件 ...
- SQL Server将数据库中的表复制到另一个数据库
在使用SqlServer的过程中,我们可能需要将表从一个数据库复制到另一个数据库中,今天,小编为大家介绍这种操作的具体方法及步骤. 一:复制表结构: 1.首先,打开并连接Sql Server,在源数据 ...
- 写一函数,将一个字符串中的元音字母复制到另一个字符串,然后输出
题目描述 写一函数,将一个字符串中的元音字母复制到另一个字符串,然后输出. 输入 一行字符串 输出 顺序输出其中的元音字母(aeiuo) 样例输入 abcde 样例输出 ae #include< ...
- sql如何把一个数据库的表复制到另一个数据库中【转载】
sql如何把一个数据库的表复制到另一个数据库中[转载] 这篇经验帖是我转载的,是我搜到的最为直观具体的 一.需要把一张表的表结构从一个数据(A)库复制到另一个数据库(B).操作步奏如下: ①在数据库A ...
- 写一个函数,将一个字符串中的元音字母复制到另一个字符串,然后输出
写一个函数,将一个字符串中的元音字母复制到另一个字符串,然后输出 思路:所谓复制到另一个字符串中,就是使a,b数组中元素一一对应,因为字符串结束的标志是\0,所以最后要赋值\0. #include&l ...
最新文章
- Android测试原理概述(一)
- UNITY 打APK是如何确定哪些资源有用哪些无用的
- MySQL的体系结构是C S结构_c/s结构的数据库系统结构是指
- linux 查看用户上次修改密码的日期
- 【Shell教程】一----什么是Shell
- 第二:Git如何将本地项目上传到Github(超详解)
- Matlab Tricks(二十三)—— 保存图像到 pdf
- R语言︱ 数据库SQL-R连接与SQL语句执行(RODBC、sqldf包)
- 指令 出厂_CNC数控加工中心编程指令详解
- PyCharm汉化包安装下载及PyCharm无法进行设置问题
- Note8 android 9 root,三星NOTE8国行 N9500 9.0 root N9500ZCS4DSD5 root 高级设置
- html设置背景图片颜色,CSS设置背景图片及背景颜色示例
- c++创建一个linux deamon进程
- Kinect v2(Microsoft Kinect for Windows v2 )配置移动电源解决方案
- 域名WHOIS信息隐私保护
- 如何将时间序列分解为周期序列和趋势序列的和?
- 自来水智慧水务平台(建设方案及项目经验)
- 记录12306项目抢票成功的经历:CentOS7环境
- 唯品会财报:一面骄阳,一面寒霜
- 安图实验室信息系统--用户许可协议(仅供学习使用)