ORACLE导入导出 |
您所在的位置:网站首页 › 瑞幸的冰美式可以减肥吗 › ORACLE导入导出 |
Oracle的导入导出命令有2种,即【imp--exp】【impdp--expdp】。 Imp\impdp是导入命令,exp/expdp是导出命令。这2种导入导出命令最大的区别是【impdp--expdp】比【imp--exp】更快,且需要注意导入方式完全取决于导出方式,expdp导出的数据库必须使用impdp方式导入。 流程简介: Impdp:创建目录存放导入的文件----创建表空间[和导出的表空间一致]-----创建用户[如果已存在同名用户需要先删除,删除时先从dbcnt删除,再在sqlplus执行drop命令]----用户授权----cmd命令导入 Expdp:创建目录存放导出的文件--确定导出的范围--cmd执行导出语句 创建目录 create directory dpdata as 'E:\oracle\dump’; 查询目录 select * from dba_directories; 删除目录 drop directory 目录名称; 创建表空间 create tablespace data---具体表空间名 datafile ‘E:\app\Administrator\oradata\orclup\data.dbf’ --存储地址 size 1024M 初始大小 autoextend on next 100M --每次扩展100M 创建用户 create user username identified by password --创建用户信息 default tablespace user_data ---默认表空间 temporary tablespace user_temp;---临时表空间 用户授权 grant connect,resource,dba to username with admin option; grant unlimited tablespace to username ; Impdp导入 在cmd执行如下语句,导入表空间默认和导出时的表空间一致,如果需要更改可用使用remap_schema(更改用户名)及remap_tablespace(更改存储表空间)关键字。SCHEMAS是需要复制的用户 Impdp system/[email protected]:1521/ORCLUP DIRECTORY=DATA_PUMP_DIR DUMPFILE=.DMP SCHEMAS=用户 logfile=20210105.log expdp导出 创建导出存放目录--确定导出范围--cmd执行导出命令 1.导出整个数据库expdp system/123456 DIRECTORY=DPDATA DUMPFILE=自定义导出文件名.dmp FULL=y 2.导出指定的账套expdp USERNAME/PASSWORD@orcl schemas=指定用户 DIRECTORY=DPDATA DUMPFILE=自定义文件名.dmp logfile=expdp.log; 以下是补充内容 Imp导入简介 在cmd执行如下语句 imp 用户名/密码@数据库实例名 file=C:\data\filename.dmp -- 配置待导入的dmp文件 log=C:\data\logname.log -- 配置要导入时生成的日志文件地址(可不配置) [fromuser=source用户名 -- 配置dmp导出的数据库的用户名(仅在根据用户名导入数据时配置) touser=target用户名 -- 配置dmp要导入的数据库的用户名(仅在根据用户名导入数据时配置) |full=y] -- 配置导入文件中的全部内容,有可能有多个用户的内容 ignore=y; -- 配置导入的时候,如果没有表,创建表并导入数据,如果已经存在的表,忽略创建表,但不忽略导入。 示例: imp username/[email protected]:1521/orcl file=E:\DBinstallpackageAndBackup\dpdump\85550003.dmp fromuser=来源用户 touser=目标用户 log=E:\DBinstallpackageAndBackup\dpdump文件名称.log IGNORE=Y 表空间扩容 设置自动增长可用大小先看下数据库表空间的存储情况,8k的块最大可以放32G,如果是8k但是可用空间不足32又满了可先设置自动增长 查询表空间是否自动扩容SELECT FILE_NAME,TABLESPACE_NAME,AUTOEXTENSIBLE FROM dba_data_files; 如果表空间确实满了,需要增加数据块ALTER TABLESPACE "表空间名称" --指定增长表空间 ADD DATAFILE 'E:\app\Administrator\oradata\orclup\data2.dbf' --存放数据块的位置 SIZE 1024M AUTOEXTEND ON NEXT 200M; ---自增,满了再扩200m 附上2个参考链接 Oracle表空间满了之如何扩容-CSDN博客 解决Oracle报错ORA-01653: 表xx无法通过 8192 (在表空间 xx_data 中) 扩展__ora01653无法通过8192扩展 创建数据块 create tablespace DATAname datafile '/u01/app/oracle/oradata/orcl/DATA.dbf' size 2048m AUTOEXTEND ON NEXT 200M 删除用户提示无法删除当前已连接的用户 原因:有用户正在连着这个数据库查询一下数据中有没有用户在使用 select username,sid,serial#,paddr from v$session where username='替换用户名'; 然后把session删了 alter system kill session '634,7';--这个是sid,serial 再删除用户 drop user ecity CASCADE; 修改Oracle系统管理员SYS的密码 1.首先进入 Oracle 安装目录,形如 C:\oraclexe\app\oracle\product\11.2.0\server\database> 删除或重命名 PWDorcl.ora 文件。 2.在当前目录输入cmd调命令行窗口执行orapwd file=PWDorcl.ora password=mypassword entries=5 force=y Oracle账号被锁ORA28000 1.查看用户使用的概要文件名,一般为DEFAULT:select username,profile from dba_users; 2.查看概要文件中设置的密码错误后限制的登录次数select * from dba_profiles where profile='DEFAULT' and resource_name='FAILED_LOGIN_ATTEMPTS'; 3.修改连接数不受限制:alter profile default limit failed_login_attempts unlimited; 4.查询用户状态,解锁用户: select username,account_status from dba_users; alter user user_name account unlock; oracle11g导出表时空表导不出解决方案 oracle11g用exp命令导出数据库表时,有时会发现只导出了一部分表时而且不会报错,原因是有空表没有进行导出,之前一直没有找到方法于是用最笨的方法重新建这些空表,当然在我们实际当中表的数量大时我们该怎么办??? oracle10g版本中没有这样的问题。 于是查资料发现oracle11g有个新特性,增加了一个新特性"deferred_segment_creation" 含义是段延迟创建,默认是true。 具体是什么意思呢?我们来解释下: 如果这个参数设置为true,你新创建了一个Table,并且没有向其中插入数据,那么这个表不会立即分配extend,也就是不占数据空间,即表不分配segment以节省空间,所以这些表也没能导出来。在系统表user_tables中也可以看到segment_created的字段里是“NO”或者“YES”说明了某张表是否分配了segment。说白了是为了可以节省少量的空间。 我所使用的解决方法: >>> 建对空表分配空间的SQL命令。 1.查询当前用户下的所有空表,一个用户最好对应一个默认的表空间,命令如下: >SQL: select table_name from user_tables where num_rows='0' 2.根据上述查询的语句,可以构建针对空表分配空间的命令语句,具体如下; >SQL:select 'alter table '||table_name||' allocate extent;' from user_tables where num_rows=0 or num_rows is null(注意:很多教程没有这里,这里是有可能为空的) 上述代码可产生批量的修改表extent的SQL语句(有多少张空表就产生多少条),我们只需要将其生成的所有sql代码全部执行,就可以给每一张已经存在的表来分配segment,就OK了。 再用exp命令进行导出即可。 |
CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3 |