三、LINUX和UNIX下
转到操作系统下执行:kill -9 spid (以上语句所查出的)
36、ORACLE中检查表是否被锁的语句
SELECT A.OWNER,
A.OBJECT_NAME,
B.XIDUSN,
B.XIDSLOT,
B.XIDSQN,
B.SESSION_ID,
B.ORACLE_USERNAME,
B.OS_USER_NAME,
B.PROCESS,
B.LOCKED_MODE,
C.MACHINE,
C.STATUS,
C.SERVER,
C.SID,
C.SERIAL#,
C.PROGRAM
FROM ALL_OBJECTS A,
V$LOCKED_OBJECT B,
SYS.GV_$SESSION C
WHERE ( A.OBJECT_ID = B.OBJECT_ID )
AND (B.PROCESS = C.PROCESS )
ORDER BY 1,2
杀掉:alter system kill session 'sid, serial#'
37、ORACLE的登录问题,用户名和密码。
可以直接输入:
internal/oracle@serivce_name
sys/change_on_install@serivce_name
system/manager@serivce_name
scott/tiger@serivce_name
注意:
9i中没有internal/oracle
如果选择典型安装则有
scott用户
如果自定义可以不安装
scott用户
如果是本机则可以省略@serivce_name
oem:(ORACLE ENTERPRISE MANAGER)
sysman/oem_temp
38、修改表的列名
Oracle9i:
alter table xxx rename column xx to yy;
Oracle8i & lower version
connect sys/passed;
update col$ set name=xx where obj#=对象id and name = 字段
(一般不要这样用,会造成意想不到的结果)
注:最好是删除再建立新的列
39、把用户模式对象所在的表空间移到新的表空间
(1). create the new tablesapce
(2). alter user test default tablespace test_data;
(3). alter user test quota unlimited on test_data;
(4). alter table the_table_name move tablespace test_data;
生成脚本:
select 'alter table'||tname||' move tablespace test_date;'
from tab
where tabtype='TABLE'
(5). rebuild the indexes;
40、使用OEM备份或者EXP的步骤
WIN2000下:
(1). 控制面板??管理工具?? 计算机管理??本地用户和组??用户??新建用户sys和sysman(sys和sysman 的帐号要和登陆数据库的帐号相同);
(2).控制面板??管理工具?? 本地安全策略??本地策略??用户权利指派??
作为批处理作业登陆??添加sys和sysman两个帐号。
(3).使用Enterprise Manager配置辅助工具
开始→程序→Oracle - OraHome81→Enterprise Manager→Configuration Assistant
a、使用Configuration Assistant工具来创建一个新的资料档案库。
(4).控制面板??管理工具?? 服务,查看OracleOraHome81ManagementServer是否启动,如果没有启动,则手动启动该服务。
(5).以sysman/oem_temp(default)登陆DBA Studio
(第二个选项:登陆到Oracle Management Server),立即修改密码为你刚才在NT下建的用户sysman的密码。
(6). 以sysman/ *** (bluesky) 从开始→程序→Oracle - OraHome81→Console 登陆到 控制台。
在 系统→首选项→首选身份证明(我的首选身份设置如下:)
DEFAULT节点:name:sysman
DEFAULT数据库:name:sys
(7). 在搜索/添加结点后,以sysman/ *** 登陆到该结点,以sys/ *** as sysdba登陆数据库(也就是在首选身份设置的结果)。
(8). 在工具→备份管理→向导→预定义备份策略(自定义备份策略)→提交备份计划
(9).从开始→程序→Oracle - OraHome81→Console 登陆到 控制台,查看活动(历史记录)可以看到你的备份是否成功,如果不成功,可以点击备份看明细。(我第一次也没成功,后来我修改系统的临时目录C:\WINNT\Temp→c:\temp\systmp,重新启动机器就ok了)
41、如何修改INTERNAL的口令
以下是oracle8的8i你可以仿照来做
(1)、进入DOS下
(2)、默认internal密码文件在c:\orant\database下,是隐藏属性,文件名称与数据库实例名有关
如默认ORACLE实例名为ORCL,则internal密码文件名为pwdorcl.ora
(3)、建立新的internal密码文件,起个新名字为pwdora8.ora
orapwd80 file=pwdora8.ora password=B entries=5
--注:password项一定要用大写,并且不要用单引号
(4)、拷贝pwdora8.ora文件到c:\orant\database目录下
(5)、运行regedit,修改口令文件指向
(6)、找到HKEY_LOCAL_MACHINE\SOFTWARE\ORACLE项
定位ORA_ORCL_PWFILE子项,改变其值为c:\orant\database\pwdora8.ora
(7)、关闭ORACLE数据库,重新启动
(8)、进入svrmgr30服务程序,测试internal密码是否更改成功
42、凭证检索失败的决绝方法。
原因: 由于Oracle不能应用OS认证而导致凭证检索失败
解决办法:
(1).打开network/admin下的sqlnet.ora
修改SQLNET.AUTHENTICATION _SERVICES=(NONE)。
(2).启动Net8 configuration assistant--选第三项本地网络服务名配置
--删除...(删除原来的本地网络服务名)
(3).重复第二步
--添加.. (新建本地网络服务名)
(4).restart oracle
注意:NTS是WinNT的认证方式
43、命令行编译存储过程
ALTER PROCEDURE procedure_name COMPILE;
44、关于如何建立数据库链接(DBlink)
可以通过建立客户机数据库网络服务名的办法,将服务器的名字或是IP地址设置为你需要连接的那个机器就行
如果你要在一个应用中连接它,现在做好上步工作,然后按如下处理
建立数据库连接
CREATE DATABASE LINK DBaseLinkName CONNECT TO UserName IDENTIFIED BY Password USING 'NetServiceName';
DBaseLinkName
是建立的数据连接名称
UserName
是可以连接到的用户名
Password
是可以连接到的用户的密码
NetServiceName
是可以连接的数据库网络服务名或是数据库名
查询建立数据连接的表实例
Select * From TableName@ DBaseLinkName;
注意:如果在CREATE DATABASE LINK DBaseLinkName CONNECT TO UserName IDENTIFIED BY Password USING 'NetServiceName';中NetServiceName
是数据库名修改init.ora中:global_names = true
否则global_names = false
init.ora中:global_names = false
45、Object Browser7.0中文版的破解方法
到OBJECT BROWSER的目录里,找到DeIsL1.isu文件,用记事本打开,看到的是乱码吧?没关系,将Stirling Technologies ,Inc 这个字符串前面的乱码去掉(如果有的话),让后在Stirling之前加一个空格(一定要加的),保存,退出,重新运行一下看看,虽然还有提示输入验证信息,但是不用管他,直接确定就行。是不是可以用了呢?保证好使。
46、错误号ORA-01536:space quota exceeded for table space 'ALCATEL'的解决办法
三个解决办法,任你选择:
(1) alter user USERNAME quota 100M on TABLESPACENAME;
(2) alter user USERNAME quota unlimited on TABLESPACENAME;
(3) grant unlimited tablespace to USERNAME;
47、如何在Oracle中捕获到SQL语句的全部操作内容
SELECT osuser, username, sql_text from v$session a, v$sqltext b
where a.sql_address =b.address order by address, piece;
48、ORACLE中如何实现自增字段:
(1)第一种方法
ORACLE一般的做法是同时使用序列和触发器来生成一个自增字段.
CREATE SEQUENCE SEQname
INCREMENT BY
1
START WITH
1
MAXVALUE
99999999
/
CREATE TRIGGER TRGname
BEFORE
INSERT
ON table_name
REFERENCING
NEW AS :NEW
FOR EACH ROW
Begin
SELECT SEQname.NEXTVAL
INTO :NEW.FIELDname
FROM DUAL;
End;
(2)第二种方法:
CREATE OR REPLACE TRIGGER TR1
BEFORE INSERT ON temp_table
FOR EACH ROW
declare
com_num NUMBER;
BEGIN
SELECT MAX(ID) INTO COM_NUM FROM TEMP_TABLE;
:NEW.ID:=COM_NUM+1;
END TR1;
49、job的使用:
修改initsid.ora参数
job_queue_processes = 4
8i,9i
(允许同时执行的JOB数)
job_queue_interval = 10
8i
job_queue_keep_connections=true
8i
DBMS_JOB.SUBMIT(:jobno,//job号
'your_procedure;',//要执行的过程
trunc(sysdate)+1/24,//下次执行时间
'trunc(sysdate)+1/24+1'//每次间隔时间
);
删除job:dbms_job.remove(jobno);
修改要执行的操作:dbms_job.what(jobno,what);
修改下次执行时间:dbms_job.next_date(job,next_date);
修改