1.ASCII
返回与指定的字符对应的十进制数;
SQL> select ascii('A') A,ascii('a') a,ascii('0') zero,ascii(' ') space from dual;
A A ZERO SPACE
--------- --------- --------- ---------
65 97 48 32
A A ZERO SPACE
--------- --------- --------- ---------
65 97 48 32
http://www.dbanotes.net/Oracle/Alert_Table.htm
参考fenng的文档,我又需要创建外表了,因为这个表主要用来查的,一般就是添加,很少删除.
懒的写脚本一个一个的insert,于是考虑用external 表,直接从excel中copy到vi编辑器中,创建了.dat文件
然后用sys身份创建了这个外表.
当我授权select这个表给普通用户的时候,
发现了,06564错误,用户对目录没有权限.
分析过程:外表每次select的时候,其实就是通过sql loader来将数据导入进来,所以要先创建一个目录.
这说明,我用数据库普通用户select的时候,也需要在执行一次sql loader操作.
查otn文档,看到了有句
GRANT READ ON DIRECTORY alertlog TO scott;
我执行了,还是不行.
我又改为
GRANT write ON DIRECTORY alertlog TO user;
最后,成功了.oracle的普通用户也能访问sys的外表了
下面是我用到的sql
查看全文来上海已经半个多月了,上了一周的课,玩了一周。
有些感觉,但是我生活的圈子很小,可能是很片面的。
首先,上海,公交车上,地铁上的人,都不让座的。昨天在地铁上,看到上来了一对老夫妻,下面坐的是个30岁的妇女,带着两个3,4岁的小孩子。
小孩子说要让座,那个妈妈说“你干什么”,小孩子说,让座,“为什么”那个妈妈说。也许小孩子本来都很小,他们可以不让坐,可是这个妈妈,
我实在看不起她。还有,在地铁上,人还没有下来,就有人上车,完全没有先下后上的顺序。我一般都是最后才上,因为我知道,你先上的,还是后上的
不管如何,还是这么多的人, 一样的挤。怪不的上海,据说有人挤下了地铁。建议对付这些不懂的先下后上规矩的人,以后所有的要下地铁的人,先别着急下车
把脚抬起来,大概对着别人
CREATE OR REPLACE PROCEDURE CheckSpace
IS
used number;
free number;
total number;
hit number;
pins number;
reloads number;
lib number;
smem number;
sdisk number;
para varchar2(4000);
pbytes number;
err number;
BEGIN
select sum(usedmb),sum(freemb),sum(totalmb)
into used,free,total
from
(
select usedmb,freemb,totalmb
from ts_used_free
where to_char(check_date,'yyyymmdd')=to_char(sysdate,'yyyymmdd')
);
SELECT 1 - (phy.value / (cur.value + con.value))
into Hit FROM v$sysstat cur, v$sysstat con, v$sysstat phy
WHERE cur.name = 'db block gets' AND con.name = 'consistent gets'
AND phy.name = 'physical reads';
select sum(pins) "Total Pins", sum(reloads) "Total Reloads",
sum(reloads)/sum(pins) *100 libcache
into pins,reloads,lib
from v$librarycache;
SELECT value into smem
FROM v$sysstat WHERE name IN ('sorts (memory)');
SELECT value into sdisk
FROM v$sysstat WHERE name IN ('sorts (disk)');
select bytes into pbytes
from v$sgastat where pool='shared pool' and name ='free memory';
select count(*) into err
from alert_tab WHERE text LIKE '%ORA-%' ;
para := 'Oracle Pirmary Server Used MB '||' '
|| to_char(used) || ' ' || ' Free MB' ||' '
|| to_char(free) || ' ' || ' Total MB'||' '
|| to_char(total)|| ' ' ||' Data buffer cache Hit Ratio Value is '||' '
|| to_char(hit)||' ' ||' Share Pool cache Hit Ratio should less than 1%,and the value is '
||' '
|| to_char(lib)||' ' || ' Memory Sort is '||' '||to_char(smem)||' Disk Sort is'||' '
|| to_char(sdisk) ||' '|| 'The Disk/Mem ,the less the better'||' '
|| 'Share Pool Free Memory bytes:'||' '||to_char(pbytes) ||' '
|| 'The ORA- error number in alert log is'|| ' '|| to_char(err);
procsendemail(para) ;
send_email('shenjie@akey.net.cn',para);
send_email('shenjie@itownet.cn',para);
send_email('shenjie7810@163.com',para);
send_email('luowuhong@itownet.cn',para);
/* */
send_email('suhuilin@itownet.cn',para);
send_email('yangyongbing@itownet.cn',para);
END;
/
举例说明,我的数据库的SID叫testdb,现在要改成oral.更改ORACLE数据库的sid,涉及到的东西比较多,但是大概来说就以下六步.
1、停止所有的Oracle服务。
2、修改initSID.ora文件,修改instance_name为新的SID
3、修改注册表的ORACLE_SID
4、修改listener.ora中的SID_NAME
5、oradim删除原来SID的服务,添加新SID的服务
6、orapwd生成新SID的口令
查看全文