常见异常:

ORA-14025:不能为实体化视图或实体化视图日志指定PARTITION

ORA-14026:PARTITION和CLUSTER子句互相排斥

ORA-14027:仅可以指定一个PARTITION子句

ORA-14028:缺少AT或VALUES关键字

ORA-14029:GLOBAL分区索引必须加上前缀

ORA-14030:CREATETABLE语句中有不存在的分区列

ORA-14031:分区列的类型不可以是LONG或LONGRAW

ORA-14032:分区编号的分区界限过高

ORA-14033:ctchvl:未预期的strdef类型

ORA-14034:ctchvl:未预期的操作数类型

ORA-14035:ctchvl:未预期的字符串数据类型

ORA-14036:列的分区界限值过大

ORA-14037:分区""的分区界限过高

ORA-14038:GLOBAL分区索引必须加上前缀

ORA-14039:分区列必须构成UNIQUE索引的关键字列子集

ORA-14040:传递给TABLE$OR$INDEX$PART$NUM的参数个数不当

ORA-14041:可能没有为结果分区指定分区界限

ORA-14042:可能没有为要移动,修改或重建的分区指定分区界限

ORA-14043:仅可以添加一个分区

ORA-14044:仅可以移动一个分区

ORA-14045:仅可以修改一个分区

ORA-14046:分区可以刚好分成两个新的分区

ORA-14047:ALTERTABLE|INDEXRENAME不可以与其它分区组合

ORA-14048:分区维护操作不可以与其它操作组合

ORA-14049:无效的ALTERTABLEMODIFYPARTITION选项

ORA-14050:无效的ALTERINDEXMODIFYPARTITION选项

ORA-14051:ALTERMATERIALIZEDVIEW选项无效

ORA-14052:此上下文中不允许分区扩展表名称语法

ORA-14053:非法尝试修改(在语句中)

ORA-14054:无效的ALTERTABLETRUNCATEPARTITION选项

ORA-14055:ALTERINDEXREBUILD中的关键字REBUILD必须紧跟索引名称

ORA-14056:分区编号:PCTUSED和PCTFREE的总和不可以超过100

ORA-14057:分区"":PCTUSED和PCTFREE的总和不可以超过100

ORA-14058:分区编号:INITRANS值必须小于MAXTRANS值

ORA-14059:分区"":INITRANS值必须小于MAXTRANS值

ORA-14060:不可以更改表分区列的数据类型或长度

ORA-14061:不可以更改索引分区列的数据类型或长度

ORA-14062:一个或多个表分区驻留在只读表空间中

ORA-14063:唯一/主约束条件关键字中存在无用索引

ORA-14064:唯一/主约束条件关键字中存在无用分区的索引

ORA-14065:不可以指定分区表的ALLOCATESTORAGE

ORA-14066:按索引组织的未分区表的选项非法

ORA-14067:重复的TABLESPACE_NUMBER说明

ORA-14068:不可以同时指定TABLESPACE和TABLESPACE_NUMBER

ORA-14069:无效的TABLESPACE_NUMBER值

ORA-14070:仅可以指定分区索引或包含REBUILD的选项

ORA-14071:用于强制约束条件的索引选项无效

ORA-14072:不可以截断固定表

ORA-14073:不可以截断引导程序表或群集

ORA-14074:分区界限必须调整为高于最后一个分区界限

ORA-14075:分区维护操作仅可以对分区索引执行

ORA-14076:DROP/SPLITPARTITION不可以应用到LOCAL索引分区

ORA-14078:您不可以删除GLOBAL索引的最高分区

ORA-14079:标记为无用索引的分区选项非法

ORA-14080:无法按指定的上限来分割分区

ORA-14081:新分区名必须与旧分区名不同

ORA-14082:新分区名必须与对象的任何其它分区名不同

ORA-14083:无法删除分区表的唯一分区

ORA-14084:您仅可以指定LOCAL索引的TABLESPACEDEFAULT

ORA-14085:分区表不能具有LONG数据类型的列

ORA-14086:不可以将区索引作为整体重建

一般权限用户的登录验证都是第三种方式,即数据库验证,因为用户名和密码都是存储在数据库当中的。然而,SYS用户(具有SYSDBA和SYSOPER权限的用户)却不是数据库验证。在oracle数据没有启动的时候,SYS用户就可以连接到数据库,并对其进行启动等操作,所以不可能是数据库验证。SYS用户采用的是第一种和第二种验证方式。

1 sqlplus /nolog,conn /as sysdba 之所以能够登录,在于oracle登录时的身份认证方式。可以试一下这个:sqlplus /nolog,conn abcd/sss as sysdba,你发现也能够登录成功。2 oracle在登录时,有三种身份认证方式:操作系统身份认证、密码文件认证、数据库认证。而conn /as sysdba是属于操作系统认证。 为什么这样说呢?你当前电脑开机时登录的用户,也就是进入操作系统的用户,例如是gooooal,它在你电脑的ora_dba组中。可以在我的电脑单击右键,找到管理,选择本地用户和组,发现有一个组叫ora_dba,双击它,看到成员列表中有gooooal。 也就是在conn /as sysdba,oracle会进行操作系统验证,发现你当前登录的用户就属于ora_dba组,因此才可以登录成功。 你可以把ora_dba组中的gooooal用户删除,再conn /as sysdba,就发现进不去了。3 密码文件验证可以查阅相关资料,百度oracle的身份验证方式,就可以查到相关资料。4 其实在linux或unix环境下,安装oracle是要设置很多东西的,比如用户和用户组的设置等,不像在windows下,安装傻瓜化了。5 关于安全性,如果将oracle安装在本地,其实你本地就是oracle服务器,所以权限高一些。你用哪个用户来启动oracle实例?哪个用户来mount数据库?哪个用户来打开数据库?从而才能进行之后的select等sql操作? 在oracle实例等还没有启动的时候,oracle数据库里面建的用户肯定是不能使用的。所以才会有操作系统身份验证。用这个用户,来启动oracle实例、转载数据库等。之后才能做oracle表的增删改查。

3.2 Sql*Plus

3.2.1 Windows操作系统

3.2.1.1 连接数据库

3.2.1.2 断开数据库

3.2.2 Linux操作系统

3.2.2.1 连接数据库

连接远程数据库:

1) 输入Shell命令:sqlplus 用户名/密码@连接描述符。例如:sqlplus test/test@orcl,表示使用test用户名和test密码通过orcl连接描述符连接数据库。

2) 操作系统会自动根据$PATH环境变量去运行$ORACLE_HOME/bin/sqlplus可执行文件。如果$PATH环境变量或$ORACLE_HOME环境变量不对,会导致无法执行sqlplus命令。

3) sqlplus会自动去找$ORACLE_HOME/network/admin/tnsnames.ora文件里配置的连接描述符。

4) sqlplus会自动使用指定的用户名、密码和连接描述符连接远程数据库,连接成功后会出现SQL命令的交互界面SQL。

注意:如果连接失败,检查远程的数据库是否已经启动,远程的监听服务是否已经启动,连接描述符配置文件tnsnames.ora是否有读取权限,连接描述符是否配置正确,用户名和密码是否正确,密码是否过期,用户是否具有connect权限等。

连接本机数据库:

1) 在命令行下输入:sqlplus / as sysdba

2) 操作系统会自动根据$PATH环境变量去运行$ORACLE_HOME/bin/sqlplus可执行文件。

3) 连接成功后会出现SQL 交互界面。

提示:本机数据库可以在关闭状态下用此方法连接,但如果用连接远程数据库的方法来连接本机数据库,要求数据库必须已经启动。

3.2.2.2 断开数据库

输入SQL命令:exit或quit,表示断开并退出sqlplus。

输入SQL命令:disconnect,表示只断开、但不退出sqlplus。

3.3 OEM

3.3.1 连接数据库

用浏览器打开OEM的URL地址,输入数据库用户名和密码,点击登录即可完成连接。

查看OEM的URL地址:查看$ORACLE_HOME\install下的readme.txt

3.3.2 断开数据库

点击网页的右上角的注销按钮,即可断开数据库。断开后可以再次登录,或关闭浏览器。

3.4 OCILIB

3.4.1 连接及断开数据库

#include stdio.h

#include "ocilib.h"

int main (int argc, char ** argv)

{

if (OCI_Initialize (NULL, NULL, OCI_ENV_DEFAULT) == 0)//如果初始化OCILIB库失败,就报错

{

return -1;

}

OCI_Connection * ociConn;

ociConn = OCI_ConnectionCreate ("192.168.227.128", "test", "test", OCI_SESSION_DEFAULT);//连接数据库

if (ociConn == 0)//如果连接数据库失败,就报错

{

return -1;

}

OCI_ConnectionFree (ociConn);//断开数据库

return 0;

}

3.5 tnsnames.ora连接描述符配置文件说明

3.5.1 TNS简介

TNS全称Transparence Network Substrate,直译为透明网络底层,也称连接描述符。

Oracle数据库客户端就是通过连接描述符来知道如何连接数据库服务器的。

3.5.2 配置文件路径

本配置文件在Oracle数据库安装路径下的network下的admin下的tnsnames.ora

3.5.3 文件格式说明

表示一个空格,一个都不能少,也不能多

表示连接描述符的名字,不区分大小写

表示数据库服务器的IP地址

表示数据库服务器的端口号,一般不用改

表示直连方式连接数据库服务器,一般不用改

表示数据库服务名,使用SQL show parameter service_name;命令查看

注意:配置多个连接描述符时,每一个之间间隔一空行。

3.6 sqlnet.ora连接方式配置文件说明

3.6.1 简介

本配置文件主要是配置数据库客户端如何连接数据库服务端。例如配置连接超时时间、接收数据超时时间、发送数据超时时间、服务器查找方式等。

3.6.2 配置文件路径

本配置文件在Oracle数据库安装路径下的network下的admin下的sqlnet.ora

3.6.3 文件格式说明

SQLNET.RECV_TIMEOUT = 1 //配置接收数据超时时间,单位秒

SQLNET.SEND_TIMEOUT = 1 //配置发送数据超时时间,单位秒

SQLNET.INBOUND_CONNECT_TIMEOUT = 1 //配置连接超时时间,单位秒

SQLNET_ALLOWED_LOGON_VERSIONS = (11,10,9,8) //允许连接的数据库服务端版本号

3.7 listener.ora监听服务配置文件说明

3.7.1 简介

本配置文件主要是配置数据库服务端的监听服务。

3.7.2 配置文件路径

本配置文件在Oracle数据库安装路径下的network下的admin下的listener.ora

3.7.3 文件格式说明

暂无。

3.8 设置Windows下ODBC访问Oracle数据库

假如Oracle 数据库安装在IP 为 192.168.0.20 的服务器上,实例名为"MyTestInstance",并添加用户mytestuser 和密码 password1,以备下文作为范例使用。服务器上可以配置多个实例,每个实例就是一个逻辑上独立的数据库。

客户端是指需要访问服务端的Oracle数据库的计算机,它可以与服务器是同一台机器,它也可以是网络能够访问到该服务器的任何其它计算机。

下面讨论如何在Windows客户端机上配置 Oracle 9i ODBC 来访问远程Oracle 9i数据库。

通过ODBC来访问Oracle的原理如图所示:

客户程序---- ODBC ---- Oracle OCI ------ Oracle 服务器

首先,在客户端上装一个 Oracle OCI (Oracle Call Interface),它是真正直接与远程Oracle服务器打交到,实现数据传输的组件。为了使用ODBC的统一方式来访问Oracle数据库,还必须装一个Oracle ODBC driver. 它接收客户程序的数据库访问请求,并把ODBC类型的请求转换为对Oracle OCI的请求。OCI实现操纵Oracle数据库,并将查询结果或其它结果返回给ODBC driver, ODBCdriver 最后将结果返回给客户程序。换句话说,客户通过ODBC来访问数据库,而ODBC则是通过调用OCI的API来实现其功能的。

以刚才所述的服务器设置为基础,下面给出客户端Oracle ODBC的配置步骤。

步骤1:安装Oracle 客户端运行时库,其中包括 Oracle OCI.

步骤2:设置 OCI 访问信息

OCI访问Oracle 服务器需要知道

1,服务器IP地址或主机名,(主机名)

2,服务器的监听端口, (端口号)

3,欲访问的数据库实例名。 (服务标识/服务名)

把这三个信息组成的信息集合起个名字就叫数据源名(服务命名)。

这些信息可以通过 Oracle Net Manager 来设置。在它的设置界面中用的名词分别被列在对应的括号中。

本例设置如下:

服务命名: ABCD (随便字符串)

主机名: 192.168.0.20

端口号: 1521 (必须与服务器端的一致,这里是缺省值)

服务标识/服务名: MyTestInstance

以后 Oracle ODBC driver 只需要提供给OCI服务命名(本例为ABCD),OCI就知道如何去访问真正的数据库了。

步骤3:设置ODBC DSN,即 ODBC数据源

进入控制面板/管理工具/数据源(ODBC)/系统DSN

点击添加,选择 MicroSoft ODBC for Oracle,.然后弹出一个对话框,填写如下内容。

1,数据源名称: MyOracleSrc 可随便起,客户程序将用它。

2, 描述:一段说明文字,自己能看懂即可。

3,用户名称: mytestuser 你最终需要访问的数据库所认可的用户名。

4,服务器:ABCD (即OCI设置中的服务命名。这是中文版最容易引起误解的地方。笔者开始就误以为要填写Oracle服务器的主机名)

步骤4: 客户程序通过ODBC访问数据库的方法

客户程序访问数据库时需要三个信息:

1,数据源: MyOracleSrc ,即ODBC DSN中设置的数据源名称

2,用户名: mytestuser

3,密码: password1

这样,就可以访问到192.168.0.20上的数据库 MyTestInstance.

为了验证ODBC设置是否成功,可是使用DB查询分析器试用版照步骤4来进行简单的测试。

4 查看数据库的服务名、实例名、端口号

4.1 Sql*Plus

如果无法连接数据库,就建议使用连接本机数据库方式连接。

查看服务名:

在SQL下输入:select global_name from global_name;

在SQL下输入:show parameter service_name;

查看实例名:

在SQL下输入:select instance_name from v$instance;

查看端口号:

5 管理数据库连接

5.1 查看数据库连接

v$session表里存放所有的数据库连接信息,使用select命令对此表的数据进行查看。其中:

username字段:此连接使用的数据库用户名。

sid字段:此连接的会话ID(Session ID)。

machine字段:此连接的远端主机名。

port字段:此连接的远端端口号。

注意:此视图需要DBA权限才能查看此表。

6 数据库用户

Oracle数据库的每一个用户对应一个用户配置文件,用户配置文件控制着用户的一些行为、权限和资源占用等。

一般的用户都是对应DEFAULT这个用户配置文件,也可以修改对应的用户配置文件名。

Oracle数据库还有一个用户配置文件是否生效开关,如果为TRUE表示开启用户配置文件,如果为FALSE表示关闭用户配置文件,但是用户配置文件里有些配置是不由此开关控制,始终开启(详见4.1.4.5)。

6.1 创建数据库用户

注意:新用户必须赋予connect或dba系统权限后,才能远程连接。

6.1.1 Sql*Plus

在SQL下输入:create user 用户名 identified by 密码;

6.2 删除数据库用户

注意:当前已连接的用户不能删除。

6.2.1 Sql*Plus

在SQL下输入:drop user 用户名 cascade;

6.3 修改数据库用户的密码

6.3.1 Sql*Plus

在SQL下输入:alter user 用户名 identified by "新密码";

6.4 数据库用户权限

6.4.1 用户权限简介

权限分两种,一种是系统权限,一种是对象权限。

系统权限是指数据库系统规定的用户使用数据库的权限,权限作用于用户。

只有拥有DBA权限的用户才能给用户赋予或收回系统权限。

system_privilege_map表里有所有的oracle数据库系统内置的权限。

系统权限有以下几种:

create cluster

create procedure

create sequence

create table

create view

create trigger

create type

create session:可以创建会话,也就是允许这个用户登录,没有此权限则不可以。

alter session

create synonym

create database link:可以创建私有的DBLink,私有的DBLink仅创建的用户可用。

create public database link:可以创建全局的DBLink,全局的DBLink所有的用户都可用。

以下是权限集合:

dba:全部特权,是系统最高权限,可以创建数据库结构,没有此权限则不可以。

resource:允许用户创建各种对象的权限集合,包括:create cluster、create procedure、create sequence、create table、create trigger、create type。

connect:允许用户远程登录的权限集合,包括:alter session、create cluster、create database link、create sequence、create session、create synonym、create view。

Oracle系统权限的分类

群集权限:

CREATE CLUSTER:在自己的方案中创建、更改和删除群集。

CREATE ANY CLUSTER:在任何方案中创建群集。

ALTER ANY CLUSTER:在任何方案中更改群集。

DROP ANY CLUSTER:在任何方案中删除群集。

数据库权限:

ALTER DATABASE:运行ALTER DATABASE语句,更改数据库的配置。

ALTER SYSTEM:运行ALTER SYSTEM语句,更改系统的初始化参数。

AUDIT SYSTEM:运行AUDIT SYSTEM和NOAUDIT SYSTEM语句,审计SQL。

AUDIT ANY:运行AUDIT和NOAUDIT语句,对任何方案的对象进行审计。

索引权限:

CREATE ANY INDEX:在任何方案中创建索引。

注意:没有CREATE INDEX权限,CREATE TABLE权限包含了CREATE INDEX权限

ALTER ANY INDEX:在任何方案中更改索引。

DROP ANY INDEX:任何方案中删除索引。

过程权限:

CREATE PROCEDURE:在自己的方案中创建、更改或删除过程、函数和包。

CREATE ANY PROCEDURE:在任何方案中创建过程、函数和包。

ALTER ANY PROCEDURE:在任何方案中更改过程、函数和包。

DROP ANY PROCEDURE:在任何方案中删除过程、函数或包。

EXECUTE ANY PROCEDURE:在任何方案中执行或者引用过程。

概要文件权限:

CREATE PROFILE:创建概要文件。

ALTER PROFILE:更改概要文件。

DROP PROFILE:删除概要文件。

角色权限:

CREATE ROLE:创建角色。

ALTER ANY ROLE:更改任何角色。

DROP ANY ROLE:删除任何角色。

GRANT ANY ROLE:向其他角色或用户授予任何角色。

注意:没有对应的REVOKE ANY ROLE权限。

回退段权限:

CREATE ROLLBACK SEGMENT:创建回退段。

注意:没有对撤销段的权限。

ALTER ROLLBACK SEGMENT:更改回退段。

DROP ROLLBACK SEGMENT:删除回退段。

序列权限:

CREATE SEQLENCE:在自己的方案中创建、更改、删除和选择序列。

CREATE ANY SEQUENCE:在任何方案中创建序列。

ALTER ANY SEQUENCE:在任何方案中更改序列。

DROP ANY SEQUENCE:在任何方案中删除序列。

SELECT ANY SEQUENCE:在任何方案中从任何序列中进行选择。

会话权限:

CREATE SESSION:创建会话,登录进入(连接到)数据库。

ALTER SESSION:运行ALTER SESSION语句,更改会话的属性。

ALTER RESOURCE COST:更改概要文件中的计算资源消耗的方式。

RESTRICTED SESSION:在数据库处于受限会话模式下连接到数据。

同义词权限:

CREATE SYNONYM:在自己的方案中创建、删除同义词。

CREATE ANY SYNONYM:在任何方案中创建专用同义词。

CREATE PUBLIC SYNONYM:创建公共同义词。

DROP ANY SYNONYM:在任何方案中删除同义词。

DROP PUBLIC SYNONYM:删除公共同义词。

表权限:

CREATE TABLE:在自己的方案中创建、更改和删除表。

CREATE ANY TABLE:在任何方案中创建表。

ALTER ANY-TABLE:在任何方案中更改表。

DROP ANY TABLE:在任何方案中删除表。

COMMENT ANY TABLE:在任何方案中为任何表、视图或者列添加注释。

SELECT ANY TABLE:在任何方案中选择任何表中的记录。

INSERT ANY TABLE:在任何方案中向任何表插入新记录。

UPDATE ANY TABLE:在任何方案中更改任何表中的记录。

DELETE ANY TABLE:在任何方案中删除任何表中的记录。

LOCK ANY TABLE:在任何方案中锁定任何表。

FLASHBACK ANY TABLE:允许使用AS OF子句对任何方案中的表、视图执行一个SQL语句的闪回查询。

表空间权限:

CREATE TABLESPACE:创建表空间。

ALTER TABLESPACE:更改表空间。

DROP TABLESPACE:删除表空间,包括表、索引和表空间的群集。

MANAGE TABLESPACE:管理表空间,使表空间处于ONLINE(联机)、OFFLINE(脱机)、BEGIN BACKUP(开始备份)、END BACKUP(结束备份)状态。

UNLIMITED TABLESPACE:不受配额限制地使用表空间。

注意:只能将UNLIMITED TABLESPACE授予账户而不能授予角色。

用户权限:

CREATE USER:创建用户。

ALTER USER:更改用户。

BECOME USER:当执行完全装入时,成为另一个用户。

DROP USER:删除用户。

视图权限:

CREATE VIEW:在自己的方案中创建、更改和删除视图。

CREATE ANY VIEW:在任何方案中创建视图。

DROP ANY VIEW:在任何方案中删除视图。

COMMENT ANY TABLE:在任何方案中为任何表、视图或者列添加注释。

FLASHBACK ANY TABLE:允许使用AS OF子句对任何方案中的表、视图执行一个SQL语句的闪回查询。

触发器权限:

CREATE TRIGGER:在自己的方案中创建、更改和删除触发器。

CREATE ANY TRIGGER:在任何方案中创建触发器。

ALTER ANY TRIGGER:在任何方案中更改触发器。

DROP ANY TRIGGER:在任何方案中删除触发器。

ADMINISTER DATABASE TRIGGER:允许创建ON DATABASE触发器。在能够创建ON DATABASE触发器之前,还必须先拥有CREATE TRIGGER或CREATE ANY TRIGGER权限。

专用权限:

SYSOPER

(系统操作员权限)

STARTUP

SHUTDOWN

ALTER DATABASE MOUNT/OPEN

ALTER DATABASE BACKUP CONTROLFILE

ALTER DATABASE BEGIN/END BACKUP

ALTER DATABASE ARCHIVELOG

RECOVER DATABASE

RESTRICTED SESSION

CREATE SPFILE/PFILE

SYSDBA

(系统管理员权限)

SYSOPER的所有权限,并带有WITH ADMIN OPTION子句

CREATE DATABASE

RECOVER DATABASE UNTIL

其他权限:

ANALYZE ANY:对任何方案中的任何表、群集或者索引执行ANALYZE语句。

GRANT ANY OBJECT PRIVILEGE:授予任何方案上的任何对象上的对象权限。

注意:没有对应的REVOKE ANY OBJECT PRIVILEGE。

GRANT ANY PRIVILEGE:授予任何系统权限。

注意:没有对应的REVOKE ANY PRIVILEGE。

SELECT ANY DICTIONARY:允许从sys用户所拥有的数据字典表中进行选择。

对象权限是指某种权限用户对其它用户的表或视图的存取权限,权限作用于用户下的表或视图。

对象权限有以下几种:

select:可以查询表数据。

update:可以更新表数据。

insert:可以插入表数据。

delete:可以删除表数据。

alter:可以修改表。

index:可以创建索引。

all:所有权限。

execute:可以执行存储过程。

权限传递是指被赋予权限的用户还可以赋予此权限给其他用户,增加WITH ADMIN OPTION选项即可。

6.4.2 赋予系统权限

6.4.2.1 Sql*Plus

在SQL下输入:grant 系统权限 to 用户名;

允许传递权限:在SQL下输入:grant 系统权限 to 用户名 with admin option;

注意:多个权限之间用,逗号隔开。

6.4.3 收回系统权限

如果使用WITH ADMIN OPTION为某个用户赋予可传递的系统权限,收回后将不能再使用权限传递,那么对于已经被这个用户赋予相同权限的所有用户来说,不会级联收回这些用户的相同权限。

系统权限无级联,即A授予B权限,B授予C权限,如果A收回B的权限,C的权限不受影响;系统权限可以跨用户回收,即A可以直接收回C用户的权限。

6.4.3.1 Sql*Plus

在SQL下输入:revoke 系统权限 from 用户名;

注意:多个权限之间用,逗号隔开。

6.4.4 查看系统权限

6.4.4.1 Sql*Plus

查看当前用户拥有哪些系统权限:

在SQL下输入:select * from session_privs;

查看全部用户拥有哪里权限:

SQL select * from dba_role_privs;

SQL select * from dba_sys_privs;

SQL select * from role_sys_privs;

6.4.5 赋予对象权限

6.4.5.1 Sql*Plus

在SQL下输入:grant 对象权限 on 表或视图名 to 用户名;

注意:多个权限之间用,逗号隔开。

6.4.6 收回对象权限

如果使用WITH ADMIN OPTION为某个用户赋予可传递的对象权限,收回后将不能再使用权限传递,那么对于已经被这个用户赋予相同权限的所有用户来说,同时还会级联收回这些用户的相同权限。

对象权限有级联,即A授予B权限,B授予C权限,如果A收回B的权限,C的权限也会被收回;对象权限可以跨用户回收,即A可以直接收回C用户的权限。

6.4.6.1 Sql*Plus

在SQL下输入:revoke 对象权限 on 表或视图名 to 用户名;

注意:多个权限之间用,逗号隔开。

6.4.7 查看对象权限

6.4.7.1 Sql*Plus

用户可以查询的表:

在SQL下输入:select owner, table_name from all_tables;

用户创建的表:

在SQL下输入:select table_name from user_tables;

获权可以存取的表(被赋予对象权限的):

在SQL下输入:select grantor, table_schema, table_name, privilege from all_tab_privs;

授出权限的表(赋予对象权限):

在SQL下输入:select grantee, owner, table_name, privilege from user_tab_privs;

6.5 锁定数据库用户

在SQL下输入:alter user 用户名 account lock;

注意:只能是具有DBA权限的用户才能执行此命令。

每一个数据库用户都可以被锁定,锁定后此用户就无法登陆了,解锁后又可以继续登陆了。锁定后,此用户会被提示ORA-28000错误。

如果所有的DBA权限用户都被锁定了,就用sqlplus登陆本机数据库后,执行解锁命令。

6.5.1 查看数据库用户锁定时间

在SQL下输入:select username,lock_date from dba_users where username='用户名大写';

注意:可以查看Oracle服务器的此时段的listener.log日志,就可以知道是什么原因导致的锁定。

6.6 解锁数据库用户

在SQL下输入:alter user 用户名 account unlock;

注意:只能是具有DBA权限的用户才能执行此命令。

6.7 用户配置文件

6.7.1 操作用户配置文件生效开关

查看:在SQL下输入:show parameter resource;

NAME列为resource_limit行的对应VALUE列的值,TRUE表示开启,FALSE表示关闭。

开启:在SQL下输入:alter system set resource_limit=true;

关闭:在SQL下输入:alter system set resource_limit=false;

注意:修改用户配置文件生效开关后,无需重启数据库,实时生效。

6.7.2 创建用户配置文件

在SQL下输入:create profile 用户配置文件名 limit;

6.7.3 查看数据库用户对应的用户配置文件名

在SQL下输入:select username,profile from dba_users where username= '用户名大写';

PROFILE列对应此用户的用户配置文件名。

查看所有用户对应的用户配置文件名:

在SQL下输入:select username,profile from dba_users;

6.7.4 修改数据库用户对应的用户配置文件名

在SQL下输入:alter user 用户名 profile 用户配置文件名;

6.7.5 查看用户配置文件各项资源

在SQL下输入:select * from dba_profiles where profile='用户配置文件名大写';

例如:select * from dba_profiles where profile='DEFAULT';表示查看DEFAULT用户配置文件。

配置文件里各项资源说明:

Oracle 11g数据库详解的更多相关文章

  1. Oracle 11g数据库详解(2)

    FAILED_LOGIN_ATTEMPTS 用于指定连续登陆失败的最大次数 达到最大次数后,用户会被锁定,登陆时提示ORA-28000 UNLIMITED为不限制 精确无误差 是 实时 PASSWOR ...

  2. Oracle 11g数据库详解(3)

    ORA-14025:不能为实体化视图或实体化视图日志指定PARTITION ORA-14026:PARTITION和CLUSTER子句互相排斥 ORA-14027:仅可以指定一个PARTITION子句 ...

  3. Java从入门到精通——数据库篇Oracle 11g服务详解

    装上Oracle之后大家都会感觉到我们的电脑慢了下来,如何提高计算机的速度呢?我们应该打开必要的服务,关闭没有用的服务.下面是Oracle服务的详解: Oracle ORCL VSS Writer S ...

  4. Oracle 11g服务详解

    装上Oracle之后大家都会感觉到我们的电脑慢了下来,如何提高计算机的速度呢?我们应该打开必要的服务,关闭没有用的服务.下面是Oracle服务的详解: Oracle ORCL VSS Writer S ...

  5. Oracle 11G 安装详解

    oracle官网下载地址:http://www.oracle.com/technetwork/database/enterprise-edition/downloads/index.html 官网下载 ...

  6. JAVA通过JDBC连接Oracle数据库详解【转载】

    JAVA通过JDBC连接Oracle数据库详解 (2011-03-15 00:10:03) 转载▼http://blog.sina.com.cn/s/blog_61da86dd0100q27w.htm ...

  7. Oracle执行计划详解

    Oracle执行计划详解 --- 作者:TTT BLOG 本文地址:http://blog.chinaunix.net/u3/107265/showart_2192657.html --- 简介:   ...

  8. oracle表分区详解

    原文来自:http://www.cnblogs.com/leiOOlei/archive/2012/06/08/2541306.html oracle表分区详解 从以下几个方面来整理关于分区表的概念及 ...

  9. Oracle权限管理详解

    Oracle权限管理详解 转载--CzmMiao的博客生活 Oracle 权限 权限允许用户访问属于其它用户的对象或执行程序,ORACLE系统提供三种权限:Object 对象级.System 系统级. ...

随机推荐

  1. struts-tiles学习笔记

    网上搜了一些,稀里糊涂的,要么是代码不全,要么是版本不对,还是去struts官网大概学习了一下 http://struts.apache.org/development/1.x/struts-tile ...

  2. JQuery EasyUI 请求/加载 两次

    解决方案如下: Html页面中的Table标签中包含class属性(class="easyui-datagrid"),删除即可.

  3. redis-cli 常用命令

    1.连接操作相关的命令 quit:关闭连接(connection) auth:简单密码认证 2.对value操作的命令 exists(key):确认一个key是否存在 del(key):删除一个key ...

  4. Mybatis热加载Mapper.xml

    开发的时候,写Mybatis Mapper.xml文件的时候,每次修改SQL都需要重启服务,感觉十分麻烦,于是尝试写了一个Mybatis的Mapper.xml热加载. 能在修改Mapper.xml之后 ...

  5. maven项目编译:程序包com.sun.image.codec.jpeg不存在 这个类文件的位置在jre/lib/rt.jar

    转载:http://superich2008.iteye.com/blog/2047830 失败提示信息为:程序包com.sun.image.codec.jpeg不存在 这个类文件的位置在jre/li ...

  6. 打开.py文件的方法

    用IDLE打开这个文件,然后按F5,系统就自动开始运行这个python程序,然后当前运行目录就跳转到这个目录了

  7. C++ 函数模板二(函数模板重载)

    //函数模板重载 #include<iostream> using namespace std; /* 函数模板会进行严格的类型匹配,模板类型不提供隐式类型转化 普通函数能够进行自动类型转 ...

  8. 第0步:OracleRAC软件准备

    表1   软件准备列表 安装包属性 文件信息 Oracle 11.2.0.4 p13390677_112040_Linux-x86-64_1of7.zip   p13390677_112040_Lin ...

  9. jQery使网页在显示器上居中显示适用于任何分辨率

    这篇文章主要介绍了jQery使网页在任何分辨率的显示器上居中显示的方法,需要的朋友可以参考下 检测屏幕宽度,并设置为id为frame的div宽度, 根据自己网页的最大宽度来调节,小demo最大宽度为1 ...

  10. bunoj 13124(数位dp)

    数位dp每次都给我一种繁琐的感觉.. A - Palindromic Numbers Time Limit:2000MS     Memory Limit:32768KB     64bit IO F ...