Chinaunix首页 | 论坛 | 博客
  • 博客访问: 103232951
  • 博文数量: 19283
  • 博客积分: 9968
  • 博客等级: 上将
  • 技术积分: 196062
  • 用 户 组: 普通用户
  • 注册时间: 2007-02-07 14:28
文章分类

全部博文(19283)

文章存档

2011年(1)

2009年(125)

2008年(19094)

2007年(63)

分类: Oracle

2008-05-23 22:18:27

 来源: 作者:E剑  

Q]怎么知道那些表没有建立主键  

  [A]一般的情况下,表的主键是必要的,没有主键的表可以说是不符合设计规范的。  

  SELECT table_name

  FROM User_tables t

  WHERE NOT EXISTS(SELECT table_name

  FROM User_constraints c

  WHERE constraint_type = 'P'

  AND t.table_name=c.table_name)  

  其它相关数据字典解释  

  user_tables 表

  user_tab_columns 表的列

  user_constraints 约束

  user_cons_columns 约束与列的关系

  user_indexes 索引

  user_ind_columns 索引与列的关系

  

  [Q]dbms_output提示缓冲区不够,怎么增加

  

  [A]dbms_output.enable(20000);

  另外,如果dbms_output的信息不能显示,需要设置

  set serveroutput on

  

  [Q]怎么样修改表的列名

  

  [A]9i以上版本可以采用rname命令

  

  ALTER TABLE UserName.TabName

  RENAME COLUMN SourceColumn TO DestColumn

  

  9i以下版本可以采用create table …… as select * from SourceTable的方式。

  

  另外,8i以上可以支持删除列了

  

  ALTER TABLE UserName.TabName

  SET UNUSED (ColumnName) CASCADE CONSTRAINTS

  ALTER TABLE UserName.TabName

  DROP (ColumnName) CASCADE CONSTRAINTS

  

  [Q]怎么样给sqlplus安装帮助

  

  [A]SQLPLUS的帮助必须手工安装,shell脚本为 $ORACLE_HOME/bin/helpins

  

  在安装之前,必须先设置SYSTEM_PASS环境变量,如:

  

   $ setenv SYSTEM_PASS SYSTEM/MANAGER

   $ helpins

  

  如果不设置该环境变量,将在运行脚本的时候提示输入环境变量

  

  当然,除了shell脚本,还可以利用sql脚本安装,那就不用设置环境变量了,但是,我们必须以system登录。

  

   $ sqlplus system/manager

  SQL> @?/sqlplus/admin/help/helpbld.sql helpus.sql

  

  安装之后,你就可以象如下的使用帮助了

  SQL> help index

  

  [Q]怎么样快速下载Oracle补丁

  

  [A]我们先获得下载服务器地址,在http页面上有ftp://updates.oracle.com

  

  然后用ftp登录,用户名与密码是metalink的用户名与密码

  

  如我们知道了补丁号3095277 (9204的补丁集),则

  

  ftp> cd 3095277

  250 Changed directory OK.

  ftp> ls

  200 PORT command OK.

  150 Opening data connection for file listing.

  p3095277_9204_AIX64-5L.zip

  p3095277_9204_AIX64.zip

  ……

  p3095277_9204_WINNT.zip

  226 Listing complete. Data connection has been closed.

  ftp: 208 bytes received in 0.02Seconds 13.00Kbytes/sec.

  ftp>

  

  知道了这个信息,我们用用flashget,蚂蚁就可以下载了。

  

  添加如下连接

  

  ftp://updates.oracle.com/3095277/p3...04_AIX64-5L.zip

  

  或替换后面的部分为所需要的内容

  

  注意,如果是flashget,网络蚂蚁请输入认证用户名及密码,就是你的metalink的用户名与密码!

  

  [Q]如何移动数据文件

  

  [A]1、关闭数据库,利用os拷贝

  

  a.shutdown immediate关闭数据库

  

  b.在os下拷贝数据文件到新的地点

  

  c.Startup mount 启动到mount下

  

  d.Alter database rename datafile '老文件' to '新文件';

  

  e.Alter database open; 打开数据库

  

  2、利用Rman联机操作

  

  RMAN> sql "alter database datafile ''file name'' offline";

  RMAN> run {

  2> copy datafile 'old file location'

  3> to 'new file location';

  4> switch datafile ' old file location'

  5> to datafilecopy ' new file location';

  6> }

  

  RMAN> sql "alter database datafile ''file name'' online";

  

  说明:利用OS拷贝也可以联机操作,不关闭数据库,与rman的步骤一样,

  

  利用rman与利用os拷贝的原理一样,在rman中copy是拷贝数据文件,相当于OS的cp,而switch则相当于alter database rename,用来更新控制文件。

  

  [Q]如果管理联机日志组与成员

  

  [A]以下是常见操作,如果在OPA/RAC下注意线程号

  

  增加一个日志文件组

  Alter database add logfile [group n] '文件全名' size 10M;

  

  在这个组上增加一个成员

  Alter database add logfile member '文件全名' to group n;

  

  在这个组上删除一个日志成员

  Alter database drop logfile member '文件全名';

  

  删除整个日志组

  Alter database drop logfile group n;

  

  [Q]怎么样计算REDO BLOCK的大小

  

  [A]计算方法为(redo size + redo wastage) / redo blocks written + 16

  

  具体见如下例子

  

  SQL> select name ,value from v $sysstat where name like '%redo%';

  NAME VALUE

  ----------------------------------------------------------------

  redo synch writes 2

  redo synch time 0

  redo entries 76

  redo size 19412

  redo buffer allocation retries 0

  redo wastage 5884

  redo writer latching time 0

  redo writes 22

  redo blocks written 51

  redo write time 0

  redo log space requests 0

  redo log space wait time 0

  redo log switch interrupts 0

  redo ordering marks 0

  SQL> select (19412+5884)/51 + 16 '"Redo black(byte)" from dual;

  Redo black(byte)

  ------------------

  512

阅读(322) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~