1.导出dmp:
在数据库所在服务器执行:exp us/pwd file=./13sp2.dmp owner=clps110【us为有导出权限的数据库用户名、密码】---------------------------------------------------------------------------------------------------------------------
2.导入dmp:
a.新建用户:
在数据库所在服务器执行:
sqlplus '/ as sysdba'
【dbuser为用户名,dbpwd为密码,dbtbspace为表空间】
create tablespace dbtbspace datafile '/oracle/data/oradata/sit/mnt5/dbtbspace.dbf' size 2000m autoextend on;
create user dbuser identified by dbpwd default tablespace dbtbspace account unlock;
grant unlimited tablespace to dbuser;
grant connect to dbuser;
grant resource to dbuser;
grant create any table to dbuser;
grant create any trigger to dbuser;
grant create any type to dbuser;
grant create any view to dbuser;
b.修改dmp文件的表空间(表空间名称一定要大写!!!!)
sed -i 's/TABLESPACE "PRO_DTA_DATA"/TABLESPACE "ABC"/g' dvbclpsexpdb_20140226.dmp
sed -i 's/TABLESPACE "PRO_DTA_IND"/TABLESPACE "BCD"/g' dvbclpsexpdb_20140226.dmp
若不知道dmp文件中表空间是什么,可通过以下方法获取:
(1)通过vi打开dmp文件,搜索TABLESPACE,即可查到表空间名称。
(2)若dmp文件过大,无法通过vi打开。可先导入,通过报错可查到表空间名称。
c.导入dmp
nohup imp clpsdba/clpsdba file=dvbclpsexpdb_20140226.dmp fromuser=a touser=b grants=no &
后续步骤:
d.重新编译所有view/package
e.执行T_LINK.sql
f.表分析
exec DBMS_STATS.gather_schema_stats('test');
注:用当前用户登录在命令窗口执行,test为当前用户名
g.执行t_user.sql
【*****为表空间追加一个datafile*****(不一定执行)】
【alter tablespace dbtbspace add datafile '/oracle/data/oradata/sit/mnt4/temp2.dbf' size 1000m autoextend on;】
---------------------------------------------------------------------------------------------------------------------
移除数据库用户并创建新用户
-- Drop the user
drop user dbusercascade;
-- Drop tablespace
drop tablespace dbtbspace including contents and datafiles;
删除oracle用户时,无法删除。因为数据库正被其他电脑连接,可通过该语句查询出来,且kill掉该连接,从而删除数据库用户。
查询oracle用户连接状态
select utl_inaddr.get_host_address(s.TERMINAL),username,sid,serial#,status from v$session s WHERE s.USERNAME='';
alter system kill session 'sid,serial#';
导入导出单张表的步骤:
exp 用户名/密码 tables=<表名> file=sdp.dmp log=sdp.log
imp 用户名/密码 tables=<表名> ignore=y file=文件名