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

oracle简单笔记
【linux、oralce 10g】

●本地dba登陆: sqlplus / as sysdba
●启动数据库实例: 本地dba登陆后,用命令startup(关闭:shutdown,查看状态:show sga),如果没启动数据库实例,报错:ORA-01034: ORACLE not available
●监听器命令: lsnrctl ($ORACL_HOME/bin/lsnrctl, 后面可跟start,stop,stauts等)
●监听器配置文件: $ORACL_HOME/network/admin/listener.ora
●em管理命令: emctl start|stop|status|setpasswd dbconsole
●isqlplus管理命令: isqlplusctl start|stop
●emagent管理命令: emctl start|stop|status agent

●查找当前数据库实例名: select instance_name from v$instance; | show parameter instance_name
●查找当前数据库名: select name from v$database; | show parameter db_name
●查找当前数据库服务名: select value from v$parameter where lower(name)='service_names'; | show parameter service_names

●10g数据库的物理结构文件目录:
$ORACLE_BASE/oradata/SID/*
●数据库PFILE目录(参数文件):
$ORACLE_BASE/admin/SID/pfile/init.ora.*
●后台进程的跟踪文件的目录:
$ORACLE_BASE/admin/SID/bpdump/*
●用户跟踪文件目录:
$ORACLE_BASE/admin/SID/udump/*

●●启动数据库
export ORACLE_SID=xxx #先指定要启动的SID
sqlplus / as sysdba
●只启动实例,不装载数据库
    sql> startup nomount
●启动实例,并装载数据,但不打开数据库
    sql> startup mount
●将数据库置为只读
    sql> startup mount
    sql> alter database open read only
●以可读写方式打开数据,这是单独执行startup的默认方式
    sql> startup mount
    sql> alter database open read write
●打开数据库,这是默认方式
    sql> startup mount
    sql> alter database open;
●以受限方式打开,只有具有RESTRICTED SESSION权限的用户才可以连接数据库
    sql> startup restrict
●启时指定参数文件
    sql> startup pfile=/xxpath/mypfile.ora
●以强制方式启动数据库
    sql> startup pfile=/xxpath/mypfile.ora open restrict force

●●关闭数据库
export ORACLE_SID=xxx #先指定要关闭的SID
sqlplus / as sysdba
●NORMAL关闭方式:正常关闭方式,是默认关闭方式。数据库服务器必须等待所有客户端从Oracle中正常退出时,才可以关闭数据库。
    SQL> shutdown normal
●IMMEDIATE关闭方式: 系统将连接到数据库的所有用户尚未提交的事务全部回退,中断连接,然后关闭数据库。
    SQL> shutdown immediate
●ABORT关闭方式:系统立即将数据库实例关闭,对事务膛数据完整性不作检查。是最快的关闭方式。
    sql> shutdown abort;
●TRANSACTIONAL关闭方式: 数据库必须等待所有的客户运行的事务结束,提交或回退。
    sql> shutdown transactional

●●删除数据库
export ORACLE_SID=xxx
sqlplus / as sysdba
sql> shutdown abort;

●●排错
●startup实例时报错:ORA-01102: cannot mount database in EXCLUSIVE mode
  解决:
    如果实例已经启动则先停止:shutdown immediate
    用root账户关掉所有oracle的进程:kill -9 `ps -ef|grep ora |awk '{print $2}'`
    切换回oracle用户,sqlplus sys as sysdba@xxx, startup
sql> startup mount exclusive restrict;
sql> drop database;

● 查询自定义类型列的属性: 一定要使用表别名,否则查询出错,如:
select t.geoloc.sdo_point.x from mapinfo.map_ves t; --(不能省略t)

● 在存储过程中执行动态sql语句:
execute immediate
         'select a, b from ' || table_name || ' where c=:1 and d=:2'
into i_a, i_b
using i_c, i_d;