windows上存在32bit的限制,如AIX、HP UNIX 等有明确的64BIT OS and ORACLE的版本,32bit oracle可以装在64bit os 上,64 bit oracle不能装在32 bit OS上
oracle是64bit or 32 bit,32bit 通常 SGA有 1.7G 的限制(某些OS的处理或者WINDOWS上有特定设定可以支持到2G以上甚至达到3.7G
如何查出前台正在发出的sql语句: select user_name,sql_text from v$open_cursor where sid in (select sid from (select sid,serial#,username,program from v$session where status='ACTIVE'));
为这个表空间增加一个数据文件: alter tablespace 表空间名 add datafile '/u1/oradata/userdata_002.ora' size 50m;
重新调整数据文件的大小: alter database datafile '/u1/oradata/userdata_001.ora' resize 50M; 表: select * from cat; select * from tab; select table_name from user_tables; 视图: select text from user_views where view_name=upper('&view_name'); 索引: select index_name,table_owner,table_name,tablespace_name,status from user_indexes order by table_name; 触发器: 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;
看文件名,读次数,写次数,读时间,写时间 select df.name ,fs.phyrds ,fs.phywrts ,(fs.readtim/decode(fs.phyrds,0,-1,fs.phyrds)) ,(fs.writetim/decode(fs.phywrts,0,-1,fs.phywrts)) from v$datafile df,v$filestat fs where df.file#=fs.file# order by df.name;
查询锁表用户 SELECT OBJECT_ID,SESSION_ID,SERIAL#,ORACLE_USENAME,OS_USER_NAME,S_PROCESS FROM V$LOCKED_OBJECT 1,V$SESSION S WHERE 1.SESSION_ID=S.SID; ------------------------------------------------------------------------ 然后在目录/oracle_backup/bin/下写一个类似下面的shell文件scott_select.sh su - oracle -c "sqlplus -s spool /oracle_backup/log/scott_select.txt; @/oracle_backup/bin/scott_select.sql; spool off; exit; 说明: spool语句把scott_select.sql语句的执行结果输出到/oracle_backup/log/scott_select.txt文件 @符号是执行/oracle_backup/bin/scott_select.sql文件 在要执行的*.sql文件里可以存放DML、DDL等多条SQL语句。 ------------------------------------------------------------------------- 如何查看数据文件所在的路径? SQL> col file_name format a50 SQL> select tablespace_name,file_id,bytes/1024/1024,file_name from dba_data_files order by file_id; ------------------------------------------------------------------------- 查看数据文件是否自动扩展 SQL> col FILE_NAME format a40 SQL> col TABLESPACE_NAME format a20 SQL> select file_id,file_name,tablespace_name,autoextensible from dba_data_files order by file_id; ------------------------------------------------------------------------- 查出前台正在发出的sql语句 select user_name,sql_text from v$open_cursor where sid in (select sid from(select sid,serial#,username,program from v$session where status='ACTIVE')); *************** 子查询 select sid,serial#,username,program from v$session where status='ACTIVE' 查出的是不活动的session的sid。 ------------------------------------------------------------------------- (1)关闭数据库
dbshut 的执行文件位置在$ORACLE_HOME/bin,利用这个执行文件可以把数据库关闭。
su -oracle -c "dbshut"
(2)进行文件的复制,请把datafile、control file和redo log file
复制到另一个目录。
cp -r 数据库文件 目录
(3)当复制完成之后,把数据库打开
su -oracle -c "dbstart"
联机备份方式
------------------------------------------------------------------------- [09.05]:如何捕捉运行很久的SQL?
column username format a12 column opname format a16 column progress format a8
select username,sid,opname, round(sofar*100 / totalwork,0) || '%' as progress, time_remaining,sql_text from v$session_longops , v$sql where time_remaining <> 0 and sql_address = address and sql_hash_value = hash_value /
[09.04]:INDEX NOLOGGING的误解
有朋友提到说ARCHIVELOG太多了,想把索引改成NOLOGGING的,意思是少产生些LOG,其实这是一种误解,索引的LOGGING是针对建索引来说的,对于一个正常使用的索引LOGGING并没有什么意义,也不会产生LOG。
[09.03]:DBMS_OUTPUT缓存溢出?
在使用DBMS_OUTPUT输出时,有时会遇到这样的错误:
ORA-20000: ORU-10027: buffer overflow, limit of 2000 bytes
我们可以通过dbms_output.enable(20000)设置一个更大的缓存。
[09.02]:如何让SQLLDR跳过某列?
使用关键字FILLER,如:
Load data INFILE 'file_name.txt' BADFILE 'file_name.bad' DISCARDFILE 'file_name.dsc' DISCARDMAX 2000
truncate into TABLE table_name fields terminated by ',' optionally enclosed by '"' trailing nullcols (column_a DATATYPE, ANY_NAME FILLER DATATYPE, column_c DATATYPE )
[09.01]:RMAN-20242诊断过程?
RMAN-20242: Specification does not Match any Archivelog in the Recovery Catalog的处理
有时候我们备份时,会出现这样错误,如果确认archivelog都存在,没有其它问题,则可能是因为我们写的格式不对,如下面的例子:
初始备份脚本:
RMAN> run { 2> allocate channel c1 type disk; 3> backup 4> archivelog like 'E:\oracle\oradata\prod\archive%'; 5> }
报错信息:
RMAN-03002: failure during compilation of command RMAN-03013: command type: backup RMAN-06004: ORACLE error from recovery catalog database: RMAN-20242: specificati on does not match any archivelog in the recovery catalog
诊断过程:
SQL> select * from v$archived_log;
RECID STAMP ---------- ---------- NAME -------------------------------------------------------------------------------- THREAD# SEQUENCE# RESETLOGS_CHANGE# RESETLOGS FIRST_CHANGE# FIRST_TIM ---------- ---------- ----------------- --------- ------------- --------- NEXT_CHANGE# NEXT_TIME BLOCKS BLOCK_SIZE CREA REGI STA ARC DEL COMPLETIO ------------ --------- ---------- ---------- ---- ---- --- --- --- --------- 1 419970034 E:\ORACLE\ORADATA\PROD\ARCHIVE\PRODT001S01524.ARC 1 1524 1 21-JAN-01 599954 25-JAN-01 600067 25-JAN-01 103 512 FGRD FGRD NO YES YES 25-JAN-01
我们发现文件名是大写的,现在将脚本改成:
RMAN> run { 2> allocate channel c1 type disk; 3> backup 4> archivelog like 'E:\ORACLE\ORADATA\PROD\ARCHIVE\PROD%' 5> delete input; 6> release channel c1; 7> }
就可以顺利完成了。
[08.29]:RMAN-06089故障处理?
有时候我们在做archive log备份的时候可能会遇到下面的错误:
RMAN-03002: failure during compilation of command RMAN-03013: command type: backup RMAN-06089: archived log /arch_log1/arch_1_157351.arc not found or out of sync with catalog
从字面上看,是说这个archive文件没有被发现,但事实上,我们的archive文件确实存在。
一般来说,出现这样错误的原因是因为archive log被手工移动或修改过,此时RMAN就不认识它了,而不是它真正的不存在。比如,我前面写的一篇文章,说如何处理归档日志目录满了的问题,我们需要移走没有备份的归档日志,此后,当我们再将这些归档日志复制回来,继续备份时,通常就会出现这样的错误。
其实很简单,RMAN不就是不认它们了嘛,我们可以在RMAN中手工执行“Change Archivelog All Crosscheck;” 命令,明确通知RMAN不要进行检查和确认,这样就OK了。
[08.28]:如何快速下载oracle补丁?
我们首先在Metalink中查到相应补丁的信息,一般在http下载页面可以发现FTP的下载地址:
然后我们可以用命令方式先进入站点看看,你会发现跟目录下什么都没有:
ftp> ls 200 PORT command OK. 150 Opening data connection for file listing. 226-Listing complete. Data connection has been closed. 226-It is the policy of this server to deny all 226-requests to list from the root directory. 226-Only directories with names which match 226 bug numbers exist and there are too many to be listed. ftp> cd 3095277 --这是9204的补丁号 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_HP64.zip p3095277_9204_HPUX-IA64.zip p3095277_9204_LINUX.zip p3095277_9204_SOLARIS.zip p3095277_9204_SOLARIS64.zip p3095277_9204_TRU64.zip p3095277_9204_WINNT.zip 226 Listing complete. Data connection has been closed. ftp: 237 bytes received in 0.02Seconds 11.85Kbytes/sec. ftp>
好了,现在我们知道了具体补丁的地址,如:p3095277_9204_AIX64-5L.zip的ftp下载地址为:
知道了这个信息,我们就可以用flashget或网络蚂蚁进行下载了。需要输入的认证用户名和密码就是你metalink的用户名与密码。
[08.27]:如何生成带日期的文件名?
在UNIX上,使用`date +%y%m%d` (`这个是键盘上~所在的那个键),例:
touch exp_table_name_`date +%y%m%d`.dmp
Windows上,使用%date:~12%,其中12是取日期,你可以改成其它你需要的数字。
原文:http://canyang.blog.ccidnet.com/blog-htm-itemid-108476-do-showone-type-blog-uid-38235.html |