1.oracle 安装完成后,会默认生成三个用户角色
sys 用户:超级管理员 权限最高 他的角色 dba 密码:chane-on-install (本人的已经改为pass)
system 用户:是系统管理员 权限也很高 她的角色是 dbaoper 密码:manager (本人该为pass)
scott 用户:普通用户 密码:tiger (本人改为woai5jia)

sys 与system
sys 有create database 的权限 而system 没有 其他相似

在日常对oracle管理过程中,使用system 就够了

权限 分为系统权限 和 对象权限;

系统权限:用户对数据库的相关权限
对象权限:用户对其他用户的数据对象操作的权限(比如表,视图,过程。。)
xiaoming 密码:m123;
xiaohong 密码:m1234;

在删除用户时,注意:如果要删除用户,已经创建了表,那么久需要在删除的时候带一个参数 cascade即把该用户及该用户创建的表删除(级联删除)

创建一个用户xiaoming 这个用户是没有任何权限的。比如登录 建表;
这时可以使用system 来赋予它这样的权限
如:grant connect to xiaoming
grant resource to xiaoming
还有比如实现xiaoing 对scott 中表的操作;
这时除了system sys 。scott 可以授权如:
查看emp表 如grant select on emp to xiaoming;

查看/增加/删除/修改 emp表 如grant all on emp to xiaoming;()

scott 收回xiaoming 对emp表的操作;
revoke select on emp from xiaoming:

虽然赋予了xiaoming select的权限 但是在连接xiaoming 后使用select * from emp;还是查询不到
可以使用select * from scott.emp;这里就涉及到了“方案”的概念;scott就是方案名

这里有desc 表名:是查看表结构;

//对权限的维护:如:希望xiaoming 用户可以去查询scott的emp表,还希望
xiaoming 可以把这个权限给别人
----如果是对象权限,就加入with grant option;
grant select on emp to xiaoming with grant option;

?如果scott 把xiaoming的select 权限回收了,那么xiaohong 的权限还在嘛:
答:同时被回收了

使用profile管理用户口令:
profile是口令限制,资源限制的命令集合。数据库建立时;oracle会自动建立名称为default的profile 。当建立用户没有指定profile选项。那么oracle会将defalt分配给用户

(1)账户锁定;
指定该账户登录时最多可以输入密码的次数,也可以指定用户锁定的时间(天),一般用dba 的身份去执行该命令。
如:

sql>create profile lockaaa limit failed_login_attempts 3 password_lock_time 2;
sql>alter user xiaoming profile lockaaa;
(2)给账户解锁
sql>alter user xiaoming account unlock;
(3)终结口令

为了让用户定期的修改密码可以使用终止口令的指令来完成。同样这个命令也需要dba身份来操作

如:给前面的创建的用户xiaoming创建一个profile文件,要求该用户每隔10天
要修改自家登录的密码,宽限期为2天
sql>create profile bbb1 limit password_life_time 10 password_grace_time 2;

sql>alter user xiaoming profile bbb1;

----口令历史
如果希望用户在修改密码时。不能使用以前使用过的密码。可使用口令历史,这样oracle就会将口令修改的信息存放在数据字典中,这样当用户修改密码时,oracle就会对新旧密码进行比较,当发现新旧密码不一样时。就提示用户重新输入密码、

如:sql>create profile ccc1 limit password_life_time
10 password_grace_time 2 password_reuse_time 10;
//password_reuse_time 指定口令可重用时间即10天后就可以重用
赋给某个用户

删除profile
sql>drop profile ccc[cascade]

-----oracle 表的管理:
1.必须以字母开头
2.数据类型
a.字符型:char 定长 最大2000字符//如果知道该字段经常被
查询并且是知道大概有多长这样使用char更好,效率更快 如:身份证号
b.varchar2() 变长 最大4000字符
c.clob ()最大字符达4G
3.数字型
number 可以表示整数 也可以表示小数

number(m,n)表示一个小数有m位有效数 n位小数

number(m) 表示一个m位整数
4.日期类型
date 包括年月日时分秒
timestamp 是对date类型的扩展

5 图片 视频等
blob 二进制数据 ,一般我们在数据库中只放视频图片的路径。如果需要安全的
考虑则可以考虑把他们放在数据库中

--建表
create table student(
stuId number(5),
stuName varchar2(10),
sal number(7,2)
);

添加字段
sql>alter table student add(classId number(2));
修改字段
sql>alter table student modify (stuId varchar2(10))
删除字段
sql>alter table student drop column sal;
删除表:
sql>drop table student;
注意:一般我们不做修改字段和删除字段的操作

添加数据
insert into student values(1,'小明','男','01-3月-1997',489.4,12);
在oracle中默认的日期格式是:dd-mm-yy ,月份后要加上“月”
如果要修改默认格式:
SQL> alter session set nls_date_format ='yyyy-MM-dd';
SQL> insert into student values(2,'小红','女','1988-7-6',489.4,12);
插入部分字段:insert into student (xh,xm,sex)values('','','');

空字段的增加和查询------
SQL> insert into student (xh,xm,sex,birthday) values(3,'aa','女',null);

select * from student where birthday is null;

修改一个字段
update student set sal = sal/2 where sex ='男'
修改多个字段;
update student set sex='男',birthday='1999-3-3' where xh = '0A';

删除数据:======
delete from student;//删除所有记录,表结构还在,写日志可以恢复数据,速度慢
一般情况下 我们开始会使用savepoint 保存点名 然后出现错误操作可以使用
rollback to 保存点名 来恢复到原来的位置。在不做处理的情况下,保存点就一个,再赋予一个就会覆盖前面的那个;

drop table student; //删除表的结构和数据

truncate table student;删除表中所有记录。表结构还在 不写日志无法找回删除的记录,但速度很快;

--------//clear 清屏命令;
数据库要求查询效率。所以在数据库中我们常常使用
insert into student (字段1,字段2.。。) select * from student
来实现一个数量巨大的表供我们进行测试;

表单查询------
取消重复行:使用distinct关键字
select 语句中对于传入的内容是区分大小写的;
select ename,joB,sAl from emp where ename ='SMITH';

对于null值的处理;-------
SQL> select ename,13*sal+13*comm,comm from emp;//oracle中规定当某个字段中的值为null时,使用该值计算的结果也为null;

为了避免上上面的发生:可以使用nvl()函数
如:SQL> select ename,13*sal+13*nvl(comm,0) "年薪",comm from emp;
即当comm为null时会使用0代替,不为null 使用本身计算

注意在查询日期的时候,不要忘了oracle本身默认时间的格式:
SQL> select ename,hiredate from emp where hiredate >'3-3月-1983';

group by和having 使用;
//group by 用于对查询的结果分组统计
//having 子句用户限制分组显示结果
SQL> select min(sal),avg(sal),max(sal), deptno from emp group by deptno;

MIN(SAL) AVG(SAL) MAX(SAL) DEPTNO
---------- ---------- ---------- ------
1300 2916.66666 5000 10
800 2175 3000 20
950 1566.66666 2850 30

-------------------------------------
SQL> select min(sal),avg(sal),max(sal), deptno from emp group by deptno having avg(sal)>2000;

MIN(SAL) AVG(SAL) MAX(SAL) DEPTNO
---------- ---------- ---------- ------
1300 2916.66666 5000 10
800 2175 3000 20

数据分组总结:
1.分组函数只能出现在选择列表 having order by 子句中。
2.如果在select 语句中同时包含有group by ,having,order by 那么他们的顺序
一定是group by ,having, order by
如:SQL> select min(sal),avg(sal),max(sal), deptno from emp group by deptno having avg(sal)>2000 order by avg(sal);

MIN(SAL) AVG(SAL) MAX(SAL) DEPTNO
---------- ---------- ---------- ------
800 2175 3000 20
1300 2916.66666 5000 10
3.在选择列中如果有列,表达式,和分组函数,那么这些列和表达式必须有一个出现在group by 子句中,否则会出错;

多表查询:
1.查询匹配的多列子查询
与simth的工作岗位,部门号都相同的所有员工!
select * from emp where(deptno,job)=(select deptno,job from emp where ename='SMITH');

2.查询比自己部门平均工资高的员工信息。
逻辑要很清晰
i.查询出所有部门的平均工资
select deptno,avg(sal) from emp group by deptno;
在这里我们有一个需要特别注意的就是可以把上面得出的结果看做是一张子表
ii。查询得出结果!
select a1.ename,a1.sal,a2.mysal from emp a1,(select deptno,avg(sal) mysal from emp group by deptno) a2 where a1.deptno=a2.deptno and a1.sal>a2.mysal;

3.接下来讲到oracle中的重点:分页技术,一共有三种方式(见图)
i.rownum分页
(select * from emp)
ii.显示rownum 【注意这里的rownum是oracle分配的,并且只能识别一次】
select a1.*,rownum rn from(select * from emp) a1;
比如查询前十行记录:select a1.*,rownum rn from(select * from emp) a1 where rownum<=10;

但是这样写就会查不出来:
select a1.*,rownum rn from(select * from emp) a1 where rownum<=10 and rownum>=6(原因上面说了,oracle规定rownum 只能在一个条件中使用一次)

如果做过项目的知道。在分页中,我们经常使用到:pageNow pageSize pageCount
rowCount
所以在oracle 中我们也向其他查询一样

把10换成【pageNow*pageSize】
把6换成【((pageNow-1)*pageSize+1)】

所以要完成上面的功能还需要第三次子查询;
EMPNO ENAME JOB MGR HIREDATE SAL COMM DEPTNO RN
----- ---------- --------- ----- ----------- --------- --------- ------ ----------
7369 SMITH CLERK 7902 1980-12-17 800.00 20 1
7499 ALLEN SALESMAN 7698 1981-2-20 1600.00 300.00 30 2
7521 WARD SALESMAN 7698 1981-2-22 1250.00 500.00 30 3
7566 JONES MANAGER 7839 1981-4-2 2975.00 20 4
7654 MARTIN SALESMAN 7698 1981-9-28 1250.00 1400.00 30 5
7698 BLAKE MANAGER 7839 1981-5-1 2850.00 30 6
7782 CLARK MANAGER 7839 1981-6-9 2450.00 10 7
7788 SCOTT ANALYST 7566 1987-4-19 3000.00 20 8
7839 KING PRESIDENT 1981-11-17 5000.00 10 9
7844 TURNER SALESMAN 7698 1981-9-8 1500.00 0.00 30 10

iii.select * from(select a1.*,rownum rn from(select * from emp) a1 where rownum<=10) a1 where rn>=6 ;(注前面前十行查出来了后,rownum字段是rn,所以在第三步中的查询条件要使用rn)
4.几个条件的变化(都是修改最底层的select 子句)
a.需要查询的字段
select * from(select a1.*,rownum rn from(select ename,empno,deptno from emp) a1 where rownum<=10) a1 where rn>=6;

b.排序
select * from(select a1.*,rownum rn from(select ename,empno,sal from emp order by sal) a1 where rownum<=10) a1 where rn>=6;

4.用查询的结果创建一个新表;
create table mytable (id,name,sal) as select empno,ename,sal from emp;

复杂查询:合并查询
有时候,在实际应用中,为了合并多个select语句查询的结果,可以使用集合操作符
union , all union,insersect,minus

a.union 该操作符是用于取得两个操作集的并集,使用该操作符会自动去掉结果集中的重复行;
select ename,sal,job from emp where sal>2500 union
select ename,sal,job from emp where job='MANAGER';

b.union all 和上面的union相似,只是不消除重复行【如果能用union all 完成的就不要使用union 这是sql 优化技巧】

c.insersect 指的是取得两个结果集的交集

d.minus 指的是两个集合的差集;

下面介绍几个小技巧:
to_date函数:当插入一个日期时,我们知道oracle默认是:dd-mm月-yyyy;
为了方便插入格式匹配,我们可以是该函数;
当然使用默认插入也是可以自动转化成yyyy-MM-dd的格式
但是还在这里说下该函数的使用方法。
insert into emp values(3,'邓言诚','manager',7782,to_date('1988/2/18','yyyy/MM/dd/'),789,77,10);
我试了一下,yyyy年MM月dd日的格式好像不可以!

一次插入多行记录:
a.上面我提到了一种方法感觉很好
create table mytable (id,name,sal) as select empno,ename,sal from emp;

b.下面的这种方法其实和上面的差不多;
create table mytable1(id number(5),name varchar2(10),job varchar2(20));
先创建后在给表赋值
insert into mytable1(id,name,job) select empno,ename,job from emp where deptno=10;

更新多列数据:
其实上面也有讲过类似的方法:
更新表中SMITH的工资,职位,奖金和SCOTT 一样;
update emp set (sal,job,comm)=(select sal,job,comm from emp where ename='SMITH') where ename='SCOTT';

事务处理:
前面也提到过保存点(savepoint),一般我们在进入数据库操作时,都会设置一个保存点。
a.提交事务,当执行使用commit语句可以提交事务。执行commit语句之后,会确认失事务的变化,结束事务,删除保存点,释放锁。当使用commit语句结束事务后,其他会话将可以查看到事务变化后的新数据。当然不手动的提交事务,使用exit会自动提交,所以建议大家养成手动提交事务的习惯。
那么,我写个小程序,使用java来提交事务(自己导入包,打开服务端口)

package com.demon;
import java.sql.*;
public class TestTransaction {
public static void main(String[] args) {
Connection ct=null;
Statement sm =null;
try {
Class.forName("oracle.jdbc.driver.OracleDriver");
ct =DriverManager.getConnection("jdbc:oracle:thin:@localhost:1521:ORCL","scott","woai5jia");
sm = ct.createStatement();
System.out.println("0...");
//从scott中减去100

//加入事务处理
ct.setAutoCommit(false);
sm.executeUpdate("update emp set sal=sal-100 where ename='SCOTT'");
System.out.println("1...");
int i = 4/0;//当然这里只是举个列子,出现异常有很多种

//从smith中加上100
sm.executeUpdate("update emp set sal=sal-100 where ename='SMITH'");
//提交事务
ct.commit();
sm.close();
ct.close();
} catch (Exception e) {
try {
//出现异常等 回滚事务
ct.rollback();
} catch (SQLException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}
e.printStackTrace();
}
}
}

b.只读事务; set transaction read only;
定义不是很好理解,我就用日常事务来说明一下它的用途:比如春节买火车票,售票管理员每隔一段时间就会查看售票情况。假如是每天18:00 统计售票情况,但是在此时,售票还在一直进行,不可能管理员统计就停止售票,所以这时使用只读事务的意义就显现出来了,但管理员在18:00这个时刻设置了只读事务,而售票人员还在进行售票。这时候,管理员查看的只是18:00之前的售票情况。
下面就以oracle自带的 system 和scott 来演示一下:
比如此时system 进入数据库 设置了只读事务:
然后,scott也进入数据库进行数据的操作
操作完成后,scott可以查看到自己操作后的结果,如:scott插入了几个雇员
而system 查找emp 表时却看不到该表被scott操作后的结果;
(select * from scott.emp 注意system查询时使用该形式,因为它要查询的是scott中的emp 表 )

oracle 中sql 函数:
1.字符函数(把emp中的ename 转化成第一个小写剩余字母大写的形式)
select lower(substr(ename,1,1))|| substr(ename,2,length(ename)-1) from emp;
这里我就不多说了,试下就行了,这里的“ || ”是合并两个字符串。
还有很多replace 如:select replace(ename,'A','我是邓言诚') from emp;

2.数学函数
round(n,[m])该函数是四舍五入 m省略则得到整数
trunc(n,[m])截取一个数,省略m 则忽略小数
mod(n,m) 求余;
这里给出一个虚拟表 dual ,用于函数测试;
如:SQL> select mod(10,2) from dual;

MOD(10,2)
----------
0
--------------------------------------------------
floor(m),得到一个比m小的最大整数 如:floor(33.3)--->33
ceil(m),得到一个比m大的最小整数 如:ceil(44.2)--->45
还有其他数学函数 abs(),sin(),cos() power()......

3.日期函数
a.当期日期
SQL> select sysdate from dual;

SYSDATE
-----------
2011-6-19 0

b.addmouths(d,n);指d 加上n个月后的日期
如:得出从受雇距今超过30年的员工信息
select * from emp where sysdate>add_months(hiredate,30*12);

c.在oracle中可以利用时间想减得到天数:但因为小时的关系,可以忽略
select floor(sysdate-hiredate),ename from emp;

d.last_day(d);得到这个日期下,该月的最后一天。
SQL> select last_day(sysdate) from dual;

LAST_DAY(SYSDATE)
-----------------
2011-6-30 0:17:57

如:各月倒数第3天入职的员工信息;
select * from emp where hiredate=last_day(hiredate)-2;

4.转换函数
虽然oracle中有自动转化功能,但有时候有的还是需要进行转化;
这里我说下to_char();该函数功能很广泛,可用于日期也可以用于薪水;

insert into emp values(100,'邓言诚','MANAGER',7566,sysdate,3232,324,10);
然后查询:SQL> select ename,to_char(hiredate,'yyyy-MM-dd HH24:mi:ss') "入职时间",to_char(sal,'L99,999.99') "薪资" from emp where empno=100;

ENAME 入职时间 薪资
---------- ------------------- --------------------
邓言诚 2011-06-19 00:44:01 ¥3,232.00

这里注意下:当使用别名时,使用中文要使用“”括起来,''不行。
就查询语句中的日期格式我就不说了,我来说下薪资的格式
L ---》表示当地的货币类型;
99,999.99---》小数点前表示整数,小数点后表示小数。至于前面的<,> 大家取钱都见过这种格式吧!还有就是数据要根据你创建表示的格式而定,如该emp表:sal number(7,2);
如果要使用国际货币则使用“$”....(把L换成相应的国际货币符号就可以了)

5.系统函数
a.terminal:当前会话客户所对应的终端的标示符
b.language :语言
c.db_name:当前数据库名称
d.nls_date_format;当前会话客户对应的日期格式
e.session_user:会话客户所对应的数据库用户名
f.current_schema:当前会话客户对应的默认方案名?
g.host:返回数据库所在主句名称
select sys_context('userenv','db_name') from dual;这里的userenv是用户所处环境

数据库管理员:
1.管理数据库的用户主要是sys 和system,他们的主要区别是:
(1)最重要的区别:存储的数据的重要性不同。
sys:所有oracle的数据字典的基表和视图都存放在sys用户中,这些基表和视图对于oracle的运行至关重要。由数据库自己维护,任何用户都不能手动更改。sys用户拥有dba,sysdba,sysoper角色或权限,是oracle权限最高的用户。
system:用于存放次级的内部数据;如oracle的一些特性或工具管理信息。system用户拥有dba,sysdab角色或系统权限。
(2)其次区别:权限不同。
sys用户必须以as sysdba 或as syspoer形式登陆,不能以normal方式登陆数据库
system如果正常登陆。它其实就是一个普通的dba用户,但是如果以as sysdba登陆,其结果实际上它是作为sys用户登录的。(见附图)

2.数据库的逻辑备份(到出)和恢复(导入)【注意在导入和导出要在oracle安装目录的BIN 下进行】
导出表:

a.导出自己的表:(见附图)
E:\oracle\product\10.1.0\Db_1\BIN>exp userid=scott/woai5jia@ORCL tables=(emp) fi
le=d:\emp1.dmp

b.导出其他方案的表:在这个提下方案,一个用户的创建就会生成对应一个和用户名相同的方案;
E:\oracle\product\10.1.0\Db_1\BIN>exp userid=system/pass@ORCL tables=(scott.emp) fi
le=d:\emp2.dmp

c.导出表结构
E:\oracle\product\10.1.0\Db_1\BIN>exp userid=scott/woai5jia@ORCL tables=(emp) fi
le=d:\emp3.dmp rows=n

d.直接导出方式,这种方式导入速度快,当数据量很大的时候可以考虑使用该方式
E:\oracle\product\10.1.0\Db_1\BIN>exp userid=scott/woai5jia@ORCL tables=(emp) fi
le=d:\emp4.dmp direct=y

导出方案:
a.导出自己方案
exp userid=scott/woai5jia@ORCL owner=scott file=d:\emp5.dmp

b.导出其他方案
exp userid=system/pass@ORCL owner=(system,scott) file=d:\emp6.dmp[这里表示用system用户导出自己的方案并导出scott方案]

导出数据库:【要求该用户具有dba权限或是exp_full_datebase权限】
exp userid=scott/woai5jia@ORCL full=y inctype=complete file=d:\emp7.dmp(inctype 表示增量备份)

导入表 和上面的对应

a.导入自己的表
imp userid=scott/woai5jia@ORCL tables=(emp) file=d:\emp.dmp;

b.导入表到其他用户
imp userid=system/pass@ORCL tables=(emp) file=d:\xx.dmp touser=scott;

c.导入表结构,只导入结构不导入数据
imp userid=scott/woai5jia@ORCL tables=(emp) file=d:\emp1.dmp rows=n;

d.导入数据:如果对象(如表)已经存在,则只导入数据
imp userid=scott/woai5jia@ORCL tables=(emp) file=d:\xxx.dmp ignore=y;

导入方案:
a.导入自身方案
imp userid=scott/woai5jia@ORCL file=d:\emp4.dmp;

b.导入其他方案【还是需要拥有dba身份】
imp userid=system/pass@ORCL file=d:\emp4.dmp fromuser=system touser=scott;

导入数据库
imp userid=system/pass full=y file=d:\xxxx.dmp;

--------------------------------------------------------------------------
* 注意以上的导入导出要对应相应的.dmp 我在这里只是把功能列出来,没有具体对应。应为我当时建的时候
没有标记dmp所对应的表
------------------------------------------------------------------------

前面介绍了当创建一个用户就会生成一个与之名称相对应得方案,其中方案中就包含下面的数据字典和动态性能视图。。。。。

数据字典 和动态性能视图
数据字典:在oracle中提供了数据库的一些系统信息,是静态的数据
动态性能视图: 记载了例程启动后的相关信息,是动态数据

数据字典视图:

(1)user_tables;用于显示当前用户所拥有的所有表,它只返回所对应方案的所有表
select table_name from user_tables;

(2)all_tables :用于显示当前用户可以访问的所有表,不仅返回当前用户方案表,还可以返回当前用户可以访问的其他方案表 select table_name from all_tables;

(3) dba_tables 它显示所有方案所有的数据库表,但是查询这种数据库字典

视图。要求用户必须是dba角色或是select any table 系统权限

SQL> conn system/pass;
Connected to Oracle Database 10g Enterprise Edition Release 10.1.0.2.0
Connected as system

SQL> select table_name from dba_tables;

重要查询:
//通过dba_users可以显示所有数据库用户的消息信息
select username,password from dba_users;

//通过查询数据字典视图dba_sys_privs,可以显示用户所具有的系统权限
SQL> desc dba_role_privs;
Name Type Nullable Default Comments
------------ ------------ -------- ------- -------------------------------------------------
GRANTEE VARCHAR2(30) Y Grantee Name, User or Role receiving the grant
GRANTED_ROLE VARCHAR2(30) Granted role name
ADMIN_OPTION VARCHAR2(3) Y Grant was with the ADMIN option
DEFAULT_ROLE VARCHAR2(3) Y Role is designated as a DEFAULT ROLE for the user

SQL> select * from dba_role_privs where GRANTEE='SCOTT';

GRANTEE GRANTED_ROLE ADMIN_OPTION DEFAULT_ROLE
------------------------------ ------------------------------ ------------ ------------
SCOTT CONNECT NO YES
SCOTT RESOURCE NO YES

//通过查询数据库字典dba_role_privs 可以显示用户所具有的角色
select * from dba_role_privs;

//如何查询一个角色包括的权限?
a.一个角色包含系统权限
select * from dba_sys_privs where grantee= 'CONNECT';
另外也可这样查看
SQL> conn system/pass as sysdba;
Connected to Oracle Database 10g Enterprise Edition Release 10.1.0.2.0
Connected as SYS

SQL> select * from role_sys_privs where role='CONNECT';

ROLE PRIVILEGE ADMIN_OPTION
------------------------------ ---------------------------------------- ------------
CONNECT CREATE VIEW NO
CONNECT CREATE TABLE NO
CONNECT ALTER SESSION NO
CONNECT CREATE CLUSTER NO
CONNECT CREATE SESSION NO
CONNECT CREATE SYNONYM NO
CONNECT CREATE SEQUENCE NO
CONNECT CREATE DATABASE LINK NO

b.一个角色包含的对象权限
select * from dba_tab_privs where grantee='CONNECT';

//查询某个用户具有怎样的角色
select * from dba_role_privs where grantee='SCOTT';

//查询oracle中所有的系统权限。一般是dba
select * from system_privilege_map order by name;

//查询oracle中所有的角色,一般是dba
select * from dba_roles;

//查询oracle中所有对象权限,一般是dba
select distinct privilege from dba_tab_privs;

//查询数据库的表空间
select tablespace_name from dba_tablespaces;

//查看当前数据库
SQL> select * from global_name;

GLOBAL_NAME
--------------------------------------------------------------------------------
ORCL

下面总结下:一个用户拥有多个角色,一个角色是多个权限的集合;

管理表空间和数据文件*****
表空间是数据库的逻辑组成部分,从物理上讲,数据库数据(如表等)存放在数据文件中,从逻辑上讲,数据库则是存放在表空间中,表空间由一个或多个数据文件组成(见附图),所以我们通过操作表空间来操作表文件!
表空间:表空间用于逻辑上组织数据库的数据,数据库逻辑上是有一个或是多个表空间组成。通过表空间可以达到以下作用a.控制数据库占用的磁盘空间b.dba 可以将不同数据类型部署到不同的位置,这样有利于提高I/O性能,同时利于备份和恢复等管理操作。

oracle10g 学习笔记上相关推荐

  1. nodejs学习笔记(上)

    nodejs学习笔记 (上) 通过学习需要做到的是 了解 前后端是如何进行交互的 nodejs也是使用javaScript进行编写的 javaScript在不同的运行环境中有不同的作用 在浏览器内核中 ...

  2. 学海灯塔新增学习笔记上传功能

    又经过一天的努力,学海灯塔学习笔记上传功能实现.欢迎访问我们的学海灯塔 学习笔记这一模块的功能和课程文件类似,由同学们上传自己的学习笔记,用户可以下载,并且可以对笔记进行打分,后期将增加文件讨论功能. ...

  3. Python课程学习笔记 上

    笔记目录 学前准备 Python解释器安装包 下载 安装 Pycharm 下载 常用的快捷键 Python程序执行机制 语法基础 注释和中文乱码 变量 数据类型 运算符 数值运算符 复合运算符 比较运 ...

  4. React学习笔记(上)

    一.React文件的创建(不使用脚手架进行文件的创建过程) 1.1.这里的React文件是一个html文件,或者是一个js文件,需要安转相关依赖 React:是React的核心包 React-dom: ...

  5. JVM学习笔记上(概述-本地方法栈)

    背景 前一阵跟着宋红康的视频学了学JVM,视频没有更新完,所以也没学完,这里记录一下笔记 JVM概述 JVM位置:  运行在操作系统之上 相对于java语言,JVM的位置如下所示 对于安卓的Davli ...

  6. 计算机网络基础学习笔记(上)

    学习视频 在观看学习视频前,可以先了解一下大概:互联网是如何运作的 随看随记 TCP和UDP MAC和IP地址,从几个不同的角度讲的: CSDN博客 知乎 博客园 从我的角度来看,MAC地址是区分IP ...

  7. [学习笔记]上下界网络流

    有的时候,网络流建模要考虑某些边必须选择若干次,又不能多于若干次,而且不太容易转化成比较好的限制模型, 就简单粗暴地给每条边定一个流量的上下界,求在满足上下界的基础上的一些问题. 大概有以下几种. 基 ...

  8. CreateJS基础 学习笔记(上)

    1.CreateJS介绍 了解CreateJS 1.CreateJS:     一款HTML5游戏开发的引擎     CreateJS是一套可以构建丰富交互体验的HTML5游戏的开源工具包,旨在降低H ...

  9. jQuery基础学习笔记(上)

    1.简介及语法 认识jQuery 1.jQuery:     jQuery库可以通过一行简单的标记被添加到网页中. 2.什么事jQuery:     jQuery是一个JavaScript函数库. 3 ...

最新文章

  1. Dynamics CRM 开启EmailRouter日志记录
  2. 聊聊底线 | 坏数据与假数据
  3. Mybatis二级缓存原理
  4. DayDayUp:2019春节电影《疯狂的外星人》和《新喜剧之王》两部电影观后感
  5. 产品策划系列:洞察需求(四)
  6. Netty方法误解ChannelHandlerContext.writeAndFlush(Object msg)
  7. [react] 你对immutable有了解吗?它有什么作用?
  8. Windows10配置CUDA10.0+cudnn7.5.1
  9. 分享几个大数据相关岗位的职责和面试问题
  10. TongWeb7本地部署(Windows)
  11. 惠普1005打印机自检页_HP黑白激光打印机打印自检页的方法
  12. 用于热水器行业气密性检测的五款快速密封接头
  13. 浅谈利用强化学习A3C玩转超级玛丽奥
  14. 【树】B056_LQ_三角形面积 阅兵方阵 版本分支(递归预处理)
  15. 程序员面试前只因为做了这几件事,成功征服了一系列大厂面试官。
  16. 四 微信公众号 基础参数说明
  17. 程序员女朋友的相册是这样的
  18. 非线性编辑系统的选购
  19. matlab中除法的使用,错误使用 / 矩阵维度必须一致
  20. 实时控制软件第一周 汽车ABS系统软件分析

热门文章

  1. 64位系统编译32位程序报错
  2. admin是谁,以及如何修改admin密码
  3. java取石子_取石子游戏 - Snowdream - BlogJava
  4. 小程序保存视频/图片到相册并且授权
  5. 买房应该全款还是贷款
  6. python如何爬取网站所有目录_python 爬取网站的博客目录
  7. iOS 16 Beta如何降级iOS 15系统?详细图文教程!
  8. Java 常见摘要算法——md5、sha1、sha256
  9. laravel详情页
  10. STM32使能/屏蔽外部中断