Oracle简单命令使用

ORACLE简单命令笔记

EXP命令:

  1. 将数据库SampleDB完全导出,用户名system 密码manager 导出到E:/SampleDB.dmp中
    exp system/manager@TestDB file=E:/sampleDB.dmp full=y

  2. 将数据库中system用户与sys用户的表导出
    exp system/manager@TestDB file=E:/sampleDB.dmp owner=(system,sys)

  3. 将数据库中的表 TableA,TableB 导出
    exp system/manager@TestDB file=E:/sampleDB.dmp tables=(TableA,TableB)

  4. 将数据库中的表tableA中的字段filed1 值为 “王五” 的数据导出
    exp system/manager@TestDB file=E:/sampleDB.dmp tables=(tableA) query=\" where filed1='王五'\"

    exp username/password@ip:port/servername file=F:/test/test.dmp tables=(TABLE1,TABLE2) query=\"where ID='1'\"

  5. 导出分区表
    exp system/password@TestDB grants=N indexes=N log=F:/atpcodatadmp/ifare20.log file=F:/atpcodatadmp/ifare20.dmp tables=(T_IFARE:CUS_PART20,T_IFARE:CUS_PART21)

IMP命令:

  1. 将备份数据库文件中的数据导入指定的数据库SampleDB 中,如果 SampleDB 已存在该表,则不再导入;
    imp system/manager@TEST file=E:/sampleDB.dmp full=y ignore=y

  2. 将d:/daochu.dmp中的表table1 导入
    imp system/manager@TEST file=E:/sampleDB.dmp tables=(table1)

  3. 导入一个完整数据库
    imp system/manager file=bible_db log=dible_db full=y ignore=y

  4. 导入一个或一组指定用户所属的全部表、索引和其他对象
    imp system/manager file=seapark log=seapark fromuser=seapark imp system/manager file=seapark log=seapark fromuser=(seapark,amy,amyc,harold)

  5. 将一个用户所属的数据导入另一个用户
    imp system/manager file=tank log=tank fromuser=seapark touser=seapark_copy imp system/manager file=tank log=tank fromuser=(seapark,amy) touser=(seapark1, amy1)

  6. 导入一个表
    imp system/manager file=tank log=tank fromuser=seapark TABLES=(a,b)

  7. 从多个文件导入
    imp system/manager file=(paycheck_1,paycheck_2,paycheck_3,paycheck_4) log=paycheck, filesize=1G full=y

  8. 使用参数文件
    `imp system/manager parfile=bible_tables.par
    bible_tables.par参数文件:

#Import the sample tables used for the Oracle8i Database Administrator’s
Bible. fromuser=seapark touser=seapark_copy file=seapark log=seapark_import`

  1. 增量导入
    imp system./manager inctype= RECTORE FULL=Y FILE=A

不少情况下要先将表彻底删除,然后导入。
参考资源

SQLLOADER命令:

sqlldr username/password@ip:port/servername control=test.ctl data=test.txt skip=1 log=test.log bad=test-bad.txt discard=test-discard.log

control:控制文件
data:数据文件
skip:跳过行数
log:日志
bad:错误信息
discard:抛弃信息

索引相关:

删除主键约束同时删除主键索引:
alter table table_name drop constraint constraint_name cascade drop index;

IMP

关键字 说明(默认) 关键字 说明(默认)

USERID 用户名/口令 FULL   导入整个文件 (N)
BUFFER 数据缓冲区大小   FROMUSER   所有人用户名列表
FILE   输入文件 (EXPDAT.DMP)  TOUSER 用户名列表
SHOW   只列出文件内容 (N) TABLES表名列表
IGNORE 忽略创建错误 (N)  RECORDLENGTHIO 记录的长度
GRANTS导入权限 (Y) INCTYPE增量导入类型
INDEXES 导入索引 (Y)COMMIT 提交数组插入 (N)
ROWS  导入数据行 (Y)  PARFILE参数文件名
LOG屏幕输出的日志文件 CONSTRAINTS导入限制 (Y)
DESTROY  覆盖表空间数据文件 (N)
INDEXFILE将表/索引信息写入指定的文件
SKIP_UNUSABLE_INDEXES跳过不可用索引的维护 (N)
FEEDBACK 每 x 行显示进度 (0)
TOID_NOVALIDATE  跳过指定类型 ID 的验证
FILESIZE 每个转储文件的最大大小
STATISTICS   始终导入预计算的统计信息
RESUMABLE遇到与空格有关的错误时挂起 (N)
RESUMABLE_NAME   用来标识可恢复语句的文本字符串
RESUMABLE_TIMEOUTRESUMABLE 的等待时间
COMPILE  编译过程, 程序包和函数 (Y)

下列关键字仅用于可传输的表空间
TRANSPORT_TABLESPACE 导入可传输的表空间元数据 (N)
TABLESPACES 将要传输到数据库的表空间
DATAFILES 将要传输到数据库的数据文件
TTS_OWNERS 拥有可传输表空间集中数据的用户

EXP

关键字 说明(默认) 关键字 说明(默认)

USERID 用户名/口令 FULL   导出整个文件 (N)
BUFFER 数据缓冲区大小   OWNER   所有者用户名列表
FILE 输出文件 (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 交叉表一致性  CONSTRAINTS导出约束条件 (Y)

FEEDBACK   每 x 行显示进度 (0)
FILESIZE   每个转储文件的最大大小
FLASHBACK_SCN  用于回调会话快照的 SCN
FLASHBACK_TIME 用来获得最接近于指定时间的 SCN 的时间
QUERY  用来导出表的子集的选择子句
RESUMABLE  遇到与空格有关的错误时挂起 (N)
RESUMABLE_NAME 用来标识可恢复语句的文本字符串
RESUMABLE_TIMEOUT  RESUMABLE 的等待时间
TTS_FULL_CHECK 对 TTS 执行完全或部分相关性检查
TABLESPACES要导出的表空间列表
TRANSPORT_TABLESPACE 导出可传输的表空间元数据 (N)
TEMPLATE 调用 iAS 模式导出的模板名称

data dump导入导出

使用新的复合分区的表无法再使用exp/imp导入导出数据了,需要使用data dump
导入导出,即expdp/impdp

使用EXPDP和IMPDP时应该注意的事项:

EXP和IMP是客户端工具程序,它们既可以在客户端使用,也可以在服务端使用。

EXPDP和IMPDP是服务端的工具程序,他们只能在ORACLE服务端使用,不能在客户端使用。

IMP只适用于EXP导出的文件,不适用于EXPDP导出文件;IMPDP只适用于EXPDP导出的文件,而不适用于EXP导出文件。

expdp或impdp命令时,可暂不指出用户名/密码@实例名 as 身份,然后根据提示再输入,如:

expdp schemas=scott dumpfile=expdp.dmp DIRECTORY=dpdata1;

一、创建逻辑目录,该命令不会在操作系统创建真正的目录,最好以system等管理员创建。

create directory dpdata1 as 'd:\test\dump';

二、查看管理理员目录(同时查看操作系统是否存在,因为Oracle并不关心该目录是否存在,如果不存在,则出错)

select * from dba_directories;

三、给scott用户赋予在指定目录的操作权限,最好以system等管理员赋予。

grant read,write on directory dpdata1 to scott;

四、导出数据

1)按用户导

expdp scott/tiger@orcl schemas=scott dumpfile=expdp.dmp DIRECTORY=dpdata1;

2)并行进程parallel

expdp scott/tiger@orcl directory=dpdata1 dumpfile=scott3.dmp parallel=40 job_name=scott3

3)按表名导

expdp scott/tiger@orcl TABLES=emp,dept dumpfile=expdp.dmp DIRECTORY=dpdata1;

4)按查询条件导

expdp scott/tiger@orcl directory=dpdata1 dumpfile=expdp.dmp Tables=emp query='WHERE deptno=20';

5)按表空间导

expdp system/manager DIRECTORY=dpdata1 DUMPFILE=tablespace.dmp TABLESPACES=temp,example;

6)导整个数据库

expdp system/manager DIRECTORY=dpdata1 DUMPFILE=full.dmp FULL=y;

五、还原数据

1)导到指定用户下

impdp scott/tiger DIRECTORY=dpdata1 DUMPFILE=expdp.dmp SCHEMAS=scott;

2)改变表的owner

impdp system/manager DIRECTORY=dpdata1 DUMPFILE=expdp.dmp TABLES=scott.dept REMAP_SCHEMA=scott:system;

3)导入表空间

impdp system/manager DIRECTORY=dpdata1 DUMPFILE=tablespace.dmp TABLESPACES=example;

4)导入数据库

impdp system/manager DIRECTORY=dump_dir DUMPFILE=full.dmp FULL=y;

5)追加数据

impdp system/manager DIRECTORY=dpdata1 DUMPFILE=expdp.dmp SCHEMAS=system TABLE_EXISTS_ACTION

..to be continued