zoukankan      html  css  js  c++  java
  • orcl 之 导入和导出

     dmp文件导入
    //1 oracle的数据模式是:用户建在表空间上,表建在用户上
    //2 一个用户的表就象自己的私有财产一样,没有自己或管理员授权别的用户是不能查询或修改的;
    //3 对于不同用户下的同名表,都是独立的数据对象,如user1.table1和user2.table1是相互独立的,用户分别操作自己的表是不影响其他用户的;
    //4 对于同一用户下的同一个表,所有有权限的用户对其进行数据操作时,是会相互影响的,如对user1.table1来说,user1修改了它的一行, 
    //user2又对该表的该行进行了修改,那么该表的该行的实际内容是在user1修改后基础上user2修改的结果
    //(注意,所有修改以最后成功提交修改请求的用户的内容为准), 多个用户对同一个用户下的同一个表的同时修改和锁定会造成锁等待
      --创建表空间 create tablespace TS_YYGL logging datafile 'D:联众信息HRP项目信息OracleDataBaseoracleData变动文件/daochu20170621.dmp' --首先保证这个地址不存在该文件 size 50m autoextend on next 50m maxsize 20480m extent management local; --创建用户并指定表空间 create user ehospitalii identified by yygl default tablespace TS_YYGL --temporary tablespace medicinecm_temp; --赋予用户权限 grant connect,resource,dba to ehospitalii; 
    --删除存在的表空间及数据
    DROP TABLESPACE TS_WW INCLUDING CONTENTS AND DATAFILES;
    drop user 用户名  cascade
    --查找当前用户的表空间
    select default_tablespace from user_user

    以上处理 后,然后开始下面操作

    //1,打开“开始”-->输入cmd—> sqlplus /nolog;

    ///2,输入 conn / as sysdba管理员账户登录;

    //3,需要创建表空间,如果我们知道需要导入的数据库的表空间直接创建就可以,如果不不知道,也没有关系,我们可以用txt打开dmp文件,使用快捷键ctrl+F,查找tablespace,就可以找到这个dmp文件所对应数据库的表空间,然后创建我们找到的表空间就可以;

    步,不创建的表空间,创建用户,并分配权限;

    //5,打开“开始”-->输入cmd(注意:这里是cmd窗口,不是sqlplus窗口!!!),输入以下语句:“imp kang/123456@localhost/ORACLEfile="C:daochu.dmp"full=y ignore=y”

    上述语句说明如下:

    //kang是创建的登录数据库用户名;

    //123456是登录数据库的密码;

    //localhost:代表当前数据库的地址是本机,如果是远程导入,替换成对应的ip地址就行

    //ORACLE:是实例名称)

    //file:后面的是你当前dmp文件存放的路径

    //full=y,这个貌似是全部

    //ignore=y,忽略一些错误

    注意点:若是不修改参数,那么空表不会被导出

    最近,要在其他地方重新复制一套数据库,数据库是Oracle11G的,先用exp full=y导出备份文件后,在另外的数据库上导入后,发现有一些表没有导入

    这些表都有一些共同的特征,全部都是空表,百度发现原因,是因为一个参数的原因:

    //show parameter deferred_segment_creation

    当这个参数是true时,空表就不会分配segment空间,也不能被导出,将它改成false

    alter system set deferred_segment_creation=false

    就可以导出了。

    不过,这只适用于修改参数之后创建的对象,对于之前创建的对象,只能通过其他方式来确保能导出:

    //1.编辑对象中的数据,比如新增一条数据再删除。

    //2.执行alter table tablename  allocate extent手动为表分配空间。

    不同用户之间的导入  a用户导入到b用户

    找了很多资料,其中一个是只能在服务端操作的empdb的操作,具体没有用过。

    另外一种就是通过我们熟悉的imp 导入

    具体的案例:imp  b用户名/密码@服务名  fromuser=a用户名 touser=b用户名 ignore=y file="导入的文件路径+文件名.dmp"  

    作为对比你会发现少了一个full=y,尝试过,提示不能同时存在fromuser 与full两种导入模式 

    不同的用户可以使用同一个表空间

    --创建用户并指定表空间
    create user ehospitaljx  identified by yygl
    default tablespace  TS_YYGLjx
    --temporary tablespace medicinecm_temp;
    --赋予用户权限
    grant connect,resource,dba to ehospitaljx;
    grant connect,resource,dba to zhcx;
    grant connect,resource,dba to zjhisro;
    drop user ehospitaljx  cascade
    drop user zhcx cascade 
    //通过命令窗口写入导入数据语句执行时,提示打不开dmp文件,可以将语句放到bat文件中执行
    //导出语法:
    //exp 账户/密码@服务名 file=地址 owner=账户

    删除用户表,表数据等内容

    drop user username cascade

    无法为表空间 spancename 中的段创建INITAL区处理办法

    找到表空间存储的地方文件
    select file_name from dba_data_files where tablespace_name = 'TS_YYGL'
    //为此表空间再添加一个数据文件存储
    ALTER TABLESPACE TS_YYGL ADD DATAFILE 'D:联众信息HRP项目信息ORACLEDATABASEORACLEDATA变动文件DAOCHU201706213.DMP' SIZE 10240M; 

    导入时若出现tmp00002的错误,文件无法打开
    原因:文件路径太长导致的,这时候把文件放到根目录下再导入

     文件导入导出还可以通过pl/sql来操作

    1/若是Export无反应,或者一闪而过
      解决方法:需要配置  ORACLE_HOME=D:appproduct11.2.0dbhome_1
      后面的路径是exp.exe的文件路径

    无法删除当前链接用户处理方法:

    //查到到当前用户进程
    select username,sid,serial# from v$session //关闭进程 alter system kill session '10,257' //删除用户和数据 drop user ehospitalze cascade

    安装oracle时提示path的值大于1023,此时可以用管理员运行安装即可。

    安装后运行pl/sql时,database一直没有选项,这是配置tools-preferences--oracle_home=OraDb11g_home,然后重启电脑

    安装后登陆时一直提示ORA-12154: TNS: 无法解析指定的连接标识符

    遇到这个问题真的很头痛,不明白真正的原因,在检查的时候发现客户端路径中tnsnames.ora文件不存在,就把服务端的来过来放进去了
    同时查资料,说是patn指定不清楚,因为path中有客户端和服务端两个的路径,然后将客户端删除后重启,再次使用pl/sql就好了
    --创建用户并指定表空间
    create user ehospitaljx  identified by yygl 
    default tablespace  TS_YYGLjx
    --temporary tablespace medicinecm_temp; 
    --赋予用户权限 
    grant connect,resource,dba to ehospitaljx; 

    --表空间大小
    Select Tablespace_Name,Sum(bytes)/1024/1024 From Dba_Segments Group By Tablespace_Name
    --剩余表空间大小

      SELECT tablespace_name 表空间,sum(blocks*8192/1000000) 剩余空间M FROM dba_free_space GROUP BY tablespace_name

     

    oracle10g 导出到 oracle11g遇到的一些问题和总结

    知道impdp命令只可导入expdp导出的dmp文件。expdp导出的时候,需要创建 DIRECTORY
    
    导出什么表空间,导入也要什么表空间。
    
    导出什么用户,导入也要什么用户。
    
    如果没有要新建。

    创建directory //导入的文件也应该放入该文件夹下
    create or replace directory wsj_obj_name as 'E:联众科技项目文档LocalData/home/dir';  
    删除directory
    drop directory dir;
    说明:1/在创建的时候,wsj_obj_name这里的名字随便取得,
    2/'E:.....'这里得路径也是随便写,这里得路径指得是文件夹,即使对应得文件夹,也会创建成功,但是导入时是会报错的
    给用户赋予权限
    dgrant CREATE ANY DIRECTORY,create session,create table,create view,unlimited tablespace to ehospitalii

     
    //分析:remap_schema 类似于: fromuser touser
    impdp ehospitalii/yygl@ORCL directory=dir_dp dumpfile=ncsy_0429.dmp logfile=ncsy_0429(imp).log remap_schema=ehospitalii:ehospitalii

    各种错误汇总

    ora-01653,提示表空间溢出,若是登录不了,试着删除电脑多余的文件

  • 相关阅读:
    ES6中变量的解析赋值的用途
    ES6中的Set与Map数据结构
    cocos2d-js 序列帧动画
    cocos2d-x坐标系详解
    【javascript】函数中的this的四种绑定形式
    ECMAScript 定义类、对象
    JS中函数参数值传递和引用传递
    作用域
    List<Map>如何根据Map的特定key对应的value对List排序?
    SQL字符型字段按数字型字段排序实现方法
  • 原文地址:https://www.cnblogs.com/zmztya/p/7058706.html
Copyright © 2011-2022 走看看