Expert Oracle Database Architecture学习笔记之:Setting Up Your Environment

时间:2022-10-18 23:35:19

Expert Oracle Database Architecture

Oracle Database 9i, 10g, and 11g Programming Techniques and Solutions

Thomas Kyte  应该是第二版。第一版没有提到11G。

详情参见:http://www.apress.com/9781430229469

 

Expert Oracle Database Architecture学习笔记之:Setting Up Your Environment

作者推荐阅读本书的同时需要参阅oracle concepts doc。

 

小记录:

1.运行示例demobld.sql.

可能会碰到一个问题是:EMP表插入语句时报“ORA-01843: 无效的月份”错误。

 

参阅博文:

1. http://blog.csdn.net/dannyoracle/archive/2010/10/25/5964848.aspx

2. http://www.cnblogs.com/afant/archive/2009/01/04/1368334.html

3. http://yhq82523.blog.163.com/blog/static/382511432009210104430399/

官方文档:

1.Globalization Support Guide Doc;

2.SQL Reference Doc.

 

后在dembld.sql中:

修改

INSERT INTO EMP VALUES (7934, 'MILLER', 'CLERK', 7782,
TO_DATE('23-JAN-1982', 'DD-MON-YYYY'), 1300, NULL, 10);

为:

INSERT INTO EMP VALUES (7934, 'MILLER', 'CLERK', 7782,
TO_DATE('23-JAN-1982', 'DD-MON-YYYY','NLS_DATE_LANGUAGE = American'), 1300, NULL, 10);

表插入成功。

 

2.总结

所参考博文中的做法是 Setting the Session Time Zone(具体没有实验,也还没有仔细阅读官方文档中的关于这部分的内容。)

该问题可以阅读官方文档

 

1.Globalization Support Guide Doc;

2.SQL Reference Doc.

 

 

NLS_LANG。 Globalization Support Guide该文中的第三章3 Setting Up a Globalization Support Environment

TO_DATE。   SQL Reference该文中的TO_DATE一节。(p356)

之所以不采用参考博文的做法,原因如下:

1.>服务器端的NLS_LANG应该是开发人员都清楚的;

2.>开发人员插入数据时,应用TO_DATE函数时候,应该要考虑到数据库端记录date数据类型的要求。

3.>因为要插入数据,就需要进行一下alter session set ,虽然简单,却总觉得有点小题大做,搞的开发人员还晕晕乎乎的。

 

3.未读:Setting Your Environment。此处我犯了严重的错误。(看书还是稍微认真点的好,可能也是由于看英文版的原因吧。有点欠耐心)

粗粗的翻看了一下,觉得大部分是sql plus使用上的技巧。就暂时略过。

Setting Environment 部分中的Custom Scripts(Runstats,Big_Table)对整本书的后面还是很重要的。

就是在运行  Runstats 会碰到权限问题。

 

 第二版中THOMAS增加了一段note:

Note The actual object names you need to be granted access to will be V_$STATNAME, V_$MYSTAT, and so
on—that is, the object name to use in the grant will start with V_$ not V$. The V$ name is a synonym that points
to the underlying view with a name that starts with V_$. So, V$STATNAME is a synonym that points to V_$STATNAME
– a view. You need to be granted access to the view.

 

需要给其中的几个系统视图(V_$...)授权SELECT给普通用户。

 

在执行Big_Table 以及给Big_Table插入数据的时候:

 

 

在thomas的第二版中,他用的应该是 11g所以,

select rownum+l_cnt,
OWNER, OBJECT_NAME, SUBOBJECT_NAME, OBJECT_ID, DATA_OBJECT_ID,
OBJECT_TYPE, CREATED, LAST_DDL_TIME, TIMESTAMP, STATUS,
TEMPORARY, GENERATED, SECONDARY, NAMESPACE, EDITION_NAME

红色部分的字段名在10中是没有的,如果是用10g的测试环境,可以删掉红色部分再执行big_table的代码即可。