ALTER DATABASEとは、データベースを変更するSQL文である。
制御ファイルをバイナリ・ファイル(既存の制御ファイルの複製)にバックアップを作成する。
SQL> ALTER DATABASE BACKUP CONTROLFILE TO '/oracle/backup/control.bkp';
データベースが変更されました。
SQL>
後で制御ファイルの再作成に使用できるSQL文を生成する。
SQL> ALTER DATABASE BACKUP CONTROLFILE TO TRACE;
データベースが変更されました。
SQL>
グローバル・データベース名を変更する。
ALTER DATABASE RENAME GLOBAL_NAME TO database.domain
database.domainは引用符で囲まない。database.domainを引用符で囲むと、「ORA-01729: データベース・リンク名が必要です。」というエラーが発生する。
変更したグローバル・データベース名は GLOBAL_NAME データ・ディクショナリ・ビューで確認できる。
グローバル・データベース名を変更する。
ALTER DATABASE RENAME GLOBAL_NAME TO sales.itref.fc2web.com
データベースをマウントする。
ALTER DATABASE MOUNT
データベースをオープンする。
ALTER DATABASE OPEN
すべての表領域をバックアップする。
ALTER DATABASE BEGIN BACKUP
バックアップ・モードを終了する。
ALTER DATABASE END BACKUP
アーカイブ・ログ・モードに切り替える。
ALTER DATABASE ARCHIVELOG
SQL> ALTER DATABASE ARCHIVELOG;
データベースが変更されました。
SQL> SELECT LOG_MODE V$DATABASE;
LOG_MODE
------------
ARCHIVELOG
SQL> ALTER DATABASE NOARCHIVELOG;
データベースが変更されました。
SQL> SELECT LOG_MODE V$DATABASE;
LOG_MODE
------------
NOARCHIVELOG
データファイルのパスを変更する。
ALTER DATABASE RENAME FILE old-datafile TO new-datafile
データファイルのパスを変更する手順を以下に示す。
$ sqlplus / as sysdba
SQL> SHUTDOWN IMMEDIATE
SQL> EXIT
$ cp /u01/app/oracle/sid/old.dbf /u01/app/oracle/sid/new.dbf
$ sqlplus / as sysdba
SQL> STARTUP MOUNT
SQL> ALTER DATABASE RENAME FILE '/u01/app/oracle/sid/old.dbf' TO '/u01/app/oracle/sid/new.dbf';
SQL> ALTER DATABASE OPEN;
smallfile表領域のサイズを変更するには、ALTER DATABASE 文を使う。
SQL> ALTER DATABASE DATAFILE '/home/user1/test1.dbf' RESIZE 10G;
※bigfile表領域のサイズを変更するには、ALTER TABLESPACE 文を使う。
表領域が bigfile か smallfile かを確認するには、DBA_TABLESPACES データ・ディクショナリ・ビューを問い合わせる。
SQL> SELECT bigfile FROM DBA_TABLESPACES WHERE TABLESPACE_NAME = 'test1';