Oracle基础
一、Oracle数据库:
相关的操作系统文件(即存储在计算机硬盘上的文件)集合,这些文件组织在一起,成为一个逻辑整体,即为Oracle数据库(它包含六类文件:数据文件、控制文件、重做日志文件、参数文件、密码文件、归档日志文件)。如下图(黄色部分是三种必须存在的文件):
数据库是用来存储数据的集合,Oracle用它来存储和管理相关的信息。Oracle数据库必须要与内存里的实例合作,才能对外提供数据管理服务。
Oracle数据库与实例的区别:Oracle实例指的是Oracle的进程和内存。Oracle数据库则是说保存数据的物理文件。另外,可以从一个或多个实例访问一个数据库,但是一个实例一次只能访问一个数据库。
二、 Oracle中的常用命令
--连接数据库的命令connect,用于切换连接用户,简写形式conn
--语法格式:conn 用户名/密码
conn yanln/yanln
--断开当前连接:
discon
--显示当前登录的用户
show user
--执行操作系统的命令
host mkdir d:\testOracle
--导出记录到文本
spool d:\testOracle\test.txt
select * from book;
spool off
--清屏
clear screen
--执行文件系统中的sql语句
start d:\test.sql
--显示表结构,命令describe,简写形式desc
desc student
--显示错误信息
show error
--退出
exit
三、用系统用户登录Oracle
系统用户说明:
- sys:这个账户相当于SQL Server中的sa账号,是个超级账户,拥有的权限最大,可以完成数据库的所有管理任务。
- system:没有sys的权限大,通常用来创建一些查看管理信息的表或试图,同样也不建议使用system架构来创建一些与管理无关的表或试图。
- sys和system在登录Oracle工具时,sys只能以系统管理员(sysdba)或系统操作员(sysoper)的权限登录,而system可以直接登录(normal)。
- sysman:是Oracle数据库中用于EM(企业管理器)管理的用户,如果你不用该用户,也可以删除。
- scott:是Oracle提供的示例用户,里面有一些供初学者学习操作的数据表(emp,dept,salgrade,bonus)。
md-->sqlplus-->提示输入用户名、密码的登录方式
sqlplus /nolog : 进入sqlplus界面但不登录
--sys用户以sysdba的身份连接数据库,连接时指定数据库连接标识符@orcl
conn sys/oracle @orcl as sysdba
--sys用户以sysdba的身份连接数据库,连接时没有指定数据库连接标识符,此时将连接默认的数据库
conn sys/oracle as sysdba
show user
--system用户直接登录数据库
conn system/oracle
show user
--system用户以sysdba的身份登录数据库
conn system/oracle as sysdba
show user
--不用指定用户名和密码,直接以sysdba的身份登录数据库
conn /as sysdba
--给scott用户解锁
alter user scott account unlock
conn scott/tiger
四、创建表空间
什么是表空间?
数据表与空间:表空间实际上是数据库上的逻辑存储结构,可以把表空间理解为在数据库中开辟的一个空间,用于存放我们数据库的对象,一个数据库可以由多个表空间构成。表空间实际上由一个或多个数据文件构成的,数据文件的位置和大小可以由我们用户自己来定义。我们所操作的一些表啊,一些其它的数据对象都是存放在数据文件里的。那么数据文件是物理存储结构,是真正可以看到的,而表空间是逻辑存储结构。
表空间的分类:永久表空间;临时表空间;UNDO表空间。
--创建默认表空间
create tablespace test1_tablespace datafile 'test1file.dbf' size 10m;
--创建临时表空间
create temporary tablespace temptest1_tablespace tempfile 'tempfile1.dbf' size 10m;
--查看表空间数据文件的位置
select file_name from dba_data_files where tablespace_name = 'TEST1_TABLESPACE';
--查看临时表空间数据文件的位置
select file_name from dba_temp_files where tablespace_name = 'TEMPTEST1_TABLESPACE';
五、Oracle的用户管理
--创建用户
create user yan identified by test default tablespace test1_tablespace temporary tablespace temptest1_tablespace;
--查看创建的用户
select username from dba_users;
--给刚创建的用户授权
grant connect to yan;
--如果想更改用户的密码,我们可以通过
alter user 用户名 identified by 新密码;
--如果管理员不希望某用户登录, 但又不打算删除某用户,可以将此用户锁定
alter user yan account lock;
--如果这个用户不用了,想删除这个用户,可以用drop
drop user yan cascade;
六、Oracle的角色管理
什么是角色?
Oracle角色(role)就是一组权限(或者说是权限的集合)。用户可以给角色赋予指定的权限,然后将角色赋给相应的用户。
三种标准的角色:
- CONNECT(连接角色):拥有connect权限的用户只可以登录Oracle,不可以创建实体,不可以创建数据库结构。
- RESOURCE(资源角色):拥有resource权限的用户只可以创建实体,不可以创建数据库结构。
- DBA(数据库管理角色):拥有全部特权,是系统最高权限,只有DBA才可以创建数据库结构。
所以,对于普通用户:授予connect,resource权限;对于DBA管理用户:授予dba权限。
--创建用户user02
create user user02 identified by pass02;
--创建角色
create role manager;
--给角色赋予创建表、创建视图的权限
grant create table, create view to manager;
--给角色manager授权给用户
grant manager to user02;
--回收权限
revoke manager from user02;
--删除权限
drop role manager;
七、Oracle用户的权限管理
什么是权限:权限指的是执行特定命令或访问数据库对象的权力。
权限的分类:
- 系统权限:允许用户执行特定的数据库动作,如创建表、创建索引、连接实例等。
- 对象(实体)权限:允许用户操纵一些特定的对象,如读取试图,可更新某列、执行存储过程等。
--查看所有系统权限
select * from system_privilege_map;
--创建用户
create user user02 identified by pass02;
--给用户赋予一个创建会话的权限
grant create session to user01;
--通过角色给用户赋予一个系统权限
create role manager;
grant create table, create sequence to manager;
grant manager to user01;
--查看所有对象权限
select * from table_privilege_map;
--通过角色给用户赋予一个对象权限
create role manager01;
grant select,update,insert on scott.emp to manager01;
grant manager01 to user01;
--测试对象权限
conn user01/pass01
select * from scott.emp;(成功)
select * from scott.dept;(失败)
--回收对象权限
revoke select,update,insert on scott.emp from manager01;
八、表空间管理(查看用户的表空间&&修改与删除表空间)
查看用户的表空间:
--查看管理员级别的表空间描述信息
select tablespace_name from dba_tablespaces;
--查看普通用户级别的表空间描述信息
select tablespace_name from user_tablespaces;
--dba_users针对管理员级别的数据字典,用于查看数据库所有用户的用户信息
select username,default_tablespace,temporary_tablespace from dba_users;
--user_users针对普通用户级别的数据字典,用于查看当前登录用户的用户信息
select username,default_tablespace,temporary_tablespace from user_users;
--设置用户默认和临时表空间
alter user user01
default tablespace TEST1_TABLESPACE
temporary tablespace TEMPTEST1_TABLESPACE;
修改与删除表空间:
--更改表空间的状态为脱机状态
alter tablespace test1_tablespace offline;
--更改表空间的状态为联机状态
alter tablespace test1_tablespace online;
--更改表空间的状态为只读状态
alter tablespace test1_tablespace read only;
--更改表空间的状态为可读写状态
alter tablespace test1_tablespace read write;
--查看表空间的状态
select status from dba_tablespaces where tablespace_name = 'TEST1_TABLESPACE';
--增加数据文件
alter tablespace test1_tablespace add datafile 'test2_file.dbf' size 10m;
--查看表空间的数据文件
select file_name from dba_data_files where tablespace_name='TEST1_TABLESPACE';
--删除数据文件
alter tablespace test1_tablespace drop datafile 'test2_file.dbf';
--删除表空间
drop tablespace test1_tablespace including contents;