首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 数据库 > 其他数据库 >

Oracle中的用户、角色、权限(1)

2012-08-01 
Oracle中的用户、角色、权限(一)一、用户的创建?在oracle中,用户与schema是一一对应的关系,在创建一个用户的

Oracle中的用户、角色、权限(一)

一、用户的创建

?

在oracle中,用户与schema是一一对应的关系,在创建一个用户的同时也就创建了一个相应的schema。所谓的schema就是指该用户下所有对象的集合。在创建一个用户的时候,若不显示指定表空间跟临时表空间,则会使用系统的默认表空间跟临时表空间。一般在创建用户的时候都会指定一个表空间,否则有可能使用系统的默认表空间(system表空间)。


通过database_properties数据字典可以查询数据库的默认表空间、临时表空间及其他信息:

?

SQL> desc database_properties; Name                                      Null?    Type ----------------------------------------- -------- ---------------------------- PROPERTY_NAME                             NOT NULL VARCHAR2(30) PROPERTY_VALUE                                     VARCHAR2(4000) DESCRIPTION                                        VARCHAR2(4000)SQL> select property_name,property_value from database_properties;PROPERTY_NAME                  PROPERTY_VALUE------------------------------ ------------------------------DICT.BASE                      2DEFAULT_TEMP_TABLESPACE        TEMPTSDEFAULT_PERMANENT_TABLESPACE   TBS_1DBTIMEZONE                     +08:00DEFAULT_TBS_TYPE               SMALLFILENLS_LANGUAGE                   AMERICANNLS_TERRITORY                  AMERICANLS_CURRENCY                   $NLS_ISO_CURRENCY               AMERICANLS_NUMERIC_CHARACTERS         .,NLS_CHARACTERSET               ZHS16GBKNLS_CALENDAR                   GREGORIANNLS_DATE_FORMAT                DD-MON-RRNLS_DATE_LANGUAGE              AMERICANNLS_SORT                       BINARYNLS_TIME_FORMAT                HH.MI.SSXFF AMNLS_TIMESTAMP_FORMAT           DD-MON-RR HH.MI.SSXFF AMNLS_TIME_TZ_FORMAT             HH.MI.SSXFF AM TZRNLS_TIMESTAMP_TZ_FORMAT        DD-MON-RR HH.MI.SSXFF AM TZRNLS_DUAL_CURRENCY              $NLS_COMP                       BINARYNLS_LENGTH_SEMANTICS           BYTENLS_NCHAR_CONV_EXCP            FALSENLS_NCHAR_CHARACTERSET         AL16UTF16NLS_RDBMS_VERSION              10.2.0.1.0GLOBAL_DB_NAME                 ORCLEXPORT_VIEWS_VERSION           827 rows selected.

?

?

通过dba_tablespaces数据字典可以查询到数据库中已创建的表空间的相关信息:

?

SQL> desc dba_tablespaces; Name                                      Null?    Type ----------------------------------------- -------- ---------------------------- TABLESPACE_NAME                           NOT NULL VARCHAR2(30) BLOCK_SIZE                                NOT NULL NUMBER INITIAL_EXTENT                                     NUMBER NEXT_EXTENT                                        NUMBER MIN_EXTENTS                               NOT NULL NUMBER MAX_EXTENTS                                        NUMBER PCT_INCREASE                                       NUMBER MIN_EXTLEN                                         NUMBER STATUS                                             VARCHAR2(9) CONTENTS                                           VARCHAR2(9) LOGGING                                            VARCHAR2(9) FORCE_LOGGING                                      VARCHAR2(3) EXTENT_MANAGEMENT                                  VARCHAR2(10) ALLOCATION_TYPE                                    VARCHAR2(9) PLUGGED_IN                                         VARCHAR2(3) SEGMENT_SPACE_MANAGEMENT                           VARCHAR2(6) DEF_TAB_COMPRESSION                                VARCHAR2(8) RETENTION                                          VARCHAR2(11) BIGFILE                                            VARCHAR2(3)SQL> select tablespace_name,contents from dba_tablespaces;TABLESPACE_NAME                CONTENTS------------------------------ ---------SYSTEM                         PERMANENTUNDOTBS                        UNDOSYSAUX                         PERMANENTTBS_1                          PERMANENTMYTBS                          PERMANENTTEMPTS                         TEMPORARY6 rows selected.

?

?

通过以下语句可以创建一个用户:

?

SQL> create user mytbs identified by mytbs default tablespace mytbs;User created.

?

?

此时可以通过查询dba_users数据字典来查询数据库中已建立的用户的相关信息:

?

SQL> desc dba_users Name                                      Null?    Type ----------------------------------------- -------- ---------------------------- USERNAME                                  NOT NULL VARCHAR2(30) USER_ID                                   NOT NULL NUMBER PASSWORD                                           VARCHAR2(30) ACCOUNT_STATUS                            NOT NULL VARCHAR2(32) LOCK_DATE                                          DATE EXPIRY_DATE                                        DATE DEFAULT_TABLESPACE                        NOT NULL VARCHAR2(30) TEMPORARY_TABLESPACE                      NOT NULL VARCHAR2(30) CREATED                                   NOT NULL DATE PROFILE                                   NOT NULL VARCHAR2(30) INITIAL_RSRC_CONSUMER_GROUP                        VARCHAR2(30) EXTERNAL_NAME                                      VARCHAR2(4000)SQL> select username,password from dba_users;USERNAME                       PASSWORD------------------------------ ------------------------------DBSNMP                         E066D214D5421CCCDIP                            CE4A36B8E06CA59CTSMSYS                         3DF26A8B17D0F29FSYSTEM                         D4DF7931AB130E37SYS                            4DE42795E66117AEMYTBS                          C7618B865F241C60OUTLN                          4A3BA55E08595C817 rows selected.
?

在oracle中也支持操作系统认证的用户,具体创建方法如下:

?

--显示oracle中的默认操作系统认证用户的用户名前缀--即os_authent_prefix参数SQL> show parameter os NAME                                 TYPE        VALUE------------------------------------ ----------- ------------------------------optimizer_index_cost_adj             integer     100os_authent_prefix                    string      ops$os_roles                             boolean     FALSEremote_os_authent                    boolean     FALSEremote_os_roles                      boolean     FALSEtimed_os_statistics                  integer     0SQL> create user ops$test identified externally default tablespace test;User created.

?

同时在linux下建立test用户,并设置相应的环境变量(ORACLE_SID、ORACLE_HOME、PATH等):

?

[root@localhost etc]# useradd test -g dba -G dba[root@localhost etc]# id testuid=501(test) gid=500(dba) groups=500(dba)[root@localhost etc]# passwd testChanging password for user test.New UNIX password: BAD PASSWORD: it is too shortRetype new UNIX password: passwd: all authentication tokens updated successfully.[root@localhost test]# cp /home/oracle/.bash_profile /home/test/cp:是否覆盖‘/home/test/.bash_profile’? yes[root@localhost test]# su - test[test@localhost ~]$ iduid=501(test) gid=500(dba) groups=500(dba) [test@localhost ~]$ echo $ORACLE_SIDorcl[test@localhost ~]$ sqlplus /SQL*Plus: Release 10.2.0.1.0 - Production on Tue Feb 22 14:49:43 2011Copyright (c) 1982, 2005, Oracle.  All rights reserved.ERROR:ORA-01045: user OPS$TEST lacks CREATE SESSION privilege; logon denied--以上错误主要是因为我们没有赋给该用户相应的权限,在下文中将介绍权限
?

?

以上主要介绍了用户的创建,在创建用户的时候可以给该用户指定更多的参数,具体可以到oracle官方联机文档(Oracle?SQL Reference)里查。当然,此时建立的用户并不能登录oracle,因为还没有相应的权限,在下一篇文章中将介绍这部分内容。

?

热点排行