oracle 数据库四种状态,oracle 数据库的四种状态

关闭有四种:

shutdown normal :

shutdown transiction: 等待事务提交后,再等所有用户关闭连接

shutdown immediate:未提交的事务将回滚,如插入3,后commit再插入4 再 shutdown immediate 这是数据库只有3,没有4

shutdown abort:强行关闭。。。。

前三种方式:关闭数据库----》卸载数据库----》关闭实例

最后一种:直接关闭实例(前两部其实已经强行关闭)

启动顺序解释:

1.启动例程(进程和内存)将dba比作一个仓库,那么实例相当于管理员,负责操作一个具体的数据库

2,装载数据库:好比向仓库里放入货物(数据库文件)

3.打开数据库: 将仓库的门打开,让用户可以连接

首先,oracle具有四种状态:shutdown(完全关闭),nomount(未加载),mount(已加载),open(完全打开),这四种状态加载方式通过命令行来操作比较好。以下是详细介绍:

shutdown :完全关闭状态 关闭命令是shutdown immediate(立即关闭)

5e893df825757b8ae18ab399c7a0a497.png

注意:数据库的关闭顺序与数据库的加载顺序相反。

nomount:在这个状态下,oracle会打开参数文件,分配SGA并打开后台进程。

c32a20d3d26b2b73d10601c7e5849ba8.png

在这种状态下,可以查询后台进程和实例信息。如:

select * from v$bgporcess;

select * from v$instance;

v$parameter、v$sga、v$process、v$session、v$instance等等

mount:在mount状态下,oralce会在nomount的基础上,根据control_files的设置来打开控制文件。在nomount的基础上,进入此状态的命令是:alter database mount

1785512af2d3e65f2c59c51a963bf32a.png

在此状态下:可以执行的命令有:

select * from v$tablespace;命名空间

select * from v$datafile;数据文件

select * from v$database;数据库信息

v$controlfile、v$database、v$datafile、v$logfile

open: 这个状态表示数据库完全打开,在mount的基础上,使用命令alter database open,在mount的基础上根据控制文件的记录打开所有的数据文件和重做日志。

5246c9d8c71b010eb225191ed8ba26d2.png

此状态下,就是完全打开的状态,可以进行权限范围内的所有操作。

注意:

1,在shutdown 状态,可以通过使用startup nomount |mount|open|force |restrict 直接跳到某个状态。force是强制进入open状态(无论当前什么状态),restrict是指进入open状态但只有具备了restricted session 权限的用户才可以登录。如果使用startup不加参数,那么直接就是进入open状态。

2,如果使用alter database ****才启动oracle ,必须按照顺序启动,即:nomount-->mount-->open。不能越级,不能反方向

查询数据库状态信息: ------------------------------Data file size---------------------------- if exists (select * from tempdb.sys.all_objects where name like '%#dbsize%') drop table #dbsize create table #dbsize (Dbname varchar(30),dbstatus varchar(20),Recovery_Model varchar(10) default ('NA'), file_Size_MB decimal(20,2)default (0),Space_Used_MB decimal(20,2)default (0),Free_Space_MB decimal(20,2) default (0)) go insert into #dbsize(Dbname,dbstatus,Recovery_Model,file_Size_MB,Space_Used_MB,Free_Space_MB) exec sp_msforeachdb 'use [?]; select DB_NAME() AS DbName, CONVERT(varchar(20),DatabasePropertyEx(''?'',''Status'')) , CONVERT(varchar(20),DatabasePropertyEx(''?'',''Recovery'')), sum(size)/128.0 AS File_Size_MB, sum(CAST(FILEPROPERTY(name, ''SpaceUsed'') AS INT))/128.0 as Space_Used_MB, SUM( size)/128.0 - sum(CAST(FILEPROPERTY(name,''SpaceUsed'') AS INT))/128.0 AS Free_Space_MB from sys.database_files where type=0 group by type' go -------------------log size-------------------------------------- if exists (select * from tempdb.sys.all_objects where name like '#logsize%') drop table #logsize create table #logsize (Dbname varchar(30), Log_File_Size_MB decimal(20,2)default (0),log_Space_Used_MB decimal(20,2)default (0),log_Free_Space_MB decimal(20,2)default (0)) go insert into #logsize(Dbname,Log_File_Size_MB,log_Space_Used_MB,log_Free_Space_MB) exec sp_msforeachdb 'use [?]; select DB_NAME() AS DbName, sum(size)/128.0 AS Log_File_Size_MB, sum(CAST(FILEPROPERTY(name, ''SpaceUsed'') AS INT))/128.0 as log_Space_Used_MB, SUM( size)/128.0 - sum(CAST(FILEPROPERTY(name,''SpaceUsed'') AS INT))/128.0 AS log_Free_Space_MB from sys.database_files where type=1 group by type' go --------------------------------database free size if exists (select * from tempdb.sys.all_objects where name like '%#dbfreesize%') drop table #dbfreesize create table #dbfreesize (name varchar(50), database_size varchar(50), Freespace varchar(50)default (0.00)) insert into #dbfreesize(name,database_size,Freespace) exec sp_msforeachdb 'use ?;SELECT database_name = db_name() ,database_size = ltrim(str((convert(DECIMAL(15, 2), dbsize) + convert(DECIMAL(15, 2), logsize)) * 8192 / 1048576, 15, 2) + ''MB'') ,''unallocated space'' = ltrim(str(( CASE WHEN dbsize >= reservedpages THEN (convert(DECIMAL(15, 2), dbsize) - convert(DECIMAL(15, 2), reservedpages)) * 8192 / 1048576 ELSE 0 END ), 15, 2) + '' MB'') FROM ( SELECT dbsize = sum(convert(BIGINT, CASE WHEN type = 0 THEN size ELSE 0 END)) ,logsize = sum(convert(BIGINT, CASE WHEN type 0 THEN size ELSE 0 END)) FROM sys.database_files ) AS files ,( SELECT reservedpages = sum(a.total_pages) ,usedpages = sum(a.used_pages) ,pages = sum(CASE WHEN it.internal_type IN ( 202 ,204 ,211 ,212 ,213 ,214 ,215 ,216 ) THEN 0 WHEN a.type 1 THEN a.used_pages WHEN p.index_id < 2 THEN a.data_pages ELSE 0 END) FROM sys.partitions p INNER JOIN sys.allocation_units a ON p.partition_id = a.container_id LEFT JOIN sys.internal_tables it ON p.object_id = it.object_id ) AS partitions' ----------------------------------- if exists (select * from tempdb.sys.all_objects where name like '%#alldbstate%') drop table #alldbstate create table #alldbstate (dbname varchar(25), DBstatus varchar(25), R_model Varchar(20)) --select * from sys.master_files insert into #alldbstate (dbname,DBstatus,R_model) select name,CONVERT(varchar(20),DATABASEPROPERTYEX(name,'status')),recovery_model_desc from sys.databases --select * from #dbsize insert into #dbsize(Dbname,dbstatus,Recovery_Model) select dbname,dbstatus,R_model from #alldbstate where DBstatus 'online' insert into #logsize(Dbname) select dbname from #alldbstate where DBstatus 'online' insert into #dbfreesize(name) select dbname from #alldbstate where DBstatus 'online' select d.Dbname,d.dbstatus,d.Recovery_Model, (file_size_mb + log_file_size_mb) as DBsize, d.file_Size_MB,d.Space_Used_MB,d.Free_Space_MB, l.Log_File_Size_MB,log_Space_Used_MB,l.log_Free_Space_MB,fs.Freespace as DB_Freespace from #dbsize d join #logsize l on d.Dbname=l.Dbname join #dbfreesize fs on d.Dbname=fs.name order by Dbname
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值