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

韩顺平oracle视频笔记六

sys——包含基表,动态视图,由数据库自己管理,任何人都不能修改。拥有dba,sysdba,sysoper角色(数据库管理员、系统管理员、系统操作员),sys必须以sysdba或者是sysoper登陆,不能使用normal方式登录。
sysdba的权限最高
sysoper不能创建数据库,不能改变字符集,不能删除数据库,不能查看用户数据
dba不能启动和停止数据库
conn system/admin;这种方式登录时以dba角色登陆,是一个普通用户
conn system/admin as sysdba;这种是以sysdba角色登陆

shutdown
startup

掌握备份和恢复数据库数据的方法
导出(exp)分为三种——导出表,导出方案,导出数据库
1、进入oracle安装目的的bin文件夹下面
2、里面有一个exp.exe工具
3、使用命令cmd,然后在DOS窗口输入如下命令
导出单表
exp userid=scott/admin@orcl tables=(emp) file=c:\emp.sql
导出多表
exp userid=scott/admin@orcl tables=(emp,dept) file=c:\emp.sql
导出别人的表
exp userid=system/admin@orcl tables=(scott.emp,scott.dept) file=c:\emp.sql
导出表的结构
exp userid=scott/admin@orcl tables=(emp) file=c:\emp3.sql rows=n
使用直接导出方式(速度比较快,针对大表)
exp userid=scott/admin@orcl tables=(emp) file=c:\emp.sql direct=y


导出方案(用户名创建的空间)
导出自己的方案
exp userid=scott/admin@orcl owner=(scott) file=c:\emp.sql
导出别人的方案
exp userid=system/admin@orcl owner=(system,scott) file=c:\emp.sql

导出数据库(一个数据库中有多个用户,因此包含多个方案,一个用户可以包含多个表,因此方案中包含多个表)
导出数据库需要用户具有dba或者是exp_full_database权限
exp userid=system/admin@orcl full=y inctype=complete file=c:\database_hb.temp


导入要使用import工具
imp userid=scott/admin@orcl table=(emp) file=c:\hb.tmp

imp userid=system/admin@orcl table=(scott.emp) file=c:\hb.tmp

导入自身方案
imp userid=scott/admin file=c:\temp.sql
导入其它方案(需要有dba的权限)
imp userid=system/admin file=c:\temp.sql fromuser=system touser=scott

导入数据库
imp userid=system/admin full=y file=c:\temp.sql

什么是数据字典
数据字典是oracle数据中最重要的组成部分,他提供了数据库的一些系统信息(静态),它是只读表和视图的集合,数据字典的所有者为sys用户,用户只能在数据字典中执行查询操作,修改和维护时由系统自动完成的

数据字典包含基表和数据字典视图,基表存放数据库的基本信息,普通用户不能直接访问数据库字典的基表,数据字典的视图基于数据字典基表所建立的视图,普通用户可以通过查询数据字典视图取得系统的信息,

数据字典视图主要包括----user_xxx,all_xxx,dba_xxx三种类型

查询当前用户所拥有的表?
select table_name from user_tables;
user_tables代表当前用户所拥有的表
table_name指的是表明

查询当前用户可以访问的表数?(一般比上面的要大)
select table_name from all_tables;
all_tables表示当前用户可以访问的所有表

查看所有方案所拥有的数据库表?(这里需要dba的角色,范围最大)
select table_name from dba_tables;
dba_tables显示所有方案拥有的数据库表

在建立用户的时候,Oracle会把用户的信息存放到数据库字典中,当授予权限或者是角色时,Oracle会将权限和角色的信息存放到数据字典中

查询方案(数据库)中所有用户的信息(可以查询用户的密码,但是密码已经加密了)
select * from dba_users;

dba_sys_privs可以显示用户所具有的系统权限
dba_tab_privs显示用户具有的对象权限
dba_col_privs显示用户具有的列权限
dba_role_privs显示用户所具有的角色

查询scott所拥有的角色?
select * from dba_role_privs where grantee='SCOTT';

权限分为——对象权限(数据对象而言),系统权限(数据库而言)
1、查询oracle中所有系统的权限
select * from system_privilege_map order by name;
2、查询oracle中所有对象的权限,一般是dba
select distinct privilege from dba_tab_privs;
如何查询一个角色包含的权限?(包含的系统和对象权限)
----查看某个角色包括哪些系统权限
select * from dba_sys_privs where grantee='DBA';
select * from dba_sys_privs where grantee='CONNECT';
另外也可以这样查看:
select * from role_sys_privs where role='DBA';
----一个角色包含的对象权限
select * from dba_tab_privs where grantee='角色名';
备注,where后面的条件语句是区分大小写的,即dba和DBA查询的结果是不一样的

Oracle究竟有多少种角色?
select * from dba_roles;

如何查看用户包含哪些角色?
select * from dba_role_privs where grantee='用户名';
select * from dba_role_privs where grantee='SCOTT';

显示当前数据库的全称?
select * from global_name;
显示当前用户可以访问的所有数据字典?
select * from dict where comments like '%grant%';

动态性能视图记载了例程启动后的相关信息(动态)
当系统启动的时候就会建立动态性视图,当停止的时候就会删除动态性视图,Oracle的所有动态性视图都是以v_$开始的


表空间和数据文件
表空间是数据库的逻辑组成部分,从物理上讲数据库是存放在数据文件中,从逻辑上讲,数据库则是存放在表空间中,表空间由一个或者是多个数据文件组成

数据库由“表空间”构成,表空间由“段”构成,段由“块”构成,块由“区”构成

建立表空间(由dba或者是特权用户,用户必须有create tablespace的系统权限)
create tablespace

建立数据表空间
create tablespace data01 datafile 'd:\test\data01.dbf' size 20m uniform size 128k
创建一个data01的表空间,文件是d:\test\data01.dbf,文件大小为20m(最大不能超过500M),块的大小为128k

SQL> create tablespace tsp01 datafile 'c:\data01.dbf' size 20m uniform size 128k;

create table huangbiao(id number,name varchar2(20)) tablespace tsp01;