データベース管理者

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


6
引数をpsqlに渡す
Postgres 8.3でplpgsqlスクリプトを実行しています-psqlを介してこのスクリプトに引数を渡したいのですが。私は現在次のようなスクリプトを実行しています: psql -d database -u user -f update_file.sql PGOPTIONS環境変数を説明するこのリンクに出くわしましたが、「カスタム」引数に対しては機能しません。つまり、設定がpostgres.confファイルにリストされていないため、エラーが表示されます。 -bash-3.2$ export PGOPTIONS='--pretend=true' -bash-3.2$ psql -d my_db -f update_database.sql psql: FATAL: unrecognized configuration parameter "pretend" 他のアイデアは?理想的には環境変数を避けたい...
10 postgresql  psql 

6
階層のあるテーブル:外部キーによる循環を防ぐための制約を作成します
次のように、テーブル自体に外部キー制約があるテーブルがあるとします。 CREATE TABLE Foo (FooId BIGINT PRIMARY KEY, ParentFooId BIGINT, FOREIGN KEY([ParentFooId]) REFERENCES Foo ([FooId]) ) INSERT INTO Foo (FooId, ParentFooId) VALUES (1, NULL), (2, 1), (3, 2) UPDATE Foo SET ParentFooId = 3 WHERE FooId = 1 このテーブルには次のレコードがあります。 FooId ParentFooId ----- ----------- 1 3 2 1 3 2 この種の設計が意味をなす場合(例:典型的な「従業員と上司と従業員」の関係)があり、いずれの場合も、スキーマにこれがある状況にあります。 …


6
Workbenchを使用してSSH経由でMySQLデータベースに接続できない
MySQL Workbenchを使用して、Webアプリケーションサーバーの1つからSSHトンネリングを介してデータベースに接続しようとしています。これが基本的な設定です。セキュリティ上の理由から、スクリーンショットの一部の値を変更したことに注意してください。 問題は、アプリケーションサーバーの1つからSSHトンネルを介して接続しようとするたびに、次のエラーが発生することです。 ユーザーsocial_shop_prodを使用して、computer.amazonaws.comのSSHトンネル経由でus-east-1.amazonaws.comに接続できませんでした。127.0.0.1のMySQLサーバーに接続できません。 ただし、次のコマンドラインを介してSSH経由で同じ資格情報を使用する場合: mysql -u social_shop_prod -h us-east-1.amazonaws.com -p 正常に接続して、MySQLインタラクティブコマンドプロンプトを取得できます。 ここで私の開発チームの他のメンバーと話していると、誰も私がWorkbenchを使用してアプリサーバーからSSH経由でトンネルできない理由を理解できません。しかし、私がアプリサーバーの1つにSSHで接続し、コマンドラインを介してMySQLに接続すると、接続できました。 そして、なぜそれは127.0.0.1以上に接続しようとしていますか?構成では指定しませんでした。また、私のhostsファイルは、以下に示すドメインをそのIPにリダイレクトしていません。 どんな建設的な入力も大歓迎です。

2
mysqldumpコマンドは、DBに存在するすべてのビューもバックアップしますか、それとも特別なコマンドがありますか?
ビューとともにデータベース全体をバックアップしようとしています。mysqldumpコマンドを使用します。それがすべてのビューをコピーするのか、それとも別のコマンドを使用する必要があるのか​​と思っていました。 答えを教えてください。どんな助けでも大歓迎です。
10 mysql  backup  mysqldump  view 

1
Windows上のDB2 9.7でローカルdb2adminにすべての特権を付与するにはどうすればよいですか?
私の開発ステーションには、OS Windows XP Professional Edition、Service Pack 3を搭載したラップトップがあります。 Express-CエディションのIBM DB2 UDB 9.7フィックスパック4をダウンロードしてインストールしました。 DB2のローカルインストールのローカルデータベース管理者として使用しているdb2adminというローカルWindowsアカウントがあります(開発者専用)。 コマンドウィンドウを実行すると、問題なく以下を実行できます。 db2 attach to db2 user db2admin using xxxxxxxxxx これにより、DB2というインスタンスに接続できます。 データベース作成コマンドを実行できます。 次に、データベースに接続して、DB2のdb2adminアカウントにすべての特権を付与します。 db2 CONNECT TO MYDB; SET SCHEMA DB2ADMIN; db2 GRANT DBADM,CREATETAB,BINDADD,CONNECT,CREATE_NOT_FENCED_ROUTINE,IMPLICIT_SCHEMA,LOAD,CREATE_EXTERNAL_ROUTINE,QUIESCE_CONNECT,SECADM ON DATABASE TO USER DB2ADMIN; CONNECT RESET; しかし、それを実行すると、実際のWindowsユーザーアカウント(synprgcma)にはユーザーdb2adminに権限を付与する権限がないことがDB2から通知されます。 したがって、2番目のスクリプトを次のように変更すると、 db2 CONNECT TO MYDB USER db2admin USING …


1
MySQLダンプの復元-コメントを保持する方法
だから私はバックアップとしてその複雑なMySQLダンプを持っています。残念ながら、そのバックアップは複雑であり、私たちは邪悪なトリガーを使用しています。 私たちの邪悪なトリガーのいくつかには、#文字で始まるコメント行がありました。 データベースをバックアップすると、結果のダンプで#行が保存されます。問題は、復元を実行しているときです。#で始まる行は空行に置き換えられます。 だから私はポンドで始まる行でダンプを復元する方法を探しています。

1
mysqldumpはトリガーとプロシージャをダンプできますか?
指定されたデータベースからすべてのトリガーとプロシージャを保存するmysqldumpを作成する方法はありますか? 少し前に私はそれを読んでmysqldumpトリガーも保存されますが、そのようには見えません。2つ目の関連する質問は、トリガーが存在する場合にSQLファイルをチェックインするにはどうすればよいですか?

2
「トランザクションIDの折り返し」について
今、私は「トランザクションIDの折り返し」についてのドキュメントを読みましたが、本当に理解できないことがあり、ドキュメントは次のURLです http://www.postgresql.org/docs/9.0/static/routine-vacuuming .html#VACUUM-FOR-WRAPAROUND 23.1.4。トランザクションIDの折り返しエラーの防止 PostgreSQLのMVCCトランザクションセマンティクスは、トランザクションID(XID)番号を比較できるかどうかに依存します。現在のトランザクションのXIDより大きい挿入XIDを持つ行バージョンは「将来」であり、現在のトランザクションからは見えません。ただし、トランザクションIDのサイズは制限されている(32ビット)ため、長時間実行されるクラスター(40億を超えるトランザクション)はトランザクションIDのラップアラウンドに悩まされます。XIDカウンターがゼロに戻り、すべての突然のトランザクションが過去は未来にあるように見えます—つまり、彼らの出力は見えなくなります。つまり、壊滅的なデータ損失です。(実際にはデータはまだ残っていますが、それが得られない場合は非常に快適です。)これを回避するには、20億トランザクションごとに少なくとも1回、すべてのデータベースのすべてのテーブルをバキュームする必要があります。 「トランザクションIDのラップアラウンドが発生します。XIDカウンターがゼロに折り返され、過去にあった突然のトランザクションはすべて未来にあるように見えます。つまり、出力が見えなくなります」というステートメントを理解できません。 誰かがこれを説明できますか?データベースでトランザクションIDのラップアラウンドが発生した後、過去にあったトランザクションが未来にあるように見えるのはなぜですか?要するに、トランザクションIDがautovacuumでラップアラウンドした後に、PostgreSQLが「データ損失」の状態になるかどうかを知りたいのです。 私の個人的な見解では、出力が64ビットで循環されないtxid_current()関数を使用して現在のトランザクションIDを取得できます。 txid_current()関数によって。ただし、PostgreSQLサーバーのシャットダウン後にpg_resetxlogリセットリセットトランザクションIDを使用します。私は正しいですか?ありがとう
10 postgresql 

2
ビューには独自の外部キー制約が必要ですか?
免責事項:私はDBAではなくプログラマーなので、我慢してください... 2つのエンティティを一緒にマッピングするために使用するビューがあります。それを取得するには、いくつかの異なるテーブル間で結合を行う必要があります。 CREATE OR REPLACE VIEW V_SCREENING_GROUP_SITES AS ( SELECT SG.SCREENING_GROUP_ID, V.SITE_ID FROM SCREENING_GROUP SG, VISIT V, VISIT_DATE VD WHERE VD.VISIT_ID = V.VISIT_ID AND V.SCREENING_GROUP_ID = SG.SCREENING_GROUP_ID); 上記は説明用です。あまり気にしないでください。私が知る必要があるのは、新しいV_SCREENING_GROUP_SITESビューのフィールド(SCREENING_GROUP_IDおよびSITE_ID)を、SCREENING_GROUPおよびSITEテーブルへの外部キーとして動作させる方法です。それとも問題ですか? それがテーブルだったとしたら、 ALTER TABLE V_SCREENING_GROUP_SITES ADD CONSTRAINT FK_SCREENING_GROUP_ID FOREIGN KEY (SCREENING_GROUP_ID) REFERENCES SCREENING_GROUP.SCREENING_GROUP_ID; ... しかし、それは明らかに機能しないビューなので、FKを設定するために機能するALTER VIEW構文が見つかりませんでした。私は何をすべきか? (これはMySQLデータベースです)

1
暗号化されたデータベースを別のサーバーに復元する
私はSQLServer 2008で動作する製品を使用しています。当然のことながら、それを提供する会社はSQLServerサポートを提供していません。製品をインストールしたときに、データベースを暗号化するためのパスワードを指定しました。別のサーバーでテストするために、製品の別のコピーを実行したいのですが。データベースを別のサーバーに復元し、その別のサーバーに製品をインストールしました。インストール時に同じパスワードを入力し、メインサーバーからバックアップを復元しました。ただし、エラーメッセージが表示されます。 System.Data.SqlClient.SqlException: An error occurred during decryption. 製品から。SQLServer Management Studioを使用してテーブルにアクセスできます。 私はこれを試しました: 最初のサーバー: CREATE CERTIFICATE cert1 WITH SUBJECT = 'Certificate for my stuff' BACKUP CERTIFICATE cert1 TO FILE = 'd:\backup\cert1.dat' WITH PRIVATE KEY ( ENCRYPTION BY PASSWORD = 'mypassword', FILE = 'd:\backup\cert1_privatekey.dat' ) 2番目のサーバー: CREATE MASTER KEY ENCRYPTION BY PASSWORD …


2
MySQLで列の中央値を見つけるにはどうすればよいですか?
2つのデータベースクエリでこれを実行することしか想像できません。1つ目はデータベース内の行数を検索し、2つ目ORDER BYは関心のある列をLIMIT X, 1X で選択します。Xは行数の半分です。 1つのクエリのみでこれを行う簡単な方法はありますか? 現在、計算には平均を使用していますが、平均はより良いと思います。値に上限はなく、値は下から0で制限されます。 編集:はい、私は「中央値」と言うつもりでしたが、いくつかの脳のエラーがあり、「平均値」を検索しました。私は今stackoverflowで答えを見つけました
10 mysql 

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