--第一,启动服务,(如果数据库处于启动状态,那么略过这一步) 打开命令行执行以下语句 net start OracleServiceORCL net start OracleOraDb10g_home2TNSListener net start OracleOraDb10g_home2iSQL*Plus --以上方式是在windows服务中启动服务,当windows服务不能启动数据库实例的时候,应用以下的语句 set oracle_sid=orcl oradim -startup -sid orcl sqlplus internal/oracle startup --第二清理以前还原过的痕迹,如果我们在数据库曾经还原过,我们先来清理一下,痕迹, --删除用户 drop user xxxx cascade; --删除表空间 drop tablespace xxxx; --删除数据库文件 e:\xxxxxx.dbf --第三,接下来,准备工作做好后,我们就可以开始还原了 --创建用户 create user yhhg identified by yhhg default tablespace EAS_D_YHHG temporary tablespace EAS_T_YHHG; --给予用户权限 grant connect,resource,dba to yhhg; --创建表空间,并指定文件名,和大小 create tablespace EAS_D_YHHG datafile 'E:\oracle11g\oradata\easdb\EAS_D_YHHG.dbf' size 15000m REUSE autoextend on next 500M ;create temporary tablespace EAS_T_YHHG tempfile 'E:\oracle11g\oradata\EAS_T_YHHG.dbf' size 1000m autoextend on next 200m maxsize 2000m extent management local;--开始导入(完全导入),file:dmp文件所在的位置, ignore:因为有的表已经存在,对该表就不进行导入。 --在后面加上 ignore=y 。指定log文件 log=e:\log.txt imp user/pass@orcl full=y file=e:\xxx.dmp ignore=y log=e:\log.txt --当我们不需要完整的还原数据库的时候,我们可以单独地还原某个特定的表 imp user/pass@datbase file=e:\xxx.dmp ignore=y log=e:\log.txt tables=(xxxx) imp user/pass@database file=e:\xxx.dmp ignore=y log=e:\log2.txt tables=(xxxx) --oracle常用的操作命令 --查看实例名select name from v$databaseselect instance_name from v$instance--查看表空间的属性 select tablespace_name,extent_management,allocation_type from dba_tablespaces --查找一个表的列,及这一列的列名,数据类型 select TABLE_NAME,COLUMN_NAME,DATA_TYPE from user_tab_columns where TABLE_NAME='xxxx' --查找表空间中的用户表 select * from all_tables where owner='xxx' order by table_name desc --在指定用户下,的表的数量 select count(*) from user_tab_columns --查看数据库中的表名,表列,所有列 select TABLE_NAME,COLUMN_NAME,DATA_TYPE from user_tab_columns order by table_name desc --查看用户ZBFC的所有的表名及表存放的表空间 select table_name,tablespace_name from all_tables where owner='xxxx' order by table_name desc --生成删除表的文本 select 'Drop table '||table_name||';' from all_tables where owner="ZBFC"; --删除表级联删除 drop table table_name [cascade constraints];--查找表中的列 select TABLE_NAME,COLUMN_NAME,DATA_TYPE from user_tab_columns where column_name like '%'||'地'||'%' order by table_name desc --查看数据库的临时空间 select tablespace_name,EXTENT_SIZE,current_users,total_extents,used_extents,MAX_SIZE,free_extents from v$sort_segment; --查看用户的连接状况select username,sid,serial# from v$session--搜出该用户的session的SID,SERIAL码,然后kill掉select sid,serial# from v$session where username='user_name';alter system kill session 'sid,serial';--oracle 查看所有用户及密码select * from dba_users;--Oracle密码过期--查看用户的proifle是哪个,一般是defaultSELECT username,PROFILE FROM dba_users;--查看指定概要文件(如default)的密码有效期设置SELECT * FROM dba_profiles s WHERE s.profile=\'DEFAULT\' AND resource_name=\'PASSWORD_LIFE_TIME\';'--将密码有效期由默认的180天修改成“无限制”ALTER PROFILE DEFAULT LIMIT PASSWORD_LIFE_TIME UNLIMITED;--oracle修改用户密码方法--set oracle_sid=数据库名称,输入sqlplus“/ as sysdba”进入oracle后台管理界面--在oracle后台管理界面输入语句查找system用户的密码。--具体命令为输入:Select username,password from dba_users where username=‘SYSTEM’--数据导出:--1 将数据库TEST完全导出,用户名system 密码manager 导出到D:\daochu.dmp中exp system/manager@TEST file=d:\daochu.dmp full=y--2 将数据库中system用户与sys用户的表导出exp system/manager@TEST file=d:\daochu.dmp owner=(system,sys)--3 将数据库中的表inner_notify、notify_staff_relat导出exp aichannel/aichannel@TESTDB2 file= d:\data\newsmgnt.dmp tables=(inner_notify,notify_staff_relat)--4 将数据库中的表table1中的字段filed1以"00"打头的数据导出exp system/manager@TEST file=d:\daochu.dmp tables=(table1) query=\" where filed1 like '00%'\";--上面是常用的导出,对于压缩,既用winzip把dmp文件可以很好的压缩,也可以在上面命令后面 加上 compress=y 来实现。--数据的导入--1 将D:\daochu.dmp 中的数据导入 TEST数据库中。imp system/manager@TEST file=d:\daochu.dmpimp aichannel/aichannel@HUST full=y file=file= d:\data\newsmgnt.dmp ignore=y--上面可能有点问题,因为有的表已经存在,然后它就报错,对该表就不进行导入,在后面加上 ignore=y 就可以了。--2 将d:\daochu.dmp中的表table1 导入imp system/manager@TEST file=d:\daochu.dmp tables=(table1)--基本上上面的导入导出够用了。不少情况要先是将表彻底删除,然后导入。注意:--操作者要有足够的权限,权限不够它会提示。--数据库时可以连上的。可以用tnsping TEST 来获得数据库TEST能否连上。