日期:2014-05-16  浏览次数:20463 次

程序员必备:Oracle日常维护命令
????上一篇讲了Linux的日常维护命令,这篇讲讲Oracle的日常维护命令。工作中需要使用Oracle数据库的童鞋们,相信或多或少都需要对Oracle做一些基本的维护操作,例如导入导出总该有吧?(哦,你说你用PL/SQL工具来做导入导出,连命令都用不到,那你自己看着办吧...)。本文如有明显的遗漏或错误,请各位帮忙指出,谢谢!
?
测试环境:Oracle 10g
?
一、启动、关闭数据库
1、启动实例的各种模式
1)启动实例,装载并打开数据库
这是最普通的数据库操作,意味着某个实例已经启动并且数据库也已经装载并打开。这种模式允许任何一个有效的用户连接到数据库,并执行典型的数据访问操作。启动实例接着从默认的服务器参数文件位置读取初始化参数,然后通过STARTUP命令来装载和打开数据库:
SQL>?STARTUP
?
2)启动实例,不装载数据库
启动实例而不用装载数据库,通常只在整个数据库创建过程中使用该模式:
SQL>?STARTUP NOMOUNT
?
3)启动实例,并装载数据库
可以启动实例并装载数据库,但不打开数据库。该模式允许执行特定的维护操作,例如在下面的任务中必须装载数据库而不打开数据库。
* 重命名数据文件
* 添加取消或重命名重做日志文件
* 允许和禁止重做日志存档选项
* 执行完整的数据为恢复操作
SQL>?STARTUP MOUNT
?
4)在启动过程中限制访问数据库
可以在受限制的模式下启动实例并装载和打开数据库,以便只有管理人员而不是一般的数据库用户可以利用数据库。当需要完成以下一种任务时,使用这种数据库启动模式:
* 执行数据库数据的导入或导出操作
* 执行数据库装载操作用SQL*Loader
* 暂时阻止一般的用户使用数据
* 在某个移植过程和升级操作过程中
SQL>?STARTUP RESTRICT
?
5)迫使实例启动
在一些特殊环境下,可能会在启动数据库实例的时候遇到一些问题。一般不要迫使数据库启动,除非存在以下情形:
* 用SHUTDOWN NORMAL、SHUTDOWN IMMEDIATE、SHUTDOWN TRANSACTIONAL命令不能关闭当前的实例时。
* 在启动实例的时候遇到一些问题时。
SQL>?STARTUP FORCE
?
6)启动实例,装载数据库,并启动完整的介质恢复过程
如果知道需要介质恢复过程,就可以启动实例并为其装载数据库,以及通过使用带RECOVER选项的STARTUP命令的方法来自动启动恢复过程。
STARTUP OPEN RECOVER
?
2、改变数据库的可用性
1)为实例装载数据库
SQL>?ALTER DATABASE MOUNT;
?
2)打开一个关闭的数据库
SQL>?ALTER DATABASE OPEN;
?
3)以只读模式打开数据库
SQL>?ALTER DATABASE OPEN READ ONLY;
以读写模式打开数据库
SQL>?ALTER DATABASE OPEN READ WRITE;
?
3、关闭数据库
1)以正常模式关闭数据库
不允许新的连接、等待会话结束、等待事务结束、做一个检查点并关闭数据文件。启动时不需要实例恢复。?
SQL>?SHUTDOWN NORMAL
?
2)以立即模式关闭数据库
不允许新的连接、不等待会话结束、不等待事务结束、做一个检查点并关闭数据文件。没有结束的事务是自动rollback的。启动时不需要实例恢复。
SQL>?SHUTDOWN IMMEDIATE
?
3)以事务模式关闭数据库
不允许新的连接、不等待会话结束、等待事务结束、做一个检查点并关闭数据文件。启动时不需要实例恢复。
SQL>?SHUTDOWN TRANSACTIONAL
?
4)以终止模式关闭数据库
不允许新的连接、不等待会话结束、不等待事务结束、不做检查点且没有关闭数据文件。启动时自动进行实例恢复。
SQL>?SHUTDOWN ABORT
?
?
二、用户登录
1、以没有连接数据库的方式启动SQL*Plus
# sqlplus /nolog
?
2、在命令提示符环境中以SYSDBA角色登录,并启动SQL*Plus
1)
# sqlplus /nolog
SQL>?connect / as sysdba
2)
# sqlplus / as sysdba
?
3、以某用户身份登录,并启动SQL*Plus
1)
# sqlplus jsam/jsam123
2)
# sqlplus jsam/jsam123@orcl
3)
# sqlplus /nolog
SQL> conn jsam/jsam123
4)
# sqlplus /nolog
SQL> conn jsam/jsam123@orcl
等等...
?
?
三、安全管理
1、用户管理
1)创建用户账号名为jsam,密码为jsam123,采用数据库认证方式。默认表空间为users,临时表空间为temp,其中对表空间users的使用限额为500K,表示最多可以使用500K的表空间:
SQL>?create user jsam identified by jsam123
default tablespace users
temporary tablespace temp
quota 500k on users;
?
应该为每一个用户分配一个默认表空