Oracle 常用命令(导入dmp文件)
--无密码登录数据库(Dos命令)
sqlplus / as sysdba;
--查询实例名
select instance_name from v$instance;
--获取版本号 返回具体的版本号 例:11.2.0.1.0
select version from product_component_version;
--获取端口号
show parameter local_listener;
--判断用户是否存在
select username from dba_users where username=upper('xxx');
--查询表空间
select tablespace_name from dba_tablespaces;
--查询创建的目录
select * from dba_directories;
--删除表空间
drop tablespace xxx including contents and datafiles cascade constraint;
--删除用户
drop user xxx cascade;
--删除用户(提示无法删除当前连接的用户)
alter user xxx account lock;
select username,SID,SERIAL# from V$SESSION where username='xxx';
alter system kill session 'SID,SERIAL#';
drop user xxx cascade;
--IMP 方式导入dmp文件
--(1)创建表空间
create tablespace 表空间 datafile 'D:\xxx\xxx.dbf' size 1024M autoextend on;
--(2)创建用户
create user 用户名 identified by 密码 default tablespace 表空间;
--(3)赋予权限
grant connect,resource,imp_full_database,unlimited tablespace to 用户名;
grant dba to 用户名;
--(4)导入数据
imp 用户名/密码@实例名 file=dmp文件路径 log=要导出的日志路径 full=y;
--IMPDB 数据泵方式导入dmp文件
--(1)创建表空间
create tablespace 表空间 datafile 'D:\xxx\xxx.dbf' size 1024M autoextend on;
--(2)创建用户
create user 新用户名 identified by 密码 default tablespace 表空间;
--(3)赋予权限
grant connect,resource,imp_full_database,unlimited tablespace to 新用户名;
grant dba to 新用户名;
--(4)建立目录
create directory 目录名 as '目录路径';
--(5)路径手动创建
--(6)对路径授权
grant read,write on directory 目录名 to 新用户名;
--(7)导入数据(Dos命令)
impdp 新用户名/密码 directory=目录名 dumpfile=dmp文件路径 logfile=导出日志路径 TRANSFORM=segment_attributes:n full=y ignore=y REMAP_SCHEMA=旧用户名:新用户名;
如何判断Dmp文件要进行哪种导入方式?
(1)图示 一、imp 二、impdb数据泵
(2)如果impdb数据泵的方式,那么 "xxx"."xxxxx"的结构是固定的。
我的判断方式:读取文件的前1024个字节,获取固定结构的字符串,字符串为空说明是IMP,否则就是IMPDB;
/// <summary>
/// 获取原导出的用户名称
/// </summary>
/// <param name="errInfo"></param>
/// <returns></returns>
private string GetOldUser(out string errInfo)
{
try
{
errInfo = "";
byte[] bbs = new byte[1024];
using (FileStream fs = new FileStream(_bakPath, FileMode.Open,FileAccess.Read))
{
fs.Read(bbs, 0, bbs.Length);
}
string name = Encoding.UTF8.GetString(bbs);
if (!string.IsNullOrWhiteSpace(name))
{
int end = name.IndexOf("\".\"", StringComparison.Ordinal);
if (end < 1) return "";
int first = name.LastIndexOf("\"",end-1, StringComparison.Ordinal);
if (first < 0 )return "";
name= name.Substring(first+1, end-1 - first);
name = name.Replace("\\", "").Replace(" ", "");
return name;
}
}
catch (Exception ex)
{
errInfo = ex.Message;
}
return "";
}