[[状況確認>oracle/状況確認]]
[[インストールOracle11g 11.2.0.1(w)>oracle/11.2.0.1]]([[ASM>oracle/asm]]) [[アンインストール>oracle/uninstall]]
[[インストールOracle11g 11.2.0.1SE(w)>oracle/11.2.0.1SE]]([[liunx>oracle/linux]])
[[バックアップ>oracle/11.2.0.1/backup]] リストア[[(データベースファイル,>oracle/11.2.0.1/リストア(データファイル)]][[制御ファイル,>oracle/11.2.0.1/リストア(制御ファイル)]]初期化ファイル,[[REDOログファイル,>oracle/11.2.0.1/リストア(REDOログファイル)]][[全損>oracle/11.2.0.1/リストア(全損)]])
[[コントロールファイルの移動>oracle/11.2.0.1/control]]

[[OracleEnterpriseManager>oracle/OEM]]
 [[表領域作成>oracle/表領域]]
 [[ユーザ作成>oracle/ユーザ作成]]
[[redoログ変更>aers/redolog]]

[[InstantClient>aers/InstantClient]]




[[OracleSQLDeveloper>oracle/SQLDeveloper]]






***めも [#wf4ea650]
■表領域を増やす
データベースファイルを追加するのもあるが、単純に今あるデータベースファイルを拡張する
#code(sql,number,nooutline,noblock,nomenu){{
---- ユーザが使用している表領域
select USERNAME,DEFAULT_TABLESPACE,TEMPORARY_TABLESPACE from dba_users;
---- USERS01.DBFを10Mにする
ALTER  DATABASE DATAFILE 'D:\ORACLE\ORADATA\AERS\USERS01.DBF' RESIZE 10M;
ALTER DATABASE DATAFILE 'D:\ORACLE\ORADATA\AERS\USERS01.DBF' AUTOEXTEND ON NEXT 10M;
---- 一時表領域を増やす
ALTER DATABASE TEMPFILE 'D:\ORACLE\ORADATA\AERS\TEMP01.DBF' RESIZE 200M;
ALTER DATABASE TEMPFILE 'D:\ORACLE\ORADATA\AERS\TEMP01.DBF' AUTOEXTEND ON NEXT 1M;

alter database datafile 'ファイル名(フルパス)' resize ファイルサイズ;
---- 現状確認
SELECT TB.TABLESPACE_NAME                       AS "表領域"  
     , TO_CHAR(TB.NOW_SIZE, 'FM9,999,999,990')  AS "現在のサイズ(MB)"  
     , TO_CHAR(TB.USED_SIZE, 'FM9,999,999,990') AS "使用量(MB)"  
     , TO_CHAR(  
               ROUND(TB.USED_SIZE / TB.NOW_SIZE * 100, 2)  
             , 'FM9,999,999,990.00'  
              )                                 AS "使用率(%)"  
  FROM (  
        SELECT FL.TABLESPACE_NAME                      AS TABLESPACE_NAME  
             , ROUND(MIN(FL.BYTES) / (1024 * 1024), 2) AS NOW_SIZE  
             , ROUND(  
                      MIN(FL.BYTES) / (1024 * 1024)  
                    - SUM(SP.BYTES) / (1024 * 1024)  
                    , 2)                               AS USED_SIZE  
          FROM DBA_DATA_FILES FL  
             , DBA_FREE_SPACE SP  
         WHERE FL.FILE_ID = SP.FILE_ID  
        GROUP BY FL.TABLESPACE_NAME  
       ) TB 
}}

■BackSpaceキーを押すと&color(red){^H};と表記されて、文字が消えない(linux)。
.bashrcに
#code(nonumber){{
stty erase ^H
}}
を追加

■現在のユーザプロファイルを確認
select username,profile from dba_users;
■プロファイル名:defaultのパスワード期限を無期限に変更
alter profile default limit password_life_time unlimited;
■既に有効期限切れになってしまったユーザーは、ロックされているので、
alter user aers identified by 'xxxxx'; 
alter user aers account unlock;
■特殊文字のエスケープ
'_'アンダースコアをテーブル名に記述した場合、'_'は一文字の任意を表すのでそれを回避するために
select table_name from user_tables where table_name like 'T#_%' escape '#';
とする
■複数テーブルの一括削除
SQL文がないようなので、PL/SQLにて対処
#code(SQL,nonumber,nooutline){{
DECLARE
CURSOR C IS SELECT TABLE_NAME FROM USER_TABLES WHERE TABLE_NAME LIKE 'T#_%' ESCAPE '#';
begin
FOR CUR_RECORD IN C LOOP
EXECUTE IMMEDIATE 'DROP TABLE "'||CUR_RECORD.TABLE_NAME||'" PURGE';
END LOOP;
end;
}}



***パブリック・シノニム [#y0bc0add]
あるテーブルを特定のユーザではなく、今後先の不特定のユーザにも参照可能にさせたい。AERSで言う所のDEMO、DRUG、INDI、REACとかのテーブルは四半期ごとに更新されるが、それ以外は皆に見てもらいたいテーブルなわけで、作成・構築は特定のユーザであろうが、最終的には皆が閲覧可能で、今後追加されるであろう新規ユーザにも標準で見られるのが望ましい。
なのでパブリック・シノニム

関連テーブルを持つユーザにはシステム権限が必要。
CREATE PUBLIC SYNONYM
と
DROP PUBLIC SYNONYM
作れるものは削除もできる。その姿勢でこの2つをテーブル作成者(AERS)には与える
っで、こんな感じかな
#code(sql,number,nooutline,noblock,nomenu){{
CREATE PUBLIC SYNONYM DEMO FOR AERS.DEMO;
CREATE PUBLIC SYNONYM DRUG FOR AERS.DRUG;
CREATE PUBLIC SYNONYM INDI FOR AERS.INDI;
CREATE PUBLIC SYNONYM OUTC FOR AERS.OUTC;
CREATE PUBLIC SYNONYM REAC FOR AERS.REAC;
CREATE PUBLIC SYNONYM RPSR FOR AERS.RPSR;
CREATE PUBLIC SYNONYM THER FOR AERS.THER;
}}
その後、パブリック・シノニムを作っても参照(SELECT)できないと意味がないので、PUBLICにSELECT権限を渡す。
#code(sql,number,nooutline,noblock,nomenu){{
GRANT SELECT ON DEMO TO PUBLIC;
GRANT SELECT ON DRUG TO PUBLIC;
GRANT SELECT ON INDI TO PUBLIC;
GRANT SELECT ON OUTC TO PUBLIC;
GRANT SELECT ON REAC TO PUBLIC;
GRANT SELECT ON RPSR TO PUBLIC;
GRANT SELECT ON THER TO PUBLIC;
}}
1

トップ   編集 差分 履歴 添付 複製 名前変更 リロード   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS