现在的位置: 首页 > 综合 > 正文

Oracle 应用技巧

2013年12月22日 ⁄ 综合 ⁄ 共 3130字 ⁄ 字号 评论关闭
触发器:
  select?trigger_name,trigger_type,table_owner,table_name,status?from?user_triggers;
快照:
  select?owner,name,master,table_name,last_refresh,next?from?user_snapshots?order?by?owner,next;
同义词:
  select?*?from?syn;
序列:
  select?*?from?seq;
数据库链路:
  select?*?from?user_db_links;
约束限制:
  select?TABLE_NAME,CONSTRAINT_NAME,SEARCH_CONDITION,STATUS?from?user_constraints;
本用户读取其他用户对象的权限:
  select?*?from?user_tab_privs;
本用户所拥有的系统权限:
  select?*?from?user_sys_privs;
用户:
  select?*?from?all_users?order?by?user_id;
表空间剩余自由空间情况:
  select?tablespace_name,sum(bytes)?总字节数,max(bytes),count(*)?from?dba_free_space?group?by?tablespace_name;
数据字典:
  select?table_name?from?dict?order?by?table_name;
锁及资源信息:
  select?*?from?v$lock;不包括DDL锁
数据库字符集:
  select?name,value$?from?props$?where?name='NLS_CHARACTERSET';
inin.ora参数:
  select?name,value?from?v$parameter?order?by?name;
SQL共享池:
  select?sql_text?from?v$sqlarea;
数据库:
  select?*?from?v$database
控制文件:
  select?*?from?V$controlfile;
重做日志文件信息:
  select?*?from?V$logfile;
来自控制文件中的日志文件信息:
  select?*?from?V$log;
来自控制文件中的数据文件信息:
  select?*?from?V$datafile;
NLS参数当前值:
  select?*?from?V$nls_parameters;
ORACLE版本信息:
  select?*?from?v$version;
描述后台进程:
  select?*?from?v$bgprocess;
查看版本信息:
  select?*?from?product_component_version;

7.如何在PL/SQL中读写文件??

软件环境:?
1、服务器端:Windows?NT4.0+ORACLE?8.0.4
2、ORACLE安装路径为:C:/ORANT?
实现方法:?

PL/SQL?3.3以上的版本中,UTL_FILE包允许用户通过PL/SQL读写操作系统文件。如下:?
declare
file_handle?UTL_FILE.FILE_TYPE;
begin
file_handle?:=?UTL_FILE.FOPEN('/tmp',?'文件名',?'w');
UTL_FILE.PUTF(file_handle,?'写入的信息/n');
UTL_FILE.FCLOSE(file_handle);
exception
WHEN?utl_file.invalid_path?THEN
raise_application_error(-20000,?'ERROR:?Invalid?path?for?file?or?path?not?in?INIT.ORA.');
end;?

PutF()过程用来以指定格式把文本写入一个文件

Put_Line()过程把一个指定的字符串写入文件并在文件中开始新的一行

8.怎样计算表中的记录数??

系统环境:?
1、操作系统:Windows?2000
2、数据库: Oracle?8i?R2?(8.1.6)?for?NT?企业版
3、安装路径:C:/ORACLE

实现方法:?

查看当前用户下有什么对象(表、视图、同义词、快照)
SQL>?select?*?from?tab;

查看表结构
SQL>?desc?表名

查看表中记录数
SQL>?select?count(*)?from?表名;

SQL>?select?count(rowid)?from?表名;

9.怎样查看表的结构??

系统环境:?
1、操作系统:Windows?2000
2、数据库: Oracle?8i?R2?(8.1.6)?for?NT?企业版
3、安装路径:C:/ORACLE

实现方法:?

查看当前用户下有什么对象(表、视图、同义词、快照)
SQL>?select?*?from?tab;

查看表结构
SQL>?describe?表名

简写以上命令
SQL>?desc?表名

10.如何用SQL生成SQL批处理文件??

软件环境:?
1、Windows?NT4.0+ORACLE?8.0.4
2、ORACLE安装路径为:C:/ORANT

问题提出:?
1、用户需要对数据库用户下的每一张表都执行一个相同的SQL操作,这时,一遍、一遍的键入SQL语句是很麻烦的

实现方法:?
SQL>?set?heading?off?--禁止输出列标题
SQL>?set?feedback?off?--禁止显示最后一行的计数反馈信息

列出当前用户下所有同义词的定义,可用来测试同义词的真实存在性
select?'desc?'||tname?from?tab?where?tabtype='SYNONYM';

查询当前用户下所有表的记录数
select?'select?'''||tname||''',count(*)?from?'||tname||';'?from?tab?where?tabtype='TABLE';

把所有符合条件的表的select权限授予为public
select?'grant?select?on?'||table_name||'?to?public;'?from?user_tables?where?《条件》;

删除用户下各种对象
select?'drop?'||tabtype||'?'||tname?from?tab;

删除符合条件用户
select?'drop?user?'||username||'?cascade;'?from?all_users?where?user_id>25;

快速编译所有视图?
----当在把数据库倒入到新的服务器上后(数据库重建),需要将视图重新编译一遍,
----因为该表空间视图到其它表空间的表的连接会出现问题,可以利用PL/SQL的语言特性,快速编译。?

SQL>?SPOOL?ON.SQL
SQL>?SELECT'ALTER?VIEW?'||TNAME||'?COMPILE;'?FROM?TAB;
SQL>?SPOOL?OFF
然后执行ON.SQL即可。
SQL>?@ON.SQL
当然,授权和创建同义词也可以快速进行,如:
SQL>?SELECT?'GRANT?SELECT?ON?'||TNAME||'?TO?用户名;'?FROM?TAB;
SQL>?SELECT?'CREATE?SYNONYM?'||TNAME||'?FOR?用户名.'||TNAME||';'?FROM?TAB;

抱歉!评论已关闭.