到兰州也已经3天了,作为一名草根工程师加实习生的身份,现在的日子是梦想和艰辛并存。我立志要天天写点技术东西,和大家一同成长。(如果是网络原因的除外)
接触oracle,我非常困惑的就是数据库,和数据库实例,数据库进程之间的关系。sys,system等DBA用户真是把我搞得头晕眼花。网上搜资料,一屏一屏的出来,看着总是觉着雾里看花,还是一点一点来,从oracle中寻找答案。
oracle中SGA区域里对数据字典的定义非常好,用户有关的数据字典均以试图形式存在。他们分别是 user_users, all_users, dba_users, user_ts_quotas, dba_ts_quotas.
对于oracle而言,像linux一样,也有一个万能天神用户,他就是sys用户以sysdba登录。说道sysdba用户,要谈到oracle的启动过程。oracle要先启动oracle服务,再启动oracle数据库,oracle服务的启动过程是 创建实例->启动实例->创建数据库(这时候可以创建数据库)。oracle数据库的启动过程是 启动实例->装载数据库->打开数据库。那么sysdba是来管理实例的,在数据库装载或创建前就已经启动了。dba仅仅是某个数据库的管理员。理解到这里相信大家都明白了为什么在安装oracle一开始就让你填密码,原来是这样。这时也就理解了为什么sys用户的密码是change_on_install 的道理。
我以sys用户登录数据库。登录之后查看user_user视图
这里我们知道,user_users视图展示了当前登录用户的信息。包括username(用户名),user_id(用户编号), account_status(账户状态),lock_date (锁定日期) expiry_data(满期日期) default_tablespace(默认表空间) temporary_tablespace(临时表空间)。再来看一下all_users视图。
可见由sys用户通过all_users 视图找到oracle中所有的可用用户。同理查看dba_users, user_ts_quotas,dba_ts_quotas,结果显示如下:
由以上的对比可知,all_users 和 dba_users均对DBA用户,DBA_USERS视图记录的信息更加丰富。user_ts_quotas和dba_ts_quotas均是针对用户使用表空间进行限制的定义。
当切换到scott用户。scott用户需要先解锁 alter user scott account unlock; 才可以使用
SQL> show user
User is "scott"SQL>
SQL> select * from user_users;USERNAME USER_ID ACCOUNT_STATUS LOCK_DATE EXPIRY_DATE DEFAULT_TABLESPACE TEMPORARY_TABLESPACE CREATED INITIAL_RSRC_CONSUMER_GROUP EXTERNAL_NAME
------------------------------ ---------- -------------------------------- ----------- ----------- ------------------------------ ------------------------------ ----------- ------------------------------ -------------------------------------------------------------------------------- SCOTT 54 OPEN USERS TEMP 2005-8-30 1 DEFAULT_CONSUMER_GROUPSQL> select * from dba_users;
select * from dba_users
ORA-00942: 表或视图不存在
SQL> select * from all_users;
USERNAME USER_ID CREATED
------------------------------ ---------- ----------- SCOTT 54 2005-8-30 1 MGMT_VIEW 53 2005-8-30 1 MDDATA 50 2005-8-30 1 SYSMAN 51 2005-8-30 1 MDSYS 46 2005-8-30 1 SI_INFORMTN_SCHEMA 45 2005-8-30 1 ORDPLUGINS 44 2005-8-30 1 ORDSYS 43 2005-8-30 1 OLAPSYS 47 2005-8-30 1 ANONYMOUS 39 2005-8-30 1 XDB 38 2005-8-30 1 CTXSYS 36 2005-8-30 1 EXFSYS 34 2005-8-30 1 WMSYS 25 2005-8-30 1 DBSNMP 24 2005-8-30 1 TSMSYS 21 2005-8-30 1 DMSYS 35 2005-8-30 1 DIP 19 2005-8-30 1 OUTLN 11 2005-8-30 1 SYSTEM 5 2005-8-30 1USERNAME USER_ID CREATED
------------------------------ ---------- ----------- SYS 0 2005-8-30 121 rows selected
SQL> select * from user_ts_quotas;
TABLESPACE_NAME BYTES MAX_BYTES BLOCKS MAX_BLOCKS DROPPED
------------------------------ ---------- ---------- ---------- ---------- ------- USERS 393216 0 48 0 NOSQL>
SQL> select * from dba_ts_quotas;select * from dba_ts_quotas
ORA-00942: 表或视图不存在
SQL>
这里我们清楚了,对于scott用户,能查找到的表空间是有限制的。随着慢慢学习的深入,一定能更加透彻的理解oracle的精髓。大家一起加油。