データベース管理者

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

2
PostgreSQL:ディレクトリを/ rootに変更できません
テーブルplanet_osm_polygonをあるデータベースosmから別のデータベースにコピーしようとしていますtest。私su postgresと実行しましたpg_dump。 問題:ただし、エラーが発生could not change directory to "/root"し、Password:プロンプトが2回表示されます。pg_dumpとしてログインしたときにを実行する方法はありますrootか? root@lalaland:~# su postgres postgres@lalaland:/root$ pg_dump -h localhost "osm" --table "public.planet_osm_polygon" | psql -h localhost "test" --table "staging.planet_osm_polygon" could not change directory to "/root" could not change directory to "/root" Password: Password: 更新 問題#2:publicフラグを渡したにもかかわらず、テーブルがスキーマにコピーされているようです--table="staging.planet_osm_polygon"。なぜスキーマにコピーされないのstagingですか?

2
ORA-01031の解決方法:Windowsインストールでの権限不足エラー
Windows 2008 R2サーバーにOracle 11Gをインストールしました。また、別のインストールメディアを使用してOracleクライアントライブラリをインストールしました。クライアントのインストール後、次を使用してデータベースにログインしようとすると: C:\>sqlplus / as sysdba 次のエラーが発生します。 ORA-01031:権限が不十分です これはクライアントのインストール前に機能しました。私のアカウントはORA_DBAグループにあります。私のアカウントもAdministratorグループに属しています。ORACLE_SID環境変数リストに設定していません。それはする必要がありますか?これはクライアントのインストール前に機能しましたが、その時点ではその変数もありませんでした。 UACは最低レベルでオンになっており、私は常にcmd管理者として実行しています。 私が持っているsqlnet.oraフォルダ内にこのようなファイルを: C:\app\myaccount\product\11.2.0\dbhome_1\NETWORK\ADMIN sqlnet.ora # sqlnet.ora Network Configuration File: C:\app\myaccount\product\11.2.0\dbhome_1\network\admin\sqlnet.ora # Generated by Oracle configuration tools. # This file is actually generated by netca. But if customers choose to # install "Software Only", this file wont exist and without …

1
SQL Serverで既存のデータベーススナップショットを照会するにはどうすればよいですか?
特定のデータベースに、そこから作成されたデータベーススナップショットがあるかどうかを判断できるt-sqlクエリを作成しようとしています。 たとえば、次のようなスナップショットを作成するとします。 CREATE DATABASE [DatabaseA_Snapshot] ON (NAME=DatabaseA, FileName='<whatever>') AS SNAPSHOT OF [DatabaseA] そのスナップショットの存在を後でもう一度クエリできる方法はありますか?sys.databasesに表示されることがわかりますが、DatabaseAから作成されたデータベーススナップショットであると判断するのに役立つ情報が見つかりませんでした。 SQL Server Management Studioのオブジェクトエクスプローラーは、 'データベーススナップショット'フォルダーの下に配置するため、これらを通常のデータベースと区別するいくつかの方法があります。

1
データベースダンプ(エクスポート)とデータベースバックアップの違いは何ですか?
コマンドを使用して(を介して)バックアップを作成する代わりに、データベースのダンプにEXPor EXPDPコマンドのみを使用する(そしてそれをバックアップと見なす)場合の欠点は何ですか?データベースダンプ(エクスポート)とデータベースバックアップの違いは何ですか?BACKUP DATABASERMAN
12 oracle  backup  export 

1
ANSI / ISOはLIMIT標準化を計画していますか?
現在、クエリによって返される結果の数を制限する最良の方法を標準化する計画はありますか? スタックオーバーフローの質問は、MYSQL LIMITキーワードに代わるANSI SQLはありますか?は、この動作をさまざまな言語で処理するさまざまな方法を示しています。 DB2 -- select * from table fetch first 10 rows only Informix -- select first 10 * from table Microsoft SQL Server and Access -- select top 10 * from table MySQL and PostgreSQL -- select * from table limit 10 Oracle -- select * from …

2
MySQLに楽観的ロックを正しく実装する方法
MySQLで楽観的ロックを正しく実装するにはどうすればよいですか? 私たちのチームは、以下の#4を実行する必要があると推定しました。そうしないと、別のスレッドが同じバージョンのレコードを更新できるリスクがありますが、これが最善の方法であることを検証したいと考えています。 楽観的ロックを使用するテーブルにバージョンフィールドを作成します(例:列名= "version") 選択時には、必ずバージョン列を含めてバージョンをメモしてください その後のレコードの更新時に、更新ステートメントは「where version = X」を発行する必要があります。ここで、Xは#2で受け取ったバージョンであり、その更新ステートメント中のバージョンフィールドをX + 1に設定します。 実行しSELECT FOR UPDATE、我々は、更新しようとしているレコードに変更を加えることができる人シリアライズように、我々は、更新しようとしている記録に。 明確にするために、同じバージョンのレコードを取得する同じタイムウィンドウで同じレコードを選択する2つのスレッドが、レコードを同時に更新しようとした場合に、お互いに上書きされないようにします。#4を行わない限り、両方のスレッドが同時にそれぞれのトランザクションに入る場合(ただし、まだ更新を発行していない場合)、更新に行くときに、UPDATEを使用する2番目のスレッドが可能性があると考えています...バージョン= Xは古いデータで動作します。 バージョンフィールド/楽観的ロックを使用している場合でも、更新時にこの悲観的ロックを実行する必要があると私たちは考えていますか?
12 mysql  locking 


3
ログテーブルはidフィールドまたは主キーを取得する必要がありますか?
特定のファイルが別のシステムにエクスポートされた日時スタンプを記録するログテーブルがあります。 現在、exportedLogテーブルには3つのフィールドがあります。 id (primary key) messageId (int) exportedDateTime (datetime) これを確認すると、idこのテーブルへの結合がないため、フィールドは何の役にも立たないことがわかりました。このテーブルで機能するのは、メッセージを処理してこのログテーブルに挿入するバッチジョブの挿入だけです。 idフィールドを削除する必要がありますか? どちらかmessageId、exportedDateTimeまたは両方に主キーが必要ですか?

3
MySQLレプリケーション-スレーブは継続的にマスターに遅れています
MySQL-5.1.50をマスター/スレーブレプリケーション設定で使用しています。 ほとんどの場合、スレーブはマスターより遅れています。 を実行してもshow processlist;、時間がかかるクエリはありません。私も有効にしslow_logました。ただし、実行速度の遅いクエリは検出されません。 スレーブはレプリケーションがマスターより数秒遅れていることを警告し続けています。時々、遅延時間が増加します。 問題の原因を診断するにはどうすればよいですか? この問題が過去20日間続いているため、緊急のサポートが必要です。

2
UPDATEステートメントのOUTPUTをローカル変数に送る
私はこれをしたいと思います: DECLARE @Id INT; UPDATE Logins SET SomeField = 'some value' OUTPUT @Id = Id WHERE EmailAddress = @EmailAddress -- this is a parameter of the sproc これは可能ですか?ローカルテーブル変数を宣言してそこに出力を送信できることはわかっていますが、可能であればスキップすることをお勧めします

2
「どちらか一方」の関係をモデル化するにはどうすればよいですか?
Softwareという名前のエンティティと、2つのサブタイプFreeSoftwareおよびNonFreeSoftwareがあるとします。NonFreeSoftwareエンティティには、購入日、ベンダーなどの属性があります。FreeSoftwareエンティティには、ライセンス、ソースコードのURLなどの属性があります。 それで、別のエンティティであるOperatingSystemをモデル化したい場合、どうすればよいですか?ソフトウェアには「ある」関係がありますが、FreeSoftwareおよびNonFreeSoftwareには「どちらかまたは両方」の関係があります。 この階層を分析する方法に何か欠けていると思います。

3
時間間隔に基づくレコードのグループ化
次のスキーマのテーブルがあり、時間間隔(例:1分あたりのレコード数)に基づいてデータをグループ化できるクエリを定義し、前のグループ以降のSnapShotValueへの変更の合計を提供する必要があります。現時点では、SnapShotValueは常に増分するため、差分の合計のみが必要です。誰かがこれを行う可能性のあるSQL Server T-SQLクエリを手伝ってくれる?私はスキーマを変更することにオープンですが、これは私が現在持っているものです。 スキーマ CaptureTime (datetime) SnapShotValue (int) サンプルデータ 1 Jan 2012 00:00:00, 100 1 Jan 2012 00:00:30, 125 1 Jan 2012 00:01:00, 200 1 Jan 2012 00:01:30, 300 1 Jan 2012 00:02:15, 400 1 Jan 2012 00:02:30, 425 1 Jan 2012 00:02:59, 500 必要なクエリ結果 1 Jan 2012 00:01:00, 225 …

5
トリガーでINSERTEDテーブルとDELETEDテーブルを結合する恐ろしいパフォーマンス
特定の列が特定の値から他の値に変更されるのを監視するテーブルにUPDATEトリガーがあります。これが発生すると、単一のUPDATEステートメントを介して別のテーブル内の関連データを更新します。 トリガーが最初に行うことは、更新された行にこの列の値が問題の値から変更されているかどうかを確認することです。単にINSERTEDをDELETEDに結合し、その列の値を比較します。適格なものがなければ、早期にベイルアウトするため、UPDATEステートメントは実行されません。 IF NOT EXISTS ( SELECT TOP 1 i.CUSTNMBR FROM INSERTED i INNER JOIN DELETED d ON i.CUSTNMBR = d.CUSTNMBR WHERE d.CUSTCLAS = 'Misc' AND i.CUSTCLAS != 'Misc' ) RETURN この場合、CUSTNMBRは基礎となるテーブルの主キーです。このテーブルで大規模な更新(たとえば、5000行以上)を実行すると、CUSTCLAS列に触れていなくても、このステートメントでAGESがかかります。プロファイラーでこのステートメントが数分間停止するのを見ることができます。 実行計画は奇妙です。挿入されたスキャンが3,714回実行され、出力行が約1,850万行あります。CUSTCLAS列のフィルターを通過します。これは(ネストされたループを介して)削除されたスキャン(これもCUSTCLASでフィルタリングされます)に結合されます。これは1回だけ実行され、5000出力行を持ちます。 これを引き起こすために私はここでどんな馬鹿げたことをしていますか?トリガーは絶対に複数行の更新を適切に処理する必要があることに注意してください。 編集: 私はこれもこのように書いてみました(EXISTSが不愉快なことをしている場合に備えて)、それでも同じくらいひどいです。 DECLARE @CUSTNMBR varchar(31) SELECT TOP 1 @CUSTNMBR = i.CUSTNMBR FROM INSERTED i INNER JOIN …

2
1対1の関係は正規化されていますか?
レコードの統計データの大規模なセットがあると考えてください。例:20〜30 INTカラム。セット全体が1つのレコードに属しているため、セット全体を1つのテーブルに保持するか、1対1の関係で接続された別のテーブルを作成する方が良いでしょうか。 前者の利点はJOIN、対応するレコードのすべての統計データを回避して迅速にアクセスできることです。 後者の利点は、カラムを整頓することです。最初の列は読み取り中心で、2番目の列は書き込み中心です。もちろん、行レベルのブロッキングでInnoDBを使用しているので、パフォーマンスに大きな影響はないと思います。 一般に、1つのレコードに対して異なるデータセットを分離することが実用的かどうか知りたいですか?


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