前段时间听同事说。Toad 工具可以打开 oracle数据库的 .dmp 文件。今天抽空试了试,果然可以!
Oracle 执行 export 操作 会把 表的定义导出、表的数据导出。
其实 .dmp 文件 就是 Oracle导出操作的 反操作,类似于 反编译!
之前,一直以为 对 数据库A 执行全库导出之后,可以 把A库的导出文件 导入 数据库B,从而在数据库B上实现数据库A的重演。(后来才知道,如果实现数据库的重演,必须事先在数据库B 创建数据库A里的全部用户、表空间)
看到 .dmp 文件才知道 以上认识 是错误的
事实上 .dmp 文件并不包含表空间的创建命令。原理很简单,例如从WINDOWS 平台导出一个数据库,然后导入 LINUX 平台。WINDOWS平台的表空间的数据文件路径分隔符 是 ‘\‘,而 LINUX 平台的表空间的数据文件路径分隔符是 ‘/‘,这一点 ORACLE 并不能预知。因此 .dmp 中绝对不会包含表空间的创建指令的。
当然 .dmp 文件中也不包括用户的创建 命令
因此需要我们事先创建用户、创建表空间
下面附带 两个sql语句予辅助
使用 oracle数据库提供的 拼字符 ‘||’ 批量创建 表空间
SQL> select ‘create tablespace ‘||tablespace_name||‘ datafile ‘||‘‘‘‘||file_name||‘‘‘‘||‘ size ‘||bytes/1024/1024||‘M;‘ ct_tbs from dba_data_files;
CT_TBS
---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
create tablespace USERS datafile ‘/ora_data/oradata/orcl/users01.dbf‘ size 112.5M;
create tablespace UNDOTBS1 datafile ‘/ora_data/oradata/orcl/undotbs01.dbf‘ size 80M;
create tablespace SYSAUX datafile ‘/ora_data/oradata/orcl/sysaux01.dbf‘ size 540M;
create tablespace SYSTEM datafile ‘/ora_data/oradata/orcl/system01.dbf‘ size 730M;
create tablespace LVSKSK_T_JS datafile ‘/u01/app/oracle/oradata/prod/lvsksk_t_js01.dbf‘ size 200M;
create tablespace MY_TBS datafile ‘/u01/app/oracle/product/11.2.0/db_1/dbs/E:APPORACLEORADATADZFPMXMY_TBS01.DBF‘ size 10M;
create tablespace TEST datafile ‘/u01/app/oracle/product/11.2.0/db_1/dbs/E:APPORACLEORADATADZFPMXTEST01.DBF‘ size 10M;
create tablespace TBS datafile ‘/u01/app/oracle/product/11.2.0/db_1/dbs/E:APPORACLEORADATADZFPMXTBS01.DBF‘ size 10M;
批量创建用户
SQL> select ‘ create user ‘||username||‘ identified by xxx ‘||‘ default tablespace ‘||default_tablespace ct_user from dba_users where account_status=‘OPEN‘ order by created desc;
CT_USER
----------------------------------------------------------------------------------------------------------------
create user DEV123 identified by xxx default tablespace USERS
create user DEV identified by xxx default tablespace USERS
create user TEST123 identified by xxx default tablespace USERS
create user TEST identified by xxx default tablespace USERS
create user SCOTT identified by xxx default tablespace USERS
create user SYSMAN identified by xxx default tablespace SYSAUX
create user DBSNMP identified by xxx default tablespace SYSAUX
create user ORACLE_OCM identified by xxx default tablespace USERS
create user SYS identified by xxx default tablespace SYSTEM
create user SYSTEM identified by xxx default tablespace SYSTEM
有了这些sql语句 就放到sqlplus 直接执行吧