在手工建库完成之后,即通过create database建立了数据库启动到open状态,数据库是不存在数据字典的,需要创建数据库的数据字典。这个时候就要通过数据库脚本来创建数据字典表。

 

数据字典表都是一些只读的表,可以通过数据字典表去查询创建相关对象的信息,比如创建一张表,这张表里面有什么字段,表叫什么名字,这些等信息要通过数据字典表来查询到。

 

数据字典表对于用户来说是只读的,是由oracle来自动维护的,对于DDL操作数据库会自动完成数据字典表的维护。

 

 

创建数据字典表主要是跑三个脚本,前面两个脚本是用sys用户来跑的,最后一个脚本是system用户来跑。

@是代表运行脚本,?代表是oracle_home($ORACLE_HOME)

[oracle@Database2 db_1]$ find /u01 -name catalog.sql

/u01/app/oracle/product/11.2.0/db_1/rdbms/admin/catalog.sql

@?/rdbms/admin/catalog.sql

@?/rdbms/admin/catproc.sql

@?/sqlplus/admin/pupbld.sql (SYSTEM用户执行)

 

 

 

上面这些脚本跑完了,默认是没有Scott这个用户的,还需要跑@?/rdbms/admin/utlsampl

 

SQL> @?/rdbms/admin/utlsampl

Disconnected from Oracle Database 11g Enterprise Edition Release 11.2.0.4.0 - 64bit Production

With the Partitioning, OLAP, Data Mining and Real Application Testing options

[oracle@Database2 ~]$ sqlplus scott/tiger

SQL> desc user_tables;  --这个数据字典是当前用户拥有的对象的信息

 Name    Null?    Type

 ----------------------------------------- -------- ----------------------------

 TABLE_NAME    NOT NULL VARCHAR2(30)

 TABLESPACE_NAME     VARCHAR2(30)

 CLUSTER_NAME     VARCHAR2(30)

 IOT_NAME     VARCHAR2(30)

 STATUS     VARCHAR2(8)

 

SQL> select TABLE_NAME,TABLESPACE_NAME from user_tables;

 

TABLE_NAME        TABLESPACE_NAME

------------------------------ ------------------------------

DEPT        SYSTEM

EMP        SYSTEM

BONUS        SYSTEM

SALGRADE        SYSTEM

 

 

 

SQL> select owner,table_name,tablespace_name from dba_tables where owner='SCOTT';

select owner,table_name,tablespace_name from dba_tables where owner='SCOTT'

                                             *

ERROR at line 1:

ORA-00942: table or view does not exist

可以看到出现错误了,dba_tables是只能sys用户访问,Scott用户是访问不了这个数据字典表的。(普通用户是不可以访问dba打头的数据字典表)

SQL> conn / as sysdba  

Connected.

SQL> set linesize 1200;

SQL> select owner,table_name,tablespace_name from dba_tables where owner='SCOTT';

 

OWNER        TABLE_NAME       TABLESPACE_NAME

------------------------------ ------------------------------ ------------------------------

SCOTT        DEPT       SYSTEM

SCOTT        EMP       SYSTEM

SCOTT        BONUS       SYSTEM

SCOTT        SALGRADE       SYSTEM

 

三种数据字典,按照查询信息的范围可以分为下面三种   USER <ALL <DBA

也就是说以user开头的是查看当前用户拥有的对象信息,all开头的就是这个用户有权限访问的对象信息,包括自己可以访问还有别人授权访问的,dba就是整个数据字典表所有的对象的信息。

 

整个建库过程参考前面两篇文章:​​Oracle 手工建库第一步 创建instance​​​ -->​​Oracle 手工建库第二步 创建databse​