本人对数据库整个管理也不是特别精通,目前接触到了就顺便了解了一下。如有不对的地方,请指正或留言补充。
如果想用户想登录数据库,或者想创建实体或数据库结构就需要拥有相应的权限。同理,想对数据对象进行一些操作,如:
插入,更改,删除,查看等等,同样需要相应的权限。下面我们来看一下权限管理。
一、权限管理 (DCL)
CONNECT,RESOURCE,DBA 是ORACLE系统的三个内置角色,角色权限如下:
CONNECT:拥有Connect权限的用户只可以登录ORACLE,不可以创建实体,不可以创建数据库结构。
RESOURCE:拥有Resource权限的用户只可以创建实体,不可以创建数据库结构。
DBA:拥有全部特权,是系统最高权限,只有DBA才可以创建数据库结构。
[注:一般来说,对于普通用户,授予CONNECT, RESOURCE权限。对于管理员用户,则授予 CONNECT,RESOURCE,DBA 权限。]
常用的数据对象权限有以下五个:
ALL|SELECT|UPDATE|DELETE|INSERT|ALTER|ON 数据对象名
1、GRANT 赋于权限
GRANT CONNECT, RESOURCE TO 用户名;
GRANT SELECT ON 表名 TO 用户名;
GRANT SELECT, INSERT, DELETE ON 表名 TO 用户名1, 用户名2;
2、REVOKE 回收权限
REVOKE CONNECT, RESOURCE FROM 用户名;
REVOKE SELECT ON 表名 FROM 用户名;
REVOKE SELECT, INSERT, DELETE ON 表名 FROM 用户名1, 用户名2;
上面的赋权查看只能在一个数据库中进行,不能进行跨数据库访问。如果想跨库访问怎么办呢?
3、数据库链接 (DATABASE LINK)
1>
CREATE DATABASE LINK 数据库链接名 CONNECT TO 用户名 IDENTIFIED BY 密码 USING '数据库连接字符串';
2>数据库连接字符串可以直接修改TNSNAMES.ORA里定义.如:
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = xxxxxx)(PORT = 1521))
)
(CONNECT_DATA =
(SERVICE_NAME = xxx)
)
)
3>查询远端数据库里的表
SELECT * FROM 表名@数据库链接名;
[注:我在使用的时候,'数据库连接字符串' 经常跟'数据库名称'一致]
二、表空间
表空间是数据库的逻辑划分,一个表空间只能属于一个数据库。所有的数据库对象都存放在指定的表空间中
1、表空间路径
--查看表空间
SELECT * FROM DBA_TABLESPACES;
--设置表空间的读写状态
ALTER TABLESPACE tablespace_name read{only|write};
--设置表空间的可用状态
ALTER TABLESPACE tablespace_name{online|offline[normal|temporary|immediate]};
--查看表空间文件路径
SELECT TABLESPACE_NAME, FILE_ID, BYTES / 1024 / 1024, FILE_NAME
FROM DBA_DATA_FILES
ORDER BY FILE_ID;
--查看用户和默认表空间的关系
SELECT USERNAME, DEFAULT_TABLESPACE FROM DBA_USERS;
--查看表空间组
SELECT * FROM DBA_TABLESPACE_GROUPS;
--删除表空间
DROP TABLESPACE tablespace_name [including contents][cascade constraints];
2、创建表空间
第1步:创建临时表空间
CREATE TEMPORARY TABLESPACE TEST_tEMP
TEMPFILE 'E:\ORACLE\LV\ORADATA\ORCL\test_temp.DBF'
SIZE 50m
AUTOEXTEND ON
NEXT 200m MAXSIZE 10240m
EXTENT MANAGEMENT LOCAL;
第2步:创建数据表空间
CREATE TABLESPACE TEST_TBSP
LOGGING
DATAFILE 'E:\ORACLE\LV\ORADATA\ORCL\test_data.DBF'
SIZE 800m
AUTOEXTEND ON
NEXT 100m MAXSIZE 20480m
EXTENT MANAGEMENT LOCAL;
第3步:创建用户并指定表空间
CREATE USER TEST_U IDENTIFIED BY TEST_U
DEFAULT TABLESPACE TEST_DATA
TEMPORARY TABLESPACE TEST_TEMP;
第4步:给用户授予权限
GRANT CONNECT,RESOURCE,DBA TO TEST_U;