oracle 数据库区常用命令大全

来源:互联网 发布:python tkinter text 编辑:程序博客网 时间:2024/04/30 22:33
1.启动数据库

cd @ORACLE_HOME/bin
lsnrctl
start

2. @ORACLE_HOME/dbs
目录下存放实例配置文件


3.
java中以odbc方式连接oracle
1.
配置sqlnet easy configration
2.
windows中配置odbc,添加 system DSN,其中data source name可任意指定,
sol*net connect string
为在sol*net 中指定的Database alias
3.
确保path指向orawin95/bin
4.
执行oracle中的32-bit odbc test 测试连接
5. java
中参数指定如下:

driver: "sun.jdbc.odbc.JdbcOdbcDriver",
dbURL: "jdbc:ODBC:odbc DSN
",
logid: "",
logpass: ""

4.
java中使用oracle driver连接oracle
driver: "oracle.jdbc.driver.OracleDriver",
dbURL: "jdbc:oracle:thin:@
机器名:1521:数据库",
logid: "",
logpass: "");

5.
设置日期格式
服务器端: export NLS_DATE_FORMAT='DD-MON_RR'
客户端: 进入win95注册表,KEY_LOCAL_MACHINE->SOFTWARE->ORACLE,然后
从菜单选择编辑->新建->字符串值:输入NLS_DATE_FORMAT,然后编辑这个
新串,在值域输入DD_MON_RR(RRRR)

6.
处理用户被锁住的方法
首先执行下列语句,确定用户是否真的被锁住:
select a.username,a.sid,a.serial#,b.id1,c.sql_text
from v$session a,v$lock b,v$sqltext c
where a.lockwait = b.kaddr
and a.sql_address = c.address
and a.sql_hash_value = c.hash_value;
USERNAME SID SERIAL# ID1 SQL_TEXT
--------- --- ----------- ---------
SCOTT 11 9 131080 update
plsql_user.s_employee 
set salary=5000
结果SCOTT在做update时被锁住了
下一步确定是谁锁住了该用户,这个用户在做何种操作:
select a.username,a.sid,a.serial#,b.id1,c.sql_text
from v$session a,v$lock b,v$sqltext c
where b.id1 in
(select distinct e.id1
from v$session d,v$lock e
where d.lockwait=e.kaddr)
and a.sid = b.sid
and c.hash_value=a.sql_hash_value
and b.request=0;
USERNAME SID SERIAL# ID1 SQL_TEXT
--------- --- ----------- ---------
PLSQL_USER 10 26 131080 update s_employee
set salary=10000
结果显示是由于PLSQL_USERSCOTT对同一个表做update时将SCOTT锁住了
可以通过kill session释放锁,例如可以killPLSQL_USERsession:
alter system kill session '10,26'

7.
使用查询优化器
Oracle Server
提供了基于成本(Cost Based)和基于规则(Rule Based)
两种优化器,简称为CBORBO,用于查询操作的执行计划.可以使用下列
方法使用CBO:
方法1:INIT<sid>.ORA文件中设置参数
OPTIMIZER_MODE=choose
方法2:session级设置
OPTIMIZER_GOAL=FIRST_ROWS
ALL_ROWS
例如:
alter session set optimitzer_goal=first_rows
方法3:在查询中使用hint,包括:
CHOOSE,ALL_ROWS,FIRST_ROWS


8.
确定某个查询使用了那一种优化器
使用EXPLAIN PLAN命令生成该查询语句的执行计划,然后检查PLAN_TABLE
表中POSITION字段,如果值为NULL,说明使用了Rule based优化器,否则表明
使用了Cost Based优化器:
select decode(nvl(position,-1),-1,'RBO','CBO')
from plan_table
where id=0;

9.
使用estimate方式对表进行分析

10.
建立一个与现存数据库相同,但不包含数据的空库
对全库作俄ExportImport,使用参数ROWS=N
:
exp system/manager full=Y rows=N file = full.dmp
imp system/manager full=Y rows=N file=full.dmp

11.
使某些host不能通过SQL*NETV2访问Oracle server
可以通过编辑$ORACLE_HOME/network/admin/protocol.ora文件完成
例如: protocol.ora
tcp.validnode_checking=yes
tcp.invited_nodes=(138.3.39.150)
这样只有138.3.39.150才能通过sol*netv2访问Oracle Server
又例如: protocol.ora
tcp.validnode_checking=yes
tcp.exclued_nodes=(138.3.39.150)
这样138.3.39.150被拒绝

12.
sol*plus,向表中插入"'"
可以用chr(39)来标示"'"
例如:
insert into test values('i'||chr(39)||'m');
select * from test;
coll
---
i'm

13.
win95winNT上运行oracle Net8 Assistant Net8 EasyConfguration
时报错"unhandled exception erro in java.exe"
oracle Net8 Assistant
Net8 EasyConfguration调用了java,java
win95winNT上对系统的分辨率和颜色都有要求,应把系统的分辨率
调到大于640X480,颜色大于256但不能设置成true color

14.
安装oracle 8 for windows NT 需要NTservice pack 3

15.
oracle7oracle8之间export/import数据
必须先在oracle8数据库上以internalsys用户运行catexp7.sql
svrmgr>connect internal
svrmgr>@?/rdbms/admin/catexp7.sql
16.
为远程用户设置"internal"口令
先在数据库端的init<sid>.ora文件中设置
remote_login_passwordfile=execlusive
并且为oracle owner设置环境变量
ORA_<SID>_PWFILE=orapw<sid>.pwd
然后以oracle owner 运行以下命令:
$cd $ORACLE_HOME/dbs
$orapwd file=orapw<sid>.pwd password=<passwd> entries=5

17.
手工安装sqlplushelp facility
oracle用户运行以下命令
$cd $ORACLE_HOME/bin
$SYSTE system/manager;export SYSTEM_PASS
$helpins

18.
查出前台正在发出的sql语句
先查出正在运行的前台程序的sid:
sql>select sid,serial#,username,program
from v$session 
where status='ACTIVE';
然后根据上面得到的sid,可查出正在运行的前台程序发出的sql语句:
sql>select user_name,sql_text
from v$open_cursor
where sid=xx;
19.
在数据库一级设置sql trace
init.ora中加入参数sql_trace=true,然后重新启动

20.
sql*plus中对某一session设置sql trace
sql*plus>alter session set sql_trace=true;
可以使用下列命令关闭trace
sql*plus>alter session set sql_trace=false;

21.
移动数据文件的位置
1.
正常关闭数据库 
2.
复制文件到新位置
$cp $ORACLE_HOME/dbs/dbsNEW.DBF /usr3/oracle/db2NEW.dbf
3.svrmgrl
connect internal;
startup mount;
alter database rename file'<$ORACLE_HOME>/dbs/db2NEW.dbf'
to 'usr3/oracle/db2NEW.dbf';
alter database open

22.
移动LOG文件的位置
可以先添加新的LOG文件,再删除原来的LOG文件
svrmgrl>connect internal;
alter database add logfile
'<$ORACLE_HOME>/usr3/oracle/logNEW.dba';
alter database drop logfile
'<$ORACLE_HOME>/dbs/logNEW.dbf';
23.
确定安装了何种NETWORK DRIVER
使用'nm'命令,例如tcp/ip driver的符号为'nttini',要检查oracle是否
链接了该符号,可以利用下列命令:
nm oracle|grep nttini
如果nttini存在,表示rdbms已经链接了tcp/ip driver

24.
检查已安装的sql*net版本
可以在?/orainst目录下使用'inspdver'命令检查
$inspdver|grep SQL*NET
2.3.4.0.0 SQL*NEW(V2)

25.
备份数据库
orant/database目录备份下来即可

26.
unix下察看实例名
.pfofile
文件  
原创粉丝点击