顯示具有 sqlplus 標籤的文章。 顯示所有文章
顯示具有 sqlplus 標籤的文章。 顯示所有文章

星期五, 5月 04, 2012

[Script] unload Oracle table data 到文字檔(flat file)的方法

sqlplus "/ as sysdba"<< EOF
set heading off
set lines 1000
set pagesize 0
set termout off
set trimspool on
set linesize 9999    
set term off
set feedback off
spool /mnt/table_name.csv
set colsep ","
--以下為想倒出的表格 , 可自行定義之
select * from TABLE where datetime2 between '${1}0101 00:00:00' and '${1}1231 23:59:59';
spool off
EOF


#把一個或一個以上的空白用一個空白代替(上面的linesize 9999 會造成許多空白output...故在這邊把多餘空白資料合併)
sed 's/\ \ */\ /g' /mnt/table_name.csv > /mnt/table_name.csv.ok

產生完以後 就可以使用database load tool 去搬資料囉!

後來發現sql loader會ignore 其他SQL> 的prompt 字串到discard file去
所以Oracle 還是很強大的!

星期三, 4月 25, 2012

[SQLPLUS Script] 快速修改Oracle 資料庫檔案所有路徑

以下在測試環境施作的
SOP大致如下
1. Shutdown DB instance
2. Cold copy all db files to other location
3.Modify parameter files
4.Startup mount , rename location of files

SQL>
spool rename.sql
set pagesize 0
set linesize 300
select 'alter database rename file '''||file_name||''' to ''/ora_test/oradata/orcl'||substr(file_name,21)||''';' from
(select file_name from dba_data_files
union
select file_name from dba_temp_files
union
select member as file_name from v$logfile) fpath;
spool off

alter database rename file '/oracle/oradata/orcl/cwmlite01.dbf' to '/ora_test/oradata/orcl/cwmlite01.dbf';
alter database rename file '/oracle/oradata/orcl/drsys01.dbf' to '/ora_test/oradata/orcl/drsys01.dbf';
alter database rename file '/oracle/oradata/orcl/example01.dbf' to '/ora_test/oradata/orcl/example01.dbf';
alter database rename file '/oracle/oradata/orcl/indx01.dbf' to '/ora_test/oradata/orcl/indx01.dbf';
alter database rename file '/oracle/oradata/orcl/odm01.dbf' to '/ora_test/oradata/orcl/odm01.dbf';
alter database rename file '/oracle/oradata/orcl/redo01.log' to '/ora_test/oradata/orcl/redo01.log';
alter database rename file '/oracle/oradata/orcl/redo02.log' to '/ora_test/oradata/orcl/redo02.log';
alter database rename file '/oracle/oradata/orcl/redo03.log' to '/ora_test/oradata/orcl/redo03.log';
alter database rename file '/oracle/oradata/orcl/system01.dbf' to '/ora_test/oradata/orcl/system01.dbf';
alter database rename file '/oracle/oradata/orcl/temp01.dbf' to '/ora_test/oradata/orcl/temp01.dbf';
alter database rename file '/oracle/oradata/orcl/tools01.dbf' to '/ora_test/oradata/orcl/tools01.dbf';
alter database rename file '/oracle/oradata/orcl/undotbs01.dbf' to '/ora_test/oradata/orcl/undotbs01.dbf';
alter database rename file '/oracle/oradata/orcl/users01.dbf' to '/ora_test/oradata/orcl/users01.dbf';
alter database rename file '/oracle/oradata/orcl/xdb01.dbf' to '/ora_test/oradata/orcl/xdb01.dbf';

SQL> create pfile='/tmp/pfile.ora' from spfile;

File created.

SQL>shutdown immediate;

vi /tmp/pfile.ora  ,
#修改control file 路徑
/oracle/oradata/ 修改為 /ora_test/oradata
#如果也要修改log 路徑 從 /oracle/admin 修改成 /ora_test/admin 的話, 也記得 
/oracle/admin/ 修改為 /ora_test/admin

-bash-3.00$ sqlplus "/ as sysdba"

SQL*Plus: Release 9.2.0.8.0 - Production on Wed Apr 25 11:00:32 2012

Copyright (c) 1982, 2002, Oracle Corporation.  All rights reserved.

Connected to an idle instance.

SQL>  create spfile from pfile='/tmp/pfile.ora';

File created.

SQL> exit
Disconnected

SQL> startup mount;
SQL>
spool rename.log
start rename.sql
spool off
SQL> alter database open;

Database altered.

#temp tablespace 需另外處理
SQL> select file_name from dba_temp_files
FILE_NAME
--------------------------------------------------------------------------------
/oracle/oradata/orcl/temp01.dbf

SQL>

SQL> drop tablespace temp ;
drop tablespace temp
*
ERROR at line 1:
ORA-12906: cannot drop default temporary tablespace


CREATE TEMPORARY TABLESPACE TEMP2
TEMPFILE '/ora_test/oradata/orcl/temp01.dbf' SIZE 128M AUTOEXTEND ON NEXT 32M MAXSIZE 4096M
EXTENT MANAGEMENT LOCAL UNIFORM SIZE 1024K
SEGMENT SPACE MANAGEMENT MANUAL;
/
Tablespace created.

SQL>
 ALTER DATABASE DEFAULT TEMPORARY TABLESPACE temp2;

Database altered.

SQL>
 drop tablespace temp including contents and datafiles;
Tablespace dropped.

SQL>
CREATE TEMPORARY TABLESPACE TEMP
TEMPFILE '/ora_test/oradata/orcl/temp001.dbf' SIZE 128M AUTOEXTEND ON NEXT 32M MAXSIZE 4096M
EXTENT MANAGEMENT LOCAL UNIFORM SIZE 1024K
SEGMENT SPACE MANAGEMENT MANUAL;
/
ALTER DATABASE DEFAULT TEMPORARY TABLESPACE temp;
drop tablespace temp2 including contents and datafiles;

星期四, 12月 01, 2011

查詢 Oracle 會使用到的所有檔案(control file , datafile , logfile)


select name from v$controlfile
union all
select name from v$datafile
union all
select member from v$logfile;

--
如果重建controlfile , 也需收集datafile 與 redo 的路徑位置

日期常用函數 sysdate

日期常用函數 sysdate
--

http://blog.blueshop.com.tw/pili9141/articles/52486.aspx

 SYSDATE
 ◎ 可得到目前系統的時間

   ex.
     select sysdate from dual;

     sysdate
     ----------
     20-SEP-07

 常用之日期格式

 日期格式                 說明
 ------------------------------------------------------------------------
 YYYY/MM/DD          -- 年/月/日
 YYYY                      -- 年(4位)
 YYYY                      -- 年(4位)
 YYY                        -- 年(3位)
 YY                         -- 年(2位)
 MM                        -- 月份
 DD                        -- 日期
 D                          -- 星期
                             -- 星期日 = 1  星期一 = 2 星期二 = 3
                             -- 星期三 = 4  星期四 = 5 星期五 = 6 星期六 = 7

 DDD                      -- 一年之第幾天
 WW                      -- 一年之第幾週
 W                         -- 一月之第幾週
 YYYY/MM/DD HH24:MI:SS   -- 年/月/日 時(24小時制):分:秒
 YYYY/MM/DD HH:MI:SS     -- 年/月/日 時(非24小時制):分:秒
 J                           -- Julian day,Bc 4712/01/01 為1
 RR/MM/DD            -- 公元2000問題
             -- 00-49 = 下世紀;50-99 = 本世紀
 ex.
 select to_char(sysdate,'YYYY/MM/DD') FROM DUAL;             -- 2007/09/20
 select to_char(sysdate,'YYYY') FROM DUAL;                   -- 2007
 select to_char(sysdate,'YYY') FROM DUAL;                    -- 007
 select to_char(sysdate,'YY') FROM DUAL;                     -- 07
 select to_char(sysdate,'MM') FROM DUAL;                     -- 09
 select to_char(sysdate,'DD') FROM DUAL;                     -- 20
 select to_char(sysdate,'D') FROM DUAL;                      -- 5
 select to_char(sysdate,'DDD') FROM DUAL;                    -- 263
 select to_char(sysdate,'WW') FROM DUAL;                     -- 38
 select to_char(sysdate,'W') FROM DUAL;                      -- 3
 select to_char(sysdate,'YYYY/MM/DD HH24:MI:SS') FROM DUAL;  -- 2007/09/20 15:24:13
 select to_char(sysdate,'YYYY/MM/DD HH:MI:SS') FROM DUAL;    -- 2007/09/20 03:25:23
 select to_char(sysdate,'J') FROM DUAL;                      -- 2454364
 select to_char(sysdate,'RR/MM/DD') FROM DUAL;               -- 07/09/20

LinkWithin-相關文件

Related Posts Plugin for WordPress, Blogger...