使用dbstart 和dbshut 脚本来自动化启动和关闭数据库:
1. 登录用户root。
2. 编辑你的平台的oratab 文件。
打开文件/etc/oratab:
文件里数据库条目为以下格式:
SID:ORACLE_HOME:{Y|N|W}
其中,Y 和N 表示是否脚本启动或关闭数据库。对于想要实现自动化关闭和启动,首先确定数据库的实例ID ,也就是第一个SID 所标识的,然后修改最后的值为Y 。
3. 切换系统工作目录到/etc/init.d
4. 创建文件dbora 文件,将拷贝以下代码。
#
# Change the value of ORACLE_HOME to specify the correct Oracle home
# directory for your installation.
ORACLE_HOME=/u01/app/oracle/product/10.2.0/db_1
#
# Change the value of ORACLE to the login name of the
# oracle owner at your site.
#
ORACLE=oracle
PATH=${PATH}:$ORACLE_HOME/bin
HOST=`hostname`
PLATFORM=`uname`
export ORACLE_HOME PATH
#
if [ ! "$2" = "ORA_DB" ] ; then
if [ "$PLATFORM" = "HP-UX" ] ; then
remsh $HOST -l $ORACLE -n "$0 $1 ORA_DB"
exit
else
rsh $HOST -l $ORACLE $0 $1 ORA_DB
exit
fi
fi
#
case $1 in
'start')
if [ "$PLATFORM" = "Linux" ] ; then
touch /var/lock/subsys/dbora
fi
$ORACLE_HOME/bin/dbstart $ORACLE_HOME &
;;
'stop')
$ORACLE_HOME/bin/dbshut $ORACLE_HOME &
;;
*)
echo "usage: $0 {start|stop}"
exit
;;
esac
#
exit
5. 修改dbora 文件所属组为OSDBA ,设置权限为750:
# chgrp dba dbora
# chmod 750 dbora
6. 创建dbora 文件的软连接到合适的运行级目录里。
# ln -s /etc/init.d/dbora /etc/rc.d/rc0.d/K01dbora
# ln -s /etc/init.d/dbora /etc/rc.d/rc3.d/S99dbora
# ln -s /etc/init.d/dbora /etc/rc.d/rc5.d/S99dbora
本文链接:http://www.cnblogs.com/snowers/p/3285281.html,转载请注明。
在自己虚拟机搭建的ORACLE数据库环境下,折腾捣鼓做实验时,不知道什么特殊的改动、操作导致从SQL*PLUS里启动数据库实例时,报如下错误:
然后用startup nomout启动时,任然报ORA-10997,ORA-09968等错误,于是查看了一下ora相关进程,发现数据库的进程都在,也就是说
在某次关闭数据库时,出现了异常导致数据库实例根本没有关闭的情况下出现了该错误((期间我使用shutdown immediate后,还没看到出结果,一不小心点错了,就将SecureCRT关闭了)),于是出现了下面一幕:
于是使用 shutdown immediate 命令关闭数据库,结果报ORA-24324、ORA-24323、ORA-01089等错误
SQL> shutdown immediate;
ORA-24324: service handle not initialized
ORA-24323: value not allowed
ORA-01089: immediate shutdown in progress - no operations are permitted
于是使用shutdown abort命令来关闭数据库,结果报ORA-01031: insufficient privileges
于是通过CRT克隆一个会话后,重新登录数据库,然后使用shutdown abort将数据库关闭。
SQL> shutdown abort
ORACLE instance shut down.
SQL>
本文链接:http://www.cnblogs.com/kerrycode/p/3288181.html,转载请注明。
SQL优化器SQL Tuning Advisor (STA),是oracle的sql优化补助工具。
其实优化sql主要有两个方案,其一是改写sql本身,改写sql需要对sql语法、数据库的执行方式都要有较好地理解。
其二就是这个STA,它属于DBMS_SQLTUNE包,它的主要作用是对于sql使用到的表创建正确的索引。
使用STA前提:
show parameter OPTIMIZER_MODE
all_rows /*CBO,sql所有返回行都采用基于成本的方式运行*/
first_rows /*CBO,使用成本和试探法相结合的方法,查找一种可以最快返回前面少数行*/
first_rows_n /*CBO,全部采用基于成本的优化方法CBO,并以最快的速度,返回前N行记录*/
choose /*如果有统计信息,采用CBO,否则采用RBO*/
rule /*RBO*/
执行DBMS_SQLTUNE包进行sql优化需要有advisor的权限:
grant advisor to scott;
例子:
表已创建。
SQL> create table ind as select * from dba_indexes;
表已创建。
SQL> insert into obj select * from obj;
已创建 74603 行。
SQL> insert into obj select * from obj;
已创建 149206 行。
SQL> insert into obj select * from obj;
已创建 298412 行。
SQL> insert into ind select * from ind;
已创建 5134 行。
SQL> insert into ind select * from ind;
已创建 10268 行。
SQL> insert into ind select * from ind;
已创建 20536 行。
这里创建两张表,下面执行一个查询:
SQL> set autot trace
SQL> select count(*) from obj o, ind i where o.object_name=i.index_name;
已用时间: 00: 00: 00.15
执行计划
----------------------------------------------------------
Plan hash value: 380737209
------------------------------------------------------------------------------------
| Id | Operation | Name | Rows | Bytes |TempSpc| Cost (%CPU)| Time |
------------------------------------------------------------------------------------
| 0 | SELECT STATEMENT | | 1 | 83 | | 5063 (1)| 00:01:01 |
| 1 | SORT AGGREGATE | | 1 | 83 | | | |
|* 2 | HASH JOIN | | 5861K| 463M| 1272K| 5063