• 締切済み

『ALTER SYSTEM』と『ALTER DATABASE』の違い

はじめまして、現在Oracle新Silver取得に向けてDBA1を勉強しています。 ※SilverFellowは取得済です。 DBA1の内容に関して皆様に質問なのですが、Alterコマンドはいろいろな種類が ありますよね? たとえば、alter system,alter database,alter table,alter user等など・・・ ここに出てくるsystemとdatabaseの違いが良く分かりません。 覚えろ!と言われればそれまでかもしれませんが、この二つのコマンドの棲み分け がいまいちよくわからないため、覚えられません。 皆様はどうやって、理解(覚え)しましたか? よろしければお教えください。 systemとdatabaseの違いがわからない例 alter system archive log all; alter database add logfile; alter database open; お願いいたします。

  • Oracle
  • 回答数1
  • ありがとう数7

みんなの回答

  • mogtan
  • ベストアンサー率100% (2/2)
回答No.1

自分がDBAIを取ったときは、 alter system文はSGAとバックグラウンドプロセスに関する変更、 alter database文はファイル(REDOログファイルや制御ファイルなど)に関する変更に使用すると覚えていました。

関連するQ&A

  • Oracle 9i Silver Fellow → 10g Silverへ

    今、「Oracle Silver Fellow」の資格を持っているのですが、「Oracle Silver DBA 10g (1Z0-042J)」を 取得すれば「Oracle Silver Oracle Database 10g(OCA)」を取得できるのでしょうか? それとも段階的に「Bronze DBA 10g (1Z0-041J)」→「Oracle Silver DBA 10g (1Z0-042J)」と 取得していかなければならないのでしょうか?

  • Oracleのオンラインバックアップについて

    Oracleのオンラインバックアップに関する質問で、バージョンやプラットフォームには依存しません。 表領域のオンラインバックアップを取得する際、ALTER SYSTEM ARCHIVE LOG CURRENT文で現在のカレントのREDOログをアーカイブしておくこと、と関連会社から言われたのですがALTER SYSTEM SWITCH LOGFILE文で駄目な理由が分かりません。 一般的にはALTER SYSTEM SWITCH LOGFILE文が知られていると思うんですが、、。

  • オラクルマスターの受験資格

    オラクルマスターのシルバー辺りの取得を考えているんですが、 ブロンズを持っていることが受験資格になっているのでしょうか? オラクルのホムペには、 > ORACLE MASTER Silver Oracle Database 10gを取得するための第一歩は、 > ORACLE MASTER Bronze Oracle Database 10gの認定を取得することです。 http://www.oracle.com/education/lang/jp/certification/dba10g_oca.html こういう記載があるので。 どうなのでしょう?

  • ブロンズからPL/SQL 開発者の資格取得を目指していいか

    ORACLE MASTER Bronze Oracle Database 11gは取得しました。 次はORACLE MASTER Silver Oracle PL/SQL Developerの資格を取得したいと思います。 ですが、先にORACLE MASTER Silver Oracle Database 11gを取得しておいた方が、PL/SQLの資格を取得するにあたって知識の習得が楽になるのでしょうか?

  • MySQL データベースを選択したい

    こんにちは。 SQLの初歩的な操作で躓いています。 MySQL 3.23.51-nt (WondowsXP) を使用しています。 PHPベースの掲示板を作成していまして、次の一連の作業をしたいのですが、 ALTER TABLE phpbb_categories ADD cat_main_type CHAR(1); ALTER TABLE phpbb_categories ADD cat_main MEDIUMINT(8) UNSIGNED DEFAULT '0' NOT NULL; ALTER TABLE phpbb_categories ADD cat_desc TEXT NOT NULL; ALTER TABLE phpbb_forums ADD forum_link VARCHAR(255); ALTER TABLE phpbb_forums ADD forum_link_internal TINYINT(1) NOT NULL; ALTER TABLE phpbb_forums ADD forum_link_hit_count TINYINT(1) NOT NULL; ALTER TABLE phpbb_forums ADD forum_link_hit BIGINT(20) UNSIGNED NOT NULL; ALTER TABLE phpbb_users ADD user_sub_forum TINYINT(1) DEFAULT '1' NOT NULL; ALTER TABLE phpbb_users ADD user_split_cat TINYINT(1) DEFAULT '1' NOT NULL; ALTER TABLE phpbb_users ADD user_last_topic_title TINYINT(1) DEFAULT '1' NOT NULL; ALTER TABLE phpbb_users ADD user_sub_level_links TINYINT(1) DEFAULT '2' NOT NULL; ALTER TABLE phpbb_users ADD user_display_viewonline TINYINT(1) DEFAULT '2' NOT NULL; 上記をを打ち込んでもError 1046: No Database Selected と言われます。 そこでどのようにしてデータベースを選択する事が出来るのでしょうか? よろしくお願いいたします。

  • Oracle 9i Silver→10g Silverへ

    現在Oracle9iのSilver databaseとPL/SQLを取得していますが、これを10gのSilverに変更するにはどのような手続きを踏めばよいのでしょうか? silver fellowは10gだとbronzeになるのでしょうか?これもまたどのような手続きがあるのでしょうか?

  • archiveログについて

    Oracleのarchive logについてご教授ください。 以下のコマンドで、一旦ARCHIVEを中断し再度STARTさせようと思っていますが、 alter system archive log stop; alter system archive log start; この間に吐き出されるログの扱いはどうなるのでしょか?Oracleがうまく制御してくれるのでしょうか?

  • SQL Server(MSDE2000) : ALTER TABLE

    SQL Server(MSDE2000) : ALTER TABLE した項目に対し、直後に UPDATE で値をセットできない 既存のテーブルを仕様変更するため、列を追加し、初期値で埋める SQL 文を書こうとしていますが、うまく動かず、エラーとなってしまい、原因が判らず困っています。 サンプル SQL 文: ------ CREATE TABLE TEST_TABLE ( TEST_FIELD1 SMALLINT, TEST_FIELD2 SMALLINT) INSERT INTO TEST_TABLE VALUES( 1, 2 ) ALTER TABLE TEST_TABLE ADD TEST_FIELD3 SMALLINT UPDATE TEST_TABLE SET TEST_FIELD3 = 3 ------ ※テスト毎に、必ず DROP TABLE TEST_TABLE されている事が前提です。 上記 SQL 文のうち、1行目~3行目までを抜粋して実行すると、ちゃんと CREATE TABLE され、INSERT され、ALTER TABLE される事を確認しました。 ところが、4行目までを一気に実行しようとすると、 ------ SQL実行中に以下のエラーが発生しました。 エラーコード:207 [Microsoft][ODBC SQL Server Driver][SQL Server]列名 'TEST_FIELD3' は無効です。 SQLステータス:S0022 ------ となってしまい、UPDATE で初期値を埋める事ができません。 しかも、UPDATE に失敗するどころか、2行目の INSERT から以降が結果に反映されなくなるという状況に陥ってしまいます。 また、既存のテーブルの仕様変更が目的なので、その状況に近づけるために、まず、 ------ CREATE TABLE TEST_TABLE ( TEST_FIELD1 SMALLINT, TEST_FIELD2 SMALLINT) INSERT INTO TEST_TABLE VALUES( 1, 2 ) ------ を実行し、既存のテーブル(とレコード内容)が存在する状態を作り出された事を、ツール等で確認してから、 ------ ALTER TABLE TEST_TABLE ADD TEST_FIELD3 SMALLINT UPDATE TEST_TABLE SET TEST_FIELD3 = 3 ------ の2行を実行してみると、やはり UPDATE は失敗し、前述と同じエラーが発生します。 またこの場合、ALTER TABLE の実行結果も反映されていません。(つまり、TEST_FIELD3 が列追加されていない) もちろん、ALTER TABLE だけを実行した場合には、ちゃんと列は追加されます。 その後に、UPDATE を実行すれば、ちゃんと追加列に初期値がセットされます。 どうやら、「一回の SQL 文の実行の中で、ALTER TABLE によって新設した列に対しては、UPDATE などでのアクセスはすぐにはできない」のではないか?という状況のようなのです。一回の SQL 文の実行の中において、何らかのトランザクション動作っぽい挙動を感じます。 つまり、ALTER TABLE で追加された列は、その時点ではまだ完全にシステムに認知されていないため、直後の UPDATE 文で認識できずに失敗するのではないか?と。そして、そこでのエラー発生が、ロールバック的に実行した処理をキャンセルしてしまうため、結果として、ALTER TABLE が実行されなかった事になったり、INSERT が実行されなかった事になったりしているのではないか?と思う次第です。 考えられる回避策としては、SQL 文を別々に作成し、個別に実行すれば良いだけの事なのですが、できれば、SQL 文一つにまとめたいと考えています。 どなたか、こういった現象に対する原因・理由の説明、或いは回避策など、何か情報をお持ちの方はいらっしゃいませんでしょうか? 宜しくお願いします。

  • ORACLE MASTER Silver 9i か 10g

    現在、サーバー管理系の仕事をしております。 会社の指示でORACLE MASTER Silverを取得しなければいけないことになりました。 バージョンは9iと10gのどちらでも良いのですが、出来るだけ早く取得しなければいけません。 現在では 10gの場合、Bronze SQL基礎→DBA10g→Silver DBA 10g 9iの場合、SQL、Oracle入門→DBAI のパターンがあると思いますが、一番簡単に取得する方法はどちらでしょうか?

  • startup、shutdownコマンド実行時のエラーでもリターンコードは0

    whenever oserror exit failure whenever sqlerror exit failure を付けていても startupコマンドもしくはshutdownコマンドを実行してエラーが発生した場合、リターンコードは0になってしまいます (alter database openのようにalter文を使うと、リターンコードは0以外になります)。 これは仕様なのでしょうか? [環境] OS:Solaris9 DB:Oracle9i