Oracle,Server,Mysql谁更适合我呢?我在疑惑中...

用Sql产生一个月内的日历

[不指定 2010/09/08 16:47 | by fubin ]
select
    min(to_char(day, 'yyyymm')) month,
    min(decode(weekday, 1, day)) "星期日",
    min(decode(weekday, 2, day)) "星期一",
    min(decode(weekday, 3, day)) "星期二",
    min(decode(weekday, 4, day)) "星期三",
    min(decode(weekday, 5, day)) "星期四",
    min(decode(weekday, 6, day)) "星期五",
    min(decode(weekday, 7, day)) "星期六"

    from (select day,
                 month,
                 decode(sign(rn - weekday), 1, week + 1, week) week,
                 weekday,
                 rn
            from (select day,
                         to_char(day, 'mm') month,
                         to_char(day, 'w') week,
                         to_char(day, 'd') weekday,
                         row_number() over(partition by to_char(day, 'mm'), to_char(day, 'w') order by day) rn
                    from (select trunc(sysdate, 'yyyy') + level - 1 day
                            from dual
                          connect by rownum <= trunc(sysdate+365,'yyyy')-trunc(sysdate,'yyyy')))) a
   group by a.month, a.week
   order by a.month, a.week;
dba_开头
  dba_users     数据库用户信息
  dba_segments  表段信息
  dba_extents    数据区信息
  dba_objects    数据库对象信息
  dba_tablespaces   数据库表空间信息
  dba_data_files    数据文件设置信息
  dba_temp_files   临时数据文件信息
  dba_rollback_segs   回滚段信息
  dba_ts_quotas   用户表空间配额信息
  dba_free_space  数据库空闲空间信息
  dba_profiles   数据库用户资源限制信息
  dba_sys_privs   用户的系统权限信息
  dba_tab_privs  用户具有的对象权限信息
  dba_col_privs  用户具有的列对象权限信息
  dba_role_privs  用户具有的角色信息
  dba_audit_trail  审计跟踪记录信息
  dba_stmt_audit_opts  审计设置信息
  dba_audit_object   对象审计结果信息
  dba_audit_session  会话审计结果信息
  dba_indexes  用户模式的索引信息


user_开头
  user_objects   用户对象信息
  user_source   数据库用户的所有资源对象信息
  user_segments   用户的表段信息
  user_tables    用户的表对象信息
  user_tab_columns   用户的表列信息

  关于这个还涉及到两个常用的例子如下:

1、oracle中查询某个字段属于哪个表


Sql代码
1.select table_name,owner from dba_tab_columns t where t.COLUMN_NAME like upper('%username%');  
select table_name,owner from dba_tab_columns t where t.COLUMN_NAME like upper('%username%');  


2、oracle中查询某个表的列数

Sql代码
1.select count(*) from user_tab_columns where table_name= upper('sys_operate');  
select count(*) from user_tab_columns where table_name= upper('sys_operate');


注:这两个例子都用到了upper这个函数,是因为在这里表名得大写,否则查出的结果不是正确的



 
  user_constraints   用户的对象约束信息
  user_sys_privs   当前用户的系统权限信息
  user_tab_privs   当前用户的对象权限信息
  user_col_privs   当前用户的表列权限信息
  user_role_privs   当前用户的角色权限信息
  user_indexes   用户的索引信息
  user_ind_columns  用户的索引对应的表列信息
  user_cons_columns   用户的约束对应的表列信息
  user_clusters   用户的所有簇信息
 user_clu_columns  用户的簇所包含的内容信息
 user_cluster_hash_expressions   散列簇的信息



v$开头
  v$database    数据库信息
  v$datafile   数据文件信息
  v$controlfile  控制文件信息
  v$logfile   重做日志信息
  v$instance   数据库实例信息
  v$log   日志组信息
  v$loghist  日志历史信息
  v$sga   数据库SGA信息
  v$parameter  初始化参数信息
  v$process   数据库服务器进程信息
  v$bgprocess   数据库后台进程信息
  v$controlfile_record_section   控制文件记载的各部分信息
  v$thread   线程信息
  v$datafile_header   数据文件头所记载的信息
  v$archived_log  归档日志信息
  v$archive_dest   归档日志的设置信息
  v$logmnr_contents   归档日志分析的DML DDL结果信息
  v$logmnr_dictionary   日志分析的字典文件信息
  v$logmnr_logs   日志分析的日志列表信息
  v$tablespace   表空间信息
  v$tempfile   临时文件信息
  v$filestat   数据文件的I/O统计信息
  v$undostat   Undo数据信息
  v$rollname   在线回滚段信息
  v$session   会话信息
  v$transaction  事务信息
  v$rollstat    回滚段统计信息
  v$pwfile_users   特权用户信息
  v$sqlarea     当前查询过的sql语句访问过的资源及相关的信息
  v$sql           与v$sqlarea基本相同的相关信息
  v$sysstat    数据库系统状态信息


all_开头
  all_users   数据库所有用户的信息
  all_objects   数据库所有的对象的信息
  all_def_audit_opts   所有默认的审计设置信息
  all_tables   所有的表对象信息
  all_indexes  所有的数据库对象索引的信息

session_开头
    session_roles   会话的角色信息
    session_privs   会话的权限信息


index_开头
   index_stats   索引的设置和存储信息


伪表
  dual   系统伪列表信息


oracle最重要的9个动态性能视图
v$session + v$session_wait (在10g里功能被整合,凑合算1个吧.)
v$process
v$sql
v$sqltext
v$bh (更宁愿是x$bh)
v$lock
v$latch_children
v$sysstat
v$system_event
按组分的几组重要的性能视图

1. System 的 over view
v$sysstat , v$system_event , v$parameter

2. 某个session 的当前情况
v$process , v$session , v$session_wait ,v$session_event , v$sesstat

3. SQL 的情况
v$sql , v$sqlarea , v$SQL_PLAN , V$SQL_PLAN_STATISTICS, v$sqltext_with_newlines

3. Latch / lock /ENQUEUE
v$latch , v$latch_children , v$latch_holder , v$lock ,V$ENQUEUE_STAT ,V$ENQUEUE_LOCK

4. IO 方面的
v$segstat , v$filestat , v$tempstat ,v$datafile , v$tempfile

5. shared pool / Library cache
v$Librarycache , v$rowcache , x$ksmsp

6. 几个advice也不错
v$db_cache_advice , v$PGA_TARGET_ADVICE, v$SHARED_POOL_ADVICE

修改任意用户密码为:WELCOME

[不指定 2009/11/03 22:25 | by fubin ]
rem
rem Alters given user's password to "WELCOME", and creates script to revert password to
rem original setting
rem

set heading  off
set verify   off
set feedback off

prompt
accept username char prompt 'Enter username to hack into: '

prompt  
prompt Creating revert.sql in the current working directory
prompt

set termout off
spool       revert.sql

select 'alter user &&username identified by values '||
      ''''||
      password||
      ''''||
      ';'
from   sys.dba_users
where  username = upper('&&username')
/

spool       off
set termout on

prompt  
prompt Altering user password to 'welcome'
prompt

set termout off

alter user    &&username
identified by welcome
/

set termout on
prompt
prompt *************************************************
prompt   The file revert.sql is in the current working  
prompt   directory.  Run it to reset the password.  
prompt *************************************************
prompt
prompt

查看Oracle备份文件

[不指定 2009/11/02 22:08 | by fubin ]
select   b.file#                                "File No"
,        d.name                                 "File Name"
,        d.bytes                                "Size (bytes)"
,        b.status                               "Backup Status"
,        to_char(b.time,'DD-MON-YY HH24:MI:SS') "Start Time"
from     v$backup   b
,        v$datafile d
where    b.file# = d.file#
order by b.time

查看Oracle JOB的状态

[不指定 2009/11/02 20:11 | by fubin ]
select   job
,        to_char(last_date, 'DD-MON-YY HH24:MI') last_date
,        trunc(last_date)                        hidden_last_date
,        to_char(this_date, 'DD-MON-YY HH24:MI') this_date
,        to_char(next_date, 'DD-MON-YY HH24:MI') next_date
,        broken
,        failures
,        what
from     sys.dba_jobs
order by 2

查询备份文件的空间利用值

[不指定 2009/10/27 23:48 | by fubin ]
select
 substr(to_char(100 * headroom, '999999999.0'), 2) || '%'  min_headroom,
 round(arch_time * 24 * 60, 2)  archival_minutes,
 round(arch_window * 24 * 60, 2)  archival_window
from
 ( select
     b.next_time - a.next_time        arch_window,
     a.completion_time - a.next_time  arch_time,
     (b.next_time - a.next_time) / (a.completion_time - a.next_time) - 1
       headroom
   from
     sys.v_$thread  t,
     sys.v_$archived_log  a,
     sys.v_$archived_log  b
   where
     a.completion_time > a.next_time and
     b.sequence# = a.sequence# + t.groups - 1
   order by
     3
 )
where
 rownum = 1

杀死一个现有链接

[不指定 2009/08/03 10:56 | by fubin ]
select username,sid,serial# from v$session;
alter system kill session'55,10839';
create or replace type t_ret_table is table of varchar2(20);

create or replace function f_test(var_num in integer) return t_ret_table is
var_out t_ret_table;
begin
var_out := t_ret_table();
var_out.extend(var_num);
for i in 1..var_num loop
var_out(i) := i;
end loop;
return var_out;
end f_test;
/


set serverout on
declare
aa t_ret_table;
begin
aa := f_test(10);
for i in 1..aa.count loop
dbms_output.put_line(aa(i));
end loop;
end;
/

一个分隔字符串的例子:
把'a|||b|||c'字符串分隔成
a
b
c
create or replace function f_test(var_str in string) return t_ret_table is
var_out t_ret_table;
var_tmp varchar2(2000);
var_element varchar2(2000);
begin
var_tmp := var_str;
var_out := t_ret_table();
while instr(var_tmp,'|||')>0 loop
var_element := substr(var_tmp,1,instr(var_str,'|||')-1);
var_tmp := substr(var_tmp,instr(var_str,'|||')+3,length(var_tmp));
var_out.extend(1);
var_out(var_out.count) := var_element;
end loop;
var_out.extend(1);
var_out(var_out.count) := var_tmp;
return var_out;
end f_test;
/


set serverout on
declare
aa t_ret_table;
begin
aa := f_test('a|||b|||c');
for i in 1..aa.count loop
dbms_output.put_line(aa(i));
end loop;
end;
/



create or replace function f_test(var_str in string) return t_ret_table PIPELINED
as
var_tmp varchar2(2000);
var_element varchar2(2000);
begin
var_tmp := var_str;
while instr(var_tmp,'|||')>0 loop
var_element := substr(var_tmp,1,instr(var_str,'|||')-1);
var_tmp := substr(var_tmp,instr(var_str,'|||')+3,length(var_tmp));
pipe row(var_element);
end loop;
pipe row(var_tmp);
return;
end f_test;
/


select * from table(f_test('a|||b|||c'));



另外一个分割字符串的例子:


分割字符串问题!

问题源自http://www.itpub.net/626418.html

/*

怎样支掉字符串中逗号间重复的字符
如 ',1,2,5,9,1,2,5,9,1,2,9,1,2,9,1,2,3,9,1,2,3,9,1,2,9,1,2,9,1,2,3,9,1,2,3,9,'怎样支掉字符串中逗号间重复的字符,并将字符升序排列,得到
',1,2,3,5,9,'
百思不得其解,是高手的试一下。

解答:
select col from(
select sys_connect_by_path(col,',')||',' col,level from(
select col,row_number() over(order by rownum) rn from (
select distinct substr(col,instr(col,',',1,rownum)+1,instr(col,',',1,rownum+1)-instr(col,',',1,rownum)-1) col from (
select ',1,2,5,9,1,2,5,9,1,3,9,' col from dual
) connect by rownum)
)
connect by prior rn = rn -1 order by level desc
) where rownum=1

*/

这个问题的解决办法中的一部分(按照固定分隔符分割字符串)可以解决http://www.itpub.net/515354.html

/*

要求用pl/sql写一个函数, 实现根据分割符把原字符串分成若干个字符串功能.

输入: string(字符串) 和 Delimiter (分隔符)
输出: substr1, ..., substrn (根据分割后的字符串排序, 不是子串在原字符串中的顺序)

解答:

select substr(col,instr(col,',',1,rownum)+1,instr(col,',',1,rownum+1)-instr(col,',',1,rownum)-1) col from (
select ',1,2,5,9,1,2,5,9,1,3,9,' col from dual
) connect by rownum
*/

每月5号执行的Oracle Job

[不指定 2009/06/15 20:41 | by fubin ]
begin
 sys.dbms_job.submit(job => :job,
                     what => 'Fin_Sys_Create_Job;',
                     next_date => to_date('05-07-2009', 'dd-mm-yyyy'),
                     interval => 'trunc(add_months(sysdate,1),''mm'')+4');
 commit;
end;
/
accept column_name prompt "Enter a column name : "
accept table_name prompt "Enter the column's table name : "
prompt
prompt working...
set    termout   off
spool  ffkr.txt
select chr(10) || 'Foreign key references for column '
              || upper ('&column_name')
              || ', table '
              || upper ('&table_name')
              || ' (owner '
              || user
              || ') :'
from   dual
/
declare
   h_count number;
begin
   select count(*)
   into   h_count
   from   user_tab_columns
   where  column_name = upper ('&column_name')
   and    table_name = upper ('&table_name');
   if h_count = 0 then
       dbms_output.put_line ('=====================================');
       dbms_output.put_line ('>>> COLUMN / TABLE DOES NOT EXIST <<<');
       dbms_output.put_line ('=====================================');
       dbms_output.put_line (chr(10));
   end if;
end;
/
select 'table_name ------ ' || ucc.table_name      || chr(10) ||
      'constraint_name - ' || uc.constraint_name  || chr(10) ||
      'column_name ----- ' || ucc.column_name     || chr(10) ||
      'status ---------- ' || uc.status
from   user_constraints  uc,
      user_cons_columns ucc,
      user_cons_columns ucc2
where  ucc2.table_name      = upper ('&table_name')
and    ucc2.column_name     = upper ('&column_name')
and    uc.constraint_type   = 'R'
and    uc.constraint_name   = ucc.constraint_name
and    uc.r_constraint_name = ucc2.constraint_name
and    ucc.position         = ucc2.position
order  by ucc.table_name,
         uc.constraint_name,
         ucc.position
/
spool off
set heading  on
set pagesize 24
set verify   on
set feedback 6
set termout  on
prompt
pause Done...  Press ENTER to view results
edit ffkr.txt
分页: 1/15 第一页 [1] [2] [3] [4] [5] [6] [7] [8] [9] [10] 下页 最后页 [ 显示模式: 摘要 | 列表 ]