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);
修改间隔时间:dbms_job.interval(job,interval);
停止job:dbms.broken(job,broken,nextdate);
启动job:dbms_job.run(jobno);
注意:修改后一定要commit;
例子:
variable jobno number;
begin
dbms_job.submit(:jobno,
''procdemo;'',//procdemo为过程名称
sysdate, ''sysdate + 1/720'');
commit;
end;
50、如何配置mts
修改初始化参数文件
增加以下内容:
mts_dispatchers = "(protocol=tcp)(disp=2)(con=1000)"
mts_max_dispatchers = 50
mts_servers = 20
mts_max_servers = 50
51、取出一个表的最后一条记录
select * from (select rownum id,tname.* from tname) a where a.id=(select count(*) from a);
52、重做日志(redolog)被删掉,通过什么方法才能恢复!
先mount数据库,然后再目录下建同名文件redo01.log、redo02.log、redo03.log
然后执行alter databse clear logfile group n
对于current的group,执行alter databse clear unarchived logfile group n
然后,再open,就ok了
53、oracle常见服务
几个主要的:
oracleorahome81tnslistener 监听服务
oracleservicesid oracle服务
oracleorahome81agent 智能代理服务
oracleorahome81cman 连接管理服务
oracleorahome81httpserver apache web 服务
oracleorahome81managementserver oracle 企业管理器服务
oracleorahome81names oracle命名服务
剩下的也不常用。
54、oracle的热备份
在不关闭数据库的时候进行oracle的备份。
原理停复杂的,你去找本书看看吧。
举个简单的例子:备份表空间users
alter tablespace users begin backup
copy users tablespace 的数据文件到备份目录
alter tablespace users end backup
55、导致索引不起作用的解决办法
你的问题我刚处理过,是由optimizer_mode参数引起的,该参数的默认值为choose,即为如表有statis则查询走基于cost的方式,否则走基于rule的方式,因些你可以有以下几个解决方法。
(1)、简单的在init<sid>.ora中设optimizer_mode=rule,重起数据库。
(2)、使用analyze table table_name(索引基表) delete statistics;
(3)、最后一个万能办法,将表和索引drop掉,重建。
56、关于数据库进程的问题。
(1).查看相关进程在数据库中的会话
select a.sid,a.serial#,a.program, a.status ,
substr(a.machine,1,20), a.terminal,b.spid
from v$session a, v$process b
where a.paddr=b.addr
and b.spid = &spid;
(2).查看数据库中被锁住的对象和相关会话
select a.sid,a.serial#,a.username,a.program,
c.owner, c.object_name
from v$session a, v$locked_object b, all_objects c
where a.sid=b.session_id and
c.object_id = b.object_id;
(3).查看相关会话正在执行的sql
select sql_text from v$sqlarea where address =
( select sql_address from v$session where sid = &sid );
57、查看ip地址
select sys_context(''userenv'',''ip_address'') from dual;
58、运行sqlplus时不用输入用户名和密码,进入之后使用connect
sqlplus /nolog
sql>connect scott/tiger
59、查看当前会话
userenv() 函数
select userenv(''language'') from dual 字符集
select userenv(''isdba'') from dual 是否dba
select userenv(''sessionid'') from dual sessionid
select userenv(''terminal'') from dual 客户端名字
select userenv(''instance'') from dual 实例数
sys_context() 函数
select sys_context(''userenv'',''current_schema'') from dual; 当前模式
select sys_context(''userenv'',''current_schemaid'') from dual; 当前模式id
select sys_context(''userenv'',''current_user'') from dual; 当前用户
select sys_context(''userenv'',''db_name'') from dual; 数据库
select sys_context(''userenv'',''host'') from dual; 主机
..........
60、删除重复列的方法
(1) delete from table_name a where rowid > (
select min(rowid) from table_name b
where a.key_values = b.key_values);
(2) create table table2 as select distinct * from table1;
drop table1;
rename table2 to table1;
(3) delete from mytable where rowid not in(
select max(rowid) from mytable
group by column_name );
(4) delete from mytable t1
where exists (select ''x'' from my_table t2
where t2.key_value1 = t1.key_value1
and t2.key_value2 = t1.key_value2
...
and t2.rowid > t1.rowid);