2016年4月20日水曜日

Oracle CloudのDB IOが貧弱っぽい

rmanでバックアップ実行するとだいたいWIOが100%くらいになる。
バックアップ元とバックアップ先が同一ディスクだからっていうのもあるだろうが、
それ以外にもDB遅いというのを言われているので対応したときのメモ。


ファイルシステムオプション
noatime,nodiratime,nobarrier,max_batch_time=0


DBパラメータ
filesystemio_options=setall


をひとまず設定して様子見。

2016年3月15日火曜日

oemサーバをデータベースターゲット登録したときにNMO setuid-rootがなんとかというメッセージが出たときの対処

NMO setuid-rootではありません(Unixのみ)。root.shスクリプトを実行して、この問題を解決してください。次に発行されるOSコマンド・ジョブにより、このアラートはクリアされます。

というメッセージ警告がOEMサーバのデータベースターゲットに出てたので対処したおきのメモ。
/u01/app/em/gc_inst/core/12.1.0.5.0/root.sh
を実行しました。

Finished product-specific root actions.
/etc exist

なおりました。

2016年2月5日金曜日

制御ファイルいじったらSCN絡みで起動できなくなった

制御ファイルの名前などを変更してたときにSCN絡みで起動できなくなったときのエラーと、復旧方法のメモ

SQL> shutdown immediate
ORA-01109: データベースがオープンされていません。

データベースがディスマウントされました。
ORACLEインスタンスがシャットダウンされました。

SQL> startup
ORACLEインスタンスが起動しました。
Total System Global Area 4294967296 bytes
Fixed Size                  2932632 bytes
Variable Size            2399141992 bytes
Database Buffers         1879048192 bytes
Redo Buffers               13844480 bytes
データベースがマウントされました。
ORA-01589:
データベースをオープンするにはRESETLOGSまたはNORESETLOGSを使用する必要があります

SQL> alter database open resetlogs;
alter database open resetlogs
*
行1でエラーが発生しました。:
ORA-01152: ファイル1は十分に古いバックアップからリストアされていません。  ORA-01110: データファイル1:
'/DATA/GENEDEV01/datafile/system.dbf'

SQL> recover database using backup controlfile until cancel;
ORA-00279: 変更1242068(02/05/2016 10:02:49で生成)にはスレッド1が必要です ORA-00289:
検討すべきログ・ファイル:/DATA/GENEDEV01/arch/GENEDEV01_1_47_901205509.dbf ORA-00280:
変更1242068(スレッド1)は順序番号47に存在します。

ログの指定: {<RET>=suggested | filename | AUTO | CANCEL}
/DATA/GENEDEV/REDO/redo_03_01.rdo ★上記してあるアーカイブログがなかったのでREDOログを指定。
ログが適用されました。
メディア・リカバリが完了しました。
SQL> alter database open resetlogs;
データベースが変更されました。

2015年11月18日水曜日

awsのスケールアップ失敗

構築タイミングでt1.smallで構築し、リリース前にc4.xlargeに変更したところステータスチェックで1/2となりEC2が起動しない状況がありました。

調べたところ、拡張ネットワーキング機能が原因でした。

VPC 内の Windows インスタンスでの拡張ネットワーキングの有効化 http://docs.aws.amazon.com/ja_jp/AWSEC2/latest/WindowsGuide/enhanced-networking.html


今回はWindows 2012 ServerだったんですがWindows OS側でこの拡張ネットワーキングを有効化していないことでネットワーク接続ができず1/2のステータスチェックエラーになっているようでした。

これは気づかない・・・

2015年11月11日水曜日

Oracle RAC DB手動削除

Oracle RAC DBの手動削除手順です

1-1.oracleユーザにスイッチ
 # su - oracle

1-2.クラスタデータベースの起動を確認。起動してなかったら起動させる。
 $ srvctl status database -d クラスタデータベース名
 Instance XXXXX01 is running on node ホスト1
 Instance XXXXX02 is running on node ホスト1
 $ srvctl start database -d クラスタデータベース名

1-3.DBに接続
 $ sqlplus SYSTEM/SYSTEM@クラスタデータベース名
 SQL> select instance_name from v$instance;
 INSTANCE_NAME
 ----------------
 XXXXX01 もしくは XXXXX02

1-4.DBを単一インスタンスモードに変更
 SQL> alter system set cluster_database=FALSE scope=spfile;
 SQL> quit

1-5.DB 停止
 $ srvctl stop database -d  クラスタデータベース名
 $ srvctl status database -d クラスタデータベース名
 Instance XXXXX01 is not running on node ホスト1
 Instance XXXXX02 is not running on node ホスト2

1-6.排他モードでDB起動
 $ export ORACLE_SID=クラスタSID

$ sqlplus / as sysdba
 SQL> STARTUP MOUNT EXCLUSIVE RESTRICT;
 ORACLEインスタンスが起動しました。

 Total System Global Area 1.7180E+10 bytes
 Fixed Size                  5304248 bytes
 Variable Size            2372763720 bytes
 Database Buffers         1.4663E+10 bytes
 Redo Buffers              138514432 bytes
 データベースがマウントされました。

SQL> select instance_name from v$instance;
 INSTANCE_NAME
 ----------------
 クラスタデータベース名

1-7.DB削除
 SQL> DROP DATABASE;

 データベースが削除されました。

 Oracle Database 12c Enterprise Edition Release 12.1.0.2.0 - 64bit Production
 With the Partitioning, Real Application Clusters, Automatic Storage Management, OLAP,
 Advanced Analytics and Real Application Testing optionsとの接続が切断されました。
 SQL> quit

1-8.DBリソースの削除
 $ srvctl status database -d クラスタデータベース名
 Instance XXXXX01 is not running on node ホスト1
 Instance XXXXX02 is not running on node ホスト2
 Instance クラスタデータベース名 is not running on node ホスト1

$ srvctl remove database -d クラスタデータベース名
 Remove the database クラスタデータベース名? (y/[n]) y

 $ srvctl status database -d クラスタデータベース名
 PRCD-1120 : The resource for database クラスタデータベース名 could not be found.
 PRCR-1001 : Resource ora.クラスタデータベース名.db does not exist


1-9.ASM上データ削除
 $ exit
 # su - grid
 $ asmcmd -p
 ASMCMD [+] > cd DATA
 ASMCMD [+] > ls
 ASMCMD [+] > rm -r データベースファイル格納ディレクトリ
 You may delete multiple files and/or directories.
 Are you sure? (y/n)
 ASMCMD [+] > ls



1-10.1号機、2号機側データベースサーバ上の不要ファイル削除
 $ exit
 # find / -name クラスタデータベース名
 # find  / -name 1号機側インスタンス名 or 2号機側インスタンス名
 # rm -fr findで見つけた不要ファイル

2015年9月25日金曜日

exadata環境化のsmart flash cache

oracle databaseの場合SSDを2次キャッシュとして利用可能にする設定があり、
それがsmart flash cacheという機能のようだ。

で通常のoracle databaseの場合には
DB_FLASH_CACHE_FILE
DB_FLASH_CACHE_SIZE
のパラメータを設定することで実装できる。
ここまでは別に良い。


疑問なのがexadataの場合。
ストレージサーバ側の設定でSSDを2次キャッシュとして利用する設定して、
データベースサーバ側で特に
DB_FLASH_CACHE_FILE
DB_FLASH_CACHE_SIZE
とか設定するようなアーキテクチャじゃないと考えている。
ちょっと調べたけどわからなかったなー