一:创建用户并导入导出
使用管理员登陆:sqlplus user/pass as sysdba
创建用户:create user user identified by pass default tablespace NNC_DATA01;
下面是授权:grant connect,resource,dba to user;
grant alter system to user;
grant select any dictionary to user;
grant unlimited tablespace to user;
赋予directory 操作权限,用来使用数据泵:grant read,write on directory DPDATA to user;
数据泵导入dmp文件 (remap_schema=来源用户:导入目的用户)(remap_tablespace=来源表空间:目的表空间):impdp user/pass DIRECTORY=DPDATA DUMPFILE=user.DMP logfile=user.log remap_schema=userfrom:user
数据泵导出(logfile=在directory文件夹生成日志):expdp user/pass directory=dpdata DUMPFILE=user.DMP logfile=user.log
创建directory:create or replace directory dump_dir as 'D:\dump\dir'
查询已有的directory:select * from dba_directories
二、drop用户提示有链接
先查询链接
select * from dba_users;
select username,sid,serial# ,
'alter system kill session ' ||sid ||','||serial#
from v$session
where username='oracle'
;
alter system kill session '111,14319'
三、表空间太大缩小空间
--查file_id、file_name
select T.FILE_ID,T.FILE_NAME from DBA_DATA_FILES T where T.TABLESPACE_NAME='NNC_DATA01';
--查占用最大空间(mb)
select max(block_id)*8/1024 from dba_extents where file_id='6';
--重新定义表空间文件大小
ALTER DATABASE DATAFILE '/opt/oracle/oradata/XXX.dbf' RESIZE 300M;
--- exp 命令(能用数据泵就用数据泵,快不说,参数还好设置)
1.exp导表的时候会有表空间加入dmp文件里,我这里是手动修改dmp文件,将表空间的名字去掉才导入的,不然一直报错
不同用户之间导入导出要加入从哪来:fromuser(来源用户名) ,到哪去:touser(目标用户名)
exp oracle/oracle@192.168.1.3/orcl file=D:\example.dmp tables=(table1) fromuser=admin touser=oracle
如果密码有@等字符要用""" """转义
解决方法:ALTER USER 用户名 QUOTA UNLIMITED ON 表空间名;
3.批量导入有表名参数时:-bash: syntax error near unexpected token `('
tables="()"要加双引号
4.linux 下的imp命令不能用的时候,su - oracle ,在执行imp(-和oracle之间有空格)