数据库的创建是比较简单的,不需要多少操作,真正困难的,需要我们考虑的是数据库如何结构化。
所以在创建数据库之前,我们需要理解几个概念:实例,数据库和数据字典。
Oracle服务器由实例和数据库构成,二者相互区别又相互联系。
实例是RAM(Random Access Memory,随机访问内存)和CPU中的内存结构和进程,其存在是暂时的,用户可以启动和停止实例。
数据库是磁盘上的文件,一旦创建,将永久存在,直至删除为止。
创建实例只不过是构建内存结构并启动进程。
创建数据库的任务由实例一次性完成,此后,实例可多次打开和关闭数据库。
没有实例,数据库无法访问。
数据字典是Oracle存放有关数据库信息的地方,其用途是描述整个数据库的逻辑与物理存储结构。比如一个表的创建者信息,创建时间信息,所属表空间信息,用户访问权限信息等。数据库数据字典是一组表和视图结构,他们存放在system表空间中,当用户在对数据库中的数据进行操作时遇到困难就可以用sql语句访问数据字典来查阅详细信息。
数据字典内容包括: 1.数据库中所有模式对象的信息,如:表,视图,簇,索引等。
2.分配多少空间,当前使用了多少空间等。
3.列的缺省值。
4.约束信息的完整性。
5.Oracle用户的名字。
6.用户及角色被授予的权限。
7.用户访问或使用的审计信息。
8.其他产生的数据库信息。
Oracle中的数据字典有静态和动态之分。
一.静态数据字典:主要是在用户访问数据字典时不会发生改变的,例如某用户创建的表
静态数据字典:这类数据字典主要是由表和视图组成
数据字典中的表是不能直接被访问的,但是可以访问数据字典中的视图。
静态数据字典中的视图分为三类,它们分别由三个前缀够成:user_*、 all_*、 dba_*。
1.user_*
该视图存储了关于当前用户所拥有的对象的信息。(即所有在该用户模式下的对象)
2.all_*
该试图存储了当前用户能够访问的对象的信息。(与user_*相比,all_* 并不需要拥有该对象,只需要具有访问该对象的权限即可)
3.dba_*
该视图存储了数据库中所有对象的信息。(前提是当前用户具有访问这些数据库的权限,一般来说必须具有管理员权限)
————————————————————————————————————-
查询该用户拥有哪些表
select table_name from user_tables;
查询该用户拥有哪些索引
select index_name from user_indexes;
查询该用户拥有哪些数据库对象,对象包括表、视图、存储过程、触发器、包、索引、序列、JAVA文件等。
select object_name from user_objects;
主要描述当前用户的信息,主要包括当前用户名、帐户id、帐户状态、表空间名、创建时间等。
select * from user_users;
———————————————————————————————————–
user_/all_区别:
all_列出来的信息是当前用户可以访问的对象而不是当前用户拥有的对象。
对于dba_开头的需要管理员权限
查询表空间的信息(当前用户必须拥有DBA角色)。
select * from dba_data_files
———————————————————————————————————–
二.动态数据字典:是依赖数据库运行的性能的,反映数据库运行的一些内在信息,所以在访问这类数据字典时往往不是一成不变的。
Oracle包含了一些潜在的由系统管理员如SYS维护的表和视图,由于当数据库运行的时候它们会不断进行更新,所以称它们为动态数据字典(或者是动态性能视图)。这些视图提供了关于内存和磁盘的运行情况,所以我们只能对其进行只读访问而不能修改它们。
Oracle中这些动态性能视图都是以v$开头的视图.
例如:v$access,该视图显示数据库中锁定的数据库对象以及访问这些对象的会话对象(session对象)。
v$session,该视图列出当前会话的详细信息。
v$datafile,该视图列出数据文件的信息。
select name from v$datafile;
数据库创建实际上是创建一个最小的物理存储结构,用于存放数据字典。
数据库的启动步骤
数据库启动步骤
命令
命令
命令解读
可进行操作
sqlplus /nolog
进入sqlplus环境,但不登陆到数据库服务器
conn /as sysdba
连接一个空闲的实例
startup
(三步可合为一步)
startup nomount
nomount状态,打开参数文件和警告日志文件
创建数据库
创建控制文件
修改数据库参数
alter database mount
Mount状态,
打开控制文件(.ctl)
数据文件重命名
执行数据库恢复操作
日志/数据文件的脱机/联机
修改归档模式
alter database open
开启数据库,
打开数据文件(.dbf)
和日志文件(.log)
数据维护
数据文件维护
等等
shutdown immediate
关闭数据库
nomount状态表示:实例已经存在以内存中,但是没有连接到磁盘中的数据库。
实例参数文件中的db_name参数标示要连接的数据库名。control_files定义的控制文件定义实例与数据库的连接。
当实例读取控制文件时如果数据库名不匹配,数据库不会被mount。
在mount模式下实例成功的连接到了控制文件。不过控制文件不存在或者损坏了数据库不可能mount。
当数据库mount以后,实例可以通过读取控制文件信息定位和打开其他文件来open数据库。
在一个open的数据库实例打开了所有可用的在线重做日志文件,数据文件。
控制文件中存在数据文件与表空间的映射关系。使数据库可以标识system表空间的数据文件,从而找到数据字典。