启动数据库时
先要找到初始化文件(spfile或pfile),此时数据库处在nomount状态(初始阶段);
其次根据初始文件找到控制文件(Control File),此时数据库处在mount状态;
然后根据控制文件找到数据库文件(Data File)、重做日志文件(Redo File);
此时数据库处在open状态,可以让用户访问数据库了。
一、关闭数据库的四个不同命令
1、用SQLplus登录到数据库
sys/123456 as sysdba
查看当前数据库的状态:
select instance_name,status from v$instance;
可以查看到实例名和当前状态:
2、关闭数据库
shutdown immediate
其实是关闭了实例(Instance),实例已经不在内存中,则显示Oracle数据库处在不能用的状态。
关闭数据库的4个命令如下:
shutdown immediate :不允许新的连接、不等待会话结束、不等待事务结束、做一个检查点并关闭数据文件。没有结束的事物自动rollback。启动时不需要对数据库进行实例恢复,最常用的命令,即使还有事务在运行,还有用户停留在数据库上,都可以关闭数据库。
shutdown abort:不允许新的连接、不等待会话结束、不等待事务结束、不做检查点且没有关闭数据文件。启动时数据库将自动进行实例恢复。很少用,一般数据库在运行复杂业务时,shutdown immediate 命令不能关闭数据库,并且需要快速关闭数据库是使用。
shurdown transactional:不允许新的连接、不等待会话结束、不等待事务结束、做一个检查点并关闭数据文件。启动时数据库不需要实例恢复,这个命令也很少使用,在数据库的业务很重要时,需要等到事务处理完成以后才能关闭。
shutdown normal(等于shutdown):不允许新的连接、等待会话结束、等待事务结束、做一个检查点并关闭数据文件。启动时数据库不需要实例恢复。这个命令很少使用,只有还有用户停留在数据库上,都不能正常关闭时使用。
二、启动数据库到nomonunt状态
startup nomount
nomount状态是数据库进程刚运行到初始化文件(spfile或pfile文件)
pfile文件是文本文件,可以手工编辑
spfile是二进制文件,不能手工修改里面的参数,只能用数据库命令进行修改,还能在数据库运行是修改spfile里面的参数,提高了该文件的安全性。数据库默认使用spfile启动数据库。
nomount状态一般是在维护数据库是需要用到,如修改数据库重要参数,恢复数据库的控制文件以及数据时都需要用到该状态。
查看spfile文件的操作:
SQL>show parameter spfile
F:\APP11G\ADMINISTRATOR\PRODUCT\11.2.0\DBHOME_1\DATABASE\SPFILEORCL11G.ORA
根据spfile文件创建pfile文件
SQL>create pfile=‘D:\app\pfile.ora‘ from spfile;
打开pfile文件即可查看到数据库的重要参数
orcl11g.__db_cache_size=1509949440
orcl11g.__java_pool_size=16777216
orcl11g.__large_pool_size=16777216
orcl11g.__oracle_base=‘F:\app11G\Administrator‘#ORACLE_BASE set from environment
orcl11g.__pga_aggregate_target=1358954496
orcl11g.__sga_target=2030043136
orcl11g.__shared_io_pool_size=0
orcl11g.__shared_pool_size=452984832
orcl11g.__streams_pool_size=0
*.audit_file_dest=‘F:\app11G\Administrator\admin\orcl11G\adump‘
*.audit_trail=‘db‘
*.compatible=‘11.2.0.0.0‘
*.control_files=‘F:\app11G\Administrator\oradata\orcl11G\control01.ctl‘,‘F:\app11G\Administrator\flash_recovery_area\orcl11G\control02.ctl‘
*.db_block_size=8192
*.db_domain=‘‘
*.db_name=‘orcl11G‘
*.db_recovery_file_dest=‘F:\app11G\Administrator\flash_recovery_area‘
*.db_recovery_file_dest_size=4102029312
*.diagnostic_dest=‘F:\app11G\Administrator‘
*.dispatchers=‘(PROTOCOL=TCP) (SERVICE=orcl11GXDB)‘
*.memory_target=3382706176
*.open_cursors=300
*.processes=150
*.remote_login_passwordfile=‘EXCLUSIVE‘
*.undo_tablespace=‘UNDOTBS1‘
shutdown immediate 以后重新使用pfile 文件启动数据库到nomount状态
startup nomount pflie=‘D:\app\pfile.ora‘;
启动到nomount状态以后,输入查询语句
select name from v$controlfile;
报错,说明数据库在nomount 状态下不能查看控制文件的路径。
Oracle数据库启动时,进程先读取到初始化spfile文件,可见该文件是数据库重要文件之一。
三、数据库的mount状态
数据库的mount状态中,Oracle进程会读取到控制文件中的参数;该状态在数据库恢复时需用到,儿数据库在配置数据库的备库(Dataguard)时,数据库的备库是处于mount的状态。
alter database mount;
select instance_name,status from v$instance;
数据库显示处于mounted状态,表示Oracle已处于mount状态
查看控制文件的具体位置:
select name from v$controlfile;
打开控制文件是二进制文件,不能用记事本查看其内容。
可以使用oracle的命令,把控制文件的内容显示在trace(追踪)中:
alter database backup controlfile to trace as ‘D:\app\ct1.trc‘;
即可用记事本打开ct1.trc文件,查看到里面的控制文件内容;其中‘--’为注释,其他内容则是控制文件的内容,可以根据控制文件来重建数据库的控制文件;该文件显示重做日志(Redo Logfile)组位置及其大小、数据文件(Data file)位置、字符集等。
将数据库启动到mount状态操作:
先关闭数据库:shutdown immediate;
启动到mount状态:startup mount;
四、数据库的open状态
数据库open状态表示数据库已经正常运行,且允许数据库用户访问,可以对数据库的数据进行增删改查操作,数据库可以正常工作了。
将数据库改为open状态:
alter database open;
查看数据库的数据文件位置:
select name from v$datafile;
查看数据库的重做日志位置:
select member from v$logfile;
五、数据库的密码文件
Windows系统中oracle数据库中,密码文件位置:
F:\app11G\Administrator\product\11.2.0\dbhome_1\database
\PWDorcl11G.ora(orcl11G位数据库名)
Linux和Unix系统中名字叫orapworcl(orcl为数据库名)
改密码文件的作用是允许数据库的sysdba、sysoper用户通过口令远程登录,比如sys为数据库的sysdba的用户。
查看数据库中的“是否允许远程登录”的参数:
show parameter remote_login_passwordfile;
remote_login_passwordfile 为none则表示不能远程;为exclusive则表示可以远程
alter system set remote_login_passwordfile=none scope=spfile;
重启数据库才能生效,输入强制数据库重启SQL命令
startup force;
六、查询及说明表空间
用sys账号登录查询:
select
tablespace_name as "表空间名称",
block_size/1024 as "数据块存储大小单元KB",
status as "表空间的状态",
contents as "表空间的类型",
logging as "是否有日志记录"
from dba_tablespaces;
tablespace_name as "表空间名称",
block_size/1024 as "数据块存储大小单元KB",--一般默认是8KB,如果需要存储大对象可设为18K
status as "表空间的状态",--online表空间处于联机状态,offline为脱机
contents as "表空间的类型",--permanent永久保存,undo还原表空间的数据,相当于回收站,只能保存最近更改的数据;temporary一般为临时表空间数据,不会永久存储在系统数据文件中,只在查询或者排序是,内存不够时借用改空间临时存放数据
logging as "是否有日志记录"--重要需保存数据的表空间,一般都为logging状态,需要记录相关日志,像临时表空间或者不重要的表空间则不需要记录。
七、查询及说明数据文件
查看数据文件的表空间、大小、是否扩展以及最大值
select
tablespace_name as "表空间名称",
file_name as "数据文件路径",
bytes/1024/1024 as "数据文件大小MB",
autoextensible as "数据文件是否自动扩展",
maxbytes/1024/1024 as "数据文件最大MB"
from dba_data_files;
表空间和数据文件是一对多的关系。
数据文件路径:是oracle数据库的数据文件再系统所在的磁盘位置;
数据文件大小:可以看到每个数据文件现在使用了多大空间;
是否自动扩展:一般为了节省磁盘空间,刚开始的数据文件都设置得比较小,当数据不断增多是,文件是否自动扩展,直至到达设定的最大值;
数据文件最大值:及该数据文件最大容量。可以根据具体的需要来进行设置,若是默认,则根据所在的系统允许单个文件的最大值。
八、查询及说明重做日志
查看重做日志得位置、状态、大小和类型:
select * from v$logfile;
group#(组):可以看到数据库中共有3组重做日志,图中每组只有一个文件
status(状态):stale为已经把数据提交到数据库中,空白状态为正在使用该文件
member(成员):为每组的成员(这里每组只有一个成员),并 列出路径和名称。