Oracle FAQ 2003.02精华
日期:2007年7月21日 作者: 查看:[大字体 中字体 小字体]-
1.Q: 如何使用NID来更改数据库名称?
A:
在Oracle9i二版以前,要想更改数据库名称,我们必须重建控制文件,具体更改过程参见我网站上的文章。
在Oracle9i二版中,我们可以使用一个新的工具"NID"来完成这个任务,值得一体的是这个工具同时还可以修改同一主机上低版本的数据库名称。
下面是将现有数据库更名为"gototop"的详细过程:
1. Shutdown database
2. Startup mount
3. $ nid target=/ dbname=gototop
4. Shutdown database
5. Change init.ora/spfile name, i.e.: initgototop.ora
6. Change db_name parameter in init.ora/spfile, i.e.: db_name='gototop'
7. Change ORACLE_SID to point to new database name (如果5没有做,这一步同样可以不做)
8. Startup mount
9. Alter database open resetlogs
10. Take a backup
和很多情况类似,对数据库的修改都需要在EXCLUSIVELY模式下进行,如果试运行在RAC环境中则会出现下面的错误提示:
NID-00120: Database should be mounted exclusively
解决方法也很简单,可以先注释掉相关RAC的参数。
2.Q: 如何将数字转换成大写?
A:
SQL> select to_char(to_date(1234567,'J'),'jsp') from dual;
TO_CHAR(TO_DATE(1234567,'J'),'JSP')
----------------------------------------------------------------------
ONE MILLION TWO HUNDRED THIRTY-FOUR THOUSAND FIVE HUNDRED SIXTY-SEVEN
这是英文的大写,可以实现从1到5,373,484之间数字的转换;中文大写我们可以通过下面的两个函数来实现:
CREATE OR REPLACE FUNCTION ZH(N NUMBER) RETURN CHAR AS
T VARCHAR(20):='零壹贰叁肆伍陆柒捌玖';
BEGIN
RETURN SUBSTR(T,N+1,1);
END;
/
CREATE OR REPLACE FUNCTION DX(N NUMBER) RETURN VARCHAR AS
B VARCHAR(16):='拾万千百拾元角分';
C VARCHAR(8);
G VARCHAR(32);
BEGIN
C:=REPLACE(LPAD(LTRIM(TO_CHAR(N,'999999.99')),9,'0'),'.','');
FOR I IN 1..8 LOOP
G:=GZH(SUBSTR(C,I,1))SUBSTR(B,I,1);
END LOOP;
RETURN G;
END;
/
3. Q:如何确定当前的Oracle版本?
A:
当一个系统中安装有多个版本的ORACLE时,可以按照下面的方法来确定当前的Oracle版本:
1、比较“/etc/oratab”与$ORACLE_HOME环境变量;
2、进入ORACLE数据库中,执行SELECT * FROM V$INSTANCE;
4. Q:如何知道hidden参数的含义?
A:
在init.ora中有时会用到类似下面以"_"开头的hidden参数:
_corrupted_rollback_segments=(r01,r02,r03,r04)
_allow_resetlogs_corruption=ture
这些参数一般都是由oracle support建议才会使用的,没有公布这方面的文档,我们可以通过下面的语句,看到一些解释:
select * from X$KSPPI where KSPPINM='_corrupted_rollback_segments';
select * from X$KSPPI where KSPPINM='_allow_resetlogs_corruption';
4. Q:如何使用rownum进行分页?
A:
下面是我们单位开发人员提出的分页方法:
“更为简单、清晰的ORACLE分页SQL:
select * from t_xxx where rownum < 201 minus select * from t_xxx where rownum < 101”
下面是我的回复:
这样的SQL是令人担忧的!
原因基于两点:
1、我们知道rownum是oracle输出结果中的虚行,即在实际的表中并没有相应的存储结构存在;
2、minus运算是在两次操作结果的基础上进行的,因此在非不得不的情况下,我们一贯主张避免使用类似的操作;
由此可以看出楼主提出的SQL:
select * from t_xxx where rownum < 201 minus select * from t_xxx where rownum < 101;
为了取出100条纪录实际上执行了两次SELECT共300条纪录,举个简单的例子,如果共1000条纪录,分页为100条,那么全部SELECT总数据量是
100+(200+100)+(300+200)+。 - [1] [2] [3] 下一页
-
- Oracle FAQ 2003.02精华 相关文章:
- ·Oracle FAQ 2003.02精华
- Oracle FAQ 2003.02精华 相关软件
- 特别声明:本站除部分特别声明禁止转载的专稿外的其他文章可以自由转载,但请务必注明出处和原始作
- 者.文章版权归文章原始作者所有.对于被本站转载文章的个人和网站,我们表示深深的谢意。如果本站转
- 载的文章有版权问题请联系编辑人员,我们尽快予以更正. 转载请注明来源:http://www.hackhome.com
上一篇:如何在OEMS中成功提交作业
下一篇:查出别人如何建表的语句
精品推荐
热点TOP10
- ·9istatspack使用手册
- ·ORACLE UPDATE 语句语法与性能分析的一点看法
- ·ORACLE备份&恢复案例--ORACLE BACKUP&RESTORE SCHEME
- ·关于oracle日期函数的介绍和使用
- ·Oracle的SQL*PLUS命令的使用大全
- ·oracle函数之常见单行字符串函数
- ·ORACLE傻瓜手册长篇连载
- ·详细介绍ORACLE sqlplus命令
- ·Decode 函数的用法
- ·ORACLE 培训教程(1)
- ·Oracle 游标使用大全
- ·把Oracle数据库移植到Microsoft SQL Server 7.0
- ·Oracle数据库检查死锁的sql
- ·Oracle的SQL语句执行效率问题查找与解决方法
- ·Oracle常用的OCI函数
- ·用正则表达式函数验证身份证号码合法性
- ·oracle中pro*c的学习
- ·VMware下RedHat安装Oracle 9i RAC全攻略
- ·Oracle 9i 分析函数参考手册
- ·数据库备份与恢复测试(8)
特别推荐
- ·Oracle环境下APACHE虚拟服务器如何设置
- ·常见Oracle HINT的用法
- ·ORA-00257: archiver error. Connect internal only, until freed.
- ·oracle的update问题
- ·小议索引的使用
- ·oracle产品服务和技术级别介绍,OrACLE服务
- ·Oracle 数据类型
- ·Oracle数据库检查死锁的sql
- ·怎样将冷备份移植到另一台Solaris机器上
- ·Oracle 动态SQL返回单条结果和结果集
- ·手动建立 Oracle9i 数据库
- ·Oracle内存结构(二)----Shared Pool的详细信息
- ·DELPHI 调用 Oracle 存储过程并返回数据集的例子.
- ·关于block中行数据的存储与空间重组三
- ·Sybase及SQL Anywhere SQL语句小结
- ·ORACLE备份&恢复案例--ORACLE BACKUP&RESTORE SCHEME
- ·Oracle ERP 11业务调研报告-AP应付帐
- ·在 Oracle 数据库上构建 .NET 应用程序
- ·Oracle的SQL语句执行效率问题查找与解决方法
- ·oracle中pro*c的学习
