数据库启动的不同状态
数据库启动过程:
数据库启动时,先找到初始化文件(spfile 或 pfile), 这时数据库处在nomount状态
其次根据初始化文件找到控制文件(control file ) ,这时数据库处在mount状态
然后根据控制文件找到数据文件(Data File),重做日志文件(Redo file)这时数据库处在了Open状态了
查看数据库当前状态:select instant_name , status from v$instance;
实例(Instance):数据库内存结构和一组后台进程
一个实例可以是一个数据库,多个实例也可以是一个数据库的。
但一个实例只能属于一个数据库的
所谓的数据库集群,就是一个数据库,由多个实例构成
关闭数据库的4个命令
shutdown immediate: 不允许新的连接,不等待会话结束,不等待事务结束,做检查点并关闭数据文件,
没有结束的事务是自动rollback的。启动时不需要对数据库进行实例恢复。
shutdown abort : 不允许新的连接,不等待会话结束,不等待事务结束,不做检查点且没有关闭数据文件
启动时数据库将自动进行实例恢复。
shutdown transactional:不允许新的连接,不等待会话结束,等待事务结束,做检查点并关闭数据文件。
启动时数据库不需要实例恢复。
shutdown normal: 不允许新的连接,等待会话结束,等待事务结束,做检查点并关闭数据文件,
启动时数据库不需要实例恢复。
nomount状态是数据库进程刚运行到初始化文件(pfile 或 spfile);
初始化文件pfile 和spfile文件中的内容是一致的,pfile文件是文本文件,可以手工编辑该文件;
spfile是二进制文件,不能手工修改里面的参数,只能使用数据库命令进行修改
数据库默认使用spfile启动数据库。
如何查找数据库初始化文件的位置:show parameter spfile
可以根据spfile文件生成pfile文件。
根据spfile文件创建pfile文件
create pfile='绝对路径\pfile.ora' from spfile;
初始化文件pfile中包括数据库名(db_name),各内存分配大小,连接进程数,审计日志目录,后台进程日志目录,控制文件位置
如何使用初始化文件pfile来启动数据库
startup nomount pfile='绝对路径\pfile.ora'
更改数据库状态
alter database mount/unmount/open;
在Oracle 10g中,默认有3各控制文件,大概有6MB,而这三个控制文件的内容是一模一样的,分别放在不同的磁盘中
控制文件是二进制的文件,如果在Linux中,可以用strings命令查看二进制的内容。
在Windows中如何查看控制文件的内容吗?
可以使用Oracle的命令把控制文件的内容显示在Trace(踪迹)中,在Oracle数据库的命令窗口输入:
alter database backup controlfile to trace
as '绝对路径\ctl.trc';
该文件显示重做日志(Redo Logfile)组位置及其大小,数据文件(Data file)位置,字符集等;
如何查看数据库的数据文件位置
select name from v$datafile;
如何查看数据库的重做日志位置
select member from v$logfile;
数据库的密码文件
要知道该文件的路径,作用;
作用:允许数据库的sysdba,sysoper用户通过口令来远程登录,比如sys为数据库的sysdba的用户
查询数据库中是否允许远程登录的参数“remote_login_passwordfile”
show parameter remote_login_passwordfile
如果remote_login_passwordfile为exclusive,则表示可以允许远程登录
如果remote_login_passwordfile为none,则表示不允许远程登录
如何设置禁止数据库用户远程登录数据库呢?
alter system set remote_login_passwordfile=none scope=spfile;
需数据库重启才能生效 : startup force
查询及说明表空间
如何查看数据库表空间名,存储单位,状态,类型,是否记录日志
超级用户SYSDBA:
select tablespace_name as "表空间名称",
block_size / 1024 as "数据库存储大小单位(kb)",
status as "表空间状态",
contents as "表空间类型",
logging as "是否有日志记录"
from dba_tablespaces;
查询及说明数据文件
如何查看数据文件的表空间,大小,是否扩展,最大值
select t.tablespace_name as "表空间名称",
t.file_name as "数据文件路径",
t.bytes / 1024 /1024 as "数据文件大小(MB)",
t.autoextensible as "数据文件是否自动扩展",
t.maxbytes / 1024 /1024 as "数据文件最大(MB)"
from dba_data_files t;
查询及说明重做日志
select * from v$logfiles;