--第一,启动服务,(如果数据库处于启动状态,那么略过这一步) 打开命令行执行以下语句
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$database
select 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是哪个,一般是default
SELECT 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.dmp
imp 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能否连上。
ORACLE备份、恢复、常用查询
最新推荐文章于 2022-08-11 17:35:49 发布