Disponible con una licencia Standard o Advanced.
La forma de configurar una geodatabase depende de las situaciones del sitio. Siga las instrucciones del escenario que corresponda.
- Usted es el administrador de PostgreSQL y de la geodatabase.
- El administrador de PostgreSQL crea la base de datos; el administrador de la geodatabase, la geodatabase.
Tenga en cuenta que este tema está relacionado con instalaciones de PostgreSQL en un servidor Linux. Si tiene PostgreSQL instalado en un servidor de Windows, consulte Crear una geodatabase en PostgreSQL en Windows.
Usted es el administrador de PostgreSQL y de la geodatabase
Si desempeña el rol tanto de administrador de base de datos como de administrador de la geodatabase y, por lo tanto, conoce la contraseña de ambos roles de inicio de sesión, puede usar la herramienta de geoprocesamiento Crear geodatabase corporativa o un script de Python para crear una geodatabase en PostgreSQL.
La herramienta Crear geodatabase corporativa facilita la configuración de una geodatabase porque crea los objetos de base de datos y otorga los privilegios que necesita. Para lograrlo, se usa una configuración predeterminada específica. A continuación se describe lo que hace la herramienta Crear geodatabase corporativa y la configuración que utiliza:
- Crea una base de datos PostgreSQL utilizando la plantilla predeterminada (template1).
Si necesita crear la base de datos con una plantilla distinta (por ejemplo, si desea usar la plantilla postgis), debe hacerlo antes de ejecutar esta herramienta. A partir de ese momento, puede ejecutar la herramienta Crear geodatabase corporativa o una secuencia de comandos y especificar el nombre de la base de datos creada previamente.
- Crea un rol de inicio de sesión sde en el clúster de base de datos y le otorga estado de superusuario.
El usuario sde debe ser un superusuario para crear la geodatabase.
- Crea un esquema sde en la base de datos.
Las tablas del sistema, vistas, funciones y procedimientos de geodatabase se almacenan en el esquema sde.
- Establece el usuario sde como propietario del esquema sde y otorga el uso al rol público en el esquema sde.
Los roles de inicio de sesión que usarán la geodatabase deben ser capaces de acceder al esquema sde. Como es probable que los roles de inicio de sesión de geodatabase no existan aún, esta herramienta otorga el uso al público. Después de crearse la geodatabase, puede reforzar su seguridad revocando el uso del público en el esquema sde y otorgándolo solo a los grupos y roles de inicio de sesión que necesitan acceso a la geodatabase.
- Crea una geodatabase.
En primer lugar, debe instalar PostgreSQL y configurar el clúster de base de datos.
Instalar y configurar PostgreSQL
Siga estos pasos para configurar un clúster de base de datos de PostgreSQL para almacenar una geodatabase en un servidor Linux:
-
Obtenga e instale una versión compatible de PostgreSQL y configure el cluster de la base de datos.
Pude descargar instalaciones de PostgreSQL desde My Esri. Si utiliza esta instalación, no es necesaria ninguna configuración específica no predeterminada para utilizar PostgreSQL con ArcGIS. Solo asegúrese de cambiar la configuración regional y la ubicación si desea utilizar un valor diferente al predeterminado. Como alternativa, puede obtener la instalación de PostgreSQL por su cuenta.
Consulte la documentación de PostgreSQL para obtener instrucciones sobre la instalación y configuración de PostgreSQL.
- Configure el clúster de la base de datos para aceptar las conexiones.
Esto incluye modificar el archivo pg_hba.conf para permitir que el clúster de bases de datos acepte conexiones remotas.
- Establezca las siguientes variables de entorno para el usuario postgres si no están ya establecidas correctamente:
- PGDATA: este se debería haber establecido con la instalación de PostgreSQL. Si no, establézcalo en la ubicación del directorio de datos de PostgreSQL. (Se encuentra en el directorio de instalación de PostgreSQL).
- LD_LIBRARY_PATH: establezca la variable LD_LIBRARY_PATH en el directorio lib de PostgreSQL. La ubicación del directorio lib varía en función de cómo haya instalado PostgreSQL. Para determinar la ubicación correcta para la instalación de PostgreSQL, ejecute pg_config como usuario postgres. Establecer LD_LIBRARY_PATH en el valor que se muestra para PKGLIBDIR.
- PATH: establezca la variable PATH para que contenga postgresql/bin.
- Cree un espacio de tabla en el cluster de la base de datos en la que almacenó su base de datos. Si no crea un espacio de tabla, se utilizará el espacio de tabla pg_default.
A continuación, instale y configure un cliente de ArcGIS.
Instalar un cliente de ArcGIS
Puede instalar ArcGIS Desktop (Desktop Standard o Desktop Advanced) o ArcGIS Server (enterprise edition) y ejecutar una secuencia de comandos de Python para crear una geodatabase. Si desea ejecutar la herramienta de geoprocesamiento Crear geodatabase corporativa en lugar de una secuencia de comandos, instale ArcGIS Desktop.
ArcGIS Desktop solo se admite en sistemas operativos Windows y, por lo tanto, está instalado en un equipo distinto de PostgreSQL. Puede instalar ArcGIS Server en el mismo equipo que PostgreSQL; sin embargo, como los sistemas de administración de bases de datos son aplicaciones que requieren mucha memoria, no es aconsejable.
- Instale el cliente de ArcGIS desde el cual creará la geodatabase.
Normalmente, las geodatabases se crean desde una instalación de ArcGIS Server o ArcGIS Desktop (Standard o Advanced).
- Si va a utilizar ArcGIS Server con la geodatabase en PostgreSQL, establezca o modifique las siguientes variables para la cuenta de ArcGIS:
- SDEHOME: establezca esta variable en el directorio de instalación de ArcGIS Server.
Por ejemplo, si ArcGIS Server está instalado en la ubicación predeterminada en un servidor Linux, establezca export SDEHOME=/home/ags/arcgis/server.
- PG_HOME: defina PG_HOME como /opt/PostgreSQL/<version>.
En este ejemplo, se configura PG_HOME para una instalación de PostgreSQL 9.6.3: export PG_HOME=/opt/PostgreSQL/9.6.3.
- Si ArcGIS Server está instalado en un servidor de Windows, agregue las ubicaciones PG_HOME\bin y SDEHOME\bin a la variable PATH.
Por ejemplo, establezca export PATH=$PATH:$PG_HOME/bin:$SDEHOME/bin en Linux.
- Si ArcGIS Server está instalado en un servidor Linux, agregue $PG_HOME/lib y $SDEHOME/lib a la variable LD_LIBRARY_PATH.
Por ejemplo, establezca export LD_LIBRARY_PATH=$LD_LIBRARY_PATH$PG_HOME/lib:$SDEHOME/lib.
- SDEHOME: establezca esta variable en el directorio de instalación de ArcGIS Server.
Ahora que ArcGIS está instalado, tendrá acceso al archivo st_geometry.so, que debe colocarse en el servidor de PostgreSQL.
Colocar el archivo st_geometry.so
Debe colocar el archivo st_geometry.so en el directorio lib de PostgreSQL para poder crear una geodatabase. La ubicación del directorio lib en Linux puede variar en función de cómo haya instalado PostgreSQL. Para determinar la ubicación correcta para la instalación de PostgreSQL, ejecute pg_config como usuario postgres. El valor que se devuelve para PKGLIBDIR es el directorio lib donde es necesario colocar la biblioteca st_geometry.
Puede obtener el archivo st_geometry.so desde My Esri o desde la instalación de ArcMap o ArcGIS Server. En la siguiente tabla se indica en qué ubicación del directorio de instalación se debe buscar cada versión de la biblioteca st_geometry.so.
Versión de PostgreSQL | Directorio de instalación del cliente de ArcGIS |
---|---|
PostgreSQL 9.4.x (no disponible con ArcMap ni ArcGIS Server 10.6.1) | DatabaseSupport/PostgreSQL/9.4/Linux64 |
PostgreSQL 9.5.x | DatabaseSupport/PostgreSQL/9.5/Linux64 |
PostgreSQL 9.6.x | DatabaseSupport/PostgreSQL/9.6/Linux64 |
PostgreSQL 10.3 (solo disponible con ArcMap y ArcGIS Server 10.6.1) | DatabaseSupport/PostgreSQL/10/Linux64 |
Como usuario raíz, coloque el archivo de la biblioteca st_geometry.so específico de la versión de PostgreSQL que esté usando en el directorio lib de PostgreSQL. Si no coloca la biblioteca st_geometry.so correcta en el directorio lib de PostgreSQL, no podrá crear una geodatabase.
Ahora, su clúster de base de datos y cliente de ArcGIS están listos para que cree una geodatabase.
Crear una geodatabase
Puede ejecutar la herramienta Crear geodatabase corporativa desde ArcGIS Desktop (Desktop Standard o Desktop Advanced) o ejecutar una secuencia de comandos de Python desde un cliente de ArcGIS Desktop (Desktop Standard o Desktop Advanced), ArcGIS Server (enterprise edition) para crear una geodatabase.
Ejecutar la herramienta Crear geodatabase corporativa
Si tiene acceso a ArcGIS Desktop, puede ejecutar una herramienta de geoprocesamiento para crear la geodatabase.
Siga estos pasos para crear una geodatabase usando la herramienta Crear geodatabase corporativa en ArcMap:
- Inicie ArcMap o ArcCatalog.
- Abra la herramienta Crear geodatabase corporativa.
Puede buscar o examinar esta herramienta, que se encuentra en el conjunto de herramientas Administración de la geodatabase de la caja de herramientas Administración de datos.
- Elija PostgreSQL en la lista desplegable Plataforma de la base de datos.
- Escriba el nombre del servidor de PostgreSQL en el cuadro de texto Instancia.
- En el cuadro de texto Base de datos, escriba el nombre de la base de datos que desee crear para incluir su geodatabase.
- Debe conectarse al cluster de base de datos como el superusuario de postgres para crear la base de datos y otros objetos; por lo tanto, el cuadro de texto Administrador de base de datos se predetermina a postgres. Si el superusuario de postgres tiene un nombre diferente, escriba ese nombre en el cuadro de texto Administrador de base de datos.
- Escriba la contraseña del superusuario de postgres en el cuadro de texto Contraseña del administrador de base de datos.
- Escriba una contraseña para el usuario sde en el cuadro de texto Contraseña del administrador de la geodatabase.
Si el usuario sde ya existe en el cluster de la base de datos, escriba la contraseña del usuario existente y se crea un esquema sde en la base de datos. Si el usuario no existe aún, un usuario denominado sde con la contraseña que especificó se crea en el cluster de la base de datos y un esquema correspondientes se crea en la base de datos. El uso se concede en el esquema sde para el rol de grupo público.
- Si tiene un espacio de tabla preconfigurado para utilizarlo como el espacio de tabla predeterminado de la base de datos, escriba su nombre en el cuadro de texto Nombre del espacio de tabla.
Esta herramienta no crea un espacio de tabla; debe especificar un espacio de tabla existente o dejar este cuadro de texto en blanco. Si no se especifica un espacio de tabla, la base de datos se crea en pg_default.
- Para especificar un Archivo de autorización, busque y seleccione el archivo de códigos clave que se creó cuando autorizó ArcGIS Server Enterprise.
Este archivo se escribe en la carpeta \\Program Files\ESRI\License<release#>\sysgen en servidores de Windows y /arcgis/server/framework/runtime/.wine/drive_c/Program Files/ESRI/License<release#>/sysgen en Linux. Copie este archivo en una ubicación que sea accesible para el cliente desde el que se está creando la geodatabase. Si aún no lo ha hecho, autorice ArcGIS Server ahora para crear este archivo.
- Haga clic en el botón Aceptar para ejecutar la herramienta.
Puede encontrar los mensajes relativos a la creación de la geodatabase en el archivo sde_setup.log, que se crea en el directorio especificado para la variable %TEMP% del equipo en el que se ejecuta la herramienta. Si tiene algún problema al crear una geodatabase, compruebe este archivo para solucionarlo.
Ahora tiene una geodatabase en PostgreSQL.
A continuación, puede crear un usuario que puede cargar datos en la geodatabase.
Ejecutar un script de Python
Puede copiar, guardar y ejecutar la secuencia de comandos proporcionada aquí para crear una geodatabase desde ArcGIS Desktop (Desktop Standard o Desktop Advanced) o ArcGIS Server (enterprise edition).
-
Cree un archivo de texto en el equipo cliente de ArcGIS y copie en él el script siguiente.
""" Name: create_enterprise_gdb.py Description: Provide connection information to a DBMS instance and create an enterprise geodatabase. Type create_enterprise_gdb.py -h or create_enterprise_gdb.py --help for usage """ # Import system modules import arcpy import os import optparse import sys # Define usage and version parser = optparse.OptionParser(usage = "usage: %prog [Options]", version="%prog 1.0 for " + arcpy.GetInstallInfo()['Version'] ) #Define help and options parser.add_option ("--DBMS", dest="Database_type", type="choice", choices=['SQLSERVER', 'ORACLE', 'POSTGRESQL', ''], default="", help="Type of enterprise DBMS: SQLSERVER, ORACLE, or POSTGRESQL.") parser.add_option ("-i", dest="Instance", type="string", default="", help="DBMS instance name") parser.add_option ("-D", dest="Database", type="string", default="none", help="Database name: Do not specify for Oracle") parser.add_option ("--auth", dest="Account_authentication", type ="choice", choices=['DATABASE_AUTH', 'OPERATING_SYSTEM_AUTH'], default='DATABASE_AUTH', help="Authentication type options (case-sensitive): DATABASE_AUTH, OPERATING_SYSTEM_AUTH. Default=DATABASE_AUTH") parser.add_option ("-U", dest="Dbms_admin", type="string", default="", help="DBMS administrator user") parser.add_option ("-P", dest="Dbms_admin_pwd", type="string", default="", help="DBMS administrator password") parser.add_option ("--schema", dest="Schema_type", type="choice", choices=['SDE_SCHEMA', 'DBO_SCHEMA'], default="SDE_SCHEMA", help="Schema type applies to geodatabases in SQL Server only. Type SDE_SCHEMA to create geodatabase in SDE schema or type DBO_SCHEMA to create geodatabase in DBO schema. Default=SDE_SCHEMA") parser.add_option ("-u", dest="Gdb_admin", type="string", default="", help="Geodatabase administrator user name; Must always be sde for PostgreSQL, sde-schema geodatabases in SQL Server, and master sde geodatabase in Oracle") parser.add_option ("-p", dest="Gdb_admin_pwd", type="string", default="", help="Geodatabase administrator password") parser.add_option ("-t", dest="Tablespace", type="string", default="", help="Tablespace name; For PostgreSQL, type name of existing tablespace in which to store database. If no tablespace name specified, pg_default is used. For Oracle, type name of existing tablespace, or, if tablespace with specified name does not exist, it will be created and set as the default tablespace for the sde user. If no tablespace name is specified, SDE_TBS tablespace is created and set as sde user default. Tablespace name not supported for SQL Server.") parser.add_option ("-l", dest="Authorization_file", type="string", default="", help="Full path and name of authorization file; file created when ArcGIS Server Enterprise authorized, and stored in \\Program Files\ESRI\License<release#>\sysgen on Windows or /arcgis/server/framework/runtime/.wine/drive_c/Program Files/ESRI/License<release#>/sysgen on Linux") # Check if value entered for option try: (options, args) = parser.parse_args() #Check if no system arguments (options) entered if len(sys.argv) == 1: print("%s: error: %s\n" % (sys.argv[0], "No command options given")) parser.print_help() sys.exit(3) #Usage parameters for spatial database connection database_type = options.Database_type.upper() instance = options.Instance database = options.Database.lower() account_authentication = options.Account_authentication.upper() dbms_admin = options.Dbms_admin dbms_admin_pwd = options.Dbms_admin_pwd schema_type = options.Schema_type.upper() gdb_admin = options.Gdb_admin gdb_admin_pwd = options.Gdb_admin_pwd tablespace = options.Tablespace license = options.Authorization_file if (database_type == "SQLSERVER"): database_type = "SQL_SERVER" if( database_type ==""): print(" \n%s: error: \n%s\n" % (sys.argv[0], "DBMS type (--DBMS) must be specified.")) parser.print_help() sys.exit(3) if (license == ""): print(" \n%s: error: \n%s\n" % (sys.argv[0], "Authorization file (-l) must be specified.")) parser.print_help() sys.exit(3) if(database_type == "SQL_SERVER"): if(schema_type == "SDE_SCHEMA" and gdb_admin.lower() != "sde"): print("\n%s: error: %s\n" % (sys.argv[0], "To create SDE schema on SQL Server, geodatabase administrator must be SDE.")) sys.exit(3) if (schema_type == "DBO_SCHEMA" and gdb_admin != ""): print("\nWarning: %s\n" % ("Ignoring geodatabase administrator specified when creating DBO schema...")) if( account_authentication == "DATABASE_AUTH" and dbms_admin == ""): print("\n%s: error: %s\n" % (sys.argv[0], "DBMS administrator must be specified with database authentication")) sys.exit(3) if( account_authentication == "OPERATING_SYSTEM_AUTH" and dbms_admin != ""): print("\nWarning: %s\n" % ("Ignoring DBMS administrator specified when using operating system authentication...")) else: if (schema_type == "DBO_SCHEMA"): print("\nWarning: %s %s, %s\n" % ("Only SDE schema is supported on", database_type, "switching to SDE schema..." )) if( gdb_admin.lower() == ""): print("\n%s: error: %s\n" % (sys.argv[0], "Geodatabase administrator must be specified.")) sys.exit(3) if( gdb_admin.lower() != "sde"): if (database_type == "ORACLE"): print("\nGeodatabase admin user is not SDE, creating user schema geodatabase on Oracle...\n") else: print("\n%s: error: %s for %s.\n" % (sys.argv[0], "Geodatabase administrator must be SDE", database_type)) sys.exit(3) if( dbms_admin == ""): print("\n%s: error: %s\n" % (sys.argv[0], "DBMS administrator must be specified!")) sys.exit(3) if (account_authentication == "OPERATING_SYSTEM_AUTH"): print("Warning: %s %s, %s\n" % ("Only database authentication is supported on", database_type, "switching to database authentication..." )) # Get the current product license product_license=arcpy.ProductInfo() # Checks required license level if product_license.upper() == "ARCVIEW" or product_license.upper() == 'ENGINE': print("\n" + product_license + " license found!" + " Creating an enterprise geodatabase requires an ArcGIS Desktop Standard or Advanced, ArcGIS Engine with the Geodatabase Update extension, or ArcGIS Server license.") sys.exit("Re-authorize ArcGIS before creating enterprise geodatabase.") else: print("\n" + product_license + " license available! Continuing to create...") arcpy.AddMessage("+++++++++") try: print("Creating enterprise geodatabase...\n") arcpy.CreateEnterpriseGeodatabase_management(database_platform=database_type,instance_name=instance, database_name=database, account_authentication=account_authentication, database_admin=dbms_admin, database_admin_password=dbms_admin_pwd, sde_schema=schema_type, gdb_admin_name=gdb_admin, gdb_admin_password=gdb_admin_pwd, tablespace_name=tablespace, authorization_file=license) for i in range(arcpy.GetMessageCount()): arcpy.AddReturnMessage(i) arcpy.AddMessage("+++++++++\n") except: for i in range(arcpy.GetMessageCount()): arcpy.AddReturnMessage(i) #Check if no value entered for option except SystemExit as e: if e.code == 2: parser.usage = "" print("\n") parser.print_help() parser.exit(2)
- Guarde el archivo con una extensión .py.
- Ejecute el script, proporcionando opciones e información específicas de su sitio.
En el siguiente ejemplo ejecutado desde un equipo con Linux, el archivo create_gdb.py se ejecuta para un clúster de bases de datos llamado pgprod como superusuario postgres con la contraseña N0pe3king!. Se crea una base de datos llamada entgdb en un espacio de tabla existente llamado gis y el rol de inicio de sesión sde con la contraseña Tgdbst@rtsh3r3. Se especifica un archivo de códigos clave en la ubicación predeterminada de ArcGIS Server para autorizar la geodatabase.
./create_gdb.py --DBMS POSTGRESQL -i pgprod -D entgdb --auth DATABASE_AUTH -U postgres -P N0pe3king! -u sde -p Tgdbst@rtsh3r3 -t gis -l '/usr/arcgis/server/framework/runtime/.wine/drive_c/Program Files/ESRI/License/sysgen/keycodes'
En este ejemplo, se ejecuta la misma script desde un equipo con Windows:
create_gdb.py --DBMS POSTGRESQL -i pgprod -D entgdb --auth DATABASE_AUTH -U postgres -P N0pe3king! -u sde -p Tgdbst@rtsh3r3 -t gis -l '\\Program Files\ESRI\License\sysgen\keycodes'
Ahora tiene una geodatabase en PostgreSQL.
Puede encontrar los mensajes relativos a la creación de la geodatabase en el archivo sde_setup.log, que se crea en el directorio especificado para la variable TEMP o TMP del equipo en el que se ejecuta la secuencia de comandos. Si tiene algún problema al crear una geodatabase, compruebe este archivo para solucionarlo.
A continuación, puede crear un usuario que puede cargar datos en la geodatabase.
El administrador de PostgreSQL crea la base de datos; el administrador de la geodatabase, la geodatabase
Si la persona que va a crear la geodatabase no tiene acceso a la contraseña del administrador de base de datos (el superusuario postgres), este puede configurar la base de datos y, a continuación, el administrador de la geodatabase puede conectarse a ella con el rol de inicio de sesión sde y crear una geodatabase en la base de datos con la herramienta de geoprocesamiento Habilitar geodatabase corporativa o un script de Python.
La herramienta Habilitar geodatabase corporativa acepta un archivo de conexión de base de datos como entrada y crea las tablas del sistema, vistas, funciones y procedimientos de geodatabase en el esquema sde. Antes de que pueda ejecutarse la herramienta, el administrador de base de datos debe configurar lo siguiente en el clúster de base de datos de PostgreSQL:
- Un rol de inicio de sesión llamado sde con estado de superusuario
- Una base de datos
- Un esquema sde en la base de datos, propiedad del rol de inicio de sesión sde
- La biblioteca st_geometry debe estar en el directorio de instalación de PostgreSQL
Tenga en cuenta que solo deben usarse caracteres en minúscula en todos los nombres de objetos de base de datos.
Instalar y configurar PostgreSQL y la biblioteca st_geometry
En primer lugar, el administrador de base de datos debe preparar PostgreSQL para almacenar una geodatabase.
Las instrucciones siguientes son para que el administrador de base de datos configure el clúster de base de datos de PostgreSQL en un servidor Linux. Tenga en cuenta que solo deben usarse caracteres en minúscula en todos los nombres de objetos de base de datos (la base de datos, el esquema y los roles de inicio de sesión).
-
Obtenga e instale una versión compatible de PostgreSQL y configure el cluster de la base de datos.
Pude descargar instalaciones de PostgreSQL desde My Esri. Si utiliza esta instalación, no es necesaria ninguna configuración específica no predeterminada para utilizar PostgreSQL con ArcGIS. Solo asegúrese de cambiar la configuración regional y la ubicación si desea utilizar un valor diferente al predeterminado. Como alternativa, puede obtener la instalación de PostgreSQL por su cuenta.
Consulte la documentación de PostgreSQL para obtener instrucciones sobre la instalación y configuración de PostgreSQL.
- Configure el clúster de la base de datos para aceptar las conexiones.
Esto incluye modificar el archivo pg_hba.conf para permitir que el clúster de bases de datos acepte conexiones remotas.
- Establezca las siguientes variables de entorno para el usuario postgres si no están ya establecidas correctamente:
- PGDATA: este se debería haber establecido con la instalación de PostgreSQL. Si no, establézcalo en la ubicación del directorio de datos de PostgreSQL. (Se encuentra en el directorio de instalación de PostgreSQL).
- LD_LIBRARY_PATH: establezca la variable LD_LIBRARY_PATH en el directorio lib de PostgreSQL. La ubicación del directorio lib varía en función de cómo haya instalado PostgreSQL. Para determinar la ubicación correcta para la instalación de PostgreSQL, ejecute pg_config como usuario postgres. Establecer LD_LIBRARY_PATH en el valor que se muestra para PKGLIBDIR.
- PATH: establezca la variable PATH para que contenga postgresql/bin.
- De manera opcional, puede crear un espacio de tabla en el clúster de base de datos en el que almacenó su base de datos.
- Cree un rol de inicio de sesión llamado sde y otórguele estado de superusuario.
- Cree la base de datos que almacenará la geodatabase.
- Cree un esquema llamado sde en la base de datos y proporcione autoridad al rol de inicio de sesión en el esquema.
- Asimismo, debe colocar el archivo de la biblioteca st_geometry.so en el directorio lib de PostgreSQL. Puede descargar el archivo st_geometry.so desde My Esri. Asegúrese de descargar la biblioteca correcta para la versión de PostgreSQL que esté utilizando. Si usa una incorrecta, fallará la creación de la geodatabase.
Cuando tenga el archivo st_geometry.so correcto, colóquelo en el directorio lib de PostgreSQL tras iniciar sesión como usuario raíz. Tenga en cuenta que la ubicación del directorio lib en Linux puede variar en función de cómo haya instalado PostgreSQL. Para determinar la ubicación correcta para la instalación de PostgreSQL, ejecute pg_config como usuario postgres. El valor que se devuelve para PKGLIBDIR es el directorio lib donde es necesario colocar la biblioteca st_geometry.
- Asegúrese de que el permiso del archivo st_geometry.so se ha definido como 755. En caso contrario, el usuario sde no podrá acceder a la biblioteca para crear una geodatabase.
- Proporcione información de conexión de base de datos al administrador de la geodatabase.
Este debe conocer el nombre del clúster de base de datos, el nombre de base de datos y la contraseña del rol de inicio de sesión sde.
Ahora que existe una base de datos y está configurada, el administrador de la geodatabase puede preparar un cliente de ArcGIS y crear una geodatabase.
Instalar un cliente de ArcGIS
El administrador de la geodatabase debe seguir estos pasos para preparar el cliente de ArcGIS para crear una geodatabase:
- Instale el cliente de ArcGIS desde el cual creará la geodatabase.
Normalmente, las geodatabases se crean desde una instalación de ArcGIS Server o ArcGIS Desktop (Desktop Standard o Desktop Advanced).
- Si va a utilizar ArcGIS Server con la geodatabase en PostgreSQL, establezca o modifique las siguientes variables para la cuenta de ArcGIS:
- SDEHOME: establezca esta variable en el directorio de instalación de ArcGIS Server.
Por ejemplo, si ArcGIS Server está instalado en la ubicación predeterminada en un servidor Linux, establezca export SDEHOME=/home/ags/arcgis/server.
- PG_HOME: defina PG_HOME como /opt/PostgreSQL/<version>.
En este ejemplo, se configura PG_HOME para una instalación de PostgreSQL 10.3: export PG_HOME=/opt/PostgreSQL/10.3.
- Si ArcGIS Server está instalado en un servidor de Windows, agregue las ubicaciones PG_HOME\bin y SDEHOME\bin a la variable PATH.
Por ejemplo, establezca export PATH=$PATH:$PG_HOME/bin:$SDEHOME/bin en Linux.
- Si ArcGIS Server está instalado en un servidor Linux, agregue $PG_HOME/lib y $SDEHOME/lib a la variable LD_LIBRARY_PATH.
Por ejemplo, establezca export LD_LIBRARY_PATH=$LD_LIBRARY_PATH$PG_HOME/lib:$SDEHOME/lib.
- SDEHOME: establezca esta variable en el directorio de instalación de ArcGIS Server.
Su cliente de ArcGIS está listo para conectarse a la base de datos y crear una geodatabase.
Crear una geodatabase
El administrador de la geodatabase puede ejecutar la herramienta Habilitar geodatabase corporativa desde ArcGIS Desktop (Desktop Standard o Desktop Advanced) o una secuencia de comandos de Python desde un cliente de ArcGIS Desktop, ArcGIS Server para crear una geodatabase en la base de datos existente.
Ejecutar la herramienta Habilitar geodatabase corporativa
Si tiene acceso a ArcGIS Desktop, puede ejecutar una herramienta de geoprocesamiento para crear la geodatabase.
Siga estos pasos para crear una geodatabase usando la herramienta Habilitar geodatabase corporativa en ArcMap:
- Inicie ArcMap o ArcCatalog.
- Conéctese a la base de datos de PostgreSQL desde el árbol del Catálogo usando el rol de inicio de sesión sde.
Asegúrese de guardar la contraseña del usuario en el cuadro de diálogo Conexión de base de datos.
- Haga clic con el botón derecho en la conexión de base de datos y haga clic en Habilitar geodatabase.
Se abre la herramienta Habilitar geodatabase corporativa y el campo Conexión de la base de datos de entrada se completa con el nombre y la ubicación del archivo de conexión.
- Navegue al archivo de autorización de ArcGIS Server que se creó cuando autorizó ArcGIS Server y agréguelo al cuadro de texto Archivo de autorización.
Cuando utiliza el asistente para autorizar ArcGIS Server, se escribe un archivo de códigos clave en el servidor donde está instalado el software. Si autorizó ArcGIS Server en un cuadro de Linux, el archivo de códigos clave se creó en /arcgis/server/framework/runtime/.wine/drive_c/Program Files/ESRI/License<release>/sysgen. Si autorizó en un servidor de Windows, el archivo se creó en Program Files\ESRI\License<release>\sysgen. Si aún no lo hizo, autorice ArcGIS Server para crear este archivo.
- Haga clic en Aceptar para ejecutar la herramienta.
Se crea una geodatabase en la base de datos.
Puede encontrar los mensajes relativos a la creación de la geodatabase en el archivo sde_setup.log, que se crea en el directorio especificado para la variable %TEMP% del equipo en el que se ejecuta la herramienta. Si tiene algún problema al crear una geodatabase, compruebe este archivo para solucionarlo.
A continuación, el administrador de base de datos puede crear roles de inicio de sesión en la base de datos.
Ejecutar un script de Python
Si desea crear la geodatabase ejecutando una secuencia de comandos desde una instalación de ArcGIS Server o ArcGIS Desktop (Desktop Standard o Desktop Advanced), puede usar la secuencia de comandos que se proporciona aquí.
- Cree un archivo de texto en el equipo cliente de ArcGIS y copie en él el script siguiente.
""" Name: enable_enterprise_gdb.py Description: Provide connection information to an enterprise database and enable enterprise geodatabase. Type enable_enterprise_gdb.py -h or enable_enterprise_gdb.py --help for usage """ # Import system modules import arcpy, os, optparse, sys # Define usage and version parser = optparse.OptionParser(usage = "usage: %prog [Options]", version="%prog 1.0 for " + arcpy.GetInstallInfo()['Version'] ) #Define help and options parser.add_option ("--DBMS", dest="Database_type", type="choice", choices=['SQLSERVER', 'ORACLE', 'POSTGRESQL', 'DB2','INFORMIX','DB2ZOS', ''], default="", help="Type of enterprise DBMS: SQLSERVER, ORACLE, POSTGRESQL, DB2, INFORMIX, or DB2ZOS.") parser.add_option ("-i", dest="Instance", type="string", default="", help="DBMS instance name") parser.add_option ("--auth", dest="account_authentication", type ="choice", choices=['DATABASE_AUTH', 'OPERATING_SYSTEM_AUTH'], default='DATABASE_AUTH', help="Authentication type options (case-sensitive): DATABASE_AUTH, OPERATING_SYSTEM_AUTH. Default=DATABASE_AUTH") parser.add_option ("-u", dest="User", type="string", default="", help="Geodatabase administrator user name") parser.add_option ("-p", dest="Password", type="string", default="", help="Geodatabase administrator password") parser.add_option ("-D", dest="Database", type="string", default="none", help="Database name: Not required for Oracle") parser.add_option ("-l", dest="Authorization_file", type="string", default="", help="Full path and name of authorization file") # Check if value entered for option try: (options, args) = parser.parse_args() #Check if no system arguments (options) entered if len(sys.argv) == 1: print "%s: error: %s\n" % (sys.argv[0], "No command options given") parser.print_help() sys.exit(3) #Usage parameters for spatial database connection database_type = options.Database_type.upper() instance = options.Instance account_authentication = options.account_authentication.upper() username = options.User.lower() password = options.Password database = options.Database.lower() license = options.Authorization_file if( database_type ==""): print " \n%s: error: \n%s\n" % (sys.argv[0], "DBMS type (--DBMS) must be specified.") parser.print_help() sys.exit(3) if (license == ""): print " \n%s: error: \n%s\n" % (sys.argv[0], "Authorization file (-l) must be specified.") parser.print_help() sys.exit(3) if (database_type == "SQLSERVER"): database_type = "SQL_SERVER" # Get the current product license product_license=arcpy.ProductInfo() if (license == ""): print " \n%s: error: %s\n" % (sys.argv[0], "Authorization file (-l) must be specified.") parser.print_help() sys.exit(3) # Checks required license level if product_license.upper() == "ARCVIEW" or product_license.upper() == 'ENGINE': print "\n" + product_license + " license found!" + " Enabling enterprise geodatabase functionality requires an ArcGIS Desktop Standard or Advanced, ArcGIS Engine with the Geodatabase Update extension, or ArcGIS Server license." sys.exit("Re-authorize ArcGIS before enabling an enterprise geodatabase.") else: print "\n" + product_license + " license available! Continuing to enable..." arcpy.AddMessage("+++++++++") # Local variables instance_temp = instance.replace("\\","_") instance_temp = instance_temp.replace("/","_") instance_temp = instance_temp.replace(":","_") Conn_File_NameT = instance_temp + "_" + database + "_" + username if os.environ.get("TEMP") == None: temp = "c:\\temp" else: temp = os.environ.get("TEMP") if os.environ.get("TMP") == None: temp = "/usr/tmp" else: temp = os.environ.get("TMP") Connection_File_Name = Conn_File_NameT + ".sde" Connection_File_Name_full_path = temp + os.sep + Conn_File_NameT + ".sde" # Check for the .sde file and delete it if present arcpy.env.overwriteOutput=True if os.path.exists(Connection_File_Name_full_path): os.remove(Connection_File_Name_full_path) print "\nCreating Database Connection File...\n" # Process: Create Database Connection File... # Usage: out_file_location, out_file_name, DBMS_TYPE, instnace, database, account_authentication, username, password, save_username_password(must be true) arcpy.CreateDatabaseConnection_management(out_folder_path=temp, out_name=Connection_File_Name, database_platform=database_type, instance=instance, database=database, account_authentication=account_authentication, username=username, password=password, save_user_pass="TRUE") for i in range(arcpy.GetMessageCount()): if "000565" in arcpy.GetMessage(i): #Check if database connection was successful arcpy.AddReturnMessage(i) arcpy.AddMessage("\n+++++++++") arcpy.AddMessage("Exiting!!") arcpy.AddMessage("+++++++++\n") sys.exit(3) else: arcpy.AddReturnMessage(i) arcpy.AddMessage("+++++++++\n") # Process: Enable geodatabase... try: print "Enabling Enterprise Geodatabase...\n" arcpy.EnableEnterpriseGeodatabase_management(input_database=Connection_File_Name_full_path, authorization_file=license) for i in range(arcpy.GetMessageCount()): arcpy.AddReturnMessage(i) arcpy.AddMessage("+++++++++\n") except: for i in range(arcpy.GetMessageCount()): arcpy.AddReturnMessage(i) if os.path.exists(Connection_File_Name_full_path): os.remove(Connection_File_Name_full_path) #Check if no value entered for option except SystemExit as e: if e.code == 2: parser.usage = "" print "\n" parser.print_help() parser.exit(2)
- Guarde el archivo con una extensión .py.
- Ejecute el script, proporcionando opciones e información específicas de su sitio.
En el siguiente ejemplo, se ejecuta el archivo enable_gdb.py para la base de datos spdata en el clúster de base de datos pgprod. La conexión se realiza con el nombre de usuario sde y la contraseña Tgdbst@rtsh3r3. Se especifica un archivo de códigos clave en la ubicación predeterminada de ArcGIS Server para autorizar la geodatabase.
./enable_gdb.py --DBMS POSTGRESQL -i pgprod --auth DATABASE_AUTH -u sde -p Tgdbst@rtsh3r3 -D spdata -l '/usr/arcgis/server/framework/runtime/.wine/drive_c/Program Files/ESRI/License/sysgen/keycodes'
Ahora tiene una geodatabase en PostgreSQL.
Puede encontrar los mensajes relativos a la creación de la geodatabase en el archivo sde_setup.log, que se crea en el directorio especificado para la variable TEMP o TMP del equipo en el que se ejecuta el script. Si tiene algún problema al crear una geodatabase, compruebe este archivo de registro para solucionarlo.
A continuación, el administrador de base de datos puede crear roles de inicio de sesión en la base de datos.