oracle常用运维命令整理( 三 )


#格式[oracledb@ ~]$ expdp USERNAME/USERPASSWORD@SIDNAME schemas=SCHEMASNAME DIRECTORY=dir_dump estimate_only=y8)扩展8
导入单表到某临时表:
#格式(涉及统计与索引时添加参数EXCLUDE=STATISTICS EXCLUDE=INDEX)
—sql实现从这张表复制到另一张临时表
SQL> CREATE TABLE 目标TABLENAMEAS (SELECT * FROM 源TABLENAME);—清空表中的数据
SQL> deletefrom 目标TABLENAME;[oracledb@ ~]$ impdp USERNAME/USERPASSWORD@SIDNAME DIRECTORY=dir_dump DUMPFILE=tablenameXXX.dmp remap_table=源TABLENAME:目标TABLENAME TABLE_EXISTS_ACTION=REPLACE EXCLUDE=STATISTICS EXCLUDE=INDEX [oracledb@ ~]$ expdp USERNAME/USERPASSWORD@SIDNAME schemas=SCHEMASNAME ESTIMATE_ONLY=y NOLOGFILE=y FULL=y9)扩展9
个别sql脚本内容很长 , 使用PLSQL Developer工具执行时会一直卡住无响应时除使用PLSQL Developer工具的在命令窗口中执行外 , 也可以使用shell终端执行
#格式[oracle@localhost ~]$ export ORACLE_SID=SIDNAME[oracle@localhost ~]$ sqlplus/ as sysdbasql> conn USERNAME/USERPASSWORD@SIDNAMEsql> @/u01/oracle/backup/XXX.sql10)扩展10
如何正确终止expdp与impdp任务 , 操作步骤如下:
步骤1、查看视图dba_datapump_jobs
select job_name,state from dba_datapump_jobs;步骤2、正确停止expdp导出任务使用stop_job
expdp USERNAME/USERPASSWORD@SIDNAME attach=SYS_EXPORT_SCHEMA_02步骤3、停止任务
Export> stop_job=immediate Are you sure you wish to stop this job ([yes]/no): yes步骤4、查看系统中的备份job状态
select owner_name,job_name ,state from dba_datapump_jobs;扩展:下列命令在交互模式下有效:
HELP: 总结交互命令 。
KILL_JOB: 分离和删除作业 。
PARALLEL: 更改当前作业的活动 worker 的数目 。
PARALLEL=.2
START_JOB: 启动/恢复当前作业 。
START_JOB=SKIP_CURRENT 在开始作业之前将跳过作业停止时执行的任意操作 。
STATUS :在默认值 (0) 将显示可用时的新状态的情况下 , 要监视的频率 (以秒计) 作业状态 。
STATUS[=interval]
STOP_JOB: 顺序关闭执行的作业并退出客户机 。
STOP_JOB=IMMEDIATE 将立即关闭数据泵作业 。
11)扩展11
#查看DB中的NLS_CHARACTERSET的值SQL> select * from v$nls_parameterswhere parameter='NLS_CHARACTERSET'; SQL> select * from nls_database_parameters t where t.parameter='NLS_CHARACTERSET';12)扩展12
关于exp、imp、expdp、impdp
(1)、exp和imp是客户端工具程序 , 它们既可以在客户端使用 , 也可以在服务端使用 。
(2)、expdp和impdp是服务端的工具程序 , 他们只能在oracle服务端使用 , 不能在客户端使用 。
(3)、imp只适用于exp导出的文件 , 不适用于expdp导出文件;impdp只适用于expdp导出的文件 , 而不适用于exp导出文件 。
(4)、对于10g以上的服务器 , 使用exp通常不能导出0行数据的空表 , 而此时必须使用expdp导出 。
13)扩展13
oracle用户密码有@符号时 , expdp与sqlplus连接方式及使用rar压缩备份的文件
@echo offrem ---- dmp backup directory, same as dump dirset backup_dir=e:apporaclebackuprem ---- today, day for dmp file remainingset day=%date:~0,4%%date:~5,2%%date:~8,2%set remain_day=7rem --- delete files before 7 daysforfiles /p "%backup_dir%" /d -%remain_day%/c "cmd /c del /f @path"rem --- export oracle data to dmp fileexpdp 用户名/"xxx@yyy"@orcl directory=dir_dump dumpfile=用户名_%day%.dmp logfile=用户名_%day%.log schemas=用户名 parallel=4 compression=ALLrem --- sqlplus connsqlplus 用户名/"""xxx@yyy"""@orclrem ---- if compress the dumpfile and delete source dumpfile, unmark remset rar="C:Program Files (x86)WinRARWinRAR.exe"%rar% a -df %backup_dir%用户名_%day%.rar %backup_dir%用户名_%day%.dmp %backup_dir%用户名_%day%.log四、清理(还原时出错 , 清用户表空间)1、删除数据表空间:
#执行语句:[oracledb@ ~]$ sqlplus / as sysdbaSQL> drop tablespace mepro_data including contents and datafiles cascade constraint;2、删除临时表空间:
#执行语句:SQL> drop tablespace mepro_temp including contents and datafiles cascade constraints;3、删除用户:
#执行语句:SQL> drop user srmhdld cascade;4、报用户正在连接 , 无法删除的解决方法
---方法1:重启并迅速执行drop user语句(个人推荐)SQL> shutdown immediate;SQL> startup---方法2:删除正在连接的session(连接的session连接着很多时 , 清理耗时 , 没有方法1快速) ---查询用户会话SQL> select username,serial#,sid,program,machine,status from v$session where username='USERNAME' AND STATUS='ACTIVE';;SQL> select saddr,sid,serial#,paddr,username,status from v$session where username is not null;---删除相关用户会话SQL> alter system kill session 'serial#, sid';


推荐阅读