📄 收集:常见问题解答.txt
字号:
出差[忙].
由 jlandzpa 于 01-11-07 04:44 发表:
oracle FAQ(2) from chao_ping
关于OPTIMAL参数
optimal是用于限制回滚段大小的一个存储参数。在执行一个长的事务之后,那个事务所使用的回滚段会比较大,而设置了Optimal这个参数以后,一旦事务提交结束,回滚段自动收缩到Optimal所指定的大小。
如果你的系统中有许多长时间运行的事务的话,那么应该把回滚段的Optimal参数设置的比较大一点。这样有利于保持回滚段表空间的连续性。否则不断的扩张、收缩会使表空间更加破碎。
如果系统中主要的事务都是短时间的,那么应该把回滚段设置的比较小一些,这样有利于让回滚段里面的信息可以存储在SGA里边,以利于提高系统性能。
回滚段的Optimal参数可以在创建回滚段的时候指定,也可以用
ALTER ROLLBACK SEGMENT SEGMENT_NAME OPTIMAL XX M;这样来重新设定。
Oracle8i 里边的
ALTER SESSION SET CURRENT_SCHEMA=
可以用来更改当前的用户模式。
Oracle公司已经宣称,不再支持server manager,这个工具自从Oracle
6.0开始,就一直是管理Oracle数据库的主要工具。现在,SQL*Plus替代了Server Manager的地位,因此,Server
Manager中相应的功能也都集成到了SQL*Plus之中。
SQL*Plus新增加的主要命令是startup, shutdown, archive
log,和recover。当然,标准的SQL语法仍然是支持的了,比如一系列的CREATE,
ALTER等语句。但是也对其中的一些有了一些改变,比如原来不支持的ALTER DATABASE OPEN,ALTER DATABASE MOUNT,ALTER
DATABASE BACKUP 等句子。
对于SET命令,也多了一些新的选项,用来包含一些如自动恢复等。SHOW命令也开始可以用来直接显示参数SHOW PARAMETER ,SHOW
SGA等。而这些,原来都只是在Server Manager里面才有的功能。
Oracle8i仍旧保留了尽人皆知的INTERNAL账户,但是要记住,这主要是为了向后兼容。INTERNAL账户的功能现在开始有SYSDBA,SYSOPER这两个角色来支持了。INTERNAL/SYS的口令可以用下面这个方法来进行修改:
O/S Prompt> orapwd password=<some password>
当数据库刚刚创建的时候,SYS的密码默认为change_on_install,而SYSTEM的密码是manager,而INTERNAL则根本就没有密码。因此,创建完数据库之后,第一件要做的事情就是改变以上三个用户的口令。INTERNAL的口令可以用前面提到过的方法来改变,而SYSTEM,SYS则可以直接用ALTER
USER username IDENTIFIED BY password;来更改。注意,在Oracle8i开始,ALTER USER SYS
IDENTIFIED BY
password;同时也会更改INTERNAL的密码,如果你为INTERNAL设置了密码的话,同时,马上把SYSDBA,SYSOPER这两个角色授予负责管理这个数据库的用户。对于那些使用INTERNAL来连接数据库的脚本,也要相应的作一些修改。
启动和关闭数据库:
要从SQL*Plus里边启动数据库,请按照以下的步骤进行:
O/S Prompt>sqlplus /nolog
SQL> connect scott/tiger as SYSDBA
SQL> startup
如果希望用不同于默认得参数来启动数据库,可以使用下面代参数的启动命令:
SQL> startup PFILE=<init.ora file to be used>
有时候需要启动数据库,但是不让普通用户进入,比如为了平衡IO,需要移动一个数据文件的位置,这时候就需要改变默认得启动选项:
SQL> startup mount
当完成了维护任务之后,可以选择关闭数据库然后再重新按照正常方式打开,或者直接在SQL*Plus里边输入下面的命令,Oracle就可以开始正常运行了:
SQL> alter database open
有时候需要创建一个新的数据库,或者需要重建控制文件,就需要用下面的语句:
SQL> startup nomount
有时候,数据库难以正常启动,就可以考虑使用下面的办法来强迫启动:使用FORCE选项,STARTUP FORCE实际上相当于一个SHUTDOWN
ABORT然后再STARTUP这样一个过程。
SQL> startup force
SHUTDOWN这个命令也有好几种参数可以选择:
正常关闭是等待所有用户都从系统退出以后,再正常关闭系统。这是一种最最理想的关闭数据库的方式。一般都应该使用这种方式来正常关闭数据库。
SQL> shutdown
在Oracle8i开始,新加了一个关闭选项:SHUTDOWN
TRANSACTIONAL。这允许所有用户都完成它们的事务,一旦事务提交,马上被断开连接。这样既保证了用户不会丢失它们的事务,也保证了数据库可以及时关闭,进行必要的维护操作。这种方式关闭的话,下次系统启动之后,也不用进行实例一级的恢复。比下面提到的另外两种方式都要理想。
SQL> shutdown transactional
SHUTDOWN
IMMEDIATE是马上中止用户的当前事务,并不等这些事务完成,回滚这些用户的当前事务。但是如果有一些事务很久没有提交的话,那么SHUTDOWN
IMMEDIATE或许就不像说得那样IMMEDIATE了。可能也要花很多时间来回滚这些事务。
SQL> shutdown immediate
在Oracle8i里边最后一种关闭方式是SHUTDOWN
ABORT。这种关闭方式和直接关闭计算机的电源其实没有太多的区别。任何当前连接的用户都被马上断开联接,在下次实例再次启动的时候,必须进行实例一级的恢复,用以回滚没有提交的事务。
SQL> shutdown abort
ALTER TABLE table_name MOVE之后,表上的索引标志为UNUSABLE?
在Oracle8i开始,可以直接使用alter table table_name move [tablespace tablespace_name];
来为一张表移动到另一个表空间,或者重新组织表的存储方式,以减少碎片。但是,这样使用过之后,所有这张表上的索引都将被标志为unusable。这是因为MOVE一张表之后,表中列对应的物理位置都改变了,就是所有行的ROWID都变化了,而这张表的索引就用到了其中行的ROWID。由于Oracle不会自动更新索引对应的ROWID,这时候,索引上的ROWID就指向了错误的地方。因此,索引被标志为UNUSABLE。这时候,你就需要手工重建索引。可以使用下面的语法来重建索引:
ALTER INDEX index_name
REBUILD;当然,还可以为索引指定特定的合适的存储参数,来优化索引的存储。或许Oracle之所以没有自动维护索引,就是为了让你可以为索引指定合适的存储参数。
如何远程安装Oracle:
如果需要从PC机上的X-window客户端安装Unix上的Oracle系统,要注意下面这一点:Oracle8i使用的是Universal
Installer,使用了Java技术,必须在图形界面下安装。如果是远程安装,必须设置一下什么地方来显示Universal Installer的图形界面:使用
$DISPLAY=workstation_name:0.0
$export DISPLAY
举一个例子,你的PC机的IP地址是150.150.4.128,机器名字叫做test,那么就可以使用下面的语法来进行为安装作准备工作:
$DSIPLAY=150.150.4.128:0.0
$export DISPLAY
或者使用下面的语法,但是必须这个test机器的信息写在hosts文件里边:
DSIPLAY=test:0.0
$export DISPLAY
__________________
任弱水三千,我独取一瓢饮!
勿以善小而不为,勿以恶小而为之!
不要以为登上了山峰,你就征服了世界!
出差[忙].
由 easyfree 于 01-11-07 17:27 发表:
呵呵,你怎么把我兄弟的个人网站上的东东搬过来了?
人家可是有版权的
下次如果有其他网站上的, 给个链接, 谢谢
不过还是很感谢你的支持, 再接再厉
__________________
生年不满百,常怀千岁忧。
昼短苦夜长,何不秉烛游!
为乐当及时,何能待来兹?
愚者爱惜费,但为后世嗤。
仙人王子乔,难可与等期。
由 jlandzpa 于 01-11-07 18:17 发表:
sorry,是我疏忽了.
chao_ping的网站:
http://chaoping.home.chinaren.com/
__________________
任弱水三千,我独取一瓢饮!
勿以善小而不为,勿以恶小而为之!
不要以为登上了山峰,你就征服了世界!
出差[忙].
由 allanliao 于 01-11-08 04:22 发表:
FOOT N问题的简化
换一个思路,
其实很多情况下,FOOT N问题很容易处理的:
从数字逻辑看,
FOOT N <==> [反 TOP ] N
所以,FOOT N 就是TOP N,无非排序方式用降序就可以了
如:
SELECT * FROM
( SELECT * FROM emp ORDER BY empno DESC)
WHERE ROWNUM<=N
__________________
【单骑】
万水千山独行
找我登天路径
由 easyfree 于 01-11-08 21:32 发表:
Re: FOOT N问题的简化
quote:
最初由 allanliao 发布
换一个思路,
其实很多情况下,FOOT N问题很容易处理的:
从数字逻辑看,
FOOT N <==> [反 TOP ] N
所以,FOOT N 就是TOP N,无非排序方式用降序就可以了
如:
SELECT * FROM
( SELECT * FROM emp ORDER BY empno DESC)
WHERE ROWNUM<=N
好思路,谢谢
__________________
生年不满百,常怀千岁忧。
昼短苦夜长,何不秉烛游!
为乐当及时,何能待来兹?
愚者爱惜费,但为后世嗤。
仙人王子乔,难可与等期。
由 sun 于 01-11-10 00:23 发表:
thanks a lot
由 yh2ygy 于 01-11-10 04:49 发表:
收到
不错不错,欧留下了
由 rich3 于 01-11-13 06:11 发表:
受益菲浅
多谢多谢
由 ykliu_ora 于 01-11-17 03:00 发表:
非常感谢
由 fergio 于 01-11-17 20:04 发表:
i have a question
Max number of Prespanwned server process are defined by --------
Prespawn_Max or prespawn_max_servers?
__________________
让西北象我的精神一样朝气蓬勃!
让西北的经济象我的思想一样快速发展!
由 tonyxucanada 于 01-11-28 12:03 发表:
Re: FOOT N问题的简化
remember: whenever you want use ROWNUM , you may not want to use ORDER BY
clause, otherwise you won't get any correct result. so the first script is
correct, your's is incorrect.
由 lgw 于 01-11-29 21:30 发表:
fergio
初级会员
注册日期: 2001 Nov
来自: 兰州
发帖数量: 14
论坛积分:420
i have a question
Max number of Prespanwned server process are defined by --------
Prespawn_Max or prespawn_max_servers?
__________________
fergio loo
the succ answer is prespawn_max_servers
由 freebob 于 01-12-13 19:26 发表:
这是俺在linuxforum上看的一文章,很棒,于大家共享(1)
完整的手工建立ORACLE数据库步骤
作者:Winder(杭州)
E_MAIL: lswandlm@163.net
URL: http://www.qyhhschool.com
数据库: Oracle 8i R2 (8.1.6)
安装路径:/data/ora816
数据库实例:web
数据库全局名称:web.edi.com
1、手工创建相关目录
/data/ora816/admin/web
/data/ora816/admin/web/adhoc
/data/ora816/admin/web/bdump
/data/ora816/admin/web/cdump
/data/ora816/admin/web/create
/data/ora816/admin/web/exp
/data/ora816/admin/web/pfile
/data/ora816/admin/web/udump
/data/ora816/oradata/web
/data/ora816/oradata/web/archive
2、手工创建初始化启动参数文件:/data/ora816/admin/web/pfile/initweb.ora
检查$ORACLE_HOME/dbs目录下是否有初始化文件,比如如果您的sid是web,则在此目录下应该有一个initweb.ora的文件,如果没有,您可以将init.ora文件复制成initweb.ora文件:cp
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -