2009年09月11日

Oracleの一次表領域を拡張する方法(2)

Oracleの一次表領域を拡張する方法には、

(1)一次表領域のデータファイルをリサイズ(alter database文)
(2)一次表領域にデータファイルを追加(alter tablespace文)

の2つの方法があります。この記事では、

(2)一次表領域にデータファイルを追加(alter tablespace文)

について記述します。まずは一次表領域の状態を確認します。
SQL> set linesize 120
SQL> set pagesize 50
SQL> column TABLESPACE_NAME format a20
SQL> column CONTENTS format a20
SQL> select TABLESPACE_NAME,CONTENTS from dba_tablespaces
2 where CONTENTS='TEMPORARY';

TABLESPACE_NAME CONTENTS
-------------------- --------------------
TEMP TEMPORARY

SQL> set linesize 120
SQL> set pagesize 50
SQL> column ファイル名 format a53
SQL> column 表領域名 format a8
SQL> column Size(MB) format 999,999
SQL> select FILE_NAME "ファイル名",TABLESPACE_NAME "表領域名",
2 BYTES/1024/1024 "Size(MB)" from dba_temp_files;

ファイル名 表領域名 Size(MB)
----------------------------------------------------- -------- --------
C:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\TEMP01.DBF TEMP 25

SQL>
一応、ファイルシステム上のデータファイルのサイズも確認しておきます。
SQL> host dir C:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\TEMP*.*
ドライブ C のボリューム ラベルは IDE-1-1 です
ボリューム シリアル番号は 6CC4-CA04 です

C:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL のディレクトリ

2009/09/11 03:04 26,222,592 TEMP01.DBF
1 個のファイル 26,222,592 バイト
0 個のディレクトリ 718,585,856 バイトの空き領域

SQL>
上記の結果から、現在、一次表領域は表領域「TEMP」であり、一次表領域「TEMP」はデータファイル「C:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\TEMP01.DBF」によって構成され、そのサイズは「25MB」であることが分かります。では、「alter tablespace」文を使って一次表領域「TEMP」に「25MB」のデータファイル「C:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\TEMP02.DBF」を追加し、一次表領域「TEMP」を「50MB」に拡張してみます。
SQL> alter tablespace TEMP add tempfile
2 'C:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\TEMP02.DBF'
3 size 25M;

表領域が変更されました。

SQL>
これでデータファイルが追加され、一次表領域「TEMP」のサイズも拡張されているはずです。確認してみましょう。
SQL> set linesize 120
SQL> set pagesize 50
SQL> column ファイル名 format a53
SQL> column 表領域名 format a8
SQL> column Size(MB) format 999,999
SQL> select FILE_NAME "ファイル名",TABLESPACE_NAME "表領域名",
2 BYTES/1024/1024 "Size(MB)" from dba_temp_files;

ファイル名 表領域名 Size(MB)
----------------------------------------------------- -------- --------
C:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\TEMP01.DBF TEMP 25
C:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\TEMP02.DBF TEMP 25

SQL> set linesize 120
SQL> set pagesize 50
SQL> column 表領域名 format a10
SQL> column Size(MB) format 999,999
SQL> select TABLESPACE_NAME "表領域名",
2 sum(BYTES)/1024/1024 "Size(MB)"
3 from dba_temp_files
4 group by TABLESPACE_NAME;

表領域名 Size(MB)
---------- --------
TEMP 50

SQL>
一応、ファイルシステム上のデータファイルのサイズも確認しておきます。
SQL> host dir C:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\TEMP*.*
ドライブ C のボリューム ラベルは IDE-1-1 です
ボリューム シリアル番号は ****-**** です

C:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL のディレクトリ

2009/09/11 03:04 26,222,592 TEMP01.DBF
2009/09/11 03:16 26,222,592 TEMP02.DBF
2 個のファイル 52,445,184 バイト
0 個のディレクトリ 692,363,264 バイトの空き領域

SQL>
25MB」のデータファイル「C:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\TEMP02.DBF」が追加され、一次表領域「TEMP」のサイズが「50MB」に拡張されました。

posted by 公爵 at 03:23| Comment(0) | TrackBack(0) | ORACLE | このブログの読者になる | 更新情報をチェックする

Oracleの一次表領域を拡張する方法(1)

Oracleの一次表領域を拡張する方法には、

(1)一次表領域のデータファイルをリサイズ(alter database文)
(2)一次表領域にデータファイルを追加(alter tablespace文)

の2つの方法があります。この記事では、

(1)一次表領域のデータファイルをリサイズ(alter database文)

について記述します。まずは一次表領域の状態を確認します。
SQL> set linesize 120
SQL> set pagesize 50
SQL> column TABLESPACE_NAME format a20
SQL> column CONTENTS format a20
SQL> select TABLESPACE_NAME,CONTENTS from dba_tablespaces
2 where CONTENTS='TEMPORARY';

TABLESPACE_NAME CONTENTS
-------------------- --------------------
TEMP TEMPORARY

SQL> set linesize 120
SQL> set pagesize 50
SQL> column ファイル名 format a53
SQL> column 表領域名 format a8
SQL> column Size(MB) format 999,999
SQL> select FILE_NAME "ファイル名",TABLESPACE_NAME "表領域名",
2 BYTES/1024/1024 "Size(MB)" from dba_temp_files;

ファイル名 表領域名 Size(MB)
----------------------------------------------------- -------- --------
C:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\TEMP01.DBF TEMP 20

SQL>
一応、ファイルシステム上のデータファイルのサイズも確認しておきます。
SQL> host dir C:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\TEMP*.*
ドライブ C のボリューム ラベルは IDE-1-1 です
ボリューム シリアル番号は ****-**** です

C:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL のディレクトリ

2009/09/10 22:03 20,979,712 TEMP01.DBF
1 個のファイル 20,979,712 バイト
0 個のディレクトリ 727,232,512 バイトの空き領域

SQL>
上記の結果から、現在、一次表領域は表領域「TEMP」であり、一次表領域「TEMP」はデータファイル「C:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\TEMP01.DBF」によって構成され、そのサイズは「20MB」であることが分かります。では、「alter database」文を使ってデータファイル「C:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\TEMP01.DBF」のサイズを「25MB」にリサイズ(拡張)して、一次表領域「TEMP」を「25MB」に拡張してみます。
SQL> alter database tempfile
2 'C:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\TEMP01.DBF'
3 resize 25M;

データベースが変更されました。

SQL>
これでデータファイルのサイズが「25MB」にリサイズ(拡張)され、一次表領域「TEMP」のサイズも拡張されているはずです。確認してみましょう。
SQL> set linesize 120
SQL> set pagesize 50
SQL> column ファイル名 format a53
SQL> column 表領域名 format a8
SQL> column Size(MB) format 999,999
SQL> select FILE_NAME "ファイル名",TABLESPACE_NAME "表領域名",
2 BYTES/1024/1024 "Size(MB)" from dba_temp_files;

ファイル名 表領域名 Size(MB)
----------------------------------------------------- -------- --------
C:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\TEMP01.DBF TEMP 25

SQL>
一応、ファイルシステム上のデータファイルのサイズも確認しておきます。
SQL> host dir C:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\TEMP*.*
ドライブ C のボリューム ラベルは IDE-1-1 です
ボリューム シリアル番号は ****-**** です

C:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL のディレクトリ

2009/09/11 03:04 26,222,592 TEMP01.DBF
1 個のファイル 26,222,592 バイト
0 個のディレクトリ 720,486,400 バイトの空き領域

SQL>
データファイル「C:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\TEMP01.DBF」のサイズが「25MB」にリサイズ(拡張)され、一次表領域「TEMP」のサイズが「25MB」に拡張されました。

posted by 公爵 at 03:10| Comment(0) | TrackBack(0) | ORACLE | このブログの読者になる | 更新情報をチェックする

Oracleの表領域を拡張する方法(2)

Oracleの表領域を拡張する方法には、

(1)表領域のデータファイルをリサイズ(alter database文)
(2)表領域にデータファイルを追加(alter tablespace文)

の2つの方法があります。この記事では、

(2)表領域にデータファイルを追加(alter tablespace文)

について記述します。まずは表領域の状態を確認します。
SQL> set linesize 120
SQL> set pagesize 50
SQL> column ファイル名 format a53
SQL> column 表領域名 format a8
SQL> column Size(MB) format 999,999
SQL> select FILE_NAME "ファイル名",TABLESPACE_NAME "表領域名",
2 BYTES/1024/1024 "Size(MB)" from dba_data_files;

ファイル名 表領域名 Size(MB)
----------------------------------------------------- -------- --------
C:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\USERS01.DBF USERS 10
C:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\SYSAUX01.DBF SYSAUX 290
C:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\UNDOTBS01.DBF UNDOTBS1 35
C:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\SYSTEM01.DBF SYSTEM 490
C:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\EXAMPLE01.DBF EXAMPLE 100

SQL>
一応、ファイルシステム上のデータファイルも確認しておきます。
SQL> host dir C:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL
ドライブ C のボリューム ラベルは IDE-1-1 です
ボリューム シリアル番号は ****-**** です

C:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL のディレクトリ

2009/04/29 15:40 <DIR> .
2009/04/29 15:40 <DIR> ..
2009/09/10 11:50 7,061,504 CONTROL01.CTL
2009/09/10 11:50 7,061,504 CONTROL02.CTL
2009/09/10 11:50 7,061,504 CONTROL03.CTL
2009/09/10 03:08 104,865,792 EXAMPLE01.DBF
2009/09/10 03:08 33,554,944 REDO01.LOG
2009/09/10 03:08 33,554,944 REDO02.LOG
2009/09/10 03:08 33,554,944 REDO03.LOG
2009/09/10 22:00 304,095,232 SYSAUX01.DBF
2009/09/10 03:08 513,810,432 SYSTEM01.DBF
2009/09/10 22:03 20,979,712 TEMP01.DBF
2009/09/10 03:08 36,708,352 UNDOTBS01.DBF
2009/09/11 01:45 10,493,952 USERS01.DBF
12 個のファイル 1,112,802,816 バイト
2 個のディレクトリ 723,406,848 バイトの空き領域

SQL>
上記の結果から、現在、表領域「USERS」はデータファイル「C:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\USERS01.DBF」によって構成され、そのサイズは「10MB」であることが分かります。では、「alter tablespace」文を使って表領域「USERS」に「10MB」のデータファイル「C:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\USERS02.DBF」を追加し、表領域「USERS」を「20MB」に拡張してみます。
SQL> alter tablespace USERS add datafile
2 'C:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\USERS02.DBF'
3 size 10M;

表領域が変更されました。

SQL>
これでデータファイルが追加され、表領域「USERS」のサイズも拡張されているはずです。確認してみましょう。
SQL> set linesize 120
SQL> set pagesize 50
SQL> column ファイル名 format a53
SQL> column 表領域名 format a8
SQL> column Size(MB) format 999,999
SQL> select FILE_NAME "ファイル名",TABLESPACE_NAME "表領域名",
2 BYTES/1024/1024 "Size(MB)" from dba_data_files
3 order by 表領域名;

ファイル名 表領域名 Size(MB)
----------------------------------------------------- -------- --------
C:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\EXAMPLE01.DBF EXAMPLE 100
C:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\SYSAUX01.DBF SYSAUX 290
C:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\SYSTEM01.DBF SYSTEM 490
C:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\UNDOTBS01.DBF UNDOTBS1 35
C:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\USERS01.DBF USERS 10
C:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\USERS02.DBF USERS 10

6行が選択されました。

SQL> set linesize 120
SQL> set pagesize 50
SQL> column 表領域名 format a10
SQL> column Size(MB) format 999,999
SQL> select TABLESPACE_NAME "表領域名",
2 sum(BYTES)/1024/1024 "Size(MB)"
3 from dba_data_files
4 group by TABLESPACE_NAME;

表領域名 Size(MB)
---------- --------
SYSAUX 290
UNDOTBS1 35
USERS 20
SYSTEM 490
EXAMPLE 100

SQL>
一応、ファイルシステム上のデータファイルも確認しておきます。
SQL> host dir C:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL
ドライブ C のボリューム ラベルは IDE-1-1 です
ボリューム シリアル番号は ****-**** です

C:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL のディレクトリ

2009/04/29 15:40 <DIR> .
2009/04/29 15:40 <DIR> ..
2009/09/10 11:50 7,061,504 CONTROL01.CTL
2009/09/10 11:50 7,061,504 CONTROL02.CTL
2009/09/10 11:50 7,061,504 CONTROL03.CTL
2009/09/10 03:08 104,865,792 EXAMPLE01.DBF
2009/09/10 03:08 33,554,944 REDO01.LOG
2009/09/10 03:08 33,554,944 REDO02.LOG
2009/09/10 03:08 33,554,944 REDO03.LOG
2009/09/10 22:00 304,095,232 SYSAUX01.DBF
2009/09/10 03:08 513,810,432 SYSTEM01.DBF
2009/09/10 22:03 20,979,712 TEMP01.DBF
2009/09/10 03:08 36,708,352 UNDOTBS01.DBF
2009/09/11 01:45 10,493,952 USERS01.DBF
12 個のファイル 1,112,802,816 バイト
2 個のディレクトリ 723,443,712 バイトの空き領域

SQL>
10MB」のデータファイル「C:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\USERS02.DBF」が追加され、表領域「USERS」のサイズが「20MB」に拡張されました。

posted by 公爵 at 02:30| Comment(0) | TrackBack(0) | ORACLE | このブログの読者になる | 更新情報をチェックする

Oracleの表領域を拡張する方法(1)

Oracleの表領域を拡張する方法には、

(1)表領域のデータファイルをリサイズ(alter database文)
(2)表領域にデータファイルを追加(alter tablespace文)

の2つの方法があります。この記事では、

(1)表領域のデータファイルをリサイズ(alter database文)

について記述します。まずは表領域の状態を確認します。
SQL> set linesize 120
SQL> set pagesize 50
SQL> column ファイル名 format a53
SQL> column 表領域名 format a8
SQL> column Size(MB) format 999,999
SQL> select FILE_NAME "ファイル名",TABLESPACE_NAME "表領域名",
2 BYTES/1024/1024 "Size(MB)" from dba_data_files;

ファイル名 表領域名 Size(MB)
----------------------------------------------------- -------- --------
C:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\USERS01.DBF USERS 5
C:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\SYSAUX01.DBF SYSAUX 290
C:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\UNDOTBS01.DBF UNDOTBS1 35
C:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\SYSTEM01.DBF SYSTEM 490
C:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\EXAMPLE01.DBF EXAMPLE 100

SQL>
一応、ファイルシステム上のデータファイルのサイズも確認しておきます。
SQL> host dir C:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL
ドライブ C のボリューム ラベルは IDE-1-1 です
ボリューム シリアル番号は ****-**** です

C:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL のディレクトリ

2009/04/29 15:40 <DIR> .
2009/04/29 15:40 <DIR> ..
2009/09/10 11:50 7,061,504 CONTROL01.CTL
2009/09/10 11:50 7,061,504 CONTROL02.CTL
2009/09/10 11:50 7,061,504 CONTROL03.CTL
2009/09/10 03:08 104,865,792 EXAMPLE01.DBF
2009/09/10 03:08 33,554,944 REDO01.LOG
2009/09/10 03:08 33,554,944 REDO02.LOG
2009/09/10 03:08 33,554,944 REDO03.LOG
2009/09/10 22:00 304,095,232 SYSAUX01.DBF
2009/09/10 03:08 513,810,432 SYSTEM01.DBF
2009/09/10 22:03 20,979,712 TEMP01.DBF
2009/09/10 03:08 36,708,352 UNDOTBS01.DBF
2009/09/10 03:08 5,251,072 USERS01.DBF
12 個のファイル 1,107,559,936 バイト
2 個のディレクトリ 731,873,280 バイトの空き領域

SQL>
上記の結果から、現在、表領域「USERS」はデータファイル「C:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\USERS01.DBF」によって構成され、そのサイズは「5MB」であることが分かります。では、「alter database」文を使ってデータファイル「C:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\USERS01.DBF」のサイズを「10MB」にリサイズ(拡張)して、表領域「USERS」を「10MB」に拡張してみます。
SQL> alter database datafile
2 'C:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\USERS01.DBF'
3 resize 10M;

データベースが変更されました。

SQL>
これでデータファイルのサイズが「10MB」にリサイズ(拡張)され、表領域「USERS」のサイズも拡張されているはずです。確認してみましょう。
SQL> set linesize 120
SQL> set pagesize 50
SQL> column ファイル名 format a53
SQL> column 表領域名 format a8
SQL> column Size(MB) format 999,999
SQL> select FILE_NAME "ファイル名",TABLESPACE_NAME "表領域名",
2 BYTES/1024/1024 "Size(MB)" from dba_data_files;

ファイル名 表領域名 Size(MB)
----------------------------------------------------- -------- --------
C:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\USERS01.DBF USERS 10
C:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\SYSAUX01.DBF SYSAUX 290
C:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\UNDOTBS01.DBF UNDOTBS1 35
C:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\SYSTEM01.DBF SYSTEM 490
C:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\EXAMPLE01.DBF EXAMPLE 100

SQL>
一応、ファイルシステム上のデータファイルのサイズも確認しておきます。
SQL> host dir C:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL
ドライブ C のボリューム ラベルは IDE-1-1 です
ボリューム シリアル番号は ****-**** です

C:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL のディレクトリ

2009/04/29 15:40 <DIR> .
2009/04/29 15:40 <DIR> ..
2009/09/10 11:50 7,061,504 CONTROL01.CTL
2009/09/10 11:50 7,061,504 CONTROL02.CTL
2009/09/10 11:50 7,061,504 CONTROL03.CTL
2009/09/10 03:08 104,865,792 EXAMPLE01.DBF
2009/09/10 03:08 33,554,944 REDO01.LOG
2009/09/10 03:08 33,554,944 REDO02.LOG
2009/09/10 03:08 33,554,944 REDO03.LOG
2009/09/10 22:00 304,095,232 SYSAUX01.DBF
2009/09/10 03:08 513,810,432 SYSTEM01.DBF
2009/09/10 22:03 20,979,712 TEMP01.DBF
2009/09/10 03:08 36,708,352 UNDOTBS01.DBF
2009/09/11 01:45 10,493,952 USERS01.DBF
12 個のファイル 1,112,802,816 バイト
2 個のディレクトリ 723,443,712 バイトの空き領域

SQL>
データファイル「C:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\USERS01.DBF」のサイズが「10MB」にリサイズ(拡張)され、表領域「USERS」のサイズが「10MB」に拡張されました。

posted by 公爵 at 02:24| Comment(0) | TrackBack(0) | ORACLE | このブログの読者になる | 更新情報をチェックする

2009年09月10日

SQL*PlusでOracleデータベースとの接続を切断する方法

SQL*PlusでOracleデータベースに接続している時に「exit」コマンドまたは「quit」コマンドを実行すると、Oracleデータベースとの接続を切断すると共に、SQL*Plusも終了してしまいます。
C:\temp>sqlplus /nolog

SQL*Plus: Release 10.2.0.1.0 - Production on 木 9月 10 02:26:37 2009

Copyright (c) 1982, 2005, Oracle. All rights reserved.

SQL> connect / as sysdba
接続されました。
SQL> exit
Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 - Production
With the Partitioning, OLAP and Data Mining optionsとの接続が切断されました。

C:\temp>
SQL*Plusを終了することなく、Oracleデータベースとの接続だけを切断したい場合は、「disconnect」コマンドを使います。以下に私の環境での実行例を示します(Oracle Database 10g Release 2 for Windows 32bit)。
C:\temp>sqlplus /nolog

SQL*Plus: Release 10.2.0.1.0 - Production on 火 9月 8 23:42:59 2009

Copyright (c) 1982, 2005, Oracle. All rights reserved.

SQL> connect / as sysdba
接続されました。
SQL> disconnect
Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 - Production
With the Partitioning, OLAP and Data Mining optionsとの接続が切断されました。
SQL>
SQL*Plusは起動したままOracleデータベースとの接続が切断されました。「disconnect」コマンドは「disconn」と省略しても実行可能です。
C:\temp>sqlplus /nolog

SQL*Plus: Release 10.2.0.1.0 - Production on 木 9月 10 02:31:12 2009

Copyright (c) 1982, 2005, Oracle. All rights reserved.

SQL> connect / as sysdba
接続されました。
SQL> disconn
Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 - Production
With the Partitioning, OLAP and Data Mining optionsとの接続が切断されました。
SQL>
また、「disconnect」コマンドでOracleデータベースとの接続を切断した後、再度Oracleデータベースに接続する場合は「connect」コマンドを使います。以下に実行例を示します。
C:\temp>sqlplus /nolog

SQL*Plus: Release 10.2.0.1.0 - Production on 木 9月 10 02:35:27 2009

Copyright (c) 1982, 2005, Oracle. All rights reserved.

SQL> connect / as sysdba
接続されました。
SQL> disconnect
Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 - Production
With the Partitioning, OLAP and Data Mining optionsとの接続が切断されました。
SQL> connect / as sysdba
接続されました。
SQL>
再度Oracleデータベースに接続されました。では、最後に、「disconnect」コマンドでOracleデータベースとの接続を切断して、「exit」コマンドまたは「quit」コマンドでSQL*Plusを終了します。
SQL> disconnect
Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 - Production
With the Partitioning, OLAP and Data Mining optionsとの接続が切断されました。
SQL> exit

C:\temp>
SQL*Plusが終了しました。

posted by 公爵 at 03:00| Comment(0) | TrackBack(0) | ORACLE | このブログの読者になる | 更新情報をチェックする

SQL*PlusのプロンプトからOracleデータベースに接続する方法

SQL*PlusをOracleデータベースに接続せずに起動した後、SQL*PlusのプロンプトからOracleデータベースに接続する場合は「connect」コマンドを使います。以下に私の環境での実行例を示します(Oracle Database 10g Release 2 for Windows 32bit)。
C:\temp>sqlplus /nolog

SQL*Plus: Release 10.2.0.1.0 - Production on 木 9月 10 01:49:57 2009

Copyright (c) 1982, 2005, Oracle. All rights reserved.

SQL> connect / as sysdba
接続されました。
SQL> show user
ユーザーは"SYS"です。
SQL> select name from v$database;

NAME
------------------
ORCL

SQL> select instance_name from v$instance;

INSTANCE_NAME
--------------------------------
orcl

SQL>
Oracleデータベースに接続されました。なお、「connect」コマンドは「conn」と省略しても実行可能です。以下に実行例を示します。
C:\temp>sqlplus /nolog

SQL*Plus: Release 10.2.0.1.0 - Production on 木 9月 10 02:09:20 2009

Copyright (c) 1982, 2005, Oracle. All rights reserved.

SQL> conn / as sysdba
接続されました。
SQL> show user
ユーザーは"SYS"です。
SQL> select name from v$database;

NAME
------------------
ORCL

SQL> select instance_name from v$instance;

INSTANCE_NAME
--------------------------------
orcl

SQL>
Oracleデータベースに接続されました。

posted by 公爵 at 02:47| Comment(0) | TrackBack(0) | ORACLE | このブログの読者になる | 更新情報をチェックする

Oracleデータベースに接続せずにSQL*Plusを起動する方法

通常、SQL*Plusを起動する時には、以下のようにデータベース接続に必要な文字列を付加してSQL*Plusの起動と同時にOracleデータベースに接続していると思います。
C:\temp>sqlplus / as sysdba

SQL*Plus: Release 10.2.0.1.0 - Production on 木 9月 10 01:48:52 2009

Copyright (c) 1982, 2005, Oracle. All rights reserved.



Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 - Production
With the Partitioning, OLAP and Data Mining options
に接続されました。
SQL> show user
ユーザーは"SYS"です。
SQL> select name from v$database;

NAME
------------------
ORCL

SQL> select instance_name from v$instance;

INSTANCE_NAME
--------------------------------
orcl

SQL>
確かにOracleデータベースに接続されております。しかし、Oracleデータベースに接続することなく、SQL*Plusのみ単独で起動することも出来ます。SQL*Plusを起動する時に「/nolog」オプションを付加して起動すると、Oracleデータベースに接続せずにSQL*Plusのみ起動することが出来ます。以下に私の環境での実行例を示します(Oracle Database 10g Release 2 for Windows 32bit)。
C:\temp>sqlplus /nolog

SQL*Plus: Release 10.2.0.1.0 - Production on 木 9月 10 01:49:57 2009

Copyright (c) 1982, 2005, Oracle. All rights reserved.

SQL> show user
ユーザーは""です。
SQL> select name from v$database;
SP2-0640: 接続されていません。
SQL> select instance_name from v$instance;
SP2-0640: 接続されていません。
SQL>
SQL*Plusは起動していますが、Oracleデータベースへの問い合わせに失敗しております。確かにデータベースに接続することなく、SQL*Plusのみ単独で起動しました。

posted by 公爵 at 02:41| Comment(0) | TrackBack(0) | ORACLE | このブログの読者になる | 更新情報をチェックする

2009年09月07日

OracleのSQL*PlusでSQLの実行結果をページ毎に一時停止して表示する方法

OracleのSQL*Plusなどで、select文を実行した時の実行結果を1ページ毎に一時停止して表示したい場合は、SQL*Plusのプロンプトから「set pause」コマンドを実行します。以下に私の環境での実行結果を示します。

1.select文を実行
SQL> set pagesize 10
SQL> column OWNER format a10
SQL> column TABLE_NAME format a25
SQL> column TABLESPACE_NAME format a10
SQL> select OWNER,TABLE_NAME,TABLESPACE_NAME from dba_tables
2 where OWNER='DBSNMP';

OWNER TABLE_NAME TABLESPACE
---------- ------------------------- ----------
DBSNMP MGMT_SNAPSHOT SYSAUX
DBSNMP MGMT_SNAPSHOT_SQL SYSAUX
DBSNMP MGMT_BASELINE SYSAUX
DBSNMP MGMT_BASELINE_SQL SYSAUX
DBSNMP MGMT_CAPTURE SYSAUX
DBSNMP MGMT_CAPTURE_SQL SYSAUX
DBSNMP MGMT_RESPONSE_CONFIG SYSAUX

OWNER TABLE_NAME TABLESPACE
---------- ------------------------- ----------
DBSNMP MGMT_LATEST SYSAUX
DBSNMP MGMT_LATEST_SQL SYSAUX
DBSNMP MGMT_HISTORY SYSAUX
DBSNMP MGMT_HISTORY_SQL SYSAUX
DBSNMP MGMT_BSLN_DATASOURCES SYSAUX
DBSNMP MGMT_BSLN_BASELINES SYSAUX
DBSNMP MGMT_BSLN_INTERVALS SYSAUX

OWNER TABLE_NAME TABLESPACE
---------- ------------------------- ----------
DBSNMP MGMT_BSLN_METRICS SYSAUX
DBSNMP MGMT_BSLN_STATISTICS SYSAUX
DBSNMP MGMT_BSLN_THRESHOLD_PARMS SYSAUX
DBSNMP MGMT_DB_SIZE_GTT
DBSNMP MGMT_DB_FILE_GTT
DBSNMP MGMT_BSLN_RAWDATA
DBSNMP MGMT_TEMPT_SQL

21行が選択されました。

SQL>
上記の場合、行頭で「set pagesize 10」を実行している通り、1ページは10行に設定されております。そのため実行結果は1ページ(10行)毎にヘッダー(タイトル行)が入っております。しかし現在は上記SQLを実行すると、ページの区切りに関係なく一気に全ての実行結果を表示します。

2.「set pause on」コマンドを実行
SQL> set pause on
SQL>
set pause on」コマンドを実行すると、1ページ毎、「set pagesize」コマンドで指定された1ページの行数毎に一時停止して実行結果を表示します。

3.select文を実行
SQL> set pause on
SQL> set pagesize 10
SQL> column OWNER format a10
SQL> column TABLE_NAME format a25
SQL> column TABLESPACE_NAME format a10
SQL> select OWNER,TABLE_NAME,TABLESPACE_NAME from dba_tables
2 where OWNER='DBSNMP';

ここで一旦表示が一時停止します。エンターキー(改行キー)を押下すると次のページを表示します。
OWNER TABLE_NAME TABLESPACE
---------- ------------------------- ----------
DBSNMP MGMT_SNAPSHOT SYSAUX
DBSNMP MGMT_SNAPSHOT_SQL SYSAUX
DBSNMP MGMT_BASELINE SYSAUX
DBSNMP MGMT_BASELINE_SQL SYSAUX
DBSNMP MGMT_CAPTURE SYSAUX
DBSNMP MGMT_CAPTURE_SQL SYSAUX
DBSNMP MGMT_RESPONSE_CONFIG SYSAUX

ここで一旦表示が一時停止します。エンターキー(改行キー)を押下すると次のページを表示します。
OWNER TABLE_NAME TABLESPACE
---------- ------------------------- ----------
DBSNMP MGMT_LATEST SYSAUX
DBSNMP MGMT_LATEST_SQL SYSAUX
DBSNMP MGMT_HISTORY SYSAUX
DBSNMP MGMT_HISTORY_SQL SYSAUX
DBSNMP MGMT_BSLN_DATASOURCES SYSAUX
DBSNMP MGMT_BSLN_BASELINES SYSAUX
DBSNMP MGMT_BSLN_INTERVALS SYSAUX

ここで一旦表示が一時停止します。エンターキー(改行キー)を押下すると次のページを表示します。
OWNER TABLE_NAME TABLESPACE
---------- ------------------------- ----------
DBSNMP MGMT_BSLN_METRICS SYSAUX
DBSNMP MGMT_BSLN_STATISTICS SYSAUX
DBSNMP MGMT_BSLN_THRESHOLD_PARMS SYSAUX
DBSNMP MGMT_DB_SIZE_GTT
DBSNMP MGMT_DB_FILE_GTT
DBSNMP MGMT_BSLN_RAWDATA
DBSNMP MGMT_TEMPT_SQL

21行が選択されました。

SQL>
このように、「set pause on」コマンドを実行すると、1ページ毎、「set pagesize 」コマンドで指定された1ページの行数毎に一時停止して実行結果を表示するようになります。

4.「set pause off」コマンドを実行
SQL> set pause off
SQL>
これでページ毎の一時停止表示が解除されます。

5.select文を実行
SQL> set pagesize 10
SQL> column OWNER format a10
SQL> column TABLE_NAME format a25
SQL> column TABLESPACE_NAME format a10
SQL> select OWNER,TABLE_NAME,TABLESPACE_NAME from dba_tables
2 where OWNER='DBSNMP';

OWNER TABLE_NAME TABLESPACE
---------- ------------------------- ----------
DBSNMP MGMT_SNAPSHOT SYSAUX
DBSNMP MGMT_SNAPSHOT_SQL SYSAUX
DBSNMP MGMT_BASELINE SYSAUX
DBSNMP MGMT_BASELINE_SQL SYSAUX
DBSNMP MGMT_CAPTURE SYSAUX
DBSNMP MGMT_CAPTURE_SQL SYSAUX
DBSNMP MGMT_RESPONSE_CONFIG SYSAUX

OWNER TABLE_NAME TABLESPACE
---------- ------------------------- ----------
DBSNMP MGMT_LATEST SYSAUX
DBSNMP MGMT_LATEST_SQL SYSAUX
DBSNMP MGMT_HISTORY SYSAUX
DBSNMP MGMT_HISTORY_SQL SYSAUX
DBSNMP MGMT_BSLN_DATASOURCES SYSAUX
DBSNMP MGMT_BSLN_BASELINES SYSAUX
DBSNMP MGMT_BSLN_INTERVALS SYSAUX

OWNER TABLE_NAME TABLESPACE
---------- ------------------------- ----------
DBSNMP MGMT_BSLN_METRICS SYSAUX
DBSNMP MGMT_BSLN_STATISTICS SYSAUX
DBSNMP MGMT_BSLN_THRESHOLD_PARMS SYSAUX
DBSNMP MGMT_DB_SIZE_GTT
DBSNMP MGMT_DB_FILE_GTT
DBSNMP MGMT_BSLN_RAWDATA
DBSNMP MGMT_TEMPT_SQL

21行が選択されました。

SQL>
最初と同じように実行結果がページ毎に一時停止することなく、一気に表示されるようになりました。

posted by 公爵 at 23:17| Comment(0) | TrackBack(0) | ORACLE | このブログの読者になる | 更新情報をチェックする

OracleのSQL*Plusで表示される1ページの行数を変更する方法

SQL*Plusなどでselect文を実行した時に表示される1ページの行数を変更したい場合は、SQL*Plusのプロンプトから「set pagesize」コマンドを実行します。以下に私の環境での実行結果を示します。

1.select文を実行
SQL> column OWNER format a10
SQL> column TABLE_NAME format a25
SQL> column TABLESPACE_NAME format a10
SQL> select OWNER,TABLE_NAME,TABLESPACE_NAME from dba_tables
2 where OWNER='DBSNMP';

OWNER TABLE_NAME TABLESPACE
---------- ------------------------- ----------
DBSNMP MGMT_SNAPSHOT SYSAUX
DBSNMP MGMT_SNAPSHOT_SQL SYSAUX
DBSNMP MGMT_BASELINE SYSAUX
DBSNMP MGMT_BASELINE_SQL SYSAUX
DBSNMP MGMT_CAPTURE SYSAUX
DBSNMP MGMT_CAPTURE_SQL SYSAUX
DBSNMP MGMT_RESPONSE_CONFIG SYSAUX

OWNER TABLE_NAME TABLESPACE
---------- ------------------------- ----------
DBSNMP MGMT_LATEST SYSAUX
DBSNMP MGMT_LATEST_SQL SYSAUX
DBSNMP MGMT_HISTORY SYSAUX
DBSNMP MGMT_HISTORY_SQL SYSAUX
DBSNMP MGMT_BSLN_DATASOURCES SYSAUX
DBSNMP MGMT_BSLN_BASELINES SYSAUX
DBSNMP MGMT_BSLN_INTERVALS SYSAUX

OWNER TABLE_NAME TABLESPACE
---------- ------------------------- ----------
DBSNMP MGMT_BSLN_METRICS SYSAUX
DBSNMP MGMT_BSLN_STATISTICS SYSAUX
DBSNMP MGMT_BSLN_THRESHOLD_PARMS SYSAUX
DBSNMP MGMT_DB_SIZE_GTT
DBSNMP MGMT_DB_FILE_GTT
DBSNMP MGMT_BSLN_RAWDATA
DBSNMP MGMT_TEMPT_SQL

21行が選択されました。

SQL>
上記の場合、選択した表やビューの列名(項目名)がヘッダー(タイトル行)として表示されておりますが、ヘッダー(タイトル行)から次のヘッダー(タイトル行)の直前の空白行までが1ページとなりますので、現在1ページの行数は10行に設定されているようです。

2.「set pagesize 24」コマンドを実行
SQL> set pagesize 24
SQL>
上記のselect文の結果を1ページに収めるために、1ページの行数を

ヘッダー(タイトル行)1行+ヘッダー(タイトル行)区切り線1行+select文の検索結果データ21行+末尾の空白行1行=24行

に設定しました。

3.select文を実行
SQL> column OWNER format a10
SQL> column TABLE_NAME format a25
SQL> column TABLESPACE_NAME format a10
SQL> select OWNER,TABLE_NAME,TABLESPACE_NAME from dba_tables
2 where OWNER='DBSNMP';

OWNER TABLE_NAME TABLESPACE
---------- ------------------------- ----------
DBSNMP MGMT_SNAPSHOT SYSAUX
DBSNMP MGMT_SNAPSHOT_SQL SYSAUX
DBSNMP MGMT_BASELINE SYSAUX
DBSNMP MGMT_BASELINE_SQL SYSAUX
DBSNMP MGMT_CAPTURE SYSAUX
DBSNMP MGMT_CAPTURE_SQL SYSAUX
DBSNMP MGMT_RESPONSE_CONFIG SYSAUX
DBSNMP MGMT_LATEST SYSAUX
DBSNMP MGMT_LATEST_SQL SYSAUX
DBSNMP MGMT_HISTORY SYSAUX
DBSNMP MGMT_HISTORY_SQL SYSAUX
DBSNMP MGMT_BSLN_DATASOURCES SYSAUX
DBSNMP MGMT_BSLN_BASELINES SYSAUX
DBSNMP MGMT_BSLN_INTERVALS SYSAUX
DBSNMP MGMT_BSLN_METRICS SYSAUX
DBSNMP MGMT_BSLN_STATISTICS SYSAUX
DBSNMP MGMT_BSLN_THRESHOLD_PARMS SYSAUX
DBSNMP MGMT_DB_SIZE_GTT
DBSNMP MGMT_DB_FILE_GTT
DBSNMP MGMT_BSLN_RAWDATA
DBSNMP MGMT_TEMPT_SQL

21行が選択されました。

SQL>
1ページの行数を24行に設定したので、select文の結果がちょうど1ページに収まりました。そのため、ヘッダー(タイトル行)が先頭の1行にしか表示されておりません。

4.「set pagesize 10」コマンドを実行
SQL> set pagesize 10
SQL>
1ページの行数を10行に設定してみました。

5.select文を実行
SQL> column OWNER format a10
SQL> column TABLE_NAME format a25
SQL> column TABLESPACE_NAME format a10
SQL> select OWNER,TABLE_NAME,TABLESPACE_NAME from dba_tables
2 where OWNER='DBSNMP';

OWNER TABLE_NAME TABLESPACE
---------- ------------------------- ----------
DBSNMP MGMT_SNAPSHOT SYSAUX
DBSNMP MGMT_SNAPSHOT_SQL SYSAUX
DBSNMP MGMT_BASELINE SYSAUX
DBSNMP MGMT_BASELINE_SQL SYSAUX
DBSNMP MGMT_CAPTURE SYSAUX
DBSNMP MGMT_CAPTURE_SQL SYSAUX
DBSNMP MGMT_RESPONSE_CONFIG SYSAUX

OWNER TABLE_NAME TABLESPACE
---------- ------------------------- ----------
DBSNMP MGMT_LATEST SYSAUX
DBSNMP MGMT_LATEST_SQL SYSAUX
DBSNMP MGMT_HISTORY SYSAUX
DBSNMP MGMT_HISTORY_SQL SYSAUX
DBSNMP MGMT_BSLN_DATASOURCES SYSAUX
DBSNMP MGMT_BSLN_BASELINES SYSAUX
DBSNMP MGMT_BSLN_INTERVALS SYSAUX

OWNER TABLE_NAME TABLESPACE
---------- ------------------------- ----------
DBSNMP MGMT_BSLN_METRICS SYSAUX
DBSNMP MGMT_BSLN_STATISTICS SYSAUX
DBSNMP MGMT_BSLN_THRESHOLD_PARMS SYSAUX
DBSNMP MGMT_DB_SIZE_GTT
DBSNMP MGMT_DB_FILE_GTT
DBSNMP MGMT_BSLN_RAWDATA
DBSNMP MGMT_TEMPT_SQL

21行が選択されました。

SQL>
最初と同じように1ページ10行に設定されました。そのため1ページ(10行)毎にヘッダー(タイトル行)が表示されております。

なお、「set pagesize」コマンドは、「set pages」と省略しても実行可能です。

posted by 公爵 at 22:42| Comment(0) | TrackBack(0) | ORACLE | このブログの読者になる | 更新情報をチェックする

OracleのSQL*Plusで表示される1行の文字数を変更する方法

SQL*Plusなどでselect文を実行した時に表示される1行の文字数を変更したい場合は、SQL*Plusのプロンプトから「set linesize」コマンドを実行します。以下に私の環境での実行結果を示します。

1.select文を実行
SQL> column username format a10
SQL> column user_id format 999
SQL> column account_status format a20
SQL> column default_tablespace format a8
SQL> column temporary_tablespace format a8
SQL> select USERNAME,USER_ID,ACCOUNT_STATUS,DEFAULT_TABLESPACE,
2 TEMPORARY_TABLESPACE from dba_users where account_status='OPEN';

USERNAME USER_ID ACCOUNT_STATUS DEFAULT_ TEMPORAR
---------- ------- -------------------- -------- --------
MGMT_VIEW 53 OPEN SYSTEM TEMP
SYS 0 OPEN SYSTEM TEMP
SYSTEM 5 OPEN SYSTEM TEMP
DBSNMP 24 OPEN SYSAUX TEMP
SYSMAN 51 OPEN SYSAUX TEMP

SQL>
あらかじめ「column」コマンドで列(項目)の表示幅を適切なサイズに調整しているため、かなり見やすく表示されております。

2.「set linesize 30」コマンドを実行
SQL> set linesize 30
SQL>
これで1行の文字数が半角英数30文字に設定されました。

3.select文を実行
SQL> column username format a10
SQL> column user_id format 999
SQL> column account_status format a20
SQL> column default_tablespace format a8
SQL> column temporary_tablespace format a8
SQL> select USERNAME,USER_ID,ACCOUNT_STATUS,DEFAULT_TABLESPACE,
2 TEMPORARY_TABLESPACE from dba_users where account_status='OPEN';

USERNAME USER_ID
---------- -------
ACCOUNT_STATUS DEFAULT_
-------------------- --------
TEMPORAR
--------
MGMT_VIEW 53
OPEN SYSTEM
TEMP

SYS 0
OPEN SYSTEM
TEMP

USERNAME USER_ID
---------- -------
ACCOUNT_STATUS DEFAULT_
-------------------- --------
TEMPORAR
--------

SYSTEM 5
OPEN SYSTEM
TEMP

DBSNMP 24
OPEN SYSAUX

USERNAME USER_ID
---------- -------
ACCOUNT_STATUS DEFAULT_
-------------------- --------
TEMPORAR
--------
TEMP

SYSMAN 51
OPEN SYSAUX
TEMP


SQL>
1行の文字数が半角英数30文字に設定されたため、30文字目で折り返して表示されております。これはかなり見づらい状態ですね。

4.「set linesize 100」コマンドを実行
SQL> set linesize 100
SQL>
これで1行の文字数が半角英数100文字に設定されました。

5.select文を実行
SQL> column username format a10
SQL> column user_id format 999
SQL> column account_status format a20
SQL> column default_tablespace format a8
SQL> column temporary_tablespace format a8
SQL> select USERNAME,USER_ID,ACCOUNT_STATUS,DEFAULT_TABLESPACE,
2 TEMPORARY_TABLESPACE from dba_users where account_status='OPEN';

USERNAME USER_ID ACCOUNT_STATUS DEFAULT_ TEMPORAR
---------- ------- -------------------- -------- --------
MGMT_VIEW 53 OPEN SYSTEM TEMP
SYS 0 OPEN SYSTEM TEMP
SYSTEM 5 OPEN SYSTEM TEMP
DBSNMP 24 OPEN SYSAUX TEMP
SYSMAN 51 OPEN SYSAUX TEMP

SQL>
また元通り、見やすい状態になりました。

なお、「set linesize」コマンドは、「set lines」、「set line」、「set lin」と省略しても実行可能です。

posted by 公爵 at 20:46| Comment(0) | TrackBack(0) | ORACLE | このブログの読者になる | 更新情報をチェックする

OracleのSQL*Plusで直前に実行したSQLを表示

SQL*Plusなどでselect文を実行した後、直前に実行したSQL(SQLバッファに入っているSQL)の内容を表示したい場合はSQL*Plusのプロンプトから「list」コマンドを実行します。以下に私の環境での実行結果を示します。
SQL> select TABLESPACE_NAME,BYTES from dba_data_files;

TABLESPACE_NAME BYTES
--------------- -------------
USERS 5242880
SYSAUX 272629760
UNDOTBS1 36700160
SYSTEM 513802240
EXAMPLE 104857600

SQL> list
1* select TABLESPACE_NAME,BYTES from dba_data_files
SQL>
直前に実行したSQL(SQLバッファに入っているSQL)の内容が表示されました。

posted by 公爵 at 08:40| Comment(0) | TrackBack(0) | ORACLE | このブログの読者になる | 更新情報をチェックする

OracleのSQL*PlusからOSコマンドを実行

OracleのSQL*Plusで作業中、UNIXコマンドやWindowsコマンドプロンプトなどのOSコマンドを実行したい時、以下のように一旦SQL*Plusを終了させていませんか?
SQL> exit
Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 - Production
With the Partitioning, OLAP and Data Mining optionsとの接続が切断されました。

C:\temp>dir
ドライブ C のボリューム ラベルは IDE-1-1 です
ボリューム シリアル番号は ****-**** です

C:\temp のディレクトリ

2009/09/05 16:27 <DIR> .
2009/09/05 16:27 <DIR> ..
0 個のファイル 0 バイト
2 個のディレクトリ 1,093,328,896 バイトの空き領域

C:\temp>sqlplus / as sysdba

SQL*Plus: Release 10.2.0.1.0 - Production on 月 9月 7 07:05:52 2009

Copyright (c) 1982, 2005, Oracle. All rights reserved.



Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 - Production
With the Partitioning, OLAP and Data Mining options
に接続されました。
SQL>
このようにOSコマンドを実行するためにSQL*Plusを終了させていると、SQL*Plusを再度起動する時間が掛かりますし、Oracleとのセッションも張り直しになります。このようにSQL*Plusを使用中、一時的にOSコマンドを実行したい時には「host」コマンドを使うと便利です。「host」コマンドを使うと、プロンプトがSQL*PlusのプロンプトからOSコマンドのプロンプトに変わり、OSコマンドを実行出来るようになります。以下に私の環境(Oracle Database 10g Release 2 for Windows 32bit)での実行結果を示します。
C:\temp>sqlplus / as sysdba

SQL*Plus: Release 10.2.0.1.0 - Production on 月 9月 7 07:05:52 2009

Copyright (c) 1982, 2005, Oracle. All rights reserved.



Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 - Production
With the Partitioning, OLAP and Data Mining options
に接続されました。
SQL> host
Microsoft Windows 2000 [Version 5.00.2195]
(C) Copyright 1985-2000 Microsoft Corp.

C:\temp>dir
ドライブ C のボリューム ラベルは IDE-1-1 です
ボリューム シリアル番号は ****-**** です

C:\temp のディレクトリ

2009/09/05 16:27 <DIR> .
2009/09/05 16:27 <DIR> ..
0 個のファイル 0 バイト
2 個のディレクトリ 1,093,312,512 バイトの空き領域

C:\temp>
OSコマンドのプロンプトが表示され、OSコマンドが実行されました。OSコマンドのプロンプトが表示されておりますがSQL*Plusは起動したままで、Oracleとのセッションも維持された状態です。OSコマンドのプロンプトで「exit」コマンドを実行するとSQL*Plusのプロンプトに戻ることが出来ます。
C:\temp>exit

SQL>
上記の実行例の場合はプロンプトがSQL*PlusのプロンプトからOSコマンドのプロンプトに変わり、「exit」コマンドを実行しないとSQL*Plusに処理が戻ってきませんが、OSコマンドを単発で実行してすぐにSQL*Plusに処理を戻したい場合は、「host」コマンドのすぐ後ろにOSコマンドを記述して実行します。
SQL> host dir
ドライブ C のボリューム ラベルは IDE-1-1 です
ボリューム シリアル番号は ****-**** です

C:\temp のディレクトリ

2009/09/05 16:27 <DIR> .
2009/09/05 16:27 <DIR> ..
0 個のファイル 0 バイト
2 個のディレクトリ 1,093,300,224 バイトの空き領域

SQL>
あと、Windows系OSの場合、「host」コマンドは「$」で代用することが出来ます。
SQL> $
Microsoft Windows 2000 [Version 5.00.2195]
(C) Copyright 1985-2000 Microsoft Corp.

C:\temp>dir
ドライブ C のボリューム ラベルは IDE-1-1 です
ボリューム シリアル番号は ****-**** です

C:\temp のディレクトリ

2009/09/05 16:27 <DIR> .
2009/09/05 16:27 <DIR> ..
0 個のファイル 0 バイト
2 個のディレクトリ 1,092,149,248 バイトの空き領域

C:\temp>exit

SQL> $dir
ドライブ C のボリューム ラベルは IDE-1-1 です
ボリューム シリアル番号は ****-**** です

C:\temp のディレクトリ

2009/09/05 16:27 <DIR> .
2009/09/05 16:27 <DIR> ..
0 個のファイル 0 バイト
2 個のディレクトリ 1,092,145,152 バイトの空き領域

SQL>
Solaris、HP-UX、AIX、Linux等UNIX系OSの場合、「host」コマンドは「!」で代用出来ます。

posted by 公爵 at 07:39| Comment(0) | TrackBack(0) | ORACLE | このブログの読者になる | 更新情報をチェックする

OracleのSQL*Plusで直前に実行したSQLを再実行

SQL*Plusなどでselect文を実行した後、直前に実行したSQL(SQLバッファに入っているSQL)を再実行したい場合はSQL*Plusのプロンプトから「/(スラッシュ)」または「run」と入力します。以下に私の環境での実行結果を示します。

1.「/(スラッシュ)」でのSQL再実行
SQL> select TABLESPACE_NAME,BYTES from dba_data_files;

TABLESPACE BYTES
---------- --------------
USERS 5,242,880
SYSAUX 272,629,760
UNDOTBS1 36,700,160
SYSTEM 513,802,240
EXAMPLE 104,857,600

SQL>/

TABLESPACE BYTES
---------- --------------
USERS 5,242,880
SYSAUX 272,629,760
UNDOTBS1 36,700,160
SYSTEM 513,802,240
EXAMPLE 104,857,600

SQL>
/(スラッシュ)」でのSQL再実行においては、SQLの実行結果は表示されますが、SQLの内容は表示されません。SQLの内容を表示した上でSQLを再実行したい場合は「run」を使用します。

2.「run」でのSQL再実行
SQL> select TABLESPACE_NAME,BYTES from dba_data_files;

TABLESPACE BYTES
---------- --------------
USERS 5,242,880
SYSAUX 272,629,760
UNDOTBS1 36,700,160
SYSTEM 513,802,240
EXAMPLE 104,857,600

SQL> run
1* select TABLESPACE_NAME,BYTES from dba_data_files

TABLESPACE BYTES
---------- --------------
USERS 5,242,880
SYSAUX 272,629,760
UNDOTBS1 36,700,160
SYSTEM 513,802,240
EXAMPLE 104,857,600

SQL>
SQLの内容を表示した上でSQLを再実行しました。

posted by 公爵 at 06:55| Comment(0) | TrackBack(0) | ORACLE | このブログの読者になる | 更新情報をチェックする

OracleのSQL*Plusでアンダーラインを非表示

SQL*Plusなどでselect文を実行した場合、通常、選択した表やビューの列名(項目名)がヘッダー(タイトル行)として表示されます。そして、そのヘッダー(タイトル行)の下にはアンダーライン(区切り線)が入っています。
SQL> select TABLESPACE_NAME,BYTES from dba_data_files;

TABLESPACE BYTES
---------- --------------
USERS 5,242,880
SYSAUX 272,629,760
UNDOTBS1 36,700,160
SYSTEM 513,802,240
EXAMPLE 104,857,600

SQL>
このアンダーライン(区切り線)を非表示にしたい場合は、「set underline」コマンドを使用します。以下に私の環境での実行例を示します。

1.「set underline off」コマンドを実行
SQL> set underline off
SQL>
これでアンダーライン(区切り線)が非表示になりました。

2.select文を実行
SQL> select TABLESPACE_NAME,BYTES from dba_data_files;

TABLESPACE BYTES
USERS 5,242,880
SYSAUX 272,629,760
UNDOTBS1 36,700,160
SYSTEM 513,802,240
EXAMPLE 104,857,600

SQL>
アンダーライン(区切り線)が非表示が非表示になりました。

3.別のselect文を実行
SQL> select FILE_NAME,TABLESPACE_NAME,BYTES from dba_data_files;

FILE_NAME TABLESPACE BYTES
C:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\USERS01.DBF USERS 5,242,880
C:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\SYSAUX01.DBF SYSAUX 272,629,760
C:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\UNDOTBS01.DBF UNDOTBS1 36,700,160
C:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\SYSTEM01.DBF SYSTEM 513,802,240
C:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\EXAMPLE01.DBF EXAMPLE 104,857,600

SQL>
アンダーライン(区切り線)は非表示のままです。これは、一旦、アンダーライン(区切り線)を非表示にすると、アンダーライン(区切り線)を表示するように設定するまで非表示のままになるからです。

4.「set underline on」コマンドを実行
SQL> set underline on
SQL>
これでアンダーライン(区切り線)が表示されるようになりました。

5.select文を実行
SQL> select TABLESPACE_NAME,BYTES from dba_data_files;

TABLESPACE BYTES
---------- --------------
USERS 5,242,880
SYSAUX 272,629,760
UNDOTBS1 36,700,160
SYSTEM 513,802,240
EXAMPLE 104,857,600

SQL>
アンダーライン(区切り線)が表示されるようになりました。

posted by 公爵 at 05:48| Comment(0) | TrackBack(0) | ORACLE | このブログの読者になる | 更新情報をチェックする

OracleのSQL*Plusでプロンプトに時刻を表示

OracleのSQL*Plusでプロンプトに時刻を表示したい場合には「set time on」コマンドを使います。私の環境での実行例は以下の通り。
SQL> set time on
05:27:36 SQL>
プロンプトに時刻が表示されるようになりました。なお、ここで表示される時刻はプロンプトが表示された時点の時刻であり、リアルタイムの時刻ではありません。ですので、エンターキーを押して改行すると、改行してプロンプトが表示された時の時刻を表示します。
05:30:38 SQL>
05:30:42 SQL>
05:30:44 SQL>
05:30:45 SQL>
05:30:47 SQL>
プロンプトでの時刻表示を止める場合は「set time off」コマンドを使います。
05:30:53 SQL> set time off
SQL>
プロンプトに時刻が表示されなくなりました。

posted by 公爵 at 05:33| Comment(0) | TrackBack(0) | ORACLE | このブログの読者になる | 更新情報をチェックする

OracleのSQL*Plusでヘッダーを非表示

SQL*Plusなどでselect文を実行した場合、通常、選択した表やビューの列名(項目名)がヘッダー(タイトル行)として表示されます。
SQL> select TABLESPACE_NAME,BYTES from dba_data_files;

TABLESPACE BYTES
---------- --------------
USERS 5,242,880
SYSAUX 272,629,760
UNDOTBS1 36,700,160
SYSTEM 513,802,240
EXAMPLE 104,857,600

SQL>
このヘッダー(タイトル行)を非表示にしたい場合は、「set heading」コマンドを使用します。以下に私の環境での実行例を示します。

1.「set heading off」コマンドを実行
SQL> set heading off
SQL>
これでヘッダー(タイトル行)が非表示になりました。

2.select文を実行
SQL> select TABLESPACE_NAME,BYTES from dba_data_files;

USERS 5,242,880
SYSAUX 272,629,760
UNDOTBS1 36,700,160
SYSTEM 513,802,240
EXAMPLE 104,857,600

SQL>
列名(項目名)などのヘッダー(タイトル行)が非表示になりました。

3.別のselect文を実行
SQL> select FILE_NAME,TABLESPACE_NAME,BYTES from dba_data_files;

C:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\USERS01.DBF USERS 5,242,880
C:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\SYSAUX01.DBF SYSAUX 272,629,760
C:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\UNDOTBS01.DBF UNDOTBS1 36,700,160
C:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\SYSTEM01.DBF SYSTEM 513,802,240
C:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\EXAMPLE01.DBF EXAMPLE 104,857,600

SQL>
ヘッダー(タイトル行)は非表示のままです。これは、一旦、ヘッダー(タイトル行)を非表示にすると、ヘッダー(タイトル行)を表示するように設定するまで非表示のままになるからです。

4.「set heading on」コマンドを実行
SQL> set heading on
SQL>
これでヘッダー(タイトル行)が表示されるようになりました。

5.select文を実行
SQL> select TABLESPACE_NAME,BYTES from dba_data_files;

TABLESPACE BYTES
---------- --------------
USERS 5,242,880
SYSAUX 272,629,760
UNDOTBS1 36,700,160
SYSTEM 513,802,240
EXAMPLE 104,857,600

SQL>
ヘッダー(タイトル行)が表示されるようになりました。なお、「set heading on」は「set head on」、「set heading off」は「set head off」と省略可能です。

posted by 公爵 at 05:21| Comment(0) | TrackBack(0) | ORACLE | このブログの読者になる | 更新情報をチェックする

OracleのSQL*Plusで実行したSQLの実行時間表示方法

SQL*Plusで実行したSQLの実行時間を表示したい場合は「set timing」コマンドを使用します。以下に私の環境での実行例を示します。

1.まずはそのままselect文を実行
SQL> select TABLESPACE_NAME,BYTES from dba_data_files;

TABLESPACE BYTES
---------- --------------
USERS 5,242,880
SYSAUX 272,629,760
UNDOTBS1 36,700,160
SYSTEM 513,802,240
EXAMPLE 104,857,600

SQL>
この場合はSQLの実行時間は表示されません。

2.「set timing on」コマンドを実行
SQL> set timing on
SQL>
これでSQLの実行時間が表示されるようになります。

3.select文を実行
SQL> select TABLESPACE_NAME,BYTES from dba_data_files;

TABLESPACE BYTES
---------- --------------
USERS 5,242,880
SYSAUX 272,629,760
UNDOTBS1 36,700,160
SYSTEM 513,802,240
EXAMPLE 104,857,600

経過: 00:00:00.07
SQL>
経過」としてSQLの実行時間が表示されました。

4.別のselect文を実行
SQL> select FILE_NAME,TABLESPACE_NAME,BYTES from dba_data_files;

FILE_NAME TABLESPACE BYTES
------------------------------------------------------- ---------- --------------
C:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\USERS01.DBF USERS 5,242,880
C:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\SYSAUX01.DBF SYSAUX 272,629,760
C:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\UNDOTBS01.DBF UNDOTBS1 36,700,160
C:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\SYSTEM01.DBF SYSTEM 513,802,240
C:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\EXAMPLE01.DBF EXAMPLE 104,857,600

経過: 00:00:00.06
SQL>
また「経過」としてSQLの実行時間が表示されました。これは、一旦、SQLの実行時間を表示するようにすると、解除するまでSQLの実行時間を表示し続けるためです。

5.「set timing off」コマンドを実行
SQL> set timing off
SQL>
これでSQLの実行時間表示が中止されました。

6.select文を実行
SQL> select TABLESPACE_NAME,BYTES from dba_data_files;

TABLESPACE BYTES
---------- --------------
USERS 5,242,880
SYSAUX 272,629,760
UNDOTBS1 36,700,160
SYSTEM 513,802,240
EXAMPLE 104,857,600

SQL>
SQLの実行時間が表示されなくなりました。

posted by 公爵 at 04:47| Comment(0) | TrackBack(0) | ORACLE | このブログの読者になる | 更新情報をチェックする

OracleのSQL*Plusで表示される列の表示幅を変更

SQL*PlusなどでOracleにselect文を発行した時、列(項目)の表示幅が適切な幅になっていないために見づらい状態になっていませんか?
SQL> select FILE_NAME,TABLESPACE_NAME,BYTES from dba_data_files;

FILE_NAME
--------------------------------------------------------------------------------
TABLESPACE_NAME BYTES
------------------------------ ----------
C:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\USERS01.DBF
USERS 5242880

C:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\SYSAUX01.DBF
SYSAUX 272629760

C:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\UNDOTBS01.DBF
UNDOTBS1 36700160


FILE_NAME
--------------------------------------------------------------------------------
TABLESPACE_NAME BYTES
------------------------------ ----------
C:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\SYSTEM01.DBF
SYSTEM 513802240

C:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\EXAMPLE01.DBF
EXAMPLE 104857600


SQL>
このような場合は、select文を実行する前に「column」コマンドを使って列(項目)の表示幅を適切なサイズに設定すると綺麗に表示されます。書式は以下の通り。

【列のデータが文字列の場合】
書式:column 列名(項目名) format a[桁数]
例:column TABLESPACE_NAME format a10

【列のデータが数値の場合】
書式:column 列名(項目名) format [桁数分の'9'を記入する]
例:column BYTES format 9999999999
例:column BYTES format 9999999999.99
例:column BYTES format 9,999,999,999

上記のSQL文の結果も、あらかじめ「column」コマンドで表示幅を適切なサイズに設定してから実行すると以下のように表示されます。
SQL> column FILE_NAME format a55
SQL> column TABLESPACE_NAME format a10
SQL> column BYTES format 9999999999
SQL> select FILE_NAME,TABLESPACE_NAME,BYTES from dba_data_files;

FILE_NAME TABLESPACE BYTES
------------------------------------------------------- ---------- -----------
C:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\USERS01.DBF USERS 5242880
C:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\SYSAUX01.DBF SYSAUX 272629760
C:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\UNDOTBS01.DBF UNDOTBS1 36700160
C:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\SYSTEM01.DBF SYSTEM 513802240
C:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\EXAMPLE01.DBF EXAMPLE 104857600

SQL>
列のデータが数値の場合には表示幅だけでなく、小数点以下の桁指定や、カンマ区切り指定も出来ます。
SQL> column TABLESPACE_NAME format a10
SQL> column BYTES format 9999999999
SQL> select TABLESPACE_NAME,BYTES from dba_data_files;

TABLESPACE BYTES
---------- -----------
USERS 5242880
SYSAUX 272629760
UNDOTBS1 36700160
SYSTEM 513802240
EXAMPLE 104857600

SQL> column TABLESPACE_NAME format a10
SQL> column BYTES format 9999999999.99
SQL> select TABLESPACE_NAME,BYTES from dba_data_files;

TABLESPACE BYTES
---------- --------------
USERS 5242880.00
SYSAUX 272629760.00
UNDOTBS1 36700160.00
SYSTEM 513802240.00
EXAMPLE 104857600.00

SQL> column TABLESPACE_NAME format a10
SQL> column BYTES format 9,999,999,999
SQL> select TABLESPACE_NAME,BYTES from dba_data_files;

TABLESPACE BYTES
---------- --------------
USERS 5,242,880
SYSAUX 272,629,760
UNDOTBS1 36,700,160
SYSTEM 513,802,240
EXAMPLE 104,857,600

SQL>
あと、「column」は「col」、「format」は「for」と省略して実行することも可能です。
SQL> col FILE_NAME for a55
SQL> col TABLESPACE_NAME for a10
SQL> col BYTES for 9999999999
SQL> select FILE_NAME,TABLESPACE_NAME,BYTES from dba_data_files;

FILE_NAME TABLESPACE BYTES
------------------------------------------------------- ---------- -----------
C:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\USERS01.DBF USERS 5242880
C:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\SYSAUX01.DBF SYSAUX 272629760
C:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\UNDOTBS01.DBF UNDOTBS1 36700160
C:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\SYSTEM01.DBF SYSTEM 513802240
C:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\EXAMPLE01.DBF EXAMPLE 104857600

SQL>
なお、「column」コマンドによる列(項目)の表示幅設定変更は、表示される列名(項目名)に対しての設定となるため、select文で表示する列名(項目名)を明示的に指定している場合は、select文で指定した列名(項目名)に対して「column」コマンドで表示幅の変更を設定する必要があります。実行例は以下の通りです。
SQL> column FILE_NAME format a55
SQL> column TABLESPACE_NAME format a10
SQL> column BYTES format 9999999999
SQL> select FILE_NAME,TABLESPACE_NAME,BYTES from dba_data_files;

FILE_NAME TABLESPACE BYTES
------------------------------------------------------- ---------- -----------
C:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\USERS01.DBF USERS 5242880
C:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\SYSAUX01.DBF SYSAUX 272629760
C:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\UNDOTBS01.DBF UNDOTBS1 36700160
C:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\SYSTEM01.DBF SYSTEM 513802240
C:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\EXAMPLE01.DBF EXAMPLE 104857600

SQL> select FILE_NAME "ファイル名",TABLESPACE_NAME "表領域名",BYTES "サイズ" from dba_data_files;

ファイル名
--------------------------------------------------------------------------------
表領域名 サイズ
------------------------------------------------------------ ----------
C:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\USERS01.DBF
USERS 5242880

C:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\SYSAUX01.DBF
SYSAUX 272629760

C:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\UNDOTBS01.DBF
UNDOTBS1 36700160


ファイル名
--------------------------------------------------------------------------------
表領域名 サイズ
------------------------------------------------------------ ----------
C:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\SYSTEM01.DBF
SYSTEM 513802240

C:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\EXAMPLE01.DBF
EXAMPLE 104857600


SQL> column ファイル名 format a55
SQL> column 表領域名 format a10
SQL> column サイズ format 9999999999
SQL> select FILE_NAME "ファイル名",TABLESPACE_NAME "表領域名",BYTES "サイズ" from dba_data_files;

ファイル名 表領域名 サイズ
------------------------------------------------------- ---------- -----------
C:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\USERS01.DBF USERS 5242880
C:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\SYSAUX01.DBF SYSAUX 272629760
C:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\UNDOTBS01.DBF UNDOTBS1 36700160
C:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\SYSTEM01.DBF SYSTEM 513802240
C:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\EXAMPLE01.DBF EXAMPLE 104857600

SQL>
なかなか便利な機能ですね。

posted by 公爵 at 04:03| Comment(0) | TrackBack(0) | ORACLE | このブログの読者になる | 更新情報をチェックする

OracleのSQL*Plusで表示される列名を変更

SQL*PlusなどでOracleにselect文を発行した場合、通常、列名(項目名)には選択した表やビューの列名(項目名)がそのまま表示されます。

SQL> select TABLESPACE_NAME,BYTES from dba_data_files;

TABLESPACE_NAME BYTES
------------------------------ ----------
USERS 5242880
SYSAUX 272629760
UNDOTBS1 36700160
SYSTEM 513802240
EXAMPLE 104857600

SQL>
このselect文で表示される列名(項目名)、実は自由に変えることが出来ます。以下のように、列名(項目名)の後ろに表示したい名前をダブルクォーテーションで囲って追加するだけです。
SQL> select TABLESPACE_NAME "表領域の名前",BYTES "サイズ(BYTES)" from dba_data_files;

表領域の名前 サイズ(BYTES)
------------------------------ ---------------
USERS 5242880
SYSAUX 272629760
UNDOTBS1 36700160
SYSTEM 513802240
EXAMPLE 104857600

SQL>
通常はあまり変更しなくても良いかも知れませんが、select文で出てきた結果を演算してから表示する場合には便利です。例えば、上記のSQL文で「BYTES」列の値を2回1024で割って「MB」単位にして表示したい時、列名(項目名)がそのままだと何を表示しているのかすぐに理解しづらいと思います。
SQL> select TABLESPACE_NAME,BYTES/1024/1024 from dba_data_files;

TABLESPACE_NAME BYTES/1024/1024
------------------------------ ---------------
USERS 5
SYSAUX 260
UNDOTBS1 35
SYSTEM 490
EXAMPLE 100

SQL>
しかし、表示する列名(項目名)を変えることによって、何を表示しているのかより認識しやすくなります。
SQL> select TABLESPACE_NAME "表領域の名前",BYTES/1024/1024 "サイズ(MB)" from dba_data_files;

表領域の名前 サイズ(MB)
------------------------------ ------------
USERS 5
SYSAUX 260
UNDOTBS1 35
SYSTEM 490
EXAMPLE 100

SQL>
結構便利な機能だと思います。

posted by 公爵 at 03:15| Comment(0) | TrackBack(0) | ORACLE | このブログの読者になる | 更新情報をチェックする

PFILEからSPFILEを作成する方法

PFILE」から「SPFILE」を作成する時には「create spfile」文を使います。以下に私の環境での実行例を示します(Oracle Database 10g Release 2 for Windows 32bit)。

まずは現在の「PFILE」、「SPFILE」の状態を確認します。
C:\temp>cd C:\oracle\product\10.2.0\db_1\database

C:\oracle\product\10.2.0\db_1\database>dir *.ora
ドライブ C のボリューム ラベルは IDE-1-1 です
ボリューム シリアル番号は ****-**** です

C:\oracle\product\10.2.0\db_1\database のディレクトリ

2009/09/06 22:25 1,018 INITorcl.ORA
2009/04/29 15:53 1,536 PWDorcl.ora
2009/09/06 21:49 2,560 SPFILEORCL.ORA
3 個のファイル 5,114 バイト
0 個のディレクトリ 1,047,588,864 バイトの空き領域

C:\oracle\product\10.2.0\db_1\database>
上記の場合、「PFILE(INITorcl.ORA)」と「SPFILE(SPFILEORCL.ORA)」両方が存在しております。この状態でOracleインスタンスを起動すると「SPFILE(SPFILEORCL.ORA)」を優先的に読み込んで起動します。そこで、一旦「SPFILE(SPFILEORCL.ORA)」を削除します。
C:\oracle\product\10.2.0\db_1\database>del SPFILEORCL.ORA

C:\oracle\product\10.2.0\db_1\database>dir *.ora
ドライブ C のボリューム ラベルは IDE-1-1 です
ボリューム シリアル番号は ****-**** です

C:\oracle\product\10.2.0\db_1\database のディレクトリ

2009/09/06 22:25 1,018 INITorcl.ORA
2009/04/29 15:53 1,536 PWDorcl.ora
2 個のファイル 2,554 バイト
0 個のディレクトリ 1,047,576,576 バイトの空き領域

C:\oracle\product\10.2.0\db_1\database>
SPFILE(SPFILEORCL.ORA)」は削除されました。この状態でOracleインスタンスを起動すると「PFILE(INITorcl.ORA)」が読み込まれてOracleインスタンスが起動するはずです。では、Oracleインスタンスを起動して、「show parameters spfile」コマンドで「SPFILE」が使用されているか確認します。
C:\oracle\product\10.2.0\db_1\database>sqlplus / as sysdba

SQL*Plus: Release 10.2.0.1.0 - Production on 日 9月 6 22:37:49 2009

Copyright (c) 1982, 2005, Oracle. All rights reserved.

アイドル・インスタンスに接続しました。

SQL> startup
ORACLEインスタンスが起動しました。

Total System Global Area 167772160 bytes
Fixed Size 1247900 bytes
Variable Size 71304548 bytes
Database Buffers 92274688 bytes
Redo Buffers 2945024 bytes
データベースがマウントされました。
データベースがオープンされました。
SQL> show parameters spfile

NAME TYPE
------------------------------------ ----------------------
VALUE
------------------------------
spfile string

SQL>
上記の通り、「value」列が「null」、何も表示されていないので、現在は「SPFILE」ではなく「PFILE」が使用されていることが分かります。では、「create spfile」文を使って「SPFILE」を作成します。
SQL> create spfile from pfile;

ファイルが作成されました。

SQL>
以下のように、「SPFILE」と「PFILE」のファイル名を明示的に指定することも出来ます。
SQL> create spfile='C:\oracle\product\10.2.0\db_1\database\SPFILEORCL.ORA' from pfile='C:\oracle\product\10.2.0\db_1\database\INITorcl.ORA';

ファイルが作成されました。

SQL>
これで「PFILE」から「SPFILE」が作成されました。では、本当に「SPFILE」が作成されたか確認します。
SQL> exit
Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 - Production
With the Partitioning, OLAP and Data Mining optionsとの接続が切断されました。

C:\oracle\product\10.2.0\db_1\database>dir *.ora
ドライブ C のボリューム ラベルは IDE-1-1 です
ボリューム シリアル番号は ****-**** です

C:\oracle\product\10.2.0\db_1\database のディレクトリ

2009/09/06 22:25 1,018 INITorcl.ORA
2009/04/29 15:53 1,536 PWDorcl.ora
2009/09/06 22:40 2,560 SPFILEORCL.ORA
3 個のファイル 5,114 バイト
0 個のディレクトリ 1,047,306,240 バイトの空き領域

C:\oracle\product\10.2.0\db_1\database>
確かに「SPFILE(SPFILEORCL.ORA)」が作成されました。先程までは「PFILE(INITorcl.ORA)」しかなかったので、「PFILE(INITorcl.ORA)」を読み込んでOracleインスタンスが起動していましたが、今は「PFILE(INITorcl.ORA)」よりも優先的に読み込まれる「SPFILE(SPFILEORCL.ORA)」が存在するので、「SPFILE(SPFILEORCL.ORA)」を使用してOracleインスタンスが起動するはずです。では、この状態でOracleインスタンスをシャットダウンした後に起動し、「show parameters spfile」コマンドで「SPFILE」が使用されているか確認します。
C:\oracle\product\10.2.0\db_1\database>sqlplus / as sysdba

SQL*Plus: Release 10.2.0.1.0 - Production on 月 9月 7 00:34:15 2009

Copyright (c) 1982, 2005, Oracle. All rights reserved.



Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 - Production
With the Partitioning, OLAP and Data Mining options
に接続されました。
SQL> shutdown immediate
データベースがクローズされました。
データベースがディスマウントされました。
ORACLEインスタンスがシャットダウンされました。
SQL> startup
ORACLEインスタンスが起動しました。

Total System Global Area 167772160 bytes
Fixed Size 1247900 bytes
Variable Size 71304548 bytes
Database Buffers 92274688 bytes
Redo Buffers 2945024 bytes
データベースがマウントされました。
データベースがオープンされました。
SQL> show parameters spfile

NAME TYPE
------------------------------------ ----------------------
VALUE
------------------------------
spfile string
C:\ORACLE\PRODUCT\10.2.0\DB_1\
DATABASE\SPFILEORCL.ORA
PFILE(INITorcl.ORA)」から作成された「SPFILE(SPFILEORCL.ORA)」を読み込んでOracleインスタンスが起動しました。

posted by 公爵 at 00:40| Comment(0) | TrackBack(0) | ORACLE | このブログの読者になる | 更新情報をチェックする
×

この広告は1年以上新しい記事の投稿がないブログに表示されております。