1、2010 年 5 月 12 日SQL alter user scott account unlock;SQL alter user scott identified by pan;Oracle 数据导入导出 imp/exp 就相当于 oracle 数据还原与备份。exp 命令可以把数据从远程数据库服务器导出到本地的 dmp 文件,imp 命令可以把 dmp 文件从本地导入到远处的数据库服务器中。 利用这个功能可以构建两个相同的数据库,一个用来测试,一个用来正式使用。 执行环境:可以在 SQLPLUS.EXE 或者 DOS(命令行)中执行, DOS 中可以执行时由于 在 oracle 8i 中
2、安装目录ora81BIN 被设置为全局路径, 该目录下有 EXP.EXE 与 IMP.EXE 文件被用来执行导入导出。 oracle 用 java 编写, SQLPLUS.EXE、EXP.EXE、IMP.EXE 这两个文件有可能是被包装后的类文件。 SQLPLUS.EXE 调用 EXP.EXE、IMP.EXE 所包裹的类,完成导入导出功能。 下面介绍的是导入导出的实例。 数据导出: 1 将数据库 TEST 完全导出,用户名 system 密码 sql 导出到 D:daochu.dmp 中 exp system/sqlTEST file=d:daochu.dmp full=y 2 将数据库中 s
3、ystem 用户与 sys 用户的表导出 exp system/sqlTEST file=d:daochu.dmp owner=(system,sys) 3 将数据库中的表 table1、table2 导出 exp aichannel/aichannelTESTDB2 file= d:datanewsmgnt.dmp tables=( table1、table2) 4 将数据库中的表 table1 中的字段 filed1 以“00“打头的数据导出 exp system/sqlTEST file=d:daochu.dmp tables=(table1) query=“ where filed1
4、like 00%“ 上面是常用的导出,对于压缩,既用 winzip 把 dmp 文件可以很好的压缩。 也可以在上面命令后面 加上 compress=y 来实现。 数据的导入: 进入 cmd输入:imp 用户名/用户名密码数据库名 file=dmp 文件路径 full=y1 将 D:daochu.dmp 中的数据导入 TEST 数据库中。 imp system/sqlTEST file=d:daochu.dmp imp aichannel/aichannelHUST full=y file=file= d:datanewsmgnt.dmp ignore=y 上面可能有点问题,因为有的表已经存在,
5、然后它就报错,对该表就不进行导入。 在后面加上 ignore=y 就可以了。 2010 年 5 月 12 日2 将 d:daochu.dmp 中的表 table1 导入 imp system/sqlTEST file=d:daochu.dmp tables=(table1) 基本上上面的导入导出够用了。不少情况要先是将表彻底删除,然后导入。析 Oracle 用户解锁命令的两则实现方法2009-11-3 作者: 编辑:崔晓帆 点击进入论坛关键词:Oracle 解锁在安装完 Oracle 10g 之后,想打开 sql*plus 来学习,然后按照书上的步骤用 scott 用户来连接数据库,可输了好几
6、次都提示一个错误。error: the account is locked然后上网查了一下之后发现这个用户被锁定了,至于它为什么被锁定,可能是下面几个原因。1.尝试多次登录未成功.(可能密码不正确)2.此用户被管理员手工锁定.3.用户密码到期.未按时修改密码 .等等.这个用户肯定是登陆不了了,然后我用 system 这个用户登录,可是登了半天都没有进去,又去网上查,网上面大都是关于 oracle 9i 的用户和密码,后来我记得在安装的时候就提示输入了,用那个试了一下就连接上了,所以在 oracle 10g 的 system 这个用户的密码不是默认的,而是安装的时候自己设定的。拿 system
7、登录进去之后,执行下面的命令:SQL alter user scott account unlock;用户已更改。这样就完成解锁的操作。接下来,你还可以重新给 scott 这个用户设定密码修改 scott 的登录密码SQL alter user scott identified by pan;2010 年 5 月 12 日用户已更改。ok 了,你再拿 scott 和 pan 来登录就可以了!SQL conn scott/pan已连接。新装完 Oracle 10g 后,用 system/password 可以正常登录,而使用 scott/tiger 用户却不能登录:conn scott/tige
8、r error:Oracle 10g the account is locked Oracle 10g the password has expired原因:默认 Oracle 10g 的 scott 不能登陆。被禁用了。解决方法:首先确认已经安装 oracle 数据库和客户端.在客户端 DOS 下执行如下语句:注意提示符号c:sqlplus /nolog sqlp conn sys/systemoracle10 as sysdba / sys 为当前的 oracle 用户 system 为该用户密码 oracle10 为 SID # alter user soctt account lock
9、; / 把 scott用户锁定 # alter user scott account unlock; /把 scott 用户解锁 # alter user scott identified by scott /修改 scott 用户密码为 scott,scott 用户默认密码为 tiger1 Dos 下输入 C:sqlplus /nolog2 以 DBA 的身份登录conn sys/password as sysdba;3 解锁alter user scott account unlock;4 弹出一个修改密码的对话框,修改密码2010 年 5 月 12 日conn scott/tiger S
10、QL conn sys/sys as sysdba; Connected. SQL alter user scott account unlock; User altered. SQL commit; Commit complete. SQL conn scott/tiger/请输入新密码,并确认后 OK Password changed Connected.oracle 10g 数据泵之 impdp(2008-08-18 08:47:50)转载标签: 程序it分类: 数据库要了解 impdp,请先了解导出,我之前作过导出的笔记:oracle 10g 数据泵之 expdp。这两个笔记也许只对程
11、序员有用,通常用于把正式区的数据导入到测试区,对数据库管理员也许帮助不大,他们使用这些工具大多是用于数据备份。impdp 可以将数据加载到整个数据库、特定的方案(也就是用户)、特定的表空间或者特定的表,也可以将表空间传输到数据库。impdp 支持网络模式操作,即从另一个数据库加载数据。使用 impdp 导入数据1指定转储文件(存放导出数据的文件)存放的目录SQLconnect sys/password as sysdba;SQLcreate directory dump_dir as d:dump;2使用 impdp 命令开始运行cmdimpdp username/password param
12、eter1,parameter2,.其中,username 表示用户名;password 表示用户密码;parameter1 和 parameter2 表示参数。参数的类型有近 40 个,可以使用命令 impdp help=y 查看所有参数和参数的含义。下面介绍一些对导入数据库和表需要的常用参数,它们的含义和在 expdp 中的含义完全相同。content :指定导入的内容。语法格式:content=all| data_only|metadate_only。其中 all 表示导入对象定义及其数据,data_only 表示只导入对象数据,metadate_only 表示只导入对象定义。默认为 a
13、lldirectory:指定转储文件和日志文件所在的默认位置(也就是保存数据的文件位置)。语法格式:directory=direcotry_object。direcotry_object 是 create directory 语句创建的目录对象。dumpfile:指定转储文件的名称。语法格式:dumpfile= direcotry_object:file_name,.。direcotry_object 默认为上面 directory 参数指定的目录对象。2010 年 5 月 12 日file_name 默认名称是 expdat.dmp。如果导入文件过大,可以指定多个文件名,如direcotry
14、_object:mydb_%U.dmp。 ”%U”是一个占位符,使用这种方式不会出现同名的文件。logfile:指定日志文件的名称。语法格式:logfile= direcotry_object:file_name。direcotry_object 默认为 directory 参数指定的目录对象。file_name 日志文件,默认名称是 export.log。exclude:导入时要排除的对象。语法格式: exclude=object_type:name_clause,.。object_type 表示对象类型,如table、view、index、function、preocedure,name_
15、clause 表示使用 SQL 语句,指定对象名的筛选条件,如 table:”like emp%”表示排除 emp 开始的任何表。include:导入时要包含的对象。语法格式:include =object_type:name_clause,.。object_type 和 name_clause 含义同 exclude 参数解释一样。include 和 exclude 不可以同时使用。当一个对象被包含时,所有相关对象也被包含。network_link:指定网格导入时的数据库链接名。语法格式:network_link=database_link。database_link 表示远程数据库链接名。
16、query:指定导入数据的 where 条件。语法格式:query=schema.table_name:query_clause。其中 schema 表示方案名,也就是用户名,table_name 表示表名,query_clause 表示条件子句,即 where 子句。tables:指定导入表。语法格式:tables=schema.table_name,.。schema 表示方案名,table_name 表示表名full:指定是否将整个数据库导入。语法格式:full=y|n。y 表示执行数据库导入,n 表不执行。默认为 n。parfile:指定导入参数文件名。把 impdp 命令所需的参数写在
17、一个文件中,执行 impdp 命令时指定这个文件,而不用指定各种参数导入实例顺便把 expdp 命令也写进来,以方便对比。为了不和上一篇导出笔记重复,这里以导入远程数据库的数据到本地数据库为例。导出远程数据库1.估算转储文件大小如果数据库很大,这个过程也许会执行很久。在导出数据库之前,最好先估算一下转储文件(导出到的文件)的大小,以便确定合适 filesize 参数值,和确定是否有足够的磁盘空间。使用语法:expdp username/password234DB full=y estimate_only=y nologfile=y;其中 estimate_only=y 表示只估算转储文件的占的
18、磁盘空间,不执行导出操作;234DB 表2010 年 5 月 12 日示远程数据库,它是在 tnsnames.ora 文件中定义的。2.导出数据库expdp username/password234DB directory=dump_dir dumpfile=mydb_%U.dmp logfile=mydb.log filesize=200m full=y其中 dump_dir 表示导出文件的目录,由于这里是导出远程数据库,所以这个目录是在远程机子中的;%U 是一个占位符,表示 0199 的两位数,这时执行会创建如 MYDB_21.DMP 之类的文件3.导入整个数据库impdp usernam
19、e/password directory=dump_dir dumpfile=mydb_%U.dmp full=y;其中 dump_dir 表示入出文件的目录,这里要把远程导出的文件拷贝到本地机子上导入远程表1.导出表expdp username/password234DB directory=dump_dir dumpfile=mytable.dmp tables=schemas.emp其中 schemas 表示方案(即用户),emp 表示远程数据库名。使用这种方式转储文件将保存在远程服务器的操作系统中。如果要把转储文件保存到本地机子,使用以下语法:expdp username/passwo
20、rd directory=dump_dir dumpfile=mytable.dmp tables=schemas.emp network_link=to234db其中 username/password 分别是本机数据库用户名和密码,to234db 是本地数据库指向远程数据库的 database link。这种方式可以把数据保存到本机中,但是会产生网络流量。2.导入表impdp username/password directory=dump_dir dumpfile=mytable.dmp tables=schemas.emp其中 schemas 要和远程用户名相同,也就是说如果本地没有这
21、个用户,要先创建用户,格式如:grant connect,resource to schemas identified by password。emp 是要导入的表,如果本地 schemas 方案已经存在要导入的表,可以指定 tables_exists_action 参数,使用格式是 tables_exists_action=skip|append|truncate|replace这四个参数值分别表示忽略这个表、把记录追加到该表后面、先删除表数据再追加记录和使用新表替代已经存在的表。向 Oracle 数据库导入 DMP 文件说明:dmp 文件为 Oracle 数据库备份文件。命令: imp:导
22、入emp:导出2010 年 5 月 12 日1. 获取帮助imp help=y2. 导入一个完整数据库imp system/manager file=bible_db log=dible_db full=y ignore=y3. 导入一个或一组指定用户所属的全部表、索引和其他对象imp system/manager file=seapark log=seapark fromuser=seapark impsystem/manager file=seapark log=seapark fromuser=(seapark,amy,amyc,harold)4. 将一个用户所属的数据导入另一个用户im
23、p system/manager file=tank log=tank fromuser=seapark touser=seapark_copyimp system/manager file=tank log=tank fromuser=(seapark,amy)touser=(seapark1, amy1)5. 导入一个表imp system/manager file=tank log=tank fromuser=seapark TABLES=(a,b)6. 从多个文件导入imp system/manager file=(paycheck_1,paycheck_2,paycheck_3,pa
24、ycheck_4)log=paycheck, filesize=1G full=y7. 使用参数文件imp system/manager parfile=bible_tables.parbible_tables.par 参数文件:#Import the sample tables used for the Oracle8i Database AdministratorsBible. fromuser=seapark touser=seapark_copy file=seapark log=seapark_import8. 增量导入imp system./manager inctype= REC
25、TORE FULL=Y FILE=AOracle imp/expC:Documents and Settingsadministratorexp help=yExport: Release 9.2.0.1.0 - Production on 星期三 7 月 28 17:04:43 2004Copyright (c) 1982, 2002, Oracle Corporation. All rights reserved.通过输入 EXP 命令和用户名 / 口令,您可以 后接用户名 / 口令的命令 :例程 : EXP SCOTT/TIGER或者,您也可以通过输入跟有各种参数的 EXP 命令来控制
26、“ 导出 ”按照不同参数。要指定参数,您可以使用关键字 :2010 年 5 月 12 日格式 : EXP KEYWORD=value 或 KEYWORD=(value1,value2,.,valueN)例程 : EXP SCOTT/TIGER GRANTS=Y TABLES=(EMP,DEPT,MGR)或 TABLES=(T1: P1,T1: P2) ,如果 T1 是分区表USERID 必须是命令行中的第一个参数。关键字 说明 ( 默认 ) 关键字 说明 ( 默认 )-USERID 用户名 / 口令 FULL 导出整个文件 (N)BUFFER 数据缓冲区大小 OWNER 所有者用户名列表 FI
27、LE 输出文件 (EXPDAT.DMP) TABLES 表名称列表 COMPRESS 导入到一个区 (Y) RECORDLENGTH IO 记录的长度 GRANTS 导出权限 (Y) INCTYPE 增量导出类型 INDEXES 导出索引 (Y) RECORD 跟踪增量导出 (Y)DIRECT 直接路径 (N) TRIGGERS 导出触发器 (Y)LOG 屏幕输出的日志文件 STATISTICS 分析对象 (ESTIMATE)ROWS 导出数据行 (Y) PARFILE 参数文件名 CONSISTENT 交叉表的一致性 (N) CONSTRAINTS 导出的约束条件 (Y)OBJECT_CON
28、SISTENT 只在对象导出期间设置为读的事务处理 (N)FEEDBACK 每 x 行的显示进度 (0)FILESIZE 每个转储文件的最大大小 FLASHBACK_SCN 用于将会话快照设置回以前状态的 SCNFLASHBACK_TIME 用于获取最接近指定时间的 SCN 的时间 QUERY 用于导出表的子集的 select 子句 RESUMABLE 遇到与空格相关的错误时挂起 (N)RESUMABLE_NAME 用于标识可恢复语句的文本字符串 RESUMABLE_TIMEOUT RESUMABLE 的等待时间 TTS_FULL_CHECK 对 TTS 执行完整的或部分相关性检查 TABLE
29、SPACES 要导出的表空间列表 TRANSPORT_TABLESPACE 导出可传输的表空间元数据 (N)TEMPLATE 调用 iAS 模式导出的模板名在没有警告的情况下成功终止导出。 =C:Documents and Settingsadministratorimp help=yImport: Release 9.2.0.1.0 - Production on 星期三 7 月 28 17:06:54 2004Copyright (c) 1982, 2002, Oracle Corporation. All rights reserved.可以通过输入 IMP 命令和您的用户名 / 口令
30、后接用户名 / 口令的命令 :例程 : IMP SCOTT/TIGER或者 , 可以通过输入 IMP 命令和各种参数来控制 “ 导入 ”2010 年 5 月 12 日按照不同参数。要指定参数,您可以使用关键字 :格式 : IMP KEYWORD=value 或 KEYWORD=(value1,value2,.,vlaueN)例程 : IMP SCOTT/TIGER IGNORE=Y TABLES=(EMP,DEPT) FULL=N或 TABLES=(T1: P1,T1: P2) ,如果 T1 是分区表USERID 必须是命令行中的第一个参数。关键字 说明(默认) 关键字 说明(默认) -USE
31、RID 用户名 / 口令 FULL Oracle 数据导入导出 imp/exp 就相当于 oracle 数据还原与备份。exp 命令可以把数据从远程数据库服务器导出到本地的 dmp 文件,imp 命令可以把 dmp 文件从本地导入到远处的数据库服务器中。 利用这个功能可以构建两个相同的数据库,一个用来测试,一个用来正式使用。 执行环境:可以在 SQLPLUS.EXE 或者 DOS(命令行)中执行, DOS 中可以执行时由于 在 oracle 8i 中 安装目录ora81BIN 被设置为全局路径, 该目录下有 EXP.EXE 与 IMP.EXE 文件被用来执行导入导出。 oracle 用 jav
32、a 编写, SQLPLUS.EXE、EXP.EXE、IMP.EXE 这两个文件有可能是被包装后的类文件。 SQLPLUS.EXE 调用 EXP.EXE、IMP.EXE 所包裹的类,完成导入导出功能。 下面介绍的是导入导出的实例。 数据导出: 1 将数据库 TEST 完全导出,用户名 system 密码 sql 导出到 D:daochu.dmp 中 exp system/sqlTEST file=d:daochu.dmp full=y 2 将数据库中 system 用户与 sys 用户的表导出 exp system/sqlTEST file=d:daochu.dmp owner=(system,
33、sys) 3 将数据库中的表 table1、table2 导出 exp aichannel/aichannelTESTDB2 file= d:datanewsmgnt.dmp tables=( table1、table2) 4 将数据库中的表 table1 中的字段 filed1 以“00“打头的数据导出 exp system/sqlTEST file=d:daochu.dmp tables=(table1) query=“ where filed1 like 00%“ 上面是常用的导出,对于压缩,既用 winzip 把 dmp 文件可以很好的压缩。 也可以在上面命令后面 加上 compres
34、s=y 来实现。 数据的导入: 1 将 D:daochu.dmp 中的数据导入 TEST 数据库中。 imp system/sqlTEST file=d:daochu.dmp imp aichannel/aichannelHUST full=y file=file= d:datanewsmgnt.dmp ignore=y 上面可能有点问题,因为有的表已经存在,然后它就报错,对该表就不进行导入。 2010 年 5 月 12 日在后面加上 ignore=y 就可以了。 2 将 d:daochu.dmp 中的表 table1 导入 imp system/sqlTEST file=d:daochu.d
35、mp tables=(table1) 基本上上面的导入导出够用了。不少情况要先是将表彻底删除,然后导入。数据泵导入:指令 impdp一:数据库所有对象的导入:impdp system/tiger dumpfile=pump_dir:mydatabase_%.dat filesize=100m nologfile=y job_name=zhang full=y estimate_only二:用户数据的导入: impdp system/tiger dumpfile=pump_dir:mydatabase_%.dat filesize=100m nologfile=y job_name=zhang
36、schemas=scott三:导入特定的表:impdp system/tiger dumpfile=pump_dir:mydatabase_%.dat filesize=100m nologfile=y job_name=zhang tables=scott.emp,scott.dept数据泵导出:指令 expdp一:数据库所有对象的导出:expdp system/tiger dumpfile=pump_dir:mydatabase_%.dat filesize=100m nologfile=y job_name=zhang full=y estimate_only二:用户数据的导出: exp
37、dp system/tiger dumpfile=pump_dir:mydatabase_%.dat filesize=100m nologfile=y job_name=zhang schemas=scott三:导出特定的表:expdp system/tiger dumpfile=pump_dir:mydatabase_%.dat filesize=100m nologfile=y job_name=zhang tables=scott.emp,scott.dept声明:JavaEye 文章版权属于作者,受法律保护。没有作者书面许可不得转载。2010 年 5 月 12 日!若导入时出现有个别
38、表不能成功导入时,只能在数据库里新建表结构,再通过 imp 命令导入。1 根据导入表时在 SQL*PLUS 中的提示,会说什么表不能正确创建,在列出相应表的所有表结构。2 在 SQL*PLUS 里复制表结构到 TXT 文档,设置好格式,放在 C:1.txt 下。3 在 SQL*PLUS 里通过 C: 1.txt 运行,提示表创建结构成功。4 向新创建的表导入数据。Imp system/sqlorcl file=d:0955.dmp tables=(table1,table2,table3) ignore=y5 观察提示,成败在此一举。注意: 操作者要有足够的权限,权限不够它会提示。 数据库时可
39、以连上的。可以用 tnsping TEST 来获得数据库 TEST 能否连上。 附录一: 给用户增加导入数据权限的操作 第一,启动 sql*puls 第二,以 system/sql 登陆 第三,create user 用户名 IDENTIFIED BY 密码 (如果已经创建过用户,这步可以省略) 第四,GRANT CREATE USER,DROP USER,ALTER USER ,CREATE ANY VIEW , DROP ANY VIEW,EXP_FULL_DATABASE,IMP_FULL_DATABASE, DBA,CONNECT,RESOURCE,CREATE SESSION TO
40、用户名字 第五, 运行-cmd-进入 dmp 文件所在的目录, imp userid=system/sql full=y file=*.dmp 或者 imp userid=system/sql full=y file=filename.dmp 执行示例: F:WorkOracle_Databackupimp userid=test/test full=y file=inner_notify.dmp 屏幕显示 Import: Release 8.1.7.0.0 - Production on 星期四 2 月 16 16:50:05 2006 (c) Copyright 2000 Oracle C
41、orporation. All rights reserved. 连接到: Oracle8i Enterprise Edition Release 8.1.7.0.0 - Production With the Partitioning option JServer Release 8.1.7.0.0 - Production 经由常规路径导出由 EXPORT:V08.01.07 创建的文件 已经完成 ZHS16GBK 字符集和 ZHS16GBK NCHAR 字符集中的导入 导出服务器使用 UTF8 NCHAR 字符集 (可能的 ncharset 转换) . 正在将 AICHANNEL 的对象导入到 AICHANNEL . . 正在导入表 “INNER_NOTIFY“ 4 行被导入 准备启用约束条件. 成功终止导入,但出现警告。