SQL*PLUS与服务管理器、导入imp导出exp

来源:互联网 发布:利用我的世界学编程 编辑:程序博客网 时间:2024/06/05 16:42
SQL*PLUS与服务管理器
  注释行  前面加REM或--
  SQL*PLUS不允许空白行 可以设置SET SQLBLANKLINES ON
  替代变量& 可以用SET DEFINE OFF 关闭替代变量
  继续字符-
  结束符;或/
  行编辑命令:L (n m)列出缓冲区的n至m行
             C/x/y  把一行中第一次出现的x换成y
             DEL (n m) 删除缓冲区的n至m行
             I 在当前行下插入一个新行
             A 在当前行的末尾附加文本
  SAVE D:/A.SQL (REPLACE) 保存文件
  GET D:/A.SQL 装入缓冲区
  生成报表用COLUMN,TTITLE,BTITLE和SPOOL完成
    COLUMN columnname [HEADING headingtext] --标题如果有两行用|分割
                      [FORMAT 格式][WORD_WRAPPED|TRUNCATED] --WORD_WRAPPED隐藏文本,TRUNCATED截断
     如:COLUMN MARKINGGS_DESCRIPTION FORMAT A10 WORD_WRAP --则MARKINGGS_DESCRIPTION将会被隐藏10位以后的变成MARKINGGS_D
    用TTITLE创建页眉或主题 SKIP 空行跳过 日期得用SQL语句得到
    SPOOL filename将报表写入文件,通常是.lst或 .lis,用SPOOL OFF终止操作.
    BRE[AK] [ON report_element[action]....] 总结和中断报表
      如:break on zbdm00 noduplicates skip 1 删除列中的重复值
    COMP[UTE] [function [LABEL] text OF expression|column|alias ON expression|column|alias|REPORT|ROW] 总结报表
      如:COMPUTE COUNT OF ID_NO ON REPORT  --算出整个报表的总记录数
         COMPUTE COUNT OF ID_NO ON C_NAME  --算出每个C_NAME的记录数
    定义替代变量 DEF[INE] [variable=text]
    用双&符变量表示不必为同一个变量提示两次.
    用@引用一个脚本文件.可以用SQLPLUS USERNAME/PASSWORD[@SERVIECE] @SCRIPT_FILE [变量(替代&1等)] 进行批处理
   
导出EXP
  帮助C:/>EXP HELP=Y
  EXP [username[/password[@service]]]要使用EXP,用户必须拥有CREATE SESSION权限,只能执行自己所属的对象,而拥有EXP_FULL_DATABASE角色则可以导出任何事情.
  FULL=Y 可以导出一个完整的数据库.  用ROWS=N 则只导出定义不是数据.
  导出用户: owner=(user1,user2...) 但不能得到同义词,可CREATE PUBLIC SYNONMY创建.
  导出表: TABLES=table,TABLES=(tablename,tablename...)
  估计导出文件的大小:
     查询DBA_SEGMENTS视图:select sum(bytes) from dba_segments where segment_typ='TABLE' 查询全部表的总字节数.
  导出路径:普通导出和直接路径导出(用DIRECT=Y,绕过对独立行的估计,较快,用QUERY时或LOB列时不能使用)
  压缩范围:COMPRESS=Y,将把表的若干个小范围重组成一个大范围,如果大表的容量比自由空间还大,则COMPRESEE=N
  导出表的子集:用QUERY,如:EXP SYSTEM/MANAGER QUERY='WHERE ZTDM00=''1111''' TABLES=hsg4_jh.gstjygl0 FILE=AA LOG=AA
  用多个分割文件导出:如:exp system/manager file=(pay_1,pay_2,pay_3) log=pay,filesize=1g tables=hsg4_jh.gstjygl0,这将导出3个1G的文件
  使用参数文件.PAR,可以存 FIEL=AA LOG=AA TABLES=(AA,,,....) 等,导出的时候用exp system/manager parfile=aa.par
 
导入IMP
  帮助C:/>IMP HELP=Y
  IMP [username[/password[@service]]]要使用IMP,用户必须拥有CREATE SESSION权限,只能执行自己所属的对象,而拥有IMP_FULL_DATABASE角色则可以导入任何事情.
  FULL=Y 可以导入一个完整的数据库.  用IGNORE=Y忽略错误信息
  导入用户: FROMUSER=(username,username...),在导入用户前必须创建指定的用户,一定要得到基于导入对象的用户的CREATE权限的认可.
  将一个用户数据导入另一个用户:FROMUSER=(username,username...) TOUSER=(username,username...),FROMUSER中如果在TOUSER中没有对应的用户将默认为本用户.这种方法通常用来复制模式的备份.
  导出表: TABLES=table,TABLES=(tablename,tablename...),但不能用TABLES=HSG4.AA,要FROMUSER=HSG4 TABLES=AA
  使用导入选项
    忽略创建错误:IGNORE=Y,如表已经创建,忽略错误将继续插入表数据,如果没有忽略这个表将跳过去而没有数据
    生成CREATE INDEX语句:用INDEXFILE参数运行IMP:imp system/manager@xsgs indexfile=aa_indexes.sql fromuser=hsg4 file=aa log=aa
       这样将导出一个aa_indexes.sql的创建索引的文件,然后运行IMP,用IGNORE=Y和INDEXES=N,将数据装入已创建的没有索引的表,最后运行aa_indexes.sql脚本创建索引.
  用多个分割文件导入:如:IMP system/manager@XSGS file=(pay_1,pay_2,pay_3) FULL=Y,filesize=1g
  使用参数文件.PAR,可以存 FIEL=AA LOG=AA TABLES=(AA,,,....) 等,导入的时候用IMP system/manager parfile=aa.par