日期:2014-05-16  浏览次数:20496 次

BBY-Oracle笔记第二篇
在win7下安装oracle 10g
修改Oracle 10G\database\stage\prereq\db\refhost.xml
在</SYSTEM>
<CERTIFIED_SYSTEMS>后面添加
<!--Microsoft Windows 7-->
<OPERATING_SYSTEM>
<VERSION VALUE="6.1"/>
</OPERATING_SYSTEM>
再到install目录中找到oraparam.ini文件,找到
#Windows=4.0,5.0,5.1,5.2
修改成
#Windows=4.0,5.0,5.1,5.2,6.1
在后面添加
[Windows-6.1-required]
#Minimum display colours for OUI to run
MIN_DISPLAY_COLORS=256
#Minimum CPU speed required for OUI
#CPU=300
[Windows-6.1-optional]
运行,还是出现错误
解决办法:在setup上右键,属性->兼容性->以兼容模式运行这个程序 windows xp(service pack 3),以管理员身份运行安装,Ok!
在进行数据库导入的时候,出现IMP-00013: 只有 DBA 才能导入由其他 DBA 导出的文件的解决方法:
当exp 导出的用户拥有dba的角色,但imp导入的用户不拥有dba的角色时,
在imp导入时将会出现上面的错误。
可以在exp导出之前,回收用户dba的角色 revoke dba  from user。再exp导出数据。
这样导入数据则不会报错。
或者把dba角色赋予给imp导入的用户
grant dba  to username
Oracle dual讲解
1. dual 确实是一张表.是一张只有一个字段,一行记录的表.
2.习惯上,我们称之为'伪表'.因为他不存储主题数据.
3. 他的存在,是为了操作上的方便.因为select 都是要有特定对象的.
如:select * from mytable ;
select * from myview;
等等.
但如果我们不需要从具体的表来取得表中数据,而是单纯地为了得到一些我们想得到的信息,并要通过select 完成时,就要借助一个对象,这个对象,就是dual;
如我们要计算 999*999 的值,可以用:
select 999*999 from dual;
来实现;
要拼接一个电话信息:
select concat('010-','88888888')||'转23' 高乾竞电话 from dual;
就变成了我们想要的格式输出.
4.当然,我们不一定要dual ,也可以这样做.例如:
create table mydual( dummy varchar2(1));
也可以实现和dual 同样的效果:
select 999*999 from mydual;
不过,dual 我们都用习惯了,就无谓自己再搞一套了。
一些命令
show user;查看当前用户;
show user_tablespaces表空间;
查看当前用户的缺省表空间
  SQL>select username,default_tablespace from user_users;
  查看当前用户的角色
  SQL>select * from user_role_privs;
  查看当前用户的系统权限和表级权限
  SQL>select * from user_sys_privs;
  SQL>select * from user_tab_privs;
  查看用户下所有的表
  SQL>select * from user_tables;
  1、用户
  查看当前用户的缺省表空间
  SQL>select username,default_tablespace from user_users;
  查看当前用户的角色
  SQL>select * from user_role_privs;
  查看当前用户的系统权限和表级权限
  SQL>select * from user_sys_privs;
  SQL>select * from user_tab_privs;
  显示当前会话所具有的权限
  SQL>select * from session_privs;
  显示指定用户所具有的系统权限
  SQL>select * from dba_sys_privs where grantee='GAME';
  2、表
  查看用户下所有的表
  SQL>select * from user_tables;
  查看名称包含log字符的表
  SQL>select object_name,object_id from user_objects
  where instr(object_name,'LOG')>0;
  查看某表的创建时间
  SQL>select object_name,created from user_objects where object_name=upper('&table_name');
  查看某表的大小
  SQL>select sum(bytes)/(1024*1024) as "size(M)" from user_segments
  where segment_name=upper('&table_name');
  查看放在ORACLE的内存区里的表
  SQL>select table_name,cache from user_tables where instr(cache,'Y')>0;
  3、索引
  查看索引个数和类别
  SQL>select index_name,index_type,table_name from user_indexes order by table_name;
  查看索引被索引的字段
  SQL>select * from user_ind_columns where index_name=upper('&index_name');
  查看索引的大小
  SQL>select sum(bytes)/(1024*1024) as "size(M)" from user_segments
  where segment_name=upper('&index_name');
  4、序列号
  查看序列号,last_number是当前值
  SQL>select * from user_sequences;
  5、视图
  查看视图的名称
  SQL>select view_name from user_views;
  查看创建视图的select语句
  SQL>set view_name,text_length from user_views;
  SQL>set long 2000; 说明:可以根据视图的text_length值设定set long 的大小
  SQL>select text from user_views where view_name=upper('&view_name');
  6、同义词
  查看同义词的名称
  SQL>select * from user_synonyms;
  7、约束条件
  查看某表的约束条件
SQL>select constraint_name, constraint_type,search_condition, r_constraint_name
  from user_constraints where table_name = upper('&table_name');
  SQL>select