Archive for the ‘Oracle’ Category

ORA-27101

星期三, 十二月 3rd, 2008

客户端报 “ORA-27101: shared memory realm does not exist SVR4 Error: 2: No such file or directory”。

查了半天,竟然是因为服务器上这次起Oracle用的路径和上次不一样。虽然是link到同一目录的,但由于和 lisnter 里配置的不一致,所以导致连不上。重新改过 ORACLE_HOME 之后解决。

顺便记一下启动Oracle的方法:

cd $ORACLE_HOME/bin

./sqlplus ‘/ as sysdba’

SQL>startup

SQL>quit

./lsnrctl start

一些关于 Oracle 的 Link

星期一, 十一月 24th, 2008

一些很好用的script: http://vsbabu.org/oracle/

关于 Oracle 的回收站

在Oracle 里访问Oracle:
计算机世界网-Oracle 异构服务实践

备份 Oracle

星期一, 十一月 24th, 2008
  1. 表单位
    1. 备份指定表
      exp icdmain/icd rows=y indexes=n compress=n buffer=65536 feedback=100000 file=exp_icdmain_table_yyyymmdd.dmp log=exp_icdmain_table_yyyymmdd.log tables=icdmain.commoninformation,icdmain.serviceinfo,icdmain.dealinfo
    2. 恢复所有的表
      imp icdmain/icd fromuser=icdmain touser=icdmain rows=y indexes=n commit=y buffer=65536 feedback=100000 ignore=y file=exp_icdmain_table_yyyymmdd.dmp log=imp_icdmain_table_yyyymmdd.log
    3. 恢复其中一部分表
      imp icdmain/icd fromuser=icdmain touser=icdmain rows=y indexes=n commit=y buffer=65536 feedback=100000 ignore=y file=exp_icdmain_table_yyyymmdd.dmp log=imp_icdmain_table_yyyymmdd.log tables=commoninformation,serviceinfo
  2. 用户单位
    1. 备份指定用户的所有对象
      exp icdmain/icd rows=y indexes=n compress=n buffer=65536 feedback=100000 owner=icdmain file=exp_icdmain_user_yyyymmdd.dmp log=exp_icdmain_user_yyyymmdd.log
    2. 恢复指定用户的所有对象
      imp icdmain/icd fromuser=icdmain touser=icdmain rows=y indexes=n commit=y buffer=65536 feedback=100000 ignore=y file=exp_icdmain_user_yyyymmdd.dmp log=imp_icdmain_user_yyyymmdd.log
    3. 恢复指定用户的的一部分表
      imp icdmain/icd fromuser=icdmain touser=icdmain rows=y indexes=n commit=y buffer=65536 feedback=100000 ignore=y file=exp_icdmain_user_yyyymmdd.dmp log=imp_icdmain_user_yyyymmdd.log tables=commoninformation,serviceinfo
  3. 整体备份
    1. 备份整个数据库
      exp system/manager rows=y indexes=n compress=n buffer=65536 feedback=100000 full=y inctype=complete file=exp_fulldb_yyyymmdd.dmp log=exp_fulldb_yyyymmdd.log
    2. 整个数据库的增量备份
      exp system/manager rows=y indexes=n compress=n buffer=65536 feedback=100000 full=y inctype=incremental file=exp_fulldb_zl_yyyymmdd.dmp log=exp_fulldb_zl_yyyymmdd.log
    3. 从整体备份恢复所有对象
      imp system/manager rows=y indexes=n commit=y buffer=65536 feedback=100000 ignore=y full=y file=exp_fulldb_yyyymmdd.dmp log=imp_fulldb_yyyymmdd.log
    4. 从增量备份恢复所有对象
      imp system/manager rows=y indexes=n commit=y buffer=65536 feedback=100000 ignore=y full=y inctype=restore file=exp_fulldb_zl_yyyymmdd.dmp log=imp_fulldb_zl_yyyymmdd.log

缩小 Oracle 表空间

星期一, 十一月 24th, 2008

———– maxshrink.sql ———————————-

SET verify off
COLUMN file_name format a50 word_wrapped
COLUMN smallest format 999,990 heading "Smallest|Size|Poss."
COLUMN currsize format 999,990 heading "Current|Size"
COLUMN savings  format 999,990 heading "Poss.|Savings"
break ON report
compute sum of savings ON report
 
COLUMN value new_val blksize
SELECT value FROM v$parameter WHERE name = 'db_block_size'
/
 
SELECT file_name,
       ceil( (nvl(hwm,1)*&&blksize)/1024/1024 ) smallest,
       ceil( blocks*&&blksize/1024/1024) currsize,
       ceil( blocks*&&blksize/1024/1024) -
       ceil( (nvl(hwm,1)*&&blksize)/1024/1024 ) savings
FROM dba_data_files a,
     ( SELECT file_id, max(block_id+blocks-1) hwm
         FROM dba_extents
        GROUP BY file_id ) b
WHERE a.file_id = b.file_id(+)
/
 
COLUMN cmd format a75 word_wrapped
 
SELECT 'alter database datafile '''||file_name||''' resize ' ||
       ceil( (nvl(hwm,1)*&&blksize)/1024/1024 )  || 'm;' cmd
FROM dba_data_files a,
     ( SELECT file_id, max(block_id+blocks-1) hwm
         FROM dba_extents
        GROUP BY file_id ) b
WHERE a.file_id = b.file_id(+)
  AND ceil( blocks*&&blksize/1024/1024) -
      ceil( (nvl(hwm,1)*&&blksize)/1024/1024 ) > 0
/

转移 Oracle 的表空间

星期一, 十一月 24th, 2008

1.将表空间置于只读

只读状态可以使数据仍然可为用户访问.

ALTER tablespace tablespace_name READ only;

2.物理拷贝文件

3.将表空间offline

ALTER tablespace tablespace_name offline;

4.rename数据文件

ALTER DATABASE RENAME file 'old_dir_file' TO 'new_dir_file';

5.将表空间联机

ALTER tablespace tablespace_name online;

6.将表空间置于read write模式

ALTER tablespace tablespace_name READ WRITE;

转移 Oracle 的TEMP表空间

星期一, 十一月 24th, 2008
CREATE tablespace TEMP2
datafile '/data1/ora9data/temp2_01.dbf' 
size 100k TEMPORARY;

Tablespace created.

ALTER DATABASE DEFAULT TEMPORARY tablespace TEMP2;

Database altered.

DROP tablespace temp including contents AND datafiles;

Tablespace dropped.