データベース管理者

データベースのスキルを向上させ、コミュニティの他の人から学びたいデータベースの専門家向けのQ&A

3
Oracleのロールには所有者がいますか?
ユーザーXを使用してoracleデータベースにログインし、ユーザーXがcreate roleコマンドを使用していくつかのロールを作成するとします。ユーザーXがロールの所有者であることを知りたいですか?ユーザーXが作成したすべてのロールを選択できますか?

2
トランザクション、参照、および複式簿記を実施する方法は?(PG)
複式簿記は すべてのトランザクションまたはイベントが少なくとも2つの異なる名目元帳勘定を変更する財務会計システムで財務情報を記録するための一連のルール。 アカウントは「借方」または「貸方」にすることができ、すべての貸方の合計は、すべての借方の合計と等しくなければなりません。 これをPostgresデータベースにどのように実装しますか?次のDDLを指定します。 CREATE TABLE accounts( account_id serial NOT NULL PRIMARY KEY, account_name varchar(64) NOT NULL ); CREATE TABLE transactions( transaction_id serial NOT NULL PRIMARY KEY, transaction_date date NOT NULL ); CREATE TABLE transactions_details( id serial8 NOT NULL PRIMARY KEY, transaction_id integer NOT NULL REFERENCES transactions (transaction_id) ON UPDATE …

7
MS AccessプログラミングからSQL Serverに移行する際の主な考慮事項
私は100%独学のMS Accessプログラマーです(私の仕事の主な部分はプログラミングです)、現在はより大きなデータベースを構築しています。UIとして引き続きMS Accessを使用しますが、SQL Serverはすべてのデータを格納し、「作業」の多くを実行します。 本質的には私の質問です。SQL Serverについて、Accessを使用するときにおそらく学んだことも、必要もないことについて、知っておく必要がある主題は何ですか? 何かをする方法を教えてくれるようにあなたを探しているのではなく、あなたが最も重要なことは研究に行くべきだとあなたが考えていること-たくさんの主題とたくさんの詳細の地獄があります、自分を長く見たくありませんあまり価値のない道を進む... 脳のダンプ: メンテナンス:最も重要なこと(データベースの確認、データベースの削減、統計の更新、再構築など) 索引-必要な分からないので、上から基礎を学べる良い本やブログなどはありますか? 他に見逃したもの(SQL Serverを初めて使うと言ったように、おそらくたくさんあります...) それが私が中規模の小売業者とデータベースで働くのに役立つなら、私は主に次のようなことをカバーすることに取り組んでいます レポートプラットフォーム(メインシステムからの売上高/レシート/在庫などを要約し、迅速なレポートを提供します) サードパートとストアがレジスタを介して行った調整ツール(サードパーティからデータをインポートし、トランザクションログを相互参照します) プロモーションに関連するすべてのデータを保存します。製品、価格、予測、実績など

3
メモリ構成が正しくないため、Oracle(11g1)を起動できません(ORA-00837)
ローカル開発者インスタンスのメモリ割り当てを減らすことにし、次のコマンドでうまくいくと言われました。 alter system set memory_max_target = 512M scope = spfile; 問題のOracleインスタンスを起動できなくなったので、それは間違いなかったと思います。これは、非DBAユーザーとして接続しようとしたときに発生するエラーです。 ORA-01034: ORACLE not available ORA-27101: shared memory realm does not exist SYSDBAとして接続すると、次のようになります。 Connected to an inactive instance. SQL>startup nomount; ORA-00837: Specified value of MEMORY_TARGET greater than MEMORY_MAX_TARGET SQL>alter system set memory_max_target = 2G scope = spfile; ORA-01034: ORACLE not …

2
Oracle 11g:挿入のパフォーマンス改善
5億行のテーブルがある(そして成長している) 挿入のパフォーマンスを向上させるために次のことを行いました。 データベース側: すべてのインデックスと制約を削除 ロギングを無効化 アプリケーション側: JPA管理エンティティからネイティブ挿入クエリに切り替え、クエリにAPPEND Oracleヒントを追加 1k / 2k / 3k行ごとにバッチでコミットしようとしました 1つのテーブルに並列に(複数のスレッド、スレッド数=サーバーのコア数に)書き込もうとした これは私に毎秒約300行を与えました さらに試しました: 複数のテーブルにバッチで並行して書き込む(UNIONを使用して結果をグループ化して戻す) これにより、1秒あたり約1k行が得られましたが、空のテーブルにあります。しかし、テーブルにダミーデータ(それぞれ2億個)を入力すると、挿入速度が1秒あたり250〜300に低下しました。 誰かが挿入を高速化するために他に何ができるかを提案できますか?基本的に私は最初にボトルネックが何であるか(何であるか)を理解したいと思います。 UPD: テーブルは挿入日によってパーティション化され、テーブルには約60列があります-ほとんどの列はVARCHAR2(2000 BYTE)です
8 java  oracle 

2
デフォルト制約の名前変更を自動化するスクリプトを生成します
背景:デフォルトの列制約の一部は明示的な名前なしで生成されたため、次のようにサーバーごとに異なる楽しい名前が付けられます。 DF__User__TimeZoneIn__5C4D869D すべてを一貫した命名で管理DF_Users_TimeZoneInfoできるようにして、適切な制約が将来のターゲットテーブルに存在することを確認できるようにします(RedGateの比較のように、または視覚的にも)。 私は主に私が望むもののために働くスクリプトを持っています: select 'sp_rename N''[' + s.name + '].[' + d.name + ']'', N''[DF_' + t.name + '_' + c.name + ']'', ''OBJECT'';' from sys.tables t join sys.default_constraints d on d.parent_object_id = t.object_id join sys.columns c on c.object_id = t.object_id and c.column_id = d.parent_column_id join sys.schemas s on …

6
SQL Serverは混乱の状態にあります。データベースは存在しますか、それとも存在しませんか?
本当に奇妙で厄介な問題が発生しました。サーバー上で実行されているSQL Server 2008 R2のインスタンスがなんらかの理由で破損しています。 まず、昨日作成したデータベースが見つからないことに気づきました。それで、私たちは周りを見回して、それはまだそこにあるが、離れていることがわかりました。したがって、mdfを添付しようとしましたが、のようなメッセージが表示されましたThe file is currently in use。 変だと思ったのでSQL Serverを再起動しました。同じこと...さて、抜本的な対策の時間...それで、サービスを停止し、mdfを圧縮し、サービスを開始し、解凍してから、復元しようとしました。上記のメッセージは消えましたが、それから私は得ました: 既存のデータベースと同じ名前のデータベースをアタッチできません 痛い。もちろん、データベースエクスプローラには表示されないので、何が起こっているのかわかりません...最後の手段: DROP DATABASE [DatabaseName] もちろん、それはうまくいきませんでした。データベースが存在しないことを教えてくれます。だから、私は行き詰まっています...ある時点でSQL Serverはデータベースが存在すると見なし、別の時点でdbが存在しないと見なします。明らかに混乱の状態にあります。 誰かこれを見たことがある?それを修正する方法に関するアイデアはありますか?

1
SQL Server 7データベースをSQL Server 2012に移動するにはどうすればよいですか?
SQL Server 7.0からSQL Server 2012にデータベースを移動したいのですが、バックアップと復元には互換性がありません。SQL Server 7.0からエクスポートして2012にインポートする方法はありますか?テーブルだけが必要です-ビューやストアドプロシージャは必要ありません。

1
SQL Server 2008 R2の高バッファI / Oの原因
ドキュメント管理サーバー用のSQLサーバーのパフォーマンスをトラブルシューティングしようとしていますが、今日のパフォーマンスはかつてないほど低くなっています。 最近セットアップした管理データウェアハウス(MDW)を見ると、バッファI / Oに大きなスパイクが見られます。組み合わされたSQL待機時間は、1500〜2000ミリ秒の範囲にあり、通常よりもかなり高くなっています(約500ミリ秒)。この増加の大部分はバッファI / Oです。 DBAではなく、必要以上にこれを行うので、私は深く自分の深みから外れています。 バッファI / Oが大幅に増加した理由を確認する方法はありますか?これは、クエリが大量のデータを取得したためか、SQL Serverのメモリ制限の構成が正しくないためと考えられますか?トラブルシューティングに役立つように照会する必要がある特定の(またはその問題に関して一般的な)またはDMVはありますか? サーバーはSQL Server 2008 R2です。これは、2つのvCPUと8GB RAMを実行するVMであり、ディスクはSAN上の別のアレイでホストされます。 上記のグラフはすべて、SQL Server Management Data Warehouseを使用して生成されました。

1
大量のRAMを備えたSQL Serverを編成するための戦略
これで、DB用の新しいサーバーができ、とりわけ128 GBのRAMを利用できます(以前は16 GBでした)。SQL Serverはそのリソースの管理に非常に優れていることを知っていますが、SSが確実に実行するためにサーバー/データベースの設定または処理コード(ストアドプロシージャ/インデックスなど)で使用する必要がある特別な設定や戦略があるかどうか疑問に思っていました利用可能なラムの最大の利点。 DBは約70GBで、非トランザクションデータベースです(データウェアハウスです)。したがって、基本的には大きなWRITEの後に大量のREADが続くのが通常の流れです。

3
テーブルに必要な外部キーが多すぎる場合、どのような選択肢がありますか?
パーツを定義し、パーツ番号、説明、価格、重量などの情報を保持するベーステーブルがあります。ベーステーブルを参照し、タイプ/カテゴリに基づいてパーツに関する追加情報を提供する約400のテーブルもあります。 最初は外部キー制約を使用して、400のパーツ固有のテーブルのいずれかで参照されている場合、そのパーツをベーステーブルから削除できないようにしましたが、SQL Server 2005の推奨される最大253の外部キーにすぐに達しました。 この状況で、データの整合性を保証する外部キーに代わるものはありますか?データにアクセスする際のパフォーマンスの問題は確認されていませんが、クエリプランが複雑すぎるため、ベーステーブルの既存の部分の更新は失敗します。

2
SSIS 2012では、「エントリポイント」パッケージとしてパッケージにフラグを立てる目的は何ですか
Visual Studioデザイナーでは、SSISパッケージを右クリックして、「エントリーポイント」パッケージとして指定できます。 検索を実行すると、MSDNでこのページが見つかりました。 値1は、パッケージが直接開始されることを意味します。値0は、パッケージがパッケージ実行タスクで別のパッケージによって開始されることを意味します。デフォルト値は1です。 このフラグを有効または無効にすると、パッケージを直接実行できました。 このフラグを有効または無効にする目的は何ですか?自分のSSISパッケージの意図を文書化するだけなのか、それともSQL Server / SSISが有効または無効になったときの動作が異なるのか?

2
このデータに最適なリレーショナルデータベース構造
次のシナリオのデータベーススキームを作成しています。 ユーザーがいます ユーザーには役割があります(「開発者」や「CEO」など) ロールにはアプリケーションがあります(「Topdesk」など) アプリケーションには権限があります(「ナレッジベースの更新」など) ロールがアプリケーションへのアクセス権をすでに持っている場合、ロールは権限を持つことができます 高性能環境がない(速度を最適化する必要がない)と仮定すると、このスキーマを実装する最良の方法は何でしょうか?データベース環境には、MySQL、MSSQLを使用できます。リレーショナルデータベースの設計が重要です。 私自身は次のことを考え出しました: もちろん、最も不確かな部分は、Applications_Permissions_Rolesテーブルです。これは、リンクテーブルですの上に別のリンクテーブル。これまで使用したことも、見たこともありません。それを行う別の方法は、それを役割と権限の間のリンクテーブルで置き換え、次にコードまたは制約を使用して必要な関係を確認することです...しかし、それは私にとって良い解決策のようではありません。これらのことは、コードレベルではなく、可能な限り(可能であると思われる場合)データベースレベルで実施する必要があります。 次に、Permissions.ApplicationとApplications.Idの間のリンクが必要ですか?Roles_Applicationsに行がない可能性があるため(新しいアプリケーションを追加した直後など)、どの権限がどのアプリケーションに属しているかを判別することができないため、これを使用します。また、権限が属するアプリケーションを検索するための単一の参照ポイントでもあります。これは正しいと思いますが、それはまた、データベース設計において円を描くものです。ON_DELETEまたはON_UPDATEをカスケードに設定しようとすると、MSSQLエラーが発生します。 何か提案、またはこれはどのように行われることになっていますか?命名規則などに関するその他の提案も(おそらくコメントとして)歓迎されます。 ありがとう、 Luc 編集:タイトルを変更しました。以前のものはより包括的でしたが、おそらく複雑すぎます。

1
複数のSQLファイルを含むマスターファイルを実行できるPostgres管理GUIはありますか
本当に長いスクリプトを開発しています。スクリプトをより小さく管理しやすいスクリプトに分割し、各sqlファイルをマスターファイルに含めてから、マスターファイルを実行します。 例: master.sql 内容(使用する構文がわかりません): file1.sql file2.sql file3.sql psql -fコマンドラインでの使用および\iこれらのファイルのインクルードに関するいくつかのチュートリアルを見つけましたが、ここでは、端末を避け、GUIを使用してデータベースを管理し、master.sqlスクリプトを実行することをお勧めします。 これはどのpostgres管理GUIでも可能ですか?おそらくそれはpgAdminにはありません。

3
ドライブを最適化する前にSQL Serverサービスを停止しますか?
当社のSQL Server 2005データベースのデータファイルは、Microsoft Windows 2003のディスクデフラグツールが99%断片化していると報告する別の物理ドライブにあります。 土曜日の午前3時にこのドライブを最適化するタスクをスケジュールしました。ジョブは40分後に完了し、明らかなエラーはありませんでした。ただし、ドライブは非常に断片化されたままです。 デフラグする前にSQL Serverサービスを停止する必要がありますか? 環境 コンテキストの要求ごと:4 GBのRAMを搭載した2007年頃のDell PowerEdge 2950ハードウェアで32ビットWindows Server 2003(SP2)を実行するMicrosoft SQL Server 2005インスタンス(9.00.5324.00)があります。PowerEdge 2950には、2つの68GB仮想ディスクを作成するためにRAID-1として構成された4つの68GBドライブがあります。(1)C(ブートおよびOS)およびD(ページファイル、その他のその他のデータ)。(2)E(SQLデータ)。私の知る限り、ITスタッフはこれらのドライブのいずれも最適化したことがありません...ディスクデフラグツールは、66%(C)、77%(D)、および99%(E)のファイルの断片化を報告します。パフォーマンスモニターは、次の平均結果を報告します。「ページングファイル:使用率%」= 〜6.8% ; "SQL Server:バッファマネージャ-ページの平均余命" = 20秒 ; および「PhysicalDisk:平均ディスク秒/書き込み、ドライブE」= 300〜1。数か月後には非常に必要なハードウェアとSQL Serverのアップグレード(つまり、新しいハードウェア、64ビットWindows Server 2012、64ビットSQL Server 2012、12GB RAM)が必要ですが、ユーザーのパフォーマンス、問題をできるだけ軽減したい。したがって、ファイルのデフラグを考えることは、メインのSQLデータドライブであるドライブEに役立つ可能性があります。 余談ですが、先週、2台の故障したドライブを引き出してアレイを再構築しました。サーバーを維持するために別のITチームと契約しているため、機器に直接アクセスすることはできません...私たちの組織はサービスの料金を支払うだけです。 定期的にスケジュールされたメンテナンスウィンドウ(毎週)中のダウンタイムと、必要に応じて夜間の帯域外ダウンタイムを用意できます。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.