oracle相关问题详解

rpm -ivh http://download.fedoraproject.org/pub/epel/6/i386/epel-release-6-7.noarch.rpm
rpm -ivh http://download.fedoraproject.org/pub/epel/6/x86_64/epel-release-6-8.noarch.rpm
rpm --import /etc/pki/rpm-gpg/RPM-GPG-KEY-EPEL-6
yum install rlwrap
su - oracle
echo "alias sqlplus=‘rlwrap sqlplus‘" >> ~/.bash_profile
source ~/.bash_profile
sqlplus / as sysdba
show user;
alter user hr identified by zxcasd account unlock;
exit
sqlplus hr/zxcasd
show user;
select * from session_privs;
查看系统权限和对象权限
select * from dba_sys_privs;
select * from dba_tab_privs;
改自己的密码,不需要dba的权限,但要使用旧密码进行验证,用以下语句即可
alter user hr identified by 123456 replace zxcasd;

select table_name from user_tables;
desc jobs
set pagesize 200
select * from jobs;
desc locations
set linesize 200
select * from locations;

先备份相关表
分为按用户导与按表导,
按表的话,需要指定表名。
备份内容有:
一个表中所有的数据
一个表的数据与结构
按用户的话,该用户下的所在模式对象都导出来了

exp help=y
exp hr/123456
回答几个问题

带着问题去学习!!!!到这里所产生的问题
1.exp-00091:exporting questionable statistics.是什么东西
2.用exp导出所有的表如何做。上面的需要事先知道表名,然后一个一个导出。
经baidu查询,
问题1解决办法如下:

指定Linux系统的NLS_LANG环境变量为数据库的字符集
1)查询数据库的字符集(方法很多只用一种)
SQL> select userenv(‘language‘) from dual;

USERENV(‘LANGUAGE‘)
----------------------------------------------------
AMERICAN_AMERICA.ZHS16GBK

2)设置Linux操作系统的NLS_LANG环境变量
[[email protected] exp]$export NLS_LANG=AMERICAN_AMERICA.ZHS16GBK
Window系统的环境变量的修改方法是:
C:\>set NLS_LANG=AMERICAN_AMERICA.WE8ISO8859P1

问题2解决办法如下:
具体命令参数可以参考
exp help=y
1、EXP:
      有三种主要的方式(完全、用户、表)
      1、完全:
          EXP SYSTEM/123456 BUFFER=64000 FILE=full.dmp FULL=Y
          如果要执行完全导出,必须具有特殊的权限
      2、用户模式:
          EXP hr/123456    BUFFER=64000 FILE=hr.dmp OWNER=hr
          这样用户hr的所有对象被输出到文件中。
      3、表模式:
          EXP hr/123456    BUFFER=64000 FILE=hr-xue.dmp TABLES=xue
          这样用户hr的表xue就被导出
2、IMP:
      具有三种模式(完全、用户、表)
      1、完全:
          IMP SYSTEM/123456 BUFFER=64000 FILE=full.dmp FULL=Y
      2、用户模式:
          IMP hr/123456    BUFFER=64000 FILE=hr.dmp FROMUSER=hr TOUSER=hr
          这样用户hr的所有对象被导入到文件中。必须指定FROMUSER、TOUSER参数,这样才能导入数据。
      3、表模式:
          IMP hr/123456    BUFFER=64000 FILE=hr-xue.dmp TABLES=xue
          这样用户hr的表xue就被导入。有一个问题是,如果表存在,数据不能导入,只需要在后面加入ignore=y参数就可以了

问题的现象:
EXP-00026: conflicting modes specified
EXP-00000: Export terminated unsuccessfully

备份文件会生成 但是没有内容。
这个问题主要是 exp的时候 里面参数发生了冲突。
   比较常见的:
1.同时指定了 owner  和 tables
2.同时指定了 FULL 和tables
3.同时指定了多个owner和full
owner 表示导出整个用户或者多个用户  而tables表示只导出其中的表 。
要么只导出其中的表  要么导出整个用户。不然就会冲突了、

增删改相关行或表,再用备份的数据进行恢复。
sqlplus hr/123456
set pagesize 200
set linesize 200
create table xue(id integer,name varchar(25));
insert into xue values(1,‘wang‘);
insert into xue values(2,‘liu‘);
commit;

将表删除
drop table xue;
如果有索引关系的表,用下面
drop table mytest cascade constraints;

留下表结构,删除一行或所有数据。
delete from regions where region_id=5;
delete from regions

imp hr/123456
回答几个问题

带着问题去学习!!!!到这里所产生的问题
1.所要回答的问题有些不清楚,需要细查一下。
2.字符集的问题要处理一下。
经baidu查询,结果如下:

以上的这种方法算是一种逻辑备份,将数据导入到一个临时的文件之中。
还可以物理备份的方法,即将oradata/下面的所有数据全部复制到另外一个安全的地方,也叫冷备
还可以热备的方法。

ORACLE数据库有两类备份方法。第一类为物理备份,该方法实现数据库的完整恢复,但数据库必须运行在归挡模式下(业务数据库在非归挡模式下运行),且需要极大的外部存储设备,例如磁带库;第二类备份方式为逻辑备份,业务数据库采用此种方式,此方法不需要数据库运行在归挡模式下,不但备份简单,而且可以不需要外部存储设备。
  
  数据库逻辑备份方法
  
  ORACLE数据库的逻辑备份分为三种模式:表备份、用户备份和完全备份。
  
  表模式
  
  备份某个用户模式下指定的对象(表)。业务数据库通常采用这种备份方式。
  
  若备份到本地文件,使用如下命令:
  
  exp icdmain/icd rows=y indexes=n compress=n buffer=65536
  feedback=100000 volsize=0
  file=exp_icdmain_csd_yyyymmdd.dmp
  log=exp_icdmain_csd_yyyymmdd.log
  tables=icdmain.commoninformation,icdmain.serviceinfo,icdmain.dealinfo
  
  若直接备份到磁带设备,使用如下命令:
  exp icdmain/icd rows=y indexes=n compress=n buffer=65536
  feedback=100000 volsize=0
  file=/dev/rmt0
  log=exp_icdmain_csd_yyyymmdd.log
  tables=icdmain.commoninformation,icdmain.serviceinfo,icdmain.dealinfo
  
  注:在磁盘空间允许的情况下,应先备份到本地服务器,然后再拷贝到磁带。出于速度方面的考虑,尽量不要直接备份到磁带设备。
  
  用户模式
  
  备份某个用户模式下的所有对象。业务数据库通常采用这种备份方式。
  若备份到本地文件,使用如下命令:
  exp icdmain/icd owner=icdmain rows=y indexes=n compress=n buffer=65536
  feedback=100000 volsize=0
  file=exp_icdmain_yyyymmdd.dmp
  log=exp_icdmain_yyyymmdd.log
  若直接备份到磁带设备,使用如下命令:
  exp icdmain/icd owner=icdmain rows=y indexes=n compress=n buffer=65536
  feedback=100000 volsize=0
  file=/dev/rmt0
  log=exp_icdmain_yyyymmdd.log
  注:如果磁盘有空间,建议备份到磁盘,然后再拷贝到磁带。如果数据库数据量较小,可采用这种办法备份。

完全模式

  1、 将数据库TEST完全导出,用户名system 密码manager 导出到D:\daochu.dmp中
  exp system/[email protected] file=d:\daochu.dmp full=y
   2、 将数据库中system用户与sys用户的表导出
  exp system/[email protected] file=d:\daochu.dmp owner=(system,sys)
  3、 将数据库中的表table1 、table2导出
  exp system/[email protected] file=d:\daochu.dmp tables=(table1,table2)
  4、 将数据库中的表table1中的字段filed1以"00"打头的数据导出
  exp system/[email protected] file=d:\daochu.dmp tables=(table1) query=\" where filed1 like ‘00%‘\"
  上面是常用的导出,对于压缩我不太在意,用winzip把dmp文件可以很好的压缩。不过在上面命令后面 加上 compress=y 就可以了

删除某用户下的所有对象
Oracle删除用户下所有对象的方法未必人人都会,下面就为您介绍两种常用的Oracle删除用户下所有对象的方法,希望对您学习Oracle删除用户方面能有所帮助。

方法1:
drop user hr cascade;
    要退出所有的hr用户连接,才能正确执行。
drop tablespace USERS INCLUDING CONTENTS;
    不能删除默认永久表空间。

create user hr profile default identified by 123456 default tablespace USERS temporary tablespace TEMP account unlock;

--授权
grant dba to hr;
grant connect,resource to hr;

方法2:
写存储过程实现

DECLARE
TYPE name_list IS TABLE OF VARCHAR2(40);
TYPE type_list IS TABLE OF VARCHAR2(20);

Tab_name name_list:=name_list();
Tab_type type_list:=type_list();

sql_str VARCHAR2(500);
BEGIN
sql_str := ‘select uo.object_name,uo.object_type from user_objects uo where uo.object_type not in(‘‘INDEX‘‘,‘‘LOB‘‘) order by uo.object_type desc‘;
EXECUTE IMMEDIATE sql_str BULK COLLECT INTO tab_name,tab_type;

FOR i IN Tab_name.FIRST.. Tab_name.LAST LOOP
sql_str := ‘DROP ‘ || Tab_type(i) || ‘ ‘ || Tab_name(i);
EXECUTE IMMEDIATE sql_str;
END LOOP;
END;

sqlplus hr/123456
drop table jobs cascade constraints;    这样直接删除可能会有问题。所以尽量用下面的步骤解决,因为看了以后,没有明白后续步骤。
drop table jobs
ORA-02449: unique/primary keys in table referenced by foreign keys
报错,用下面的方法解决

1.检查哪些表的外键引用了要删除的表的唯一/主键.
select A.*
from user_constraints A, user_constraints B
where b.table_name = ‘MYTEST‘
and a.constraint_type = ‘R‘
and a.r_constraint_name = b.constraint_name;

2.生成所有引用要删除表的外键的创建语句.
      select ‘select dbms_metadata.get_ddl(‘‘REF_CONSTRAINT‘‘,‘‘‘ ||
          A.CONSTRAINT_NAME || ‘‘‘) FROM DUAL;‘
       from user_constraints A, user_constraints B
       WHERE b.table_name = ‘JOBS‘
        and a.constraint_type = ‘R‘
        and a.r_constraint_name = b.constraint_name;

select ‘drop table ‘|| table_name ||‘ cascade constraints‘ sql1 from user_tables;
     
3.执行步骤2中产生的SQL语句,获取外键定义.
      set long 3000
      set linesize 3000
      set pagesize 300
      执行步骤2产生的语句.
4.删除表.
      drop table mytest cascade constraints;
5.删除并重建表.
6.建立因创建该表所删除的外键约束.
      执行步骤3中获取到的sql语句.
7.检查各外键是否得到恢复,系统是否正常.

时间: 2024-10-09 20:55:07

oracle相关问题详解的相关文章

Oracle 11g数据库详解(2015-1-18更新)

Oracle 11g数据库详解 整理者:高压锅 QQ:280604597 Email:[email protected] 大家有什么不明白的地方,或者想要详细了解的地方可以联系我,我会认真回复的 1   简介 数据库操作主要有以下几步: 1.  启动.停止数据库 2.  连接.断开数据库 3.  创建.修改.删除数据库用户 4.  表空间 5.  新建.修改.删除表 6.  查询.插入.修改.删除表数据 7.  新建.修改.删除视图 8.  新建.修改.删除存储过程 9.  新建.修改.删除触发

Oracle cursor_sharing 参数 详解

一. 官网的说明 http://download.oracle.com/docs/cd/E11882_01/server.112/e17110/initparams042.htm#REFRN10025 1.1 CURSOR_SHARING Property Description Parameter type String Syntax CURSOR_SHARING = { SIMILAR | EXACT | FORCE } Default value EXACT Modifiable ALTE

Oracle执行计划详解

 简介: 本文全面详细介绍oracle执行计划的相关的概念,访问数据的存取方法,表之间的连接等内容. 并有总结和概述,便于理解与记忆! +++ 目录 --- 一.相关的概念 Rowid的概念 Recursive Sql概念 Predicate(谓词) DRiving Table(驱动表) Probed Table(被探查表) 组合索引(concatenated index) 可选择性(selectivity) 二.oracle访问数据的存取方法 1) 全表扫描(Full Table Scan

Oracle 11g数据库详解(2015-02-28更新)

Oracle 11g数据库详解 整理者:高压锅 QQ:280604597 Email:[email protected] 大家有什么不明白的地方,或者想要详细了解的地方可以联系我,我会认真回复的 1   简介 数据库操作主要有以下几步: 1.  启动.停止数据库 2.  连接.断开数据库 3.  创建.修改.删除数据库用户 4.  表空间 5.  新建.修改.删除表 6.  查询.插入.修改.删除表数据 7.  新建.修改.删除视图 8.  新建.修改.删除存储过程 9.  新建.修改.删除触发

解决: ORA-02199: missing DATAFILE/TEMPFILE clause [Oracle OMF 功能详解]

OMF,全称是Oracle Managed Files,即Oracle文件管理,使用OMF可以简化管理员的管理工作,不用指定文件的名字.大小.路径,其名字,大小,路径由oracle 自动分配.在删除不再使用的日志.数据.控制文件时,OMF也可以自动删除其对应的OS文件. OMF支持下列文件的自动管理: 表空间 日志文件(联机) 控制文件 前提条件:需要为这些类型文件设定相关参数. 一.数据文件的OMF管理 数据文件管理参数:db_create_file_dest db_create_file_d

Oracle数据库备份详解

Oracle数据库备份详解 Oracle官方提供多种备份方式,日常使用最多的有exp/imp常规方式,及数据泵expdp/impdp方式:下面对这两种方式进行详解. 常规方式 exp/imp imp/exp是Oracle导入导出命令,可以用作数据的迁移,expdp/imdp也是Oracle数据导入导出的命令,效率比imp/exp效率要高,这个后面再讨论 一  EXP导出命令 exp 是数据的导出命令,可以用于表,用户,整个数据库,exp -help查看帮助 Export: Release 11.

【DataGuard】部署Data Guard相关参数详解 (转载)

原文地址:[DataGuard]部署Data Guard相关参数详解 作者:secooler 有关物理Data Guard部署参考<[DataGuard]同一台主机实现物理Data Guard配置安装>(http://space.itpub.net/519536/viewspace-578181),本文对部署Data Guard过程中主备库使用到的参数进行比较描述. 1.DB_NAME,数据库名字,需要保持同一个Data Guard 中所有数据库DB_NAME相同primary端和standb

ORACLE数据库备份与恢复详解

ORACLE数据库备份与恢复详解 学习过程中的总结,有兴趣不妨看看,如果有不对的地方,高手不要留情!! Oracle的备份与恢复有三种标准的模式,大致分为两 大类,备份恢复(物理上的)以及导入导出(逻辑上的),而备份恢复又可以根据数据库的工作模式分为非归档模式(Nonarchivelog-style) 和归档模式(Archivelog-style),通常,我们把非归档模式称为冷备份,而相应的把归档模式称为热备份,他们的关系如下所示 三种方式各有优点,我们做个比较(这个是用Fireworks画的,

Linux下FFMPEG--H264--编码&&解码的C实现与相关原理详解

FFMPEG是很强大的一套视频音频处理库,不过,强大的功能一般免不了复杂的实现,或者更加现实地说,"麻烦"的部署和使用流程 关于"FFMPEG怎么部署"这事就放在另一篇文章啦,下面入正题.. 编码encoder模块和解码decoder模块都有init初始化方法和资源free方法 init初始化方法主要是进行ffmpeg所必需的编解码器的初始化和部分功能方法的参数配置,而free资源释放方法则是相应地进行必要的回收 Encoder模块的实现和细节分析 #include